Re: ESP32 domácí automatizace

Jan Půhoný konference na puhy.cz
Čtvrtek Květen 27 23:22:02 CEST 2021


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: 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>
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>
> 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
>> 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
>> >
>> > 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
>> >>>> Hw-list na list.hw.cz
>> >>>> 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
>> >> _______________________________________________
>> >> HW-list mailing list  -  sponsored by www.HW.cz
>> >> Hw-list na list.hw.cz
>> >> 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
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://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/20210527/373f572e/attachment.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/20210527/373f572e/attachment.png>


Další informace o konferenci Hw-list