Tento návod ukazuje praktické využití AI pro monitoring měřidel (vodoměr, elektroměr, plynoměr apod.) a obecně pro vizuální detekci stavů v prostředí.
Software AI-on-the-edge-device vyvíjí Josef Müller (alias jomjol).
Repozitář: https://github.com/jomjol/AI-on-the-edge-device
Licence: Projekt je dostupný v režimu dvojí licence – pro soukromé/nekomerční použití zdarma; pro komerční nasazení je potřeba dohodnout samostatnou (placenou) licenci s autorem. Před nasazením si vždy ověřte aktuální licenční podmínky v repozitáři.
Na příkladu si ukážeme, jak se AI dokáže přizpůsobit konkrétnímu prostředí a úloze. Kromě čtení číselníků měřidel lze stejný princip použít i pro detekci stavů, např.:
- otevřená/zavřená vrata,
- přítomnost vozidla,
- světlo/tma,
- kouř či nezvyklé vizuální změny.
Hlavním limitem je kvalita obrazu a vaše představivost nad konkrétním use-casem.
Potřebný hardware
Máme dvě cesty:
A) náš předpřipravený initMAX AI kit (suvenýr ze Zabbix summitu 2025)
B) vlastní hardware dle minimálních požadavků níže.
Pozn.: Celková cena DIY sestavy se obvykle vejde do ~10–20 USD (bez držáku/krabičky).
Varianta A: initMAX – MONITORING AI KIT 1.0
Obsahuje vše potřebné v otestované kombinaci: ESP32-CAM + OV2640, 8 MB PSRAM, ESP32-CAM-MB, microSD (FAT32), USB kabel, držák, napájení. Stačí jen nastavit Wi-Fi a nahrát konfiguraci.
Varianta B: Vlastní HW – minimální požadavky
- ESP32-CAM modul (AI-Thinker nebo kompatibilní) s PSRAM
- Doporučeno: 8 MB PSRAM (větší stabilita a rezerva paměti).
- Minimum: modul s PSRAM; bez PSRAM je provoz značně omezený.
- Kamerový modul OV2640
- Osvědčená a podporovaná varianta. K dispozici i širší čočky (výhodné pro blízké snímání, počítej však s větším zkreslením).
- ESP32-CAM-MB (USB programovací/napájecí deska)
- Zjednodušuje napájení i flashování přes USB-UART.
- USB kabel
- Podle verze ESP32-CAM-MB: Micro-USB (Micro-B) nebo USB-C (doporučujeme).
- microSD karta 2–32 GB (SDHC)
- FAT32 + MBR (ne exFAT).
- Ideálně Class 10
- Pokud karta „nefunguje“, je to typicky kvůli formátu/partition (FAT32/MBR, velikost alokační jednotky např. 32 KB).
- Napájení 5 V / min. 1 A
- Stabilní zdroj je klíčový pro kameru i Wi-Fi.
- 2.4 GHz Wi-Fi připojení.
- Držák/uchycení kamery (stativ, 3D-tištěný držák, pásky apod.)
- Stabilita a opakovatelné zaměření výrazně zlepší přesnost.
- Volitelné, ale užitečné:
- Přídavné osvětlení (konstantní světelné podmínky dramaticky zlepší výsledky)
- Krabička (3D tisk / voděodolné provedení),
- PoE napájení s 5 V step-down
Tip k doostření čočky (důležité)
Výrobce často zajišťuje závit čočky kapkou laku nebo lepidla. Před prvním ostřením je proto nutné jemně závit uvolnit (například nehtem, malými kombinačkami nebo pomocí tištěného „focus ringu“).
Bez správného doostření bude přesnost rozpoznávání výrazně horší.
V našem AI kitu ale tuto úpravu již provádíme za vás – čočka je při dodání otestovaná, povolená a připravená k doostření, takže nemusíte řešit žádné uvolňování.
Příprava SD kartičky
Kartu je nejprve nutné zformátovat do FAT32 (MBR).
Příklad pro Windows
Použijte příkaz diskpart (pozor – smaže všechna data na vybraném disku!):
diskpart
list disk
select disk X (nahraďte X číslem vaší SD karty)
clean
create partition primary
format fs=fat32 quick
assign
exit
Příklad pro macOS
Použijte diskutil (pozor – smaže všechna data na vybraném disku!):
diskutil list
diskutil eraseDisk FAT32 CAM MBRFormat /dev/diskX
(nahraďte diskX číslem karty, název svazku zde bude CAM)
Příklad pro Linux
Použijte mkfs.vfat:
lsblk
sudo umount /dev/sdX1
sudo mkfs.vfat -F 32 -n CAM /dev/sdX
(nahraďte /dev/sdX vaší SD kartou, např. /dev/sdb)
Pokud máte SD kartu připravenou a naformátovanou, stáhněte si instalační balíček obsahující potřebná data pro kartu.Balíček najdete v sekci Releases na adrese:
👉 https://github.com/jomjol/AI-on-the-edge-device/releases/
V části Assets hledejte soubor s názvem podobným:
AI-on-the-edge-device__manual-setup__XXXXXX.zip
Tento ZIP archiv obsahuje soubor sd-card.zip.
Celý archiv rozbalte a zkopírujte obsah na SD kartu (do jejího kořene).
Nakonec otevřete soubor wlan.ini a upravte nastavení Wi-Fi podle vaší sítě.
initMAX AI kit 1.0
Pokud máte náš AI Kit 1.0, máte k dispozici vše potřebné – včetně testovacího držáku pro zařízení.

Složení zařízení
Otevřete krabičku a zkontrolujte, že je uvnitř vše podle obrázku a nic Vám nechybí.

- V horní části balení najdete malé nářadí pro povolení nebo utažení kamery.
- USB-C kabel s redukcí na USB-A pro větší kompatibilitu s různými zařízeními.
- Ve spodní části vlevo se nachází ESP32 modul s již namontovanou a přilepenou kamerou.
- Ve střední části najdete microSD kartu s předinstalovaným základním image.
- Vpravo je umístěna vývojová deska ESP32-CAM-MB, přes kterou budeme zařízení napájet pomocí USB kabelu.
- Tento konektor zároveň slouží pro základní debug konzoli a případné nahrání firmware.
Kompletace
Nejprve sestavíme společně části – modul ESP32 a vývojovou desku ESP32-CAM-MB.
Obě části do sebe musí pevně zapadnout, tak jak je vidět na obrázku.
Počet pinů přesně odpovídá protikusu – ujistěte se, že jsou všechny piny zasunuty nadoraz a správně zarovnány.

Dále vyjmeme SD kartu, která je zasunuta do adaptéru – ten je pro účely ukázky nastaven v uzamčené poloze pro zápis.
Pokud budete kartu v budoucnu upravovat, bude potřeba ji odemknout.
Vyjměte z adaptéru samotnou microSD kartu a opatrně ji vložte do slotu na ESP32. Karta se vkládá logem nahoru a zasune se až do konce, dokud necvakne aretační zámek. Karta pak drží pevně na místě.

Pokud ji potřebujete vyjmout, jemně na ni zatlačte – zámek se uvolní a karta se vysune. Nevytahujte kartu silou, aby nedošlo k poškození SD slotu.Dále rozbalíme USB kabel, který je stažený gumovým páskem.
Na kabelu najdeme konec, který nemá redukci, a opatrně ho zasuneme do vývojové desky (ESP32-CAM-MB).
Konektor by měl jít zasunout bez větší síly, jen dokud pevně nezapadne.

Nyní vyjmeme barevnou výplň v barvách initMAXu.
Na její zadní straně uvidíme označené sloty PHONE a CAM.
Do slotu CAM opatrně zasuneme modul ESP32 – kamera směřuje dolů a logo initMAX je dobře viditelné.
Do slotu vkládáme pouze část s ESP32, nikoliv vývojovou desku (DevBoard).

Nyní připojíme USB kabel k počítači.
Doporučujeme použít USB-C konektor, pokud jej váš počítač podporuje.
V případě potřeby použijte přiloženou redukci – nejprve ji zapojte do kabelu a poté opatrně připojte k počítači.

Na svém telefonu si načtěte naše YouTube video, které ukazuje jednohodinové měření vodoměru.
Video můžete spustit buď pomocí QR kódu, nebo přímo na uvedené webové adrese.


Nyní je váš hardwarový setup kompletní a můžete se pustit do dalšího kroku – nastavení zařízení.
⚠️ POZOR: Zařízení ani telefon se během měření nesmí pohnout.
Umístěte je tak, aby byly stabilní a nehrozil jejich pohyb.
V případě potřeby můžete použít například papírovou krabičku jako oporu.
Zjištění IP adresy a první spuštění
Při prvním spuštění je potřeba do našeho ESP32 nahrát firmware.
Nejjednodušší způsob je využít webový instalátor, který najdete na adrese:
👉 https://jomjol.github.io/AI-on-the-edge-device
⚠️ Upozornění: Instalátor funguje pouze v prohlížeči Google Chrome – ostatní prohlížeče nejsou podporovány.
Na stránce klikněte na tlačítko „Connect“ a postupujte podle instrukcí.

Je poměrně pravděpodobné, že se vám v nabídce pro připojení nezobrazí zařízení „ESP32 (USB-Serial)”.

To znamená, že nemáte nainstalované potřebné ovladače.
Pokud okno pro připojení zavřete, automaticky se zobrazí vyskakovací okno (popup) s možností stažení potřebných ovladačů.
Naše zařízení používá čip CH340C, proto v seznamu vyberte CH340 pro váš operační systém a nainstalujte jej.

Po instalaci ovladače doporučujeme restartovat prohlížeč (případně celý počítač) a poté zopakovat připojení přes tlačítko „Connect“.

Znovu klikněte na tlačítko „CONNECT“ – nyní by se mělo vaše zařízení zobrazit v seznamu dostupných portů a být připraveno k nahrání firmware.
Z nabídky vyberte první možnost „Install AI-on-the-Edge“.

V následujícím okně potvrďte instalaci kliknutím na tlačítko „Install“.

Během instalace nepřerušujte proces ani nezavírejte okno prohlížeče.
Po krátké chvíli se zobrazí ukazatel průběhu (progress bar), který indikuje nahrávání firmware.

Po úspěšné instalaci se zařízení automaticky restartuje.
Jakmile se znovu spustí, můžeme se přesunout do druhé konzole a pokračovat v nastavení. Klikneme na tlačítko NEXT.

Nyní se přepneme do „Logs & Console“.

V této konzoli se zobrazují užitečné informace – například průběh bootování zařízení, případné problémy s SD kartou nebo síťové nastavení, které je pro nás v tuto chvíli nejdůležitější. Je zde také tlačítko „Reset“, které stiskněte, abyste viděli průběh bootování.

Poznámka: Síťové nastavení každého zařízení je určeno obsahem souboru wlan.ini.
Toto nastavení můžete kdykoliv upravit ruční editací souboru přímo na SD kartě.
V našem příkladu vidíme tento řádek:
I (10138) esp_netif_handlers: sta ip: 10.10.3.105, mask: 255.255.252.0, gw: 10.10.1.1
I (10138) WIFI: Assigned IP: 10.10.3.105
Hodnota za Assigned IP: je IP adresa vašeho zařízení.
Abyste se na tuto IP adresu mohli připojit, musíte být na stejné Wi-Fi síti.
Po připojení k Wi-Fi si ponechte otevřené okno s debug logem a v nové záložce otevřete webové rozhraní AI on the Edge:
http://10.10.0-3.XXX/ (nahraďte IP adresou vašeho zařízení) Informaci o nesouladu verzí lze ignorovat.
Nastavení měřiče
Než budeme moci pokračovat, dočasně přeskočíme průvodce (později se k němu vrátíme). Nyní si provedeme dvě pro nás důležitá nastavení:
- Místo průvodce prosím zadejte do prohlížeče adresu: http://10.10.0-3.XXX/edit_config.html
- Zde nastavíme Take image → LED Intensity = 0 (provádíme to především kvůli workshopu, abychom předešli odleskům z telefonů).

- V části Post-Processing → Decimal shift = -3 (protože v první části měřáku máme tři desetinná místa).

- V části Auto Timer → Round interval = 1 (tato hodnota určuje, jak často se bude systém pokoušet zpracovat naměřenou hodnotu).

Ve spodní části klikněte na Save Config, a poté na tlačítko Reboot Now. Případně můžete do prohlížeče zadat adresu http://10.10.0-3.XXX/reboot, která odešle požadavek na restart zařízení.
Po restartu se znovu přesuneme do části, kde načteme adresu: http://10.10.0-3.XXX/setup.html
Poznámka: Protože máme nastavené základní předpoklady pro náš lab, můžeme se pustit do průvodce. Je důležité po každém kroku změny uložit.

Klikněte na Next Step, kde uvidíte, jak je snímána vaše obrazovka.
Nyní je ideální čas umístit telefon na vhodné místo a otáčením zaostřit (pravděpodobně bude potřeba spíše utahovat čočku než povolovat).
Jakmile budete s obrazem spokojeni, můžete přejít na další krok pomocí tlačítka Next Step.

Prvním krokem je získání testovacího statického obrázku našeho měřidla.
Klikněte na tlačítko Create New Reference / Change Camera Settings a vyčkejte několik vteřin, než se obrázek načte.

Dále bude potřeba obrázek mírně upravit.
Je zde také tlačítko, pomocí kterého si můžete otočit obraz, a zároveň velmi užitečný zelený ukazatel (pointer), který lze umístit do horní části okének. Díky němu si můžete obraz precizně vyrovnat. Jakmile máte pointer správně umístěný, upravte natočení obrazu pomocí Rotation angle + (Fine-tune). Když je vše vyrovnáno a v pořádku, klikněte na Update Reference Image.

Poté uložte nastavení pomocí tlačítka Save new Reference Image and Camera Setting. Nepodceňujte prosím tento krok — na jeho přesnosti budou záviset všechny následující fáze konfigurace.

Po uložení pokračujte kliknutím na tlačítko Next Step.

Zde se nastavují alignment markery, které zařízení informují o tom, jak je obraz zarovnán. Pozor — tato část obsahuje dva alignment markery, a je nutné nastavit a samostatně uložit oba.
Pro nastavení vyberte v části Marker položku Marker 1 a zaostřete ho na hodnotu 1994. Poté klikněte na Update Marker a následně na Save New Marker.

Po uložení přejděte k Markeru 2, který zaostřete na m3. Opět nezapomeňte kliknout na Update Marker a poté na Save New Marker.

Po uložení pokračujte na další krok tlačítkem Next Step.
V této sekci nastavujeme okénka pro čtení číselných hodnot. Ve výchozím nastavení jsou k dispozici pouze tři políčka. Pomocí tlačítka New ROI postupně přidejte další tři a pojmenujte je jako dig4 – dig6.

Název zvolíme stejný dig4 – dig6.

Důležitou částí je správné seřazení těchto okének. K tomu slouží tlačítka Move ROI Higher a Move ROI Lower. Pořadí musí být 1–6 — nesmí dojít k přeskočení žádné hodnoty.

Až budeme mít vše připravené, označíme dig1 jako políčko, ve kterém vidíme první číslo – v případě našeho videa 1 (z hodnoty 001). Nuly na začátku v rámci naší ukázky ignorujeme.


Dále zaškrtněte možnost Keep equidistance of X between all ROIs – pomocí hodnoty X doladíte rozestup mezi jednotlivými políčky. V našem případě je toto „magické číslo“ 4.

Jakmile máte vše podle svých představ, tedy čísla jsou vycentrovaná uprostřed všech obdélníčků, klikněte na Save Config.

Poté se můžete přesunout do další sekce nastavení pomocí tlačítka Next Step.

Zde je situace opačná — musíme odebrat analogová políčka, aby nám zůstalo pouze jedno. Políčka je potřeba odstraňovat odzadu, takže začněte výběrem ana4 a klikněte na Delete ROI. Stejným způsobem postupně odstraňte všechna další, dokud nezůstane pouze ana1.

Poté vyberte ana1 a na obrázku označte oblast analogového ciferníku. Pro snadnější orientaci si můžete umístit markery na okraje ciferníku, abyste získali přesnější vymezení.

Polohu pak lze volitelně doladit pomocí příslušných ovládacích tlačítek.

Až budete spokojeni s přesným umístěním, nezapomeňte kliknout na Save Config. Poté zvolte Next Step.

V dalším kroku již nic nenastavujeme, protože vše potřebné máme z prvního kroku, takže rovnou klikněte na Next Step.

V posledním kroku stiskněte Complete Setup + Reboot – zařízení se restartuje a po dokončení restartu se automaticky pokusí provést první měření.

Po restartu by se vám měla zobrazit úvodní stránka. Je potřeba chvíli počkat, než se měření dokončí – přibližně 30 s.

Finálně zpracovaná data

Pokud bude potřeba, všechny kroky lze kdykoliv zopakovat v sekci Settings. Nejčastější problém bývá s alignment markery. Pokud je kamera blokována, přejděte do Settings > Configuration a zvyšte hodnotu Auto Timer > Round interval například na 3, aby se systém pokoušel o zpracování dat méně často.
ZABBIX HTTP

Přihlaste se do Zabbixu pomocí údajů uvedených na kartičce. Vyhledejte svého hosta – šablona (template) už je naimportována. Zařízení je monitorováno pomocí proxy (Raspberry Pi). Na svém hostu nalinkujte šablonu Meter_ESP32_by_HTTP a upravte makro {$ESP32.IP} (pochází z template). Do tohoto makra zadejte IP adresu vašeho zařízení a poté změny uložte.
Šablonu (template) můžete případně najít i na našem GitHubu: https://github.com/initMAX/Zabbix-Templates/tree/production/free/Meter_ESP32_by_HTTP — budeme rádi, pokud nám dáte follow.
Po úspěšném uložení můžeme na našem hostovi najít item s názvem Meter HTTP RAW, kde lze vyžádat testovací data. Měla by se vrátit odpověď ve formátu JSON, přibližně v tomto tvaru:
{
"main": {
"value": "103.4218",
"raw": "103.4218",
"pre": "103.4218",
"error": "no error",
"rate": "0.023780",
"timestamp": "2025-10-10T16:00:00+0200"
}
}
Tím máme ověřeno, že komunikace se zařízením probíhá úspěšně, ale nejde o nejefektivnější způsob přenosu dat. Protože se hodnoty mění zhruba jednou za minutu v rámci našeho nastavení, je vhodnější využít druhou variantu – komunikaci pomocí MQTT. Všimněte si také itemu „calculate“, který slouží k výpočtu denní spotřeby. V našem labu zatím nemáme dostatek dat pro tento výpočet.
ZABBIX MQTT

Než se budeme moci pustit do MQTT, je nejprve potřeba tuto funkci na zařízení povolit. Na zařízení tedy otevřete adresu: http://10.10.0-3.XXX/edit_config.html.
Najděte sekci MQTT a povolte ji zaškrtnutím příslušného checkboxu.

Do příslušných políček nastavte následující hodnoty:
- URI: mqtt://10.10.0.10:1883
- Main Topic: /workshop/meterXXX
- Client ID: meterXXX
Úplně dole klikněte na Save Config a poté na Reboot to activate changes, aby se nové nastavení aktivovalo.

V Zabbixu na vašem hostovi nalinkujte šablonu Meter_ESP32_by_MQTT. Poté upravte makro {$WORKSHOP.NUMBER} (pochází z template) — zadejte do něj vaše číslo workshopu a následně změny uložte.
Šablonu (template) můžete případně najít i na našem GitHubu: https://github.com/initMAX/Zabbix-Templates/tree/production/free/Meter_ESP32_by_MQTT — budeme rádi, pokud nám dáte follow.
Po úspěšném uložení můžeme na našem hostovi najít item s názvem Meter MQTT RAW, kde lze požádat o testovací data. Měla by se vrátit odpověď ve formátu JSON, přibližně jako v předchozím příkladu.
Tím máme ověřeno, že komunikace se zařízením probíhá úspěšně, ale nejde o nejefektivnější způsob přenosu dat. Protože se hodnoty v rámci našeho nastavení mění přibližně jednou za minutu, je vhodnější využít druhou variantu – komunikaci pomocí MQTT. Všimněte si také položky calculate, která slouží k výpočtu denní spotřeby. V našem labu zatím nemáme dostatek dat pro tento výpočet.
Tip pro produkční nasazení
Je potřeba nastavit základní výchozí hodnotu, od které bude měřák počítat.
Přejděte do menu Settings → Set “Previous Value”.
Zde buď rovnou klikněte na Update Value, nebo ručně vyplňte požadovanou hodnotu a poté klikněte na Update Value.

Mělo by se zobrazit potvrzení.

Dejte nám Like, sdílejte nás nebo nás sledujte 😍
Ať vám nic neunikne: