Több ESP8266 modul közti kommunikáció
Több ESP8266 modul közti kommunikáció
Sziasztok! Meg lehet azt oldani, hogy 5 modul kommunikáljon egymással? Akár egy routeren keresztül, akár közvetlenül egymással?
A lényeg az lenne, hogy lenne egy master, ami adatokat küldene a többinek, a többi ezt feldolgozná, és végrehajtaná.
Van olyan firmware, ami alapból képes erre, vagy tudja a gyári is? Minden ESP modulon lenne egy ATMEGA328P, az küldené az AT parancsokat. A masternek lenne 5 bemenete, és 5 kimenete. A többi slave-en pedig 1-1 ki/bemenet. Reléket kellene kapcsolni távolról, és visszajelezni az állapotukat.
A WiFi both mód az jó lenne erre? Az olyan, hogy bárki csatlakozhat bárkire, és egymáson keresztül is képesek kommunikálni?
Előre is köszönöm a válaszokat!
A lényeg az lenne, hogy lenne egy master, ami adatokat küldene a többinek, a többi ezt feldolgozná, és végrehajtaná.
Van olyan firmware, ami alapból képes erre, vagy tudja a gyári is? Minden ESP modulon lenne egy ATMEGA328P, az küldené az AT parancsokat. A masternek lenne 5 bemenete, és 5 kimenete. A többi slave-en pedig 1-1 ki/bemenet. Reléket kellene kapcsolni távolról, és visszajelezni az állapotukat.
A WiFi both mód az jó lenne erre? Az olyan, hogy bárki csatlakozhat bárkire, és egymáson keresztül is képesek kommunikálni?
Előre is köszönöm a válaszokat!
Re: Több ESP8266 modul közti kommunikáció
Üdv!
Szerintem meg lehet oldani. Ez a jó hír, a rossz hogy eddig senki nem osztott meg efféle megoldást.
Egy sima relé kapcsolgatsához szerintem kár lenne az ESP mellé egyéb AVR-t kötni. Ennél jóval többre is képes önmagában, nem beszélve arról hogy komplett kész táppal, relével ellátott, dobozolt ESP Sonoff egységeket lehet kapni, mondhatni anyag áron. Programozni meg simán lehet arduinoval. Persze ez is egy újabb tanulni való.
Ha ragaszkodsz az AVR+ESP pároshoz AT parancsokat használva és nem érkezik jobb tipp akkor én elindulnék a szerver és kliens mintaprogramoktól.
itt is találsz ilyent.
http://www.tavir.hu/taxonomy/term/134
Én legalább is azokkal kezdetem, HTML oldal készítés a vezérléshez, aztán jött az ajax és hát onnan már csak egy lépés volt a két ESP közötti kommunikáció.
Arról nem tudok, hogy ha a routert egy ESP-vel helyettesíted akkor mennyi egység tud hozzá csatlakozni egyszerre.
Nálam is az általad felvázolt módon működnek az ESP-egységek, csak én nem használok AVR-t,(még az ESP képességeit sem használom ki lakásvezérlés közben) valamint kizárólag routeren keresztül kommunikálnak egyenlőre.
Szerintem meg lehet oldani. Ez a jó hír, a rossz hogy eddig senki nem osztott meg efféle megoldást.
Egy sima relé kapcsolgatsához szerintem kár lenne az ESP mellé egyéb AVR-t kötni. Ennél jóval többre is képes önmagában, nem beszélve arról hogy komplett kész táppal, relével ellátott, dobozolt ESP Sonoff egységeket lehet kapni, mondhatni anyag áron. Programozni meg simán lehet arduinoval. Persze ez is egy újabb tanulni való.
Ha ragaszkodsz az AVR+ESP pároshoz AT parancsokat használva és nem érkezik jobb tipp akkor én elindulnék a szerver és kliens mintaprogramoktól.
itt is találsz ilyent.
http://www.tavir.hu/taxonomy/term/134
Én legalább is azokkal kezdetem, HTML oldal készítés a vezérléshez, aztán jött az ajax és hát onnan már csak egy lépés volt a két ESP közötti kommunikáció.
Arról nem tudok, hogy ha a routert egy ESP-vel helyettesíted akkor mennyi egység tud hozzá csatlakozni egyszerre.
Nálam is az általad felvázolt módon működnek az ESP-egységek, csak én nem használok AVR-t,(még az ESP képességeit sem használom ki lakásvezérlés közben) valamint kizárólag routeren keresztül kommunikálnak egyenlőre.
Re: Több ESP8266 modul közti kommunikáció
1 ESP-re egyidejűleg 4+1 socket lehet. De a Router egészségesebb.
http://www.tavir.hu - a gazda
Re: Több ESP8266 modul közti kommunikáció
Én a legkisebb helység foglaltság jelzőjét oldottam meg 2db esp-vel, annál fordulhat elő egyedül, hogy jó lenne ha kommunikálnának éjjel is amikor a router is pihen. Úgy hogy én is látok ebben az üzemmódban fantáziát.
Még a 4+1 be is simán beleférek, bármi is legyen az a +1.
Még a 4+1 be is simán beleférek, bármi is legyen az a +1.
Re: Több ESP8266 modul közti kommunikáció
Szerverként 4 klienst tudsz kiszolgálni, ha routeren át építetted ki a hálót. Ha access point alapú, akkor egyidejűleg 1 kapcsolatot tud kiszolgálni.
http://www.tavir.hu - a gazda
Re: Több ESP8266 modul közti kommunikáció
Köszönöm a pontosítást.
Websocket használatánál a 4-et olvastam, de hogy AP módban csak 1 készülék csatlakozhat, az bizony nem valami sok. Akkor ez a mód valóban csak arra van, hogy elvégezhessük a wifi csatlakozási beállításokat.
Websocket használatánál a 4-et olvastam, de hogy AP módban csak 1 készülék csatlakozhat, az bizony nem valami sok. Akkor ez a mód valóban csak arra van, hogy elvégezhessük a wifi csatlakozási beállításokat.
Re: Több ESP8266 modul közti kommunikáció
Otthon én is használok már ilyen modulokat, 3-at, amikre BMP280 van rákötve. És még kettőt, amik az Openweathermap.com-ról töltik le az időjárás adatokat, amiket Arduino Due dolgoz fel, és kijelzőn megjelenít.
De azok mind a routerre csatlakoznak, és egy MySQL adatbázisba küldik az adatokat.
Azokra a modulokra EspEasy firmware-t töltöttem. Először Domoticz programba küldték az adatokat, de aztán rájöttem, hogy semmit nem ér. Akkor az EspEasy firmware-t módosítottam kicsit, hogy képes legyen SQL-be is feltölteni.Azóta oda küldöm. Ott azt csinálok az adatokkat amit akarok.
Visszatérve a témára jó az a megoldás is, hogy a routerre csatlakozik mind, attól DHCP-vel ugyanazt az IP-t meg tudják kapni.
De akkor is a modulokat servernek kell beállítani, és egyet kell kliensnek? A kliens létrehozza a kapcsolatot egyszerre csak eggyel, elküldi neki az utasítást, utána bontja a kapcsolatot. Ez így működhet?
Esetleg UDP kapcsolattal is működhet a dolog? Azt nem ismerem.
De azok mind a routerre csatlakoznak, és egy MySQL adatbázisba küldik az adatokat.
Azokra a modulokra EspEasy firmware-t töltöttem. Először Domoticz programba küldték az adatokat, de aztán rájöttem, hogy semmit nem ér. Akkor az EspEasy firmware-t módosítottam kicsit, hogy képes legyen SQL-be is feltölteni.Azóta oda küldöm. Ott azt csinálok az adatokkat amit akarok.
Visszatérve a témára jó az a megoldás is, hogy a routerre csatlakozik mind, attól DHCP-vel ugyanazt az IP-t meg tudják kapni.
De akkor is a modulokat servernek kell beállítani, és egyet kell kliensnek? A kliens létrehozza a kapcsolatot egyszerre csak eggyel, elküldi neki az utasítást, utána bontja a kapcsolatot. Ez így működhet?
Esetleg UDP kapcsolattal is működhet a dolog? Azt nem ismerem.
Re: Több ESP8266 modul közti kommunikáció
Igen nálam így működik ahogy írtad. Minden ESP szerverként működik, és az adatcsere idejére kliens is lesz. Aztán ha kész akkor kapcsolat bontás. Router DHCP nem feltétlen kell a fix IP hez mert be lehet állítani ezt az ESP-n is, legalább is ESP Arduino alatt.
UDP-ről semmit nem tudok.
UDP-ről semmit nem tudok.
Re: Több ESP8266 modul közti kommunikáció
Az Arduino el van fuserálva, amiatt van ez a hiper gányolás.
A normális módszer, hogy az ESP-1 a 10001-es porton hallgat, az ESP-2 a 10002-es porton hallgat,... az ESP-5 a 10005-as porton hallgat.
Amikor dumálnak, akkor a megfelelő porthoz kapcsolódnak.
Az ESP IOT SDK alatt annyi portot nyitsz, amennyit nem szégyelsz, egyszerre lehetsz kliens is és szerver is. Teljesen olyan, mint egy valódi számítógép.
Az Arduino meg olyan, amilyen. Nem lehetsz egyszerre kliens és szerver is, pedig a hardver egyáltalán nem korlátoz ebben az esetben.
A normális módszer, hogy az ESP-1 a 10001-es porton hallgat, az ESP-2 a 10002-es porton hallgat,... az ESP-5 a 10005-as porton hallgat.
Amikor dumálnak, akkor a megfelelő porthoz kapcsolódnak.
Az ESP IOT SDK alatt annyi portot nyitsz, amennyit nem szégyelsz, egyszerre lehetsz kliens is és szerver is. Teljesen olyan, mint egy valódi számítógép.
Az Arduino meg olyan, amilyen. Nem lehetsz egyszerre kliens és szerver is, pedig a hardver egyáltalán nem korlátoz ebben az esetben.
Re: Több ESP8266 modul közti kommunikáció
Nem világos ám számomra mi a baj.
Az a probléma hogy egyszerre csak egy szerverrel tud kommunikálni az ESP Arduino, kliens módban?
Vagy az ESP-n futtatott szerver leáll arra az időre a még kliensként csatlakozol valamihez?
Ami viszont még érdekelne hogy nálam minden esp ugyanazon a porton van és így kommunikálgatnak egymással és egyéb netes szerverekkel. Miért jobb ha külön porton vannak?
Mondjuk olyant problémám van hogy első, vagy első pár üzenetküldésnél néha lassan veszik fel a kapcsolatot egymással, aztán a beáll a kapcsolat. Én arra gondoltam hogy megpingelem az összes modult mondjuk a kezelőkonzol feléledésekor, vagy bizonyos időközönként, nehogy lankadjon a figyelmük.
Lehet ostoba egy ötlet.
Az a probléma hogy egyszerre csak egy szerverrel tud kommunikálni az ESP Arduino, kliens módban?
Vagy az ESP-n futtatott szerver leáll arra az időre a még kliensként csatlakozol valamihez?
Ami viszont még érdekelne hogy nálam minden esp ugyanazon a porton van és így kommunikálgatnak egymással és egyéb netes szerverekkel. Miért jobb ha külön porton vannak?
Mondjuk olyant problémám van hogy első, vagy első pár üzenetküldésnél néha lassan veszik fel a kapcsolatot egymással, aztán a beáll a kapcsolat. Én arra gondoltam hogy megpingelem az összes modult mondjuk a kezelőkonzol feléledésekor, vagy bizonyos időközönként, nehogy lankadjon a figyelmük.
Lehet ostoba egy ötlet.
Re: Több ESP8266 modul közti kommunikáció
Na volt egy kis időm. Átállítottam itthon 2 esp egységet. Saját portot kapott, meg persze vele együtt a vezérlő konzolokat is megdolgoztam, hogy elérjék az új porton az esp-ket. (ESP-Nextion, valamint HTML)
Nagy változást nem tapasztaltam, dolgozik mint eddig, esp-k is kommunikálnak ugyanúgy egymással, pont mindegy neki milyen porton van. Mondjuk ezt vártam is, ha már be lehet állítani kliensmódban szerverhez tartozó portot, akkor miért ne működne.
Annyiban mindenképp más hogy így már nem csak IP címet kell menteni, de a portal is foglalkozni kell.
Ebből következtetve futott át fejemen a gondolat, hogy....
,ha több FTP szerverem fut itthon, ESP8266FtpServer.h esetén ez nem ritka jelenség, akkor ott a 21 portal mi a helyzet?
Mondjuk az itthon lévő 2db rendes nagy háttértáras, fájltárolós, FTP szerver sem hisztizett még hogy mindketten 21-es prtot használják.
Tesztelgetem aztán kiderül hogy megéri e a macerát a külön port használata, minden ESP egységnél.
Nagy változást nem tapasztaltam, dolgozik mint eddig, esp-k is kommunikálnak ugyanúgy egymással, pont mindegy neki milyen porton van. Mondjuk ezt vártam is, ha már be lehet állítani kliensmódban szerverhez tartozó portot, akkor miért ne működne.
Annyiban mindenképp más hogy így már nem csak IP címet kell menteni, de a portal is foglalkozni kell.
Ebből következtetve futott át fejemen a gondolat, hogy....
,ha több FTP szerverem fut itthon, ESP8266FtpServer.h esetén ez nem ritka jelenség, akkor ott a 21 portal mi a helyzet?
Mondjuk az itthon lévő 2db rendes nagy háttértáras, fájltárolós, FTP szerver sem hisztizett még hogy mindketten 21-es prtot használják.
Tesztelgetem aztán kiderül hogy megéri e a macerát a külön port használata, minden ESP egységnél.
Re: Több ESP8266 modul közti kommunikáció
Lehet mégis csak jók ezek a külön portok. Minden esp külön portot kapott, és ritkábbra vettem a wifi ellenőrzési időzítést, végre azt érzem hogy gördülékeny az ESP kommunikáció. Mondjuk így már nem is annyira akarom lecserélni az ESP modulokat RTL-re.
Az még ugyan jó lenne hogy miközben vár mondjuk a Google szerver válaszára közben végezhetné a dolgát, de lehet itt jönnek elő a korlátai vagy az enyémek.
Az még ugyan jó lenne hogy miközben vár mondjuk a Google szerver válaszára közben végezhetné a dolgát, de lehet itt jönnek elő a korlátai vagy az enyémek.
Re: Több ESP8266 modul közti kommunikáció
Nem az ESP korlátai jönnek elő, hanem az idióta Arduino-s implementációnak.
Balfékek, most írom újra a WiFi klienst, hogy ne blokkoljon.
Simán működnie kellene blokkolás nélkül a kliensnek, csak hát ahhoz IQ is kellett volna a fejlesztő részéről.
A szerver rendesen működik, nem blokkol. A WiFiClient kód egy az egyben mehet a kukába. Annyit ér.
Maga a chip képes párhuzamosan TCP-n kommunikálni. Az espconn API-t megnézheted (espconn.h).
Balfékek, most írom újra a WiFi klienst, hogy ne blokkoljon.
Simán működnie kellene blokkolás nélkül a kliensnek, csak hát ahhoz IQ is kellett volna a fejlesztő részéről.
A szerver rendesen működik, nem blokkol. A WiFiClient kód egy az egyben mehet a kukába. Annyit ér.
Maga a chip képes párhuzamosan TCP-n kommunikálni. Az espconn API-t megnézheted (espconn.h).
Re: Több ESP8266 modul közti kommunikáció
Telepíted az ESPAsyncTCP-t.
Aszinkron kliens (összecsapva, valószínűleg át kell gyúrnod). A disconnect csak 5 perc után jön, szóval ha megjött minden adat close()-t hívhatsz.
Aszinkron kliens (összecsapva, valószínűleg át kell gyúrnod). A disconnect csak 5 perc után jön, szóval ha megjött minden adat close()-t hívhatsz.
Kód: Egész kijelölése
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include "ESPAsyncTCP.h"
const char* ssid = "...";
const char* password = "...";
AsyncClient asyncClient;
void connectCallback(void*arg, AsyncClient * client)
{
Serial.println("Connected!\n");
if( client->write("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n") <= 0 )
Serial.println("Failed to send data!");
}
void dataCallback(void *arg, AsyncClient * client, void *data, size_t len)
{
char buf[len+1];
buf[len] = 0;
memcpy(buf, data, len);
Serial.print(buf);
}
void disconnectCallback(void*arg, AsyncClient * client)
{
Serial.println("\n\nDisconnected!\n");
}
void setup(){
Serial.begin(115200);
Serial.println("\nStarted\n");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
asyncClient.onConnect(connectCallback);
asyncClient.onData(dataCallback);
asyncClient.onDisconnect(disconnectCallback);
if(!asyncClient.connect("www.google.com", 80)){
Serial.println("Connect Failed");
return;
}
}
void loop(){
}
Re: Több ESP8266 modul közti kommunikáció
Belenézni nem igen tudok a dolgok belsejébe mert ahhoz még suta vagyok, de az efféle kész megoldásokkal már el- elboldogulok.
Nekem a google felé az ssl kapcsolat kell, de ahogy nézem ez is megoldható.
Hétvégén nem fogok unatkozni.
Köszönöm a tippet.
Ha megy a dolog, beindul a fantázia és megint módosíthatom az összes ESP-t itthon. Még szerencse hogy nincs túl sok beépítve.
Nekem a google felé az ssl kapcsolat kell, de ahogy nézem ez is megoldható.
Hétvégén nem fogok unatkozni.
Köszönöm a tippet.
Ha megy a dolog, beindul a fantázia és megint módosíthatom az összes ESP-t itthon. Még szerencse hogy nincs túl sok beépítve.