<div dir="ltr"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Dobrý večer,</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div><img src="cid:ii_kp7efmr80" alt="image.png" width="277" height="43"><br></div><div><br></div><div>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. </div><div><br></div><div>Píše se ten OTA handler opravdu do loop?</div><div><br>#include <Arduino.h><br>#if defined(ESP8266)<br> /* ESP8266 Dependencies */<br> #include <ESP8266WiFi.h><br> #include <ESPAsyncTCP.h><br> #include <ESPAsyncWebServer.h><br>#elif defined(ESP32)<br> /* ESP32 Dependencies */<br> #include <WiFi.h><br> #include <AsyncTCP.h><br> #include <ESPAsyncWebServer.h><br>#endif<br>#include <ESPDash.h><br><br><br>#include <WiFiUdp.h><br><b>#include <ArduinoOTA.h></b><br><br>/* Your WiFi Credentials */<br>const char* ssid = "******"; // SSID<br>const char* password = "******"; // Password<br><br>const char* OTAhostname = "ESP-puhy";<br><br>/* Start Webserver */<br>AsyncWebServer server(80);<br><br>/* Attach ESP-DASH to AsyncWebServer */<br>ESPDash dashboard(&server); <br><br>/* <br> Button Card<br> Format - (Dashboard Instance, Card Type, Card Name)<br>*/<br>Card button(&dashboard, BUTTON_CARD, "Test Button");<br><br>/* <br> Slider Card<br> Format - (Dashboard Instance, Card Type, Card Name, Card Symbol(optional), int min, int max)<br>*/<br>Card slider(&dashboard, SLIDER_CARD, "Test Slider", "", 0, 255);<br><br><br>void setup() {<br> Serial.begin(115200);<br><br> /* Connect WiFi */<br> WiFi.mode(WIFI_STA);<br> WiFi.begin(ssid, password);<br> if (WiFi.waitForConnectResult() != WL_CONNECTED) {<br> Serial.printf("WiFi Failed!\n");<br> return;<br> }<br> Serial.print("IP Address: ");<br> Serial.println(WiFi.localIP());<br><br> /* Attach Button Callback */<br> button.attachCallback([&](bool value){<br> /* Print our new button value received from dashboard */<br> Serial.println("Button Triggered: "+String((value)?"true":"false"));<br> /* Make sure we update our button's value and send update to dashboard */<br> button.update(value);<br> dashboard.sendUpdates();<br> });<br><br> /* Attach Slider Callback */<br> slider.attachCallback([&](int value){<br> /* Print our new slider value received from dashboard */<br> Serial.println("Slider Triggered: "+String(value));<br> /* Make sure we update our slider's value and send update to dashboard */<br> slider.update(value);<br> dashboard.sendUpdates();<br> });<br><br> /* Start AsyncWebServer */<br> server.begin();<br><br>ArduinoOTA.setHostname(OTAhostname);<br> ArduinoOTA.onStart([]()<br> {<br> Serial.println("Start");<br> });<br> ArduinoOTA.onEnd([]()<br> {<br> Serial.println("\nEnd");<br> });<br> ArduinoOTA.onProgress([](unsigned int progress, unsigned int total)<br> {<br> Serial.printf("Progress: %u%%\r", (progress / (total / 100)));<br> });<br> ArduinoOTA.onError([](ota_error_t error)<br> {<br> Serial.printf("Error[%u]: ", error);<br> if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");<br> else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");<br> else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");<br> else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");<br> else if (error == OTA_END_ERROR) Serial.println("End Failed");<br> });<br> ArduinoOTA.begin();<br>}<br><br>void loop() {<br> /* Nothing so far */<br><b> ArduinoOTA.handle();</b><br><br> delay(5000);<br><br>}<br></div><div><br></div><div>Díky,</div><div><br></div><div>HP</div><div><br></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">st 26. 5. 2021 v 13:45 odesílatel Pavel Brychta <<a href="mailto:pavel.brychta@duhasys.eu">pavel.brychta@duhasys.eu</a>> napsal:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>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>
<p>P.B.<br>
</p>
<div>Dne 26. 05. 21 v 13:30 Jan Půhoný
napsal(a):<br>
</div>
<blockquote type="cite">
<div dir="ltr">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.
<div><br>
</div>
<div>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í :-)
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>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?</div>
<div><br>
</div>
<div>A další věc, je potřeba k ESP32 dávat externí WDT?</div>
<div><br>
</div>
<div>
<div>
<div>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div>HP</div>
</div>
</div>
</div>
</div>
</div>
<br>
</div>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">st 26. 5. 2021 v 11:47
odesílatel Pavel Brychta <<a href="mailto:pavel.brychta@duhasys.eu" target="_blank">pavel.brychta@duhasys.eu</a>>
napsal:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Tak
zrovna to je exemplární případ, jak to určitě nedělat. Zde <br>
<a href="https://github.com/Alextros00/ESP32-MQTT-Relay-Control/blob/main/main/app_main.c" rel="noreferrer" target="_blank">https://github.com/Alextros00/ESP32-MQTT-Relay-Control/blob/main/main/app_main.c</a>
<br>
není jediná zmínka, nebo náznak řešení nějakého failsafe
mechanizmu. <br>
Celé to je na úrovni primitivního Arduino example, který se s
detaily <br>
jako je třeba jméno topcu vůbec nezalamuje. MQTT failsafe samo
o sobě <br>
nevyřeší ani omylem.<br>
<br>
P.B.<br>
<br>
Dne 26. 05. 21 v 11:28 T. Meinlschmidt napsal(a):<br>
> proto pisu mqtt. esp32 tu podporu mqtt ma pomerne
slusnou. viz treba <br>
> takovy easy priklad<br>
><br>
> <a href="https://github.com/Alextros00/Home-Automation-NodeRED-ESP-Telegram" rel="noreferrer" target="_blank">https://github.com/Alextros00/Home-Automation-NodeRED-ESP-Telegram</a><br>
><br>
> tm<br>
><br>
> Dne 2021-05-26 10:54, Pavel Brychta napsal:<br>
>> ... až na to, že když pak lehne to Pi, nebo WiFi, tak
zůstane třeba<br>
>> čerpadlo běžet stále, nebo uvaříte rybičky. Přiznám
se, že takovouto<br>
>> cestou bych nikdy nešel, protože to znamená mít
failsafe procesy v ESP<br>
>> a řídící logiku jinde, což pro účely automatizace
považuji za hodně<br>
>> nešťastné řešení. Když už, tak autonomní pocesy na
zařízení a API pro<br>
>> parametrizaci do toho rPi...<br>
>><br>
>> P.B.<br>
>><br>
>> Dne 26. 05. 21 v 10:49 T. Meinlschmidt napsal(a):<br>
>>> dobre dopoledne.<br>
>>><br>
>>> ja se priznam, ze bych vubec nesel touhle cestou,
ale mel ESP ciste <br>
>>> na hw veci a sber nejakych dat,<br>
>>> a celou tu logiku nechal v node-red + mqtt (treba
na rpi). Casem na <br>
>>> to muzete navazat mobil, UI si udelate podle sebe
pomerne jednoduse, <br>
>>> navic to umi spoustu veci z jinych zdroju.<br>
>>><br>
>>> tm<br>
>>><br>
>>> Dne 2021-05-26 10:32, Jan Půhoný napsal:<br>
>>>> Dobré dopoledne,<br>
>>>><br>
>>>> Ještě bych potřeboval poradit co použít za
systém na ESP32.<br>
>>>> Jedná se mi o to, že do ESP32 přepisuji z
Atmegy 2560 něco jako<br>
>>>> řízení topení a různých zdrojů tepla a
různých hejblátek<br>
>>>> doma. Do teď to běží na ATMEGA 2560 a mám tam
jednoduchý<br>
>>>> "multitasking" pomocí millis. Jedná se v
podstatě jen o čtení<br>
>>>> teplotních čidel, webserver a pak různé
výstupy v podobě SSR<br>
>>>> relé + vstupy a logika mezi tím. Nic
složitého. Na druhou stranu<br>
>>>> za ty roky to celkem naboptnalo co se kódu
týče a ten webserver na<br>
>>>> té AT2560 je takový dost líný. Navíc tam
potřebuji číst http<br>
>>>> requesty data z komerční meteostanice a na to
už to moc není.<br>
>>>><br>
>>>> Neexistuje nějaký opensource projekt na
ESP32, kde by byly<br>
>>>> vyřešeny základní věci jako webserver +
nějaká grafika a<br>
>>>> hejblátka abych to nemusel psát úplně od
začátku. Líbilo by se<br>
>>>> mi už https a základní struktura a dopsal
bych si do toho jen tu<br>
>>>> vlastní logiku a ovládání vstupů a výstupů.<br>
>>>><br>
>>>> Je dobrý nápad na to ESP dávat FreeRTOS, nebo
to už je překonané<br>
>>>> a používáte něco lepšího? Případně víte o
nějakém open<br>
>>>> source projektu pro domácí automatizaci pro
ESP32?<br>
>>>><br>
>>>> Ano, googlil jsem, ale serp je zaplaven videi
geeků kteří připojí<br>
>>>> k pár relátkům esp a myslí si co nevymysleli
a trochu se v tom<br>
>>>> ztrácím. Já bych potřeboval něco trochu
robusnějšího.<br>
>>>><br>
>>>> Díky za nápady.<br>
>>>><br>
>>>> HP<br>
>>>>
_______________________________________________<br>
>>>> HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
>>>> <a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
>>>> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
>>> _______________________________________________<br>
>>> HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
>>> <a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
>>> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
>> _______________________________________________<br>
>> HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
>> <a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
>> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
> _______________________________________________<br>
> HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
> <a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
> <a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" rel="noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>