Jak funguje idryer-core¶
idryer-core je knihovna pro ESP32. Převezme vše, co spojuje zařízení s portálem a aplikací:
- Wi-Fi: síť předá aplikace iDryer (ESPTouch) nebo webová stránka přes USB (Improv);
- spárování s účtem jednorázovým tokenem a odpojení;
- zabezpečenou relaci MQTT s opětovným připojením;
- přístup v místní síti: aplikace ovládá zařízení i bez internetu;
- publikaci telemetrie a stavu, doručování příkazů;
- aktualizaci firmwaru vzduchem;
- kartu zařízení na portálu a v aplikaci.
Vy píšete jen svou část: čtete senzory, ovládáte zátěž, určujete, co karta ukáže a jaké operace spouští.
Jeden vstupní bod: iDryer::Link¶
#include <iDryer.h>
static const iDryer::Config CFG = {
.deviceType = iDryer::DeviceType::Unknown, // vlastní zařízení
.unitsCount = 1,
.hasAirTemp = true, // buňka teploty
.hardwareVersion = "1.0",
.firmwareVersion = "0.1.0",
.model = "My Device",
};
static iDryer::Link s_link(CFG);
void setup() {
s_link.begin();
s_link.onCommand("revoke", [](JsonObjectConst) { s_link.handleRevoke(); });
}
void loop() {
s_link.loop();
s_link.telemetry.airTempC[0] = readTemperature(); // váš kód
}
| Vy | Jádro |
|---|---|
vyplňujete s_link.telemetry.* |
publikuje každých 30 s, v klidu každých 60 s |
měníte s_link.status.* (režim, žádanou hodnotu, čas) a voláte publishStatusNow() |
doručí stav; karta se přepne podle režimu |
deklarujete s_link.card(): senzory, ovládací prvky, akce |
sestaví card manifest a publikuje ho |
registrujete s_link.onCommand(...) |
předá příkazy z cloudu i z místní sítě |
Karta zařízení¶
Portál a aplikace kreslí kartu podle card manifestu, který zařízení posílá:
- příznaky
Config.has*dávají hotové buňky: teplotu, vlhkost, výkon topení, ventilátor a další; card().sensor(...)přidá vlastní veličinu podle její cesty v telemetrii;card().action(...)deklaruje operaci: režim jednotky po ní a parametry spuštění.
Kód na portálu k tomu není potřeba. Podrobně: Karta zařízení: card manifest.
mqtt_contract.yaml je zdroj pravdy¶
contracts/mqtt_contract.yaml popisuje protokol: topicy, pole telemetrie a stavu, schopnosti zařízení, card manifest. Generuje se z něj:
| Co | Kam |
|---|---|
iDryer::Config (příznaky has*) a struktury API |
src/_generated/iDryer_api.h |
| MQTT topicy | contracts/_generated/mqtt_topics.h |
| protokol UART ESP32 ↔ řadič | contracts/_generated/uart_protocol.h |
| typy TypeScript pro portál | contracts/_generated/mqtt-api.types.ts |
Warning
Soubory v _generated/ neupravujte ručně: contracts/regen.sh je přepíše z kontraktu.
Vlastní veličina nevyžaduje změnu kontraktu: deklaruje ji card().sensor(...). Kontrakt se mění, když novou schopnost potřebují všechny produkty: nejdřív mqtt_contract.yaml, pak regen.sh, pak kód.
Produkty na jádře¶
- iDryer Link: komunikační modul sušičky, ESP32 vedle řadiče, výměna přes UART.
- iDryer Storage: osvětlení regálu s cívkami, adresovatelný pásek a senzor SHT31.
- iHeater Link: ovládání topení iHeater, integrace s Bambu Lab, Klipper/Moonraker a Home Assistant.