Pokračování článku o měřiči spotřeby s INA219. V něm je popsán hardware a to, jak funguje samostatně. No a co když k tomu přidáme připojení na internet?
Mít zařízení s ESP32 a nepřipojit ho na internet by byla škoda, ne? Tak co to umí?
Software v aktuální verzi generuje CSV soubor, do kterého zapíše novou řádku:
- každou minutu,
- pokaždé, když zařízení přejde z režimu nízké spotřeby na vysokou či opačně (kde práh mezi vysokou a nízkou spotřebou lze nastavit v menu); zapisování řádků v tomto případě lze vypnout
Při skončení měření nebo v situaci, kdy už se CSV soubor nevejde do paměti (a nebo na stisk tlačítka, pokud vás zajímají průběžné hodnoty) odešle soubor na server.
Co je v souboru?
- Relativní čas měření (počet sekund od začátku)
- Napětí, proud a příkon/výkon v daném okamžiku
- Celková dodaná kapacita mAh od začátku měření
- Minimální a maximální napětí v uplynulé minutě
- Maximální proud v uplynulé minutě
- Minimální a maximální napětí od začátku měření
- Maximální proud od začátku měření
- Informace o režimu vysoké spotřeby:
- Počet cyklů vysoké spotřeby
- Celkový čas vysoké spotřeby (sec)
- Celková spotřeba v mAh a mWh
- Délka posledního cyklu vysoké spotřeby
- Průměrná a maximální délka cyklu vysoké spotřeby
- Maximální proud v posledním cyklu vysoké spotřeby
- Informace o režimu nízké spotřeby:
- Celkový čas nízké spotřeby (sec)
- Celková spotřeba v mAh a mWh
- Maximální proud v posledním cyklu nízké spotřeby
Jak to vypadá? Na následující ukázce je vidět zařízení, které se každých 15 minut probudí, změří a odvysílá data a opět se uspí.
Bílé řádky jsou periodické záznamy (každou minut), žlutě podbarvené jsou záznamy událostí. Události jsou identifikované v druhém sloupci. „HP“ = přechod do vysoké spotřeby, „LP“ = přechod do nízké spotřeby.
Je tu krásně vidět, že kvůli proudovým špičkám poklesne v okamžiku vysílání napětí měkké baterie – a do dost podstatně.

V průběhu špičky (tj. mezi 27 752,69 a 27 761,42 sec) byl špičkový odběr až 302 mA a napětí baterie pokleslo z původních 5,15 V až na 4.08 V.
Není divu, že po dalším vybití baterie se zařízení v průběhu vysílání začalo vypínat – nestačilo napětí na provoz. Nicméně měřič spotřeby umožnil zjistit problém, a doplnění velkého kondenzátoru situaci výrazně vylepšilo. Jak je vidět na dalším obrázku…

… špičkový odběr ze zdroje klesl na 196 mA a napětí pokleslo na 4,38 V – tedy pokles byl o 0,3 V menší. To prodloužilo dobu běhu zařízení na baterie o další kus.
Hurá, tedy k něčemu to je.
Tuto verzi software najdete zde.
Oproti verzi „bez internetu“ je navíc potřeba jedna knihovna:
- Tasker 2.0.0
V konfiguraci desky v Arduino IDE musí být nastaveno takové rozdělení flash, aby tam byl alespoň kus pro filesystém SPIFFS (třeba Partition scheme: Default 4 MB with SPIFFS).
Hlavní menu je rozšířené o volbu, jaká data se mají ukládat – žádná / jen záznamy jednou za minutu / vše = i přechody zařízení mezi nízkou a vysokou spotřebou.
Po spuštění měření je nově přidaná funkce tlačítka „vpravo“ – odešle průběžná data ze stávajícího záznamu, ale pokračuje v záznamu nadále. Tj. umožňuje nahlédnout do rozpracovaných dat.
Tlačítkem „vlevo“ se měření ukončí a data se odešlou na server.
Jak se konfiguruje připojení k Wi-Fi?
V kódu aplikace konfiguraci WiFi nenajdete. Používám WiFi manager, konfigurace se tak dělá přes webový prohlížeč.
Při prvním spuštění zařízení se zobrazí informační obrazovka:

Připojte se z telefonu na uvedené jméno WiFi sítě (RA_nnnnnnnn – číslo se bude lišit, je unikátní pro konkrétní ESP32). Heslo k připojení je aaaaaaaa .
Pak v prohlížeči zobrazte adresu 10.0.1.1. Měla by se objevit stránka s modrým menu:
Na první obrazovce klikněte na „Configure WiFi“.
Na druhé obrazovce nejprve v horní části klikněte na jméno WiFi sítě, kterou chcete používat, a doplňte k němu připojovací heslo.
V druhé půlce stránky je konfigurace připojení na server.
Pak stiskněte Save. Zařízení se zrestartuje (pokud ne, stiskněte reset) a mělo by se připojit k WiFi i na server.
Konfigurační portál se od toho okamžiku již nebude zobrazovat. Pokud ho chcete vyvolat, držte tlačítko „nahoru“ a stiskněte reset (či zapojte napájení).
Kam se data odesílají a jaká „konfigurace serveru“ je myšlena?
Vzhledem k tomu, že mám k dispozici hotové řešení pro příjem dat z malých zařízení, posílá se to do něj. Pokud to chcete změnit, najděte v ina219_app_wifi_g2.ino řádky s voláním ra->sendBlob() a nahraďte je POSTem dat na nějaký váš server.
No a nebo si to můžete vyzkoušet s mým řešením.
Zaregistrujte si uživatelský účet na této adrese. V menu Zařízení založte zařízení a pak ho rozklikněte v seznamu. Objeví se konfigurační hodnoty pro výše uvedenou konfigurační obrazovku zařízení:

Pak můžete měřit. Po každém odeslání se na serveru objeví soubor. Nahrané soubory najdete v detailu zařízení – odkaz je dole.
Výpis souborů vypadá takto:

Datum (kliknutím na něj soubor stáhnete) je čas začátku záznamu. Jméno souboru obsahuje následující části:
- load nebo source – měřil se spotřebič nebo zdroj?
- 16V-400mA – nastavený rozsah měření
- 100mA – nastavená hodnota hranice mezi nízkou a vysokou spotřebou
- Y – zaznamenávaly se události (přechody mezi nízkou/vysokou spotřebou)
- Koncovka rozlišuje typ souboru:
- bez koncovky – začátek záznamu. Končí buď ukončením měření, nebo tím, že došla paměť v zařízení a bylo potřeba ho odeslat na server.
- cont – pokračování k předešlému záznamu, tj. poté, co došla paměť a záznam byl odeslán na server. Čas v souboru pokračuje od začátku měření.
- temp – jedná se o „ručně“ (stisknutím šipky doprava) odeslaná rozpracovaná data. Záznam na zařízení pokračuje dále a bude odeslán včetně dat zahrnutých v souboru „temp“.
Serverová strana je zveřejněna zde.
Pingback: Stavíme chytrý měřič spotřeby s ESP32 a modulem INA219 | pebrou
Pingback: Kostra hotové IoT aplikace pro ESP32 / ESP8266. A k tomu nějaký server… (3/N) | pebrou