Použití MQTT na ESP32
HTML-код
- Опубликовано: 13 сен 2024
- Protokol MQTT se výtečně hodí - a často používá - pro komunikaci s mikrokontrolery. Ukážu vám, jak použít knihovnu PubSubClient k odesílání i přijímání zpráv na ESP32 a podobných čipech.
Zdrojové kódy: www.cdn.altair...
- - -
Producentem tohoto projektu je Zásilkovna. Česká technologická společnost, která je lídrem v doručování zásilek v ČR. Už dávno ale nejde jen o přepravní společnost - tato digitální platforma dnes díky svým technologickým řešením udává trendy v e-commerce a logistice, a to nejen v Česku, ale pod hlavičkou globální skupiny Packeta i v celém světě. V Zásilkovně používáme celou řadu zajímavých a unikátních technologických řešení. Milujeme technologie. A proto jsme se rozhodli spojit s Michalem Altairem Valáškem a tvořit skvělý technologický obsah pro poučení i pobavení.
Více o Zásilkovně:
Web: www.zasilkovna.cz
Facebook: / zasilkovna
Twitter: / zasilkovna
IG: / zasilkovna.cz
LinkedIn: / 5280145
Vaším průvodcem technologiemi bude Michal Altair Valášek, zkušený lektor, programátor, odborník na kybernetickou bezpečnost a také bastlíř a maker. Spojení se Zásilkovnou mu pro kanál Z-TECH umožňuje vytvářet dvakrát týdně zajímavé video na některé z výše zmíněných témat.
Více o Altairovi:
Blog: www.altair.blog
Web: www.rider.cz
Facebook: / rider.cz
Twitter: / ridercz
Skvělý videa s výbornou tematikou! Mockrát díky!
Tak toto je iny mix.👊😄 Nabuduce ešte varenie a je to komlet🤣
Vařím často, rád a dobře. Ale řekl bych, že většinou dost jednoduchá jídla. Ale pokud na tom budete trvat... :)
Super tutoriál, jen mám jeden dotaz - co se stane po přetečení millis() ? Bude korektně pokračovat, protože přeteče i ta proměnná, do které se ukládá čas příštího měření, nebo by se to muselo ošetřit jinak? Díky za odpověď.
Malo by sa to ošetriť inak. Pán prezentuje klasickú chybu pri používaní millis. V podstate mu to bude raz za 49 dni merať až 100ms v kuse, lebo ten test tesne pred pretečením bude stále true. Správne by to malo byť tak že sa robí rozdiel aktuálneho času a času posledného merania a porovnáva sa to voči tomu intervalu. Vtedy tá aritmetika funguje aj pri pretečení. Ale kto by si to všimol a pochybujem že to mal niekedy pustené 49 dní.
@@peterplesnik4083 Jednodušší je prostě to každý den o půlnoci auto-restartovat.
@@torqe Ako pre koho. Pre mňa je jednoduchšie namiesto + použiť mínus a upraviť podmienku a už to bude fungovať v poriadku aj 20 rokov. Niekto rieši následky, niekto rieši príčiny. Konkrétne ak sa to napíše takto tak to funguje vždy:
unsigned long actionTime = 0;
void loop()
{
unsigned long now;
unsigned long elapsedTime;
now = millis(); //zisti kolko uplynulo milisekund od zapnutia
elapsedTime = now - actionTime; //vypocitaj kolko uplynulo ms od poslednej akcie
if (elapsedTime >= 1000){ //ak uplynuty cas je dlhsi ako jedna sekunda
actionTime=now; //zapametaj si novy cas akcie
.... urob nieco ... //urob akciu
}
... rob nieco stale ...
}
Přeteče i ta proměnná, ale jak správně píše @peterplesnik4083, po nějakou dobu (max. 100 ms) to pojede ve smyčce a aby to bylo zcela korektní (leč podle mne výrazně méně srozumitelné) měl bych to ošetřit popsaným způsobem.
Já to v reálu řeším spíš tak jak píše @torqe, tedy že to čas od času restartuju, přibližně jednou denně (já to nedělám o půlnoci, ale většinou po nějakých 27 hodinách běhu, aby se to nedostalo do fáze). Mám tu nelibou zkušenost, že i když já ten kód napíšu dobře, řada knihoven napsaná dobře není a po dělší době běhu se to začne chovat různě divně, protože je tam nějaký leak a pravidelný restart je řešení sice nehezké, ale funkční.
@@ZTECHCZ
Čo je na tomto nezrozumiteľné?
unsigned long actionTime = 0;
void loop()
{
unsigned long now;
unsigned long elapsedTime;
now = millis(); //zisti kolko uplynulo milisekund od zapnutia
elapsedTime = now - actionTime; //vypocitaj kolko uplynulo ms od poslednej akcie
if (elapsedTime >= 1000){ //ak uplynuty cas je dlhsi ako jedna sekunda
actionTime=now; //zapametaj si novy cas akcie
.... urob nieco ... //urob akciu
}
... rob nieco stale ...
}
Takže aj tak je to zle napísané inými a preto to napíšeme tiež zle a ešte to vycapíme na internet ako návod pre laikov. Ach.