Re: ESP32 domácí automatizace

Pavel Brychta pavel.brychta na duhasys.eu
Pátek Květen 28 06:10:39 CEST 2021


DD,

ano, handler se dává do loop(), ale doporučuju odstranit ten nešťastný 
delay() i když to zrovna nemusí být zdroj problému. Potíž je v tom, že 
nepíšete jak se projevuje to, že to nefunguje - pokud upoad proběhne, 
ale podezřele rychle a firmware se ve skutečnosti nenahraje, tak je to 
tím, že jste nevymazal paměť flash (pio run -t erase) a to ESP má 
uloženou jinou partition tabulku. Vždycky, když nahrávám do nového 
modulu, tak udělám výmaz flash a teprve pak nahraju první firmware. Já 
prakticky výhradně používám Wrover 16MB moduly s trošku upravenou 
vnitřní konfigurací a všechny tyto úpravy dělám v přípravku mimo 
zařízení před osazením (reklamní linka 
https://s.click.aliexpress.com/e/_9j8PIP ).

P.B.

Dne 27. 05. 21 v 23:22 Jan Půhoný napsal(a):
> Dobrý večer,
>
> ten ESPDash je super. Ještě jednou díky za tip. Ohledně těch WDT asi 
> tam dám i ten externí, bude potřeba ale časovat někde kolem 1minuty, 
> aby to nezabíralo v případě update firmware.
>
> Trochu se s trápím s tím, jak zkombinovat svůj kód s OTA update. 
> Funguje mi jen jedno nebo druhé, ale dohromady ne.
>
> Když to napíšu takto z(viz níže), tak OTA je vidět (např. v Arduino 
> IDE) ale nejde nic nahrát. Testoval jsem jak Arduino IDE, tak platformio.
>
> image.png
>
> Když tam dám jen příklad OTA tak upload normálně funguje, když tam dám 
> jen ESPDash, normálně to funguje. Ale dohromady ne.
>
> Píše se ten OTA handler opravdu do loop?
>
> #include <Arduino.h>
> #if defined(ESP8266)
>   /* ESP8266 Dependencies */
>   #include <ESP8266WiFi.h>
>   #include <ESPAsyncTCP.h>
>   #include <ESPAsyncWebServer.h>
> #elif defined(ESP32)
>   /* ESP32 Dependencies */
>   #include <WiFi.h>
>   #include <AsyncTCP.h>
>   #include <ESPAsyncWebServer.h>
> #endif
> #include <ESPDash.h>
>
>
> #include <WiFiUdp.h>
> *#include <ArduinoOTA.h>*
>
> /* Your WiFi Credentials */
> const char* ssid = "******"; // SSID
> const char* password = "******"; // Password
>
> const char* OTAhostname = "ESP-puhy";
>
> /* Start Webserver */
> AsyncWebServer server(80);
>
> /* Attach ESP-DASH to AsyncWebServer */
> ESPDash dashboard(&server);
>
> /*
>   Button Card
>   Format - (Dashboard Instance, Card Type, Card Name)
> */
> Card button(&dashboard, BUTTON_CARD, "Test Button");
>
> /*
>   Slider Card
>   Format - (Dashboard Instance, Card Type, Card Name, Card 
> Symbol(optional), int min, int max)
> */
> Card slider(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);
>
>
> void setup() {
>   Serial.begin(115200);
>
>   /* Connect WiFi */
>   WiFi.mode(WIFI_STA);
>   WiFi.begin(ssid, password);
>   if (WiFi.waitForConnectResult() != WL_CONNECTED) {
>       Serial.printf("WiFi Failed!\n");
>       return;
>   }
>   Serial.print("IP Address: ");
>   Serial.println(WiFi.localIP());
>
>   /* Attach Button Callback */
>   button.attachCallback([&](bool value){
>     /* Print our new button value received from dashboard */
>     Serial.println("Button Triggered: "+String((value)?"true":"false"));
>     /* Make sure we update our button's value and send update to 
> dashboard */
>     button.update(value);
>     dashboard.sendUpdates();
>   });
>
>   /* Attach Slider Callback */
>   slider.attachCallback([&](int value){
>     /* Print our new slider value received from dashboard */
>     Serial.println("Slider Triggered: "+String(value));
>     /* Make sure we update our slider's value and send update to 
> dashboard */
>     slider.update(value);
>     dashboard.sendUpdates();
>   });
>
>   /* Start AsyncWebServer */
>   server.begin();
>
> ArduinoOTA.setHostname(OTAhostname);
>   ArduinoOTA.onStart([]()
>   {
>     Serial.println("Start");
>   });
>   ArduinoOTA.onEnd([]()
>   {
>     Serial.println("\nEnd");
>   });
>   ArduinoOTA.onProgress([](unsigned int progress, unsigned int total)
>   {
>     Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
>   });
>   ArduinoOTA.onError([](ota_error_t error)
>   {
>     Serial.printf("Error[%u]: ", error);
>     if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
>     else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
>     else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
>     else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
>     else if (error == OTA_END_ERROR) Serial.println("End Failed");
>   });
>   ArduinoOTA.begin();
> }
>
> void loop() {
>   /* Nothing so far */
> * ArduinoOTA.handle();*
>
>  delay(5000);
>
> }
>
> Díky,
>
> HP
>
>
>
> st 26. 5. 2021 v 13:45 odesílatel Pavel Brychta 
> <pavel.brychta na duhasys.eu <mailto:pavel.brychta na duhasys.eu>> napsal:
>
>     Co se týče WDT, tak fakt nevím - mě zatím vždycky stačil vnitřní v
>     ESP32 (má i brownout detector, který už jsem také viděl zabrat).
>     Zařízení mi běží 24/7. Expandér můžu doporučit místo toho PCF
>     raději MCP23008 (nebo 16, pokud je 8 GPIO málo) - minimálně z toho
>     důvodu, že má asynchronní reset, takže po resetu jsou GPIO v
>     definovaných stavech.
>
>     P.B.
>
>     Dne 26. 05. 21 v 13:30 Jan Půhoný napsal(a):
>>     Díky za reakce. Jde mi o to mít to co nejvíce low level. Opravdu
>>     do toho nechci tahat RasPi. Musí to jet i když nepůjde wifi a s
>>     tou Atmegou to drží roky až se divím.
>>
>>     Maximálně do budoucna můžu přidat nějakou vizualizaci na něčem
>>     jako RasPi, ale to spíš už přímo posílat requesty na www a
>>     ukládat do MySQL. Potřebuji aby ta logika byla spolehlivá. Ano,
>>     mám na tom rybičky a čerpadlo topení ( a taky zalévání na zahradě
>>     a vodoměr a zvonky a fakt hodně blbostí :-)
>>
>>     Atmega s watchdogem to zatím pár let dala bez ztráty kytičky,
>>     uptime tam přetékal bez toho aby se to nějak resetovalo nebo tak
>>     něco.
>>
>>     Mám to vše jakoby centralizované u hlavního rozvaděče, takže
>>     nepotřebuji bezdrátové nody po domě, jde mi o to nahradit tu
>>     AtMegu něčím výkonnějším.
>>
>>     Budu tam potřebovat hodně I/O, je dobrý nápad k tomu ESP32 dávat
>>     pár PCF8574 jako I/O expander nebo je něco robusnějšího?
>>
>>     A další věc, je potřeba k ESP32 dávat externí WDT?
>>
>>     HP
>>
>>
>>     st 26. 5. 2021 v 11:47 odesílatel Pavel Brychta
>>     <pavel.brychta na duhasys.eu <mailto:pavel.brychta na duhasys.eu>> napsal:
>>
>>         Tak zrovna to je exemplární případ, jak to určitě nedělat. Zde
>>         https://github.com/Alextros00/ESP32-MQTT-Relay-Control/blob/main/main/app_main.c
>>         <https://github.com/Alextros00/ESP32-MQTT-Relay-Control/blob/main/main/app_main.c>
>>
>>         není jediná zmínka, nebo náznak řešení nějakého failsafe
>>         mechanizmu.
>>         Celé to je na úrovni primitivního Arduino example, který se s
>>         detaily
>>         jako je třeba jméno topcu vůbec nezalamuje. MQTT failsafe
>>         samo o sobě
>>         nevyřeší ani omylem.
>>
>>         P.B.
>>
>>         Dne 26. 05. 21 v 11:28 T. Meinlschmidt napsal(a):
>>         > proto pisu mqtt. esp32 tu podporu mqtt ma pomerne slusnou.
>>         viz treba
>>         > takovy easy priklad
>>         >
>>         >
>>         https://github.com/Alextros00/Home-Automation-NodeRED-ESP-Telegram
>>         <https://github.com/Alextros00/Home-Automation-NodeRED-ESP-Telegram>
>>         >
>>         > tm
>>         >
>>         > Dne 2021-05-26 10:54, Pavel Brychta napsal:
>>         >> ... až na to, že když pak lehne to Pi, nebo WiFi, tak
>>         zůstane třeba
>>         >> čerpadlo běžet stále, nebo uvaříte rybičky. Přiznám se, že
>>         takovouto
>>         >> cestou bych nikdy nešel, protože to znamená mít failsafe
>>         procesy v ESP
>>         >> a řídící logiku jinde, což pro účely automatizace považuji
>>         za hodně
>>         >> nešťastné řešení. Když už, tak autonomní pocesy na
>>         zařízení a API pro
>>         >> parametrizaci do toho rPi...
>>         >>
>>         >> P.B.
>>         >>
>>         >> Dne 26. 05. 21 v 10:49 T. Meinlschmidt napsal(a):
>>         >>> dobre dopoledne.
>>         >>>
>>         >>> ja se priznam, ze bych vubec nesel touhle cestou, ale mel
>>         ESP ciste
>>         >>> na hw veci a sber nejakych dat,
>>         >>> a celou tu logiku nechal v node-red + mqtt (treba na
>>         rpi). Casem na
>>         >>> to muzete navazat mobil, UI si udelate podle sebe pomerne
>>         jednoduse,
>>         >>> navic to umi spoustu veci z jinych zdroju.
>>         >>>
>>         >>> tm
>>         >>>
>>         >>> Dne 2021-05-26 10:32, Jan Půhoný napsal:
>>         >>>> Dobré dopoledne,
>>         >>>>
>>         >>>> Ještě bych potřeboval poradit co použít za systém na ESP32.
>>         >>>> Jedná se mi o to, že do ESP32 přepisuji z Atmegy 2560
>>         něco jako
>>         >>>> řízení topení a různých zdrojů tepla a různých hejblátek
>>         >>>> doma. Do teď to běží na ATMEGA 2560 a mám tam jednoduchý
>>         >>>> "multitasking" pomocí millis. Jedná se v podstatě jen o
>>         čtení
>>         >>>> teplotních čidel, webserver a pak různé výstupy v podobě SSR
>>         >>>> relé + vstupy a logika mezi tím. Nic složitého. Na
>>         druhou stranu
>>         >>>> za ty roky to celkem naboptnalo co se kódu týče a ten
>>         webserver na
>>         >>>> té AT2560 je takový dost líný. Navíc tam potřebuji číst http
>>         >>>> requesty data z komerční meteostanice a na to už to moc
>>         není.
>>         >>>>
>>         >>>> Neexistuje nějaký opensource projekt na ESP32, kde by byly
>>         >>>> vyřešeny základní věci jako webserver + nějaká grafika a
>>         >>>> hejblátka abych to nemusel psát úplně od začátku. Líbilo
>>         by se
>>         >>>> mi už https a základní struktura a dopsal bych si do
>>         toho jen tu
>>         >>>> vlastní logiku a ovládání vstupů a výstupů.
>>         >>>>
>>         >>>> Je dobrý nápad na to ESP dávat FreeRTOS, nebo to už je
>>         překonané
>>         >>>> a používáte něco lepšího? Případně víte o nějakém open
>>         >>>> source projektu pro domácí automatizaci pro ESP32?
>>         >>>>
>>         >>>> Ano, googlil jsem, ale serp je zaplaven videi geeků
>>         kteří připojí
>>         >>>> k pár relátkům esp a myslí si co nevymysleli a trochu se
>>         v tom
>>         >>>> ztrácím. Já bych potřeboval něco trochu robusnějšího.
>>         >>>>
>>         >>>> Díky za nápady.
>>         >>>>
>>         >>>> HP
>>         >>>> _______________________________________________
>>         >>>> HW-list mailing list  -  sponsored by www.HW.cz
>>         <http://www.HW.cz>
>>         >>>> Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>>         >>>> http://list.hw.cz/mailman/listinfo/hw-list
>>         <http://list.hw.cz/mailman/listinfo/hw-list>
>>         >>> _______________________________________________
>>         >>> HW-list mailing list  -  sponsored by www.HW.cz
>>         <http://www.HW.cz>
>>         >>> Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>>         >>> http://list.hw.cz/mailman/listinfo/hw-list
>>         <http://list.hw.cz/mailman/listinfo/hw-list>
>>         >> _______________________________________________
>>         >> HW-list mailing list  -  sponsored by www.HW.cz
>>         <http://www.HW.cz>
>>         >> Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>>         >> http://list.hw.cz/mailman/listinfo/hw-list
>>         <http://list.hw.cz/mailman/listinfo/hw-list>
>>         > _______________________________________________
>>         > HW-list mailing list  -  sponsored by www.HW.cz
>>         <http://www.HW.cz>
>>         > Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>>         > http://list.hw.cz/mailman/listinfo/hw-list
>>         <http://list.hw.cz/mailman/listinfo/hw-list>
>>         _______________________________________________
>>         HW-list mailing list  -  sponsored by www.HW.cz
>>         <http://www.HW.cz>
>>         Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>>         http://list.hw.cz/mailman/listinfo/hw-list
>>         <http://list.hw.cz/mailman/listinfo/hw-list>
>>
>>
>>     _______________________________________________
>>     HW-list mailing list  -  sponsored bywww.HW.cz  <http://www.HW.cz>
>>     Hw-list na list.hw.cz  <mailto:Hw-list na list.hw.cz>
>>     http://list.hw.cz/mailman/listinfo/hw-list  <http://list.hw.cz/mailman/listinfo/hw-list>
>     _______________________________________________
>     HW-list mailing list  -  sponsored by www.HW.cz <http://www.HW.cz>
>     Hw-list na list.hw.cz <mailto:Hw-list na list.hw.cz>
>     http://list.hw.cz/mailman/listinfo/hw-list
>     <http://list.hw.cz/mailman/listinfo/hw-list>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210528/ea3f4498/attachment-0001.html>
------------- další část ---------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 1624 bytes
Desc: [žádný popis není k dispozici]
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210528/ea3f4498/attachment-0001.png>


Další informace o konferenci Hw-list