Re: ESP32 domácí automatizace

Pavel Brychta pavel.brychta na duhasys.eu
Středa Červen 2 10:56:24 CEST 2021


Nemáte zač - co se týče WiFi, tak hledejte nastavení autoReconnect a 
autoConnect parametrů (až použijete ten wifimanager/wificonfig, tak 
tohle řešit nemusíte). Je možné, že je máte nastavené na false a pak se 
to znovu nepřipojí. Pokud budete mít další dotazy, tak možná raději 
pište přímo - nejsem si jistý, kolik lidí by tohle zajímalo.

P.B.

Dne 02. 06. 21 v 10:51 Jan Půhoný napsal(a):
> Ok, díky moc za tipy. Už jsem to snad pochopil. Ještě mě zarazila 
> jedna věc, předpokládal bych, že to už je na takovém modulu ošetřené v 
> základu nebo přímo ve wifi řadiči nebo jak to napsat, ale evidentně 
> ne. Pokud odpojím wifi, třeba tak, že restartuji wifi router, tak se 
> sama znovu nepřipojí.
>
> Dá se to nějak nastavit? Nebo musím jednou za čas volat něco jako 
> tento kód? Je nějaké doporučení jak to často testovat? Ale čekal bych, 
> že když se to jednou nastaví, že to bude vyřešeno na úrovni toho wifi 
> řadiče. Nebo mám něco blbě?
>
> if (WiFi.waitForConnectResult() != WL_CONNECTED) {
> WiFi.mode(WIFI_STA);
> WiFi.begin(ssid, password);
>   }
>
> Díky,
>
> HP
>
> po 31. 5. 2021 v 12:06 odesílatel Pavel Brychta 
> <pavel.brychta na duhasys.eu <mailto:pavel.brychta na duhasys.eu>> napsal:
>
>     DD,
>
>     přesně tak. Když se podíváte do includnuté Arduino.h, tak uvidíte,
>     že freertos/FreeRTOS.h, freertos/task.h a freertos/semphr.h jsou
>     součástí, takže můžete volat přímo RTOS funkce. Pro začátek
>     doporučuju si načíst třeba
>     https://savjee.be/2020/01/multitasking-esp32-arduino-freertos/
>     <https://savjee.be/2020/01/multitasking-esp32-arduino-freertos/> a
>     pak si k tomu najděte nějaký příklad na semafory a mutexy. Přes
>     millis() to bude fungovat také, ale kooperativně. Další možností
>     pak je použít knihovnu Ticker, která umožňuje vyytvořit hybrid
>     mezi kooperativním použitím millis() a vláknovým RTOS (ušetříte
>     třeba RAM na stack oblasti). Trošku potíž může být při přístupu do
>     proměnných dash knihovny z jiného vlákna (proto to doporučení
>     studia semaforů), ale to dokážou ošetřit semafory,  nebo fronty.
>     Pokud ale program bude té složitosti, co jste poslal, tak není
>     důvod používat ani RTOS, ani Ticker, ale použijte třeba moji
>     historickou https://github.com/Pablo2048/Interval
>     <https://github.com/Pablo2048/Interval> (teď koukám, že by
>     zasloužila aktualizovat - tak zkuste třeba aktuálnější verzi z
>     https://git.xpablo.cz/pablo2048/Interval
>     <https://git.xpablo.cz/pablo2048/Interval> ). Ta parametrizace
>     WiFi by si taky zasloužila něco lepšího než hardcoded credentials
>     - zkuste se podívat na knihovnu Wifimanager, nebo můj wificonfig
>     (pokud jste dostatečně odvážný...)
>
>     P.B.
>
>     Dne 31. 05. 21 v 11:17 Jan Půhoný napsal(a):
>>     Díky,
>>
>>     delay jsem dal pryč. Už to funguje. "Multitasking" na arduinu
>>     jsem dělal pomocí millis, tady to funguje taky, viz kód níže, ale
>>     jak se to dělá elegantněji na ESP32? Pochopil jsem, že když
>>     použiji Arduino framework, tak by mělo jít psát přímo s využitím
>>     freertos? Omlouvám se za lama dotazy, ale to tam nemusím už nic
>>     includovat a rovnou můžu používat něco jako?
>>
>>     void vATaskFunction( void *pvParameters )
>>         {
>>             for( ;; )
>>             {
>>                 -- Task application code here. --
>>             }
>>
>>             /* Tasks must not attempt to return from their implementing
>>             function or otherwise exit.  In newer FreeRTOS port
>>             attempting to do so will result in an configASSERT() being
>>             called if it is defined.  If it is necessary for a task to
>>             exit then have the task call vTaskDelete( NULL ) to ensure
>>             its exit is clean. */
>>             vTaskDelete( NULL );
>>         }
>>
>>     Potřebuji něco kolem 10 ti tasku, nic náročného, každý se provede
>>     do max 1s. Nebo to mám udělat jen pomocí millis? Je potřeba, aby
>>     tam na pozadí běžel dash a OTA, takto mi to funguje:
>>
>>     #include<Arduino.h>
>>       /* ESP32 Dependencies */
>>     #include<WiFi.h>
>>     #include<AsyncTCP.h>
>>     #include<ESPAsyncWebServer.h>
>>     #include<ESPDash.h>
>>     #include<WiFiUdp.h>
>>     #include<ArduinoOTA.h>
>>     #include"uptime.h"
>>     #include"uptime_formatter.h"
>>     /* Your WiFi Credentials */
>>     const char* ssid = "puhy_iot"; // SSID
>>     const char* password = "iot44puhy"; // 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, "Zalévej");
>>     Card button1(&dashboard, BUTTON_CARD, "Čisti");
>>     Card button2(&dashboard, BUTTON_CARD, "Zatop");
>>     Card uptimeCard(&dashboard, STATUS_CARD, "Uptime", "success");
>>     /*
>>       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);
>>     const int ledHeartBeatPin = 2;
>>     const int ledPin = 5;
>>     // setting PWM properties
>>     const int ledPinPWM = 13;  /* GPIO13 */
>>     //int dutyCycle;
>>     /* Setting PWM Properties */
>>     const int PWMFreq = 5000; /* 5 KHz */
>>     const int PWMChannel = 0;
>>     const int PWMResolution = 8;
>>     const int MAX_DUTY_CYCLE = (int)(pow(2, PWMResolution) - 1);
>>     // Variables will change:
>>     int ledState = LOW;             // ledState used to set the LED
>>     // Generally, you should use "unsigned long" for variables that hold time
>>     // The value will quickly become too large for an int to store
>>     unsigned long previousMillis =
>>     0;        // will store last time LED was updated
>>     // constants won't change:
>>     long heartBeatInterval =
>>     1000;           // interval at which to blink (milliseconds)
>>     void setup() {
>>     pinMode (ledPin, OUTPUT);
>>     pinMode (ledHeartBeatPin, OUTPUT);
>>     pinMode (ledPinPWM, OUTPUT);
>>     ledcSetup(PWMChannel, PWMFreq, PWMResolution);
>>       /* Attach the LED PWM Channel to the GPIO Pin */
>>     ledcAttachPin(ledPinPWM, PWMChannel);
>>     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);
>>     digitalWrite (ledPin, 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);
>>     ledcWrite(PWMChannel, 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();
>>       // here is where you'd put code that needs to be running all the time.
>>       // check to see if it's time to blink the LED; that is, if the difference
>>       // between the current time and last time you blinked the LED is bigger than
>>       // the interval at which you want to blink the LED.
>>     unsigned long currentMillis = millis();
>>     if (currentMillis - previousMillis >= heartBeatInterval) {
>>         // save the last time you blinked the LED
>>     previousMillis = currentMillis;
>>         // if the LED is off turn it on and vice-versa:
>>     if (ledState == LOW) {
>>     ledState = HIGH;
>>     heartBeatInterval = 2500;
>>         } else {
>>     heartBeatInterval = 20;
>>     ledState = LOW;
>>         }
>>         // set the LED with the ledState of the variable:
>>     digitalWrite(ledHeartBeatPin, ledState);
>>     Serial.println(uptime_formatter::getUptime());
>>     uptimeCard.update(uptime_formatter::getUptime());
>>       }
>>
>>
>>     Díky za podporu.
>>
>>     HP
>>
>>
>>
>>     pá 28. 5. 2021 v 6:10 odesílatel Pavel Brychta
>>     <pavel.brychta na duhasys.eu <mailto:pavel.brychta na duhasys.eu>> napsal:
>>
>>         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
>>         <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 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 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/20210602/455b01a6/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/20210602/455b01a6/attachment-0001.png>


Další informace o konferenci Hw-list