Problem Set #1: TH Sensor

alebo chytrý senzor na meranie teploty a vlhkosti

Ciele

  1. Naučiť sa pracovať s prototypovacou doskou RPi Pico 2 WH
  2. Naučiť sa programovať v jazyku MicroPython
  3. Osvojiť si SOLID princípy pri navrhovaní a programovaní mikrokontroléra
  4. Naučiť sa opísať správanie chytrého zariadenia pomocou stavového stroja
  5. Naučiť sa ukladať citlivé údaje šifrovane

Chytré zariadenia

THSensor: Illustration

Chytré zariadenia, či už senzory alebo akčné členy, sú koncové zariadenia každej IoT infraštruktúry. Jeden typ zariadení je zdrojom údajov (senzory) a druhý typ zariadení je možné na diaľku ovládať pomocou príkazov (akčné členy). Najčastejšie však ide o kombináciu oboch typov - aj senzory dostávajú príkazy (napr. na zmenu nastavení) a rovnako tak aj akčné členy posielajú informácie o svojom stave.

Vašou úlohou je vytvoriť chytré zariadenie v jazyku MicroPython, ktoré bude:

Zoznam komponentov

Chytré zariadenie sa bude skladať z týchto komponentov:

Diagram stavov zariadenia

Správanie celého chytrého zariadenia bude reprezentované pomocou stavového stroja. Diagram stavov sa nachádza na nasledujúcom obrázku:

THSensor: State diagram

Význam jednotlivých stavov je nasledovný:

Podpora MQTT protokolu

Keďže je infraštruktúra Smart Department založená na komunikačnom protokole MQTT, aj naše chytré zariadenie bude komunikovať práve pomocou tohto protokolu. Samotná komunikácia však bude mať niekoľko pravidiel.

Konfigurácia

Pri konfigurácii vlastností protokolu MQTT zariadenia nás budú zaujímať nasledujúce vlastnosti:

Všetky vlastnosti budú dostupné v skupine s názvom mqtt v súbore s nastaveniami /data/settings.json.

MQTT témy

Aby vaše chytré zariadenie vedelo komunikovať v infraštruktúre Smart Department pomocou protokolu MQTT, je potrebné komunikovať pomocou konkrétnych tém. Štruktúra každej témy je záväzná a vyzerá takto:

<prefix>/<type>/<id>/<operation>

Význam jednotlivých častí je nasledovný:

Webové rozhranie

Kostra projektu

Aktuálnu kostru projektu si môžete stiahnuť z tejto linky: 2026.2