Merhaba, aşağıdaki programı NodeMCU ya yüklediğimde modem üzerine bağlı olan herhangi bir bilgisayardan ESP nin web server ı olduğu siteye ulaşıp Ledi aç-kapa yapabiliyorum (site -> http://192.168.2.76/) fakat farklı bir modem üzerinden giremiyorum modemin 80. portunu açtım, kodda
const char* host = "*******";
satırına ne yazmam gerekiyor? kaynak site http://www.instructables.com/id/Control-ESP8266-Over-the-Internet-from-Anywhere/
#include <ESP8266WiFi.h>
const char* ssid = "AirTies_Air5760_DY77";
const char* password = "*****";
const char* host = "******";
int ledPin = 16;
WiFiServer server(80); //just pick any port number you like
void setup() {
Serial.begin(115200);
delay(10);
Serial.println(WiFi.localIP());
// prepare GPIO2
pinMode(ledPin, OUTPUT);
digitalWrite(D3, LOW);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
while (!client.available()) {
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
client.flush();
// Match the request
if (req.indexOf("") != -10) { //checks if you're on the main page
if (req.indexOf("/OFF") != -1) { //checks if you clicked OFF
digitalWrite(ledPin, LOW);
Serial.println("You clicked OFF");
}
if (req.indexOf("/ON") != -1) { //checks if you clicked ON
digitalWrite(ledPin, HIGH);
Serial.println("You clicked ON");
}
}
else {
Serial.println("invalid request");
client.stop();
return;
}
// Prepare the response
String s = "HTTP/1.1 200 OK\r\n";
s += "Content-Type: text/html\r\n\r\n";
s += "<!DOCTYPE HTML>\r\n<html>\r\n";
s += "<br><input type=\"button\" name=\"bl\" value=\"Turn LED ON \" onclick=\"location.href='/ON'\">";
s += "<br><br><br>";
s += "<br><input type=\"button\" name=\"bl\" value=\"Turn LED OFF\" onclick=\"location.href='/OFF'\">";
s += "</html>\n";
client.flush();
// Send the response to the client
client.print(s);
delay(1);
}
(https://s1.postimg.cc/9cqhgjn32j/Ads_z.png) (https://postimg.cc/image/9cqhgjn32j/)
8p portu na dışarıdan direk ulaşamazsınız o port zaten internete çıkış portu dur. Siz esp için ayrı bir port açıp bu portu da içerideki esp nin aldığı ip ye yönlendirme yapmalısınız. Mödeminiz klavuzundan nasıl port açıldığı ve yönlendirildigini ogrenebilirsiniz.
Tabi modem her açılıp kapandığında ip adresiniz değişir. İnternet servisi aldığınız firmadan sabit ip almanız da gerekecek.
Eğer sabit ip port vs uğraşmak isyemiyorum der iseniz "web socket " bağlantı kurmayı öğrenmeniz gerekir.
80portunu disari acabilirsiniz ve localdeki istediginiz ipye yonlendirebilirsiniz hocam. disardan girmek icin dis ipnizi kullanmaniz gerek. Modemden acilan port o ise yarar. Localde zaten port acmadan girebilirsiniz. Modemde yaptiginiz ayarlarda sorun olabilir veya dis ipyi yazarak girmiyor olabilirsiniz.
Dis ipnizi ogrenmek icin: whatismyip.com kullanabilirsiniz
Host satırını silin gitsin. Bir şey yazmasanız da olur.
Burada yapmanız gereken şey başka ağpdan cihaza ulaşabilmek için modeminizin almış olduğuyu IP'ye bağlanmanız.
Bu adresi, nodemcunun bağlı olduğu ağdan whatismyip.com adresine girerek bulabilirsiniz. Ayrıca 80 numaralı portu kullanabilirsiniz. Sıkıntı olmaz.
Bir süredir nodemcuya bakıyorum.Android ve arduino ide siyle program yazıp çalıştırdım.Emin olamadığım şey;Bağlanacağımız ağın adını ve şifresini programa yazmak zorunda mıyız? Nodemcu yu başka ağda kullanmak için illa programa müdahale mi edilmesi gerekiyor ? Sunoff modüllerde böyle olmuyor. Yöntem nedir ?
Bunu yapabilmek icin ilk once acces point olarak calistirin ve nodemcu icine basit bir arayuz hazirlayin. Ap ye baglanin ve arayuzden baglanmasini istediginiz ssid ve sifreyi girin. Bu degerleri de flash hafizaya kayit ettirin. Bu sayede mudaheleye gerek kalmaz.
Bu yönde araştıracağım. Teşekkür ederim.