Fórum témák
- • Elfogadnám, ha ingyen elvihető
- • Videomagnó problémák
- • Opel Astra elektromos hibák
- • Borhűtő vezérlő panel
- • Arduino
- • Kapcsolóüzemű tápegység
- • Erősítő mindig és mindig
- • Analóg voltmérő (multiméter)
- • Transzformátor készítés, méretezés
- • Mosogatógép hiba
- • Boombox javítás
- • Számítógép hiba, de mi a probléma?
- • Li-Ion saját akkucsomag készítése
- • USB 3.2 HUB modul
- • Kaputelefon
- • Sprint-Layout NYÁK-tervező
- • Adatlapot keresek
- • Rádióamatőrök topikja
- • CNC építése házi alkatrészekből az alapoktól
- • Klíma szervizelés, javítás
- • Autóriasztó és központi zár
- • Elektromos távirányítós kapunyitó
- • Analóg oszcilloszkóp javítása
- • LED szalag
- • Hangszórójavítás (otthon)
- • Mosógép vezérlők és általános problémáik
- • Érdekességek
- • Villanypásztor
- • Kondenzátor
- • IMI villanymotor
- • Digitális adatátvitel
- • Nagyfeszültségű tápegység
- • 3-fázisú Modbus-os teljesítményszabályzó (SCR power controller)
- • Villanyszerelés
- • TDA7294 végerősítő
- • Klíma beszerelése, fűtés-hűtés házilag
- • Kombikazán működési hiba
- • Általános antennás kérdések, válaszok
- • Dobozolási technikák, műszerdobozok
- • Elektronikai témájú könyvek újságok
- • Elektromos vezérlésű pneumatika
- • Internetes rádióvevő
- • Alternativ HE találkozó(k)
- • 3D nyomtatás
- • Felajánlás, azaz ingyen elvihető
- • Akkumulátor töltő
- • Háromfázisú aggregátor
- • Szintetizátor javítás
- • Sütő javítás
- • Laptop javítás, tuning
- • Autós erősítős kérdések, problémák
- • Mikrohullámú sütő javítás, magnetron csere, stb.
- • Villanymotor
- • Vegyes barkácsfogások
- • Digitális óra
» Több friss téma
|
Fórum » Espressif mikrokontrollerek
Portnyitásra egy tipp:
ESP TCP elérés LAN címen, otthonról, böngésző címsorból.
192.168.2.1:portszám/oldal?adat=1&adat2=2
portszám ne 80 legyen.
Routeredben megnézed hogy mi a WAN IP címed, ez az amin kívülről eléred a routered és azon keresztül a hállózatot. Ezt az internet szolgáltatód adja.
Ezt itt is ellenőrizheted.
Bővebben: Link
Ha nem egyezik a kettő és DIGI a szolgáltatód, akkor ezt kell elolvasnod és tenned.
Bővebben: Link
Ezek után a Routereden nyitni kell egy portot az esp-nek.
Ott három adatot kell megadnod, ESP LAN IP címe, portszáma, valamint hogy TCP kapcsolat lesz.
onnantól kezdve kívülről az ESP elérési címe
WAN IP:portszám/oldal?adat=1&adat2=2
A bonyolult a dologban csak annyi, hogy minden routeren másképp kell portot nyitni.
Neked kell ismerned a routered hogy lehet Port forward ot csinálni.
Ezután ha nem fix IP címmel rendelkezel, naponta vagy sűrűbben váltogathatja a szolgáltató külső IP címed. Ez megint egy router beállítással megoldható ha tudja routered valamiféle dinamikus dns megoldást.
Egy régi cikk
ESP vel is tudod ellenőrizni a kölső IP címed, így az ép aktuálisat utánad tudja küldeni.
Hát röviden ennyi.
Ez alapján megcsináltam Bővebben: Link. Most már működik a Blynk segítségével tudom ki-be kapcsolni, és működik külső hálózatról is.
Hamarosan lesznek további kérdéseim is. Köszönöm a segítséget!
Mindezeket megcsináltam én is. Van egy ESP8266-wemos mini ami rendesen működik is.
A gondom az hogy nem tudok egy másikat üzembe állítani. Belülről külső IP:port -al működik, de kívülről IP:public_port mar nem. Amikor rá akarok csatlakozni mintha lefagyna az ESP, megáll minden rajta (egy TM1637 LED modul). A LED modul frissítése nincs abba a függvénybe ami lefut internet kapcsolodaskor.
Mit ronthattam el? Mit vizsgaljak át ? Miből adódik az ilyesmi gond ?
Akkor ezek szerint megtaláltad a hibát a kódodban, ami miatt nem érted el kívülről.
Egy tipp:
Minden esp külön portot kapott?
Idézet: „
Belülről külső IP:port -al működik, de kívülről IP:public_port”
Ezt így mondjuk nem tudtam értelmezni.
Port az port, nincs belső vagy külső.
IP van külső és belső. A külső a router IP címe. A belső a hálózatodon csüngő készülékeid címe NAT mögött.
Bővebben: Link
Amikor kintről meghívod a routert a portal határozod meg hogy melyik NAT mögött lévő készüléket szeretnéd elérni.
Foglalt portok számai.
Bővebben: Link
Ezeket is célszerű kerülni.
Valamint ellenőrizni az UPnP port nyitásokat ha már ott jár az ember hátha ott van az ütközés. Mondjuk ajánlott azt is kikapcsolni és inkább kézzel portokat nyitogatni.
Ui. Minden egyéb készüléken ami portnyitást igényel (szerverek, torrent, stb) célszerű az alapbeállításokban megadott portotszámot lecserélni a külső támadások csökkentése miatt. A hozzászólás módosítva: Aug 7, 2017
Nem. Nem találtam meg a hibát. A routerem megkivanja a privat es public port beallitast. Pontositaskent van egy ESP-m felprogramozva ami rendesen mukodik allandoan (non-stop) kulso 443 es belso 83-as porton. Egy masik felprogramozva 82-es portra mint webserver amit 84-es public portrol erek el.
Egy harmadik ESP-n dolgozgatok, de a megfelelo router allitasok -
uj port- es ip-kiosztasok, utan sem erem el ezt kintrol csak hazon belülről. Mint irtam, amikor probalok rakapcsolodni "lefagy" az ESP mint a windows ahogy szokott. Ha megszakitom a kerest, abbahagyom a kapcsolodasi kiserletet akkor megy tovabb.
Mondjuk az jó ölet hogy enged külső és belsőportot állítani. Hát ilyen routrem még nem volt.
Az nem lehet hogy túl sok kliens kapcsolódik egyszerre a 3. ESP hez? Akkor nagyon be szokott lassulni. Nálam mondjuk ez Websocket tesztelés közben jött elő.
Az elején olyan hiba is volt nálam hogy a kliens (weboldal) túl sűrűn hívta meg az ESP-t, attól is bezavarodott. Utána jöttem rá mire jó a websocket. Mondjuk ez a hiba kiszűrhető belső hálóról is ,ha több böngésző oldalt nyitsz meg belső eléréssel.
Csak egy ESP van allandoan csatolva a ruterre. A frissites az a html kodbol 60s -re van irva, szerintem ez kizart.
Csak a login oldal jon be. Ha tovabb akarok lepni akkor kovetkezik be a hiba (megjegyzem a login lap copy-paste a mukodo kodrol).
Az erdekes az hogy azt a kodot amelyik mar mukodik egy masik ESP-n azt is hiaba probalom, nem tudom azt sem kivulrol elerni.
Mint irtam egy par oldallal korabban mar egyszer majdnem folhoz csaptam a routert egy egesz nap probalkozas utan, amikor, vegu is rajottem hogy mit valtoztattam: csak az ardu IDE -t, 1.6.8-rol, 1.8.3-ra. Miutan visszatertem a korabbi verziora akkor oldodott meg a gond csak. Most viszont hiaba, az sem segit.
Most egy hetig ugyis szabadsagolok. Majd utana raalok megint
Igazi vezetői megoldás. Problémát bedobni a közösbe, aztán elmenni szabira, mire lebarnulva visszatér az ember, kész megoldás várja.
Amúgy teszteltem több (2db) ESP vel a GitBook on lévő Webszerver mintám, nálam az is működik hibátlanul kívülről is.
Sziasztok!
Segítségeteket szeretném kérni abban, hogy az alábbi kód value értéke 120 vagy 980 legyen, attól függően, hogy melyikre kattintok. Az on off gombok működnek, kapcsolgatják a ledeket, a 120 és a 980 soros porton megjelenik, viszont a value csak 0-t ír.
Köszi!
#include <WiFiClient.h>
MDNSResponder mdns;
// Replace with your network credentials
const char* ssid = "hajnus1";
const char* password = "";
String Content = "";
//String webPage = "";
int gpio0_pin = 0;
int gpio2_pin = 2;
int inp = 0;
void setup(void){
Content = "<body bgcolor=\"#99ff99\" alink=\"#EE0000\" link=\"#0000EE\" text=\"#000000\"vlink=\"#551A8B\">";
Content += "<title> ESP8266 test </title>";
Content += "<H1>";
Content += "<br>";
Content += "</H1>";
Content += "<H2>";
Content += "value = ";
Content += String(inp);
Content += "<br>";
Content += "</H2>";
Content += "<p><a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
Content += "<p><a href=\"socket2On\"><button>ON</button></a> <a href=\"socket2Off\"><button>OFF</button></a></p>";
Content += "<p><a href=\"120\"><button>120</button></a> <a href=\"980\"><button>980</button></a></p>";
// preparing GPIOs
pinMode(gpio0_pin, OUTPUT);
digitalWrite(gpio0_pin, LOW);
pinMode(gpio2_pin, OUTPUT);
digitalWrite(gpio2_pin, LOW);
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (mdns. begin("esp8266", WiFi. localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/html", Content);
});
server.on("/socket1On", [](){
server.send(200, "text/html", Content);
digitalWrite(gpio0_pin, HIGH);
delay(1000);
});
server.on("/socket1Off", [](){
server.send(200, "text/html", Content);
digitalWrite(gpio0_pin, LOW);
delay(1000);
});
server.on("/socket2On", [](){
server.send(200, "text/html", Content);
digitalWrite(gpio2_pin, HIGH);
delay(1000);
});
server.on("/socket2Off", [](){
server.send(200, "text/html", Content);
digitalWrite(gpio2_pin, LOW);
delay(1000);
});
server.on("/120", [](){
server.send(200, "text/html", Content);
inp = 120;
Serial.println(inp);
delay(1000);
});
server.on("/980", [](){
server.send(200, "text/html", Content);
inp = 980;
Serial.println(inp);
delay(1000);
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
A hozzászólás módosítva: Aug 8, 2017
Content String feltöltése csak egyszer történik meg a Setup ban ezért a value értéke is ugyanaz marad.
Minden server.send(200, "text/html", Content);
előtt ezt meg kellene tenni.
Valamint még ez előtt kellene az inp értékét is beállítani. A hozzászólás módosítva: Aug 8, 2017
Igazabol mar szombattol vagyok szabin. Itt csak a telefonom van.
A minta az nekem is mukodok. A hozzászólás módosítva: Aug 8, 2017
Azt nem értem, hogy soros portra miért írja ki mégis minden egyes érték változáskor?!
Hiszen ugyanott zajlik le az érték írása...
Setup csak egyszer fut le, az ESP indításakor.
abban
server.on("/120", [](){
server.send(200, "text/html", Content);
inp = 120;
Serial.println(inp);
delay(1000);
});
itt felkészíted a szervert hogy mit tegyen ha meghívják a /120 as oldalt, így ez a rész minden /120 híváskor lefut majd.
server.on("/120", [](){
server.send(200, "text/html", Content); --- elküldi a változatlan Content odalt a kliensnek (böngésző),
inp = 120; --- beállítod az inp értékét
Serial.println(inp); --- kiíratod soros portra
delay(1000);
});
..és ez fut e minden oldal híváskor.
Hol változik a content tartalma mielőtt elküldöd a kliens felé?
sorrend
- inp érték megváltoztatása
- Content módosítása, hogy a friss inp bele kerüljön
- Content elküldése kliens felé A hozzászólás módosítva: Aug 9, 2017
Tehát kell még egy string,
-amiben az inp értéket megváltoztatom, kliens kiiratás nélkül,
-Content felvegye az inp-et,
-kiküldeni a Content string-et?
Content = "<body bgcolor=\"#99ff99\" alink=\"#EE0000\" link=\"#0000EE\" text=\"#000000\"vlink=\"#551A8B\">";
Content += "<title> ESP8266 test </title>";
Content += "<H1>";
Content += "<br>";
Content += "</H1>";
Content += "<H2>";
Content += "value = ";
Content += String(inp);
Content += "<br>";
Content += "</H2>";
Content += "<p><a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
Content += "<p><a href=\"socket2On\"><button>ON</button></a> <a href=\"socket2Off\"><button>OFF</button></a></p>";
Content += "<p><a href=\"120\"><button>120</button></a> <a href=\"980\"><button>980</button></a></p>";
Nem kell még egy string, a fent bemásolt részt kell lefuttatni kiküldés előtt.
Content += "value = ";
Content += String(inp);
ez a rész megoldja a az inp stringé alakítását.
Pld. vedd ki a Setup-ból és tedd függvénybe, így könnyen meg tudod hívni minden küldés előtt.
Bővebben: Link
vagy
60 nap alatt Arduino ingyenes tanfolyam A hozzászólás módosítva: Aug 9, 2017
Mondjuk így.
Ennél mondjuk elegánsabb ha nem külön Content változót használsz hanem a függvény visszaadott értéke a Weboldal stringje, és az inp szintén nem külső változó, hanem a függvény paramétereként adod át.
#include <WiFiClient.h>
// Replace with your network credentials
const char* ssid = "-----";
const char* password = "---------";
String Content = "";
//String webPage = "";
int gpio0_pin = 0;
int gpio2_pin = 2;
int inp = 0;
void set_conent() {
Content = "<body bgcolor=\"#99ff99\" alink=\"#EE0000\" link=\"#0000EE\" text=\"#000000\"vlink=\"#551A8B\">";
Content += "<title> ESP8266 test </title>";
Content += "<H1>";
Content += "<br>";
Content += "</H1>";
Content += "<H2>";
Content += "value = ";
Content += String(inp);
Content += "<br>";
Content += "</H2>";
Content += "<p><a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
Content += "<p><a href=\"socket2On\"><button>ON</button></a> <a href=\"socket2Off\"><button>OFF</button></a></p>";
Content += "<p><a href=\"120\"><button>120</button></a> <a href=\"980\"><button>980</button></a></p>";
}
void setup(void) {
set_conent();
// preparing GPIOs
pinMode(gpio0_pin, OUTPUT);
digitalWrite(gpio0_pin, LOW);
pinMode(gpio2_pin, OUTPUT);
digitalWrite(gpio2_pin, LOW);
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", []() {
server.send(200, "text/html", Content);
});
server.on("/socket1On", []() {
server.send(200, "text/html", Content);
digitalWrite(gpio0_pin, HIGH);
delay(1000);
});
server.on("/socket1Off", []() {
server.send(200, "text/html", Content);
digitalWrite(gpio0_pin, LOW);
delay(1000);
});
server.on("/socket2On", []() {
server.send(200, "text/html", Content);
digitalWrite(gpio2_pin, HIGH);
delay(1000);
});
server.on("/socket2Off", []() {
server.send(200, "text/html", Content);
digitalWrite(gpio2_pin, LOW);
delay(1000);
});
server.on("/120", []() {
inp = 120;
Serial.println(inp);
set_conent();
server.send(200, "text/html", Content);
delay(1000);
});
server.on("/980", []() {
inp = 980;
Serial.println(inp);
set_conent();
server.send(200, "text/html", Content);
delay(1000);
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
}
A hozzászólás módosítva: Aug 9, 2017
Az meg így nézne ki.
#include <WiFiClient.h>
// Replace with your network credentials
const char* ssid = "-----";
const char* password = "----------";
int gpio0_pin = 0;
int gpio2_pin = 2;
int inp = 0;
String Content(int _inp) {
String _Content = "<body bgcolor=\"#99ff99\" alink=\"#EE0000\" link=\"#0000EE\" text=\"#000000\"vlink=\"#551A8B\">";
_Content += "<title> ESP8266 test </title>";
_Content += "<H1>";
_Content += "<br>";
_Content += "</H1>";
_Content += "<H2>";
_Content += "value = ";
_Content += String(_inp);
_Content += "<br>";
_Content += "</H2>";
_Content += "<p><a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
_Content += "<p><a href=\"socket2On\"><button>ON</button></a> <a href=\"socket2Off\"><button>OFF</button></a></p>";
_Content += "<p><a href=\"120\"><button>120</button></a> <a href=\"980\"><button>980</button></a></p>";
return _Content;
}
void setup(void) {
// preparing GPIOs
pinMode(gpio0_pin, OUTPUT);
digitalWrite(gpio0_pin, LOW);
pinMode(gpio2_pin, OUTPUT);
digitalWrite(gpio2_pin, LOW);
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", []() {
server.send(200, "text/html", Content(inp));
});
server.on("/socket1On", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio0_pin, HIGH);
delay(1000);
});
server.on("/socket1Off", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio0_pin, LOW);
delay(1000);
});
server.on("/socket2On", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio2_pin, HIGH);
delay(1000);
});
server.on("/socket2Off", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio2_pin, LOW);
delay(1000);
});
server.on("/120", []() {
inp = 120;
Serial.println(inp);
server.send(200, "text/html", Content(inp));
delay(1000);
});
server.on("/980", []() {
inp = 980;
Serial.println(inp);
server.send(200, "text/html", Content(inp));
delay(1000);
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
}
Egyébként ez egy vacak módszer hiába szépíti az ember, mert egy pici változás miatt az egész oldalt rissíted. Javascript, és AJAX használatval később elég lesz csak a frissült értéket visszaküldeni az oldalnak.
Nagyszerűen működik, köszönöm a segítségedet!
Tanulmányozom, hogy megértsem. A hozzászólás módosítva: Aug 9, 2017
Sziasztok!
Arra van valakinek ötlete, hogy miért csinál olyat az ESP-01, hogy amikor üzemel, akkor a számítógép IP címét átírja a routeren keresztül 192.168.4.2-re.
Kizárásos alapon gyanakszom az esp-re, mert amikor nincs üzemben, akkor nincs ilyen probléma.
Köszi.
Ha a beső hálózaton kell a fix IP cím, akkor a router-ben állíts fix címet a számítógépnek (MAC cím alapján). Így azt a címet nem fogja kiosztani a router más eszköznek és meg sem változtatja.
A számítógép vezetékes és WiFi kapcsolattal is rendelkezik?
A gép dhcp-vel kapja az IP-t, az esp-nek beállítottam fix IP-t...
a router a 192.168.0.xxx tartományban osztja az IP-t...
Viszont nem fogja a többi eszköznek is bezavarni az esp? A hozzászólás módosítva: Aug 9, 2017
Csak wifi-n kapja a netet, viszont az lemaradt a fenti probléma vázolásából, hogy a router a 192.168.0.xxx tartományban osztja az IP-t...
Az a gond, hogy az alábbi kódban ha megadom az SSID-PASS párost, akkor pár perc múlva létrehozza ugyanazt a hálózatot az esp is és a PC oda csatlakozik...
Valamit az esp-n kellene állítani?
#include <WiFiClient.h>
// Replace with your network credentials
const char* ssid = "-----";
const char* password = "----------";
int gpio0_pin = 0;
int gpio2_pin = 2;
int inp = 0;
String Content(int _inp) {
String _Content = "<body bgcolor=\"#99ff99\" alink=\"#EE0000\" link=\"#0000EE\" text=\"#000000\"vlink=\"#551A8B\">";
_Content += "<title> ESP8266 test </title>";
_Content += "<H1>";
_Content += "<br>";
_Content += "</H1>";
_Content += "<H2>";
_Content += "value = ";
_Content += String(_inp);
_Content += "<br>";
_Content += "</H2>";
_Content += "<p><a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
_Content += "<p><a href=\"socket2On\"><button>ON</button></a> <a href=\"socket2Off\"><button>OFF</button></a></p>";
_Content += "<p><a href=\"120\"><button>120</button></a> <a href=\"980\"><button>980</button></a></p>";
return _Content;
}
void setup(void) {
// preparing GPIOs
pinMode(gpio0_pin, OUTPUT);
digitalWrite(gpio0_pin, LOW);
pinMode(gpio2_pin, OUTPUT);
digitalWrite(gpio2_pin, LOW);
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", []() {
server.send(200, "text/html", Content(inp));
});
server.on("/socket1On", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio0_pin, HIGH);
delay(1000);
});
server.on("/socket1Off", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio0_pin, LOW);
delay(1000);
});
server.on("/socket2On", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio2_pin, HIGH);
delay(1000);
});
server.on("/socket2Off", []() {
server.send(200, "text/html", Content(inp));
digitalWrite(gpio2_pin, LOW);
delay(1000);
});
server.on("/120", []() {
inp = 120;
Serial.println(inp);
server.send(200, "text/html", Content(inp));
delay(1000);
});
server.on("/980", []() {
inp = 980;
Serial.println(inp);
server.send(200, "text/html", Content(inp));
delay(1000);
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient();
}
A hozzászólás módosítva: Aug 9, 2017
ehelyett:
WiFi.begin(ssid, password);
ezt írd be:
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_STA);
WiFi.setAutoConnect(true);
WiFi.setAutoReconnect(1);
WiFi.begin(ssid, password);
A hozzászólás módosítva: Aug 9, 2017
Itt szoftveresen van "kényszerítve", hogy ne AccessPoint legyen, Station mód beállítás, kapcsolat létrehozása a paraméterekkel?
|
|