Esp8266 TPC Server

Odpovědět
arthurkuk
Příspěvky: 13
Registrován: 19 pro 2017, 08:47
Reputation: 0

Esp8266 TPC Server

Příspěvek od arthurkuk » 19 čer 2018, 07:49

Zdravím,
prosím o radu, potřeboval bych zprovoznit TCP server na ESP, něco sem našel, ale nic podle mých představ. Potřebuju, klient se připojí a občas(každé 2s) pošle dotaz (5 bajtů) a čeká odpověť od serveru(85 bajtů) a mezi tím běžel na ESP program (konkrétně čtení dat z čidel). Tady kousek kódu co sem zatím vypotil podle příkladů co sem našel. Připojení klienta proběhne i detekce přijmu o délce 5, ale odeslání podle všeho ne "nvys=0" a klient take hlásí špatnou délku. Ten webserver běží bez problémů.

...
WiFiServer server2 ( 5301 );
ESP8266WebServer server ( 80 );
...
void setup(void) {
...
server2.begin();
}

void loop(void) {
byte i;
float celsius, fahrenheit;
msek=millis()/1000;

ds_read();
//Serial.println();

// the first ROM byte indicates which chip
if(bOk){
/*
for(i=0;i<maxAdr;i++){
Serial.print(" Teplota");
Serial.print(i);
Serial.print(" = ");
Serial.print(teplds);
}
*/
}
else{
//Serial.println(time_get_str(time_get(0),0));
}
server.handleClient();
//TCPServer();
WiFiClient client = server2.available(); // If client is connected
if (!client) { return;}
//Read client request
byte pbuf[10];
size_t req = client.readBytes(pbuf,5);
if(req>0){
Serial.print("delka prijmu = ");
Serial.println(req);
if(req==5){
Serial.println("Prijem OK");
byte vbuf[85];
vbuf[0]=64;
vbuf[1]=1;
vbuf[2]=0;
vbuf[3]=40;
for(byte n=0;n<40;n++){
vbuf[n*2+4]=polh[n]/256;
vbuf[n*2+5]=polh[n]%256;
}
vbuf[84]=35;
byte nvys=server2.write(vbuf,85);
Serial.print("delka vysilani = ");
Serial.println(nvys);
}
}
//client.flush();
}

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Esp8266 TPC Server

Příspěvek od jankop » 19 čer 2018, 08:52

Pro kamaráda jsem dělal server pro Sonoff, ale ladil jsem ho na samotném ESP8266. Má tyto vlastnosti:
1. Je ošetřeno připojení více klientů a zároveň existuje mechanizmus odpojení klientů při nečinnosti
2. Tickerem je zajištěno periodické čtení senzoru
3. Pomocí tlačítka na GPIO0 a LED na GPIO13 je možné použít WiFi WPS, pokud to router dokáže, pak není třeba do sketche psát SSID a password
4. Server na základě požadavků klienta ve formě dotazů HUMI<CRLF>,TEMP<CRLF> atp. vrací hodnoty nebo provádí činnosti.
Perfektně se dá testovat klientem Hercules Setup utility by HW-group.com
Server se dá velmi snadno modifikovat, když upřesníš svoje požadavky, nemám zásadní problém ti pomoci, nejspíš by se jednalo o vypuštění nadbytečných částí.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Esp8266 TPC Server

Příspěvek od jankop » 19 čer 2018, 09:43


arthurkuk
Příspěvky: 13
Registrován: 19 pro 2017, 08:47
Reputation: 0

Re: Esp8266 TPC Server

Příspěvek od arthurkuk » 19 čer 2018, 09:53

Moje požadavky:
-chtěl bych zachovat svůj bin.protokol, klienta mám napsanýho a odzkoušenýho a používám ho pro více zařízení.
-WPS asi taky nepotřebuju (aspoň zatím).
-kvůli rychlému nastavení bych taky rád zachoval webserver, pokud to jde.
Ve zbytku programu se provádí čtení z 3xDS18B20, dále tam provádím jednoduchou jakoPID regulaci s PWM výstupem, takže dotaz od klienta bude někdy vlastně příkaz pro změnu některé proměnné.
Zajímá mě hlavně jak v arduinu obsloužit stále připojeného klienta, někde sem viděl příklad a tam to běželo ve smyčce dokud byl klient připojen a to se mi zdá nehezké. S ESP sem začínal s fw LUA a tam se mi to povedlo napsat podle mých představ, ale tam je obsluha pomocí událostí.

arthurkuk
Příspěvky: 13
Registrován: 19 pro 2017, 08:47
Reputation: 0

Re: Esp8266 TPC Server

Příspěvek od arthurkuk » 19 čer 2018, 09:55

Aha už jdu na odkaz, díky.

arthurkuk
Příspěvky: 13
Registrován: 19 pro 2017, 08:47
Reputation: 0

Re: Esp8266 TPC Server

Příspěvek od arthurkuk » 19 čer 2018, 12:51

Moc pěkný, už mi chodí ten základ dotaz-odpověď, takže díky moc.
Ještě bych měl dotaz, existuje nějaká dokumentace?

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Esp8266 TPC Server

Příspěvek od jankop » 19 čer 2018, 14:35

Je otázka, co si pod pojmem dokumentace představuješ. Základní informace jsem se snažil napsat do úvodu a poznámek. Někde bych asi našel popis, který jsem k tomu psal kamarádovi. Ale ten se týkal opravdu jen komunikace, nikoliv popisu software. A schéma hardware ke kterému se váže obsluha tlačítka, LED a relé, je pochopitelně dostupné na webu.

arthurkuk
Příspěvky: 13
Registrován: 19 pro 2017, 08:47
Reputation: 0

Re: Esp8266 TPC Server

Příspěvek od arthurkuk » 19 čer 2018, 15:19

Ne, to sem se nevyjádřil přesně, mě zajímá dokumentace, nebo spíš help ke knihovnám arduina, nebo se člověk musí prokousávat zdrojákem knihoven.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Esp8266 TPC Server

Příspěvek od jankop » 19 čer 2018, 16:59

Za základ pro sebe považuji https://arduino-esp8266.readthedocs.io/en/2.4.1/ no a potom examples v jednotlivých knihovnách. Na GitHub se také nějaké popisy najdou. Jiné zdroje nemám. Občas i do těch knihoven musím nakouknout, ale abych je louskal to teda ne...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 18 hostů