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

Комментарии • 9

  • @streldaxx9986
    @streldaxx9986 Месяц назад +2

    Skvělý videa s výbornou tematikou! Mockrát díky!

  • @jelenpiaggio3749
    @jelenpiaggio3749 Месяц назад +1

    Tak toto je iny mix.👊😄 Nabuduce ešte varenie a je to komlet🤣

    • @ZTECHCZ
      @ZTECHCZ  29 дней назад

      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ěď.

    • @peterplesnik4083
      @peterplesnik4083 Месяц назад

      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í.

    • @torqe
      @torqe Месяц назад

      @@peterplesnik4083 Jednodušší je prostě to každý den o půlnoci auto-restartovat.

    • @peterplesnik4083
      @peterplesnik4083 Месяц назад

      @@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 ...
      }

    • @ZTECHCZ
      @ZTECHCZ  29 дней назад

      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í.

    • @peterplesnik4083
      @peterplesnik4083 29 дней назад

      @@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.