Něco jako domácí asistent (zatím pro zachycení dat)

Raspberry, Arduino, Mini-PC a další

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

Něco jako domácí asistent (zatím pro zachycení dat)

#1 Příspěvek od matahari »

Vím, že se s tím roztrhl pytel a tak jsem se chtěl na to podívat. Neche se mi registrovat jinde, kde se akorát řeší předdefinované scripty nebo kontejnery a data v cloudu, protože se mi na to chce jít klasicky. Akorát nechci zbytečně zacházet do slepých uliček.

Např. mám RPi Pico s WiFi a s tím chci začít. Připojím k němu snímač BME280 (teplota, tlak a vlhkost) a tyto data někam odešlu, ale vše chci mít doma.

Něco jsem si četl, že pro zachycení dat je ideální MQQT Broker pomocí Mosquitto, který to předá Telegrafu (to úplně nevím, proč to tak musí být), ten to uloží do Influx databáze, která k tomu přidává časové razítko (proto je lepší než jiné databáze) a nakonec se dají z těchto dat nakreslit grafy pomocí Grafany. Takový výstup by byl univerzální pro cokoliv, nejen pro jedno čidlo.

Během čtení jsem se také dočetl o monitorovacím systému Prometheus a proto nechci skončit ve slepé uličce s tím výše.

Stačí mi jen naznačit, co je dnes ideální a nezabývat se něčím, co je překonané.
Uživatelský avatar
mhepp
Příspěvky: 121
Registrován: 16 srp 2017, 00:00

#2 Příspěvek od mhepp »

Influx a Grafana je dobré řešení. Používám ho k veliké spokojenosti už docela dlouho - roky.

Brokera mám vlastního, protože zprávy z čidel posílám ESPNow protokolem a přes Collectd sypu rovnou do Influxu. Collectd mám proto, že má primitivní textové rozhraní - nechtělo se mi implementovat přímo protokol Influxu.

Jelikož vysílám přes ESPNow, tak potřebuji bránu mezi ESPNow světem a lan sítí. Tato brána funguje jako zásobník - zprávy přijímá a ukládá dokud si je nevyzvednu. Tato brána je implementovaná na ESP32 a má duální napájení, takže vydrží i cca hodinový výpadek proudu a zprávy jsou uložené na flash paměti, takže přežijí i vybití baterie.

V Grafaně pak grafy už dle libosti.

Prometheus není vhodný pro ukládání číselných hodnot, protože se jim časem ztrácí přesnost. Influx naproti tomu drží data přesně. Prometheus je spíše správce událostí než časosběrná databáze.

Takže, pokud nejsi příliš hračička s vysokými nároky, tak bych zkusil cestu čidlo -> MQTT -> influx -> grafana

Jen pozor, Influx mne trochu hodně vyšplouchl, protože zahodil podporu pro 32bit architektury. A jelikož jej provozuji na turris Omnia, tak jsem uvázl na starší verzi.
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#3 Příspěvek od matahari »

Děkuji Ti za upřesnění a potvrzení, že jdu podobně správným směrem.

Zatím se s tzv. serverem pro sběr dat budu hrát ve virtuálu a až někdy posléze bych to zkusil nasadit do ostrého provozu.
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#4 Příspěvek od matahari »

Už se s tím hraji, zatím mi chodí jen celočíselné hodnoty a někdy dál budu chtít rozchodit hodnoty i z RPi, ale čas bude až po víkendu.
Přílohy
mqqt.png
mqqt.png
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#5 Příspěvek od matahari »

Trochu jsem pokročil, protože mi došly hlavně souvislosti v použitém softwaru, kdy jsem na začátku vše netušil.

RPi Pico je na některé věci zbytečně drahé, tak jsem ho prvně nahradil ESP2866, ale do této desky mi nešel nahrát micropython, tak jsem ji nahradil ESP32, která funguje dobře.

Zatím přenáším údaje z čidla BME280 (teplota, tlak a vlhkost) a teplotního čidla DS18B20. Mosquito zachytává "komáry" bez problému, údaje předává to telegrafu, který je ukládá do influxdb a z této databáze je načítá grafana, která z nich umí tvořit grafy a dashboardy.
Přílohy
meteo.png
meteo.png
Uživatelský avatar
mhepp
Příspěvky: 121
Registrován: 16 srp 2017, 00:00

#6 Příspěvek od mhepp »

Osobně jsem postupem času všechna DS18B20 čidla vyřadil, protože mi to přišlo úplně zbytečný. Teplotu ve stejné (myšleno dostatečné) přesnosti měří kdejaké čidlo jiných veličin - DS18B20 má sice teplotu na tisíciny stupně, ale +-0.5°C.

A 1-wire se mi taky jevilo jako nespolehlivé - furt s tím byly nějaké potíže. Nevím, jak je to teď, ale SW řešení sběrnice bylo na prd, takže jsem měl I2C <-> 1Wire, ale byl to šváb navíc, který stejně furt zdechal, tak jsem se na to vykašlal. Ale pokud máš jedno čidlo přímo na desce, tak asi dobrý...

To jen jako takový malý postřeh...
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#7 Příspěvek od matahari »

Jasně, nechám to běžet na stole a uvidíme, ale klidně ho vyměním za cokoliv jiného. Ještě mám bezdrátové venkovní čidlo k nějaké meteo stanici (asi z Hadexu), které jede na 433MHz, ale to už bych musel zpracovávat přes nějaký RTL2832 a když jsem to zkoušel, tak to dost často vypadávalo. Nejspíš díky komunikaci ovladače pro RTL a USB portem.

Mám ještě prastarou stanici na úplně prvním RPi a ta jede snad už přes 10 let. Mám u ní také venkovní čidlo DS18B20 na 2 metrovém kabelu a těch 10 let funguje. Dokonce se snad psalo o DS18B20, že pro něj nesmí být moc dlouhý kabel, aby se na něj neindukovalo napětí, které ničilo porty na připojených zařízeních, ale to se u mě také nestalo, i když je metr kabelu venku.

V tom starém RPi ještě kreslím grafy přes RRDtool a export je pouze obrázek. To se nedá srovnat s grafanou.
Jeden z důvodů k tzv. domácímu asistentu je i můj švagr, který chce něco ke své chystané FVE.
Přílohy
meteo3.png
meteo3.png
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#8 Příspěvek od matahari »

Zkusil jsem připojit dva senzory BME280, že bych dal jeden ven a když jsou u sebe velmi blízko, tak u vlhkosti a tlaku jsou rozdíly dle mě v únosné toleranci a bez problému, ale u teploty to dělá 1,7°C, což je dost. Skoro přesně mezi nimi je DS18B20 a to jsou všechny teploty na 10cm².
Přílohy
meteo6.png
meteo6.png
esp32.jpg
esp32.jpg
Uživatelský avatar
mhepp
Příspěvky: 121
Registrován: 16 srp 2017, 00:00

#9 Příspěvek od mhepp »

Jojo... Grafana... Ta je skvělá.

Jen bych ocenil možnost zobrazit dva časové rámce v jednom grafu - například teploty z dneška a teploty ze stejného dne před rokem...

Můj dashboard v Grafaně...
Přílohy
Screenshot_20240528_163448.png
Screenshot_20240528_163448.png
Screenshot_20240528_163435.png
Screenshot_20240528_163435.png
Screenshot_20240528_163408.png
Screenshot_20240528_163408.png
Screenshot_20240528_163351.png
Screenshot_20240528_163351.png
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#10 Příspěvek od matahari »

Taky to máš pěkné, zase mám nějakou inspiraci.
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#11 Příspěvek od matahari »

Ty několika stupňové rozdíly na teploměrech mě štvaly, tak jsem je softwarově zkalibroval.
Přílohy
tepl-kalib.png
tepl-kalib.png
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#12 Příspěvek od matahari »

Nepodařilo se mi rozjet reverzní proxy na apache2 a předělávat to celé na nginx se mi nechce, tak jsem Grafanu přesměroval z nestandardního portu na veřejné IP a funguje.
Přílohy
graf-public-ip.jpg
graf-public-ip.jpg
Uživatelský avatar
matahari
Příspěvky: 1142
Registrován: 29 říj 2017, 00:00

#13 Příspěvek od matahari »

Teprve si o tom něco čtu, ale když budu mít ESP32 s kamerou (OV2640), které stále bude zpracovávat zmíněné čidla, tak mě napadlo, poslat s hodnotami také pořízenou fotku.

K tomu bych chtěl využít již nasazený MQTT protokol a co tak zjišťuji, tak by to asi mělo jít.

Za mosquittem mám telegraf, který přesměrovává zachycené hodnoty z čidel do influx databáze a zrovna vyhledávám, jestli by uměl zachycenou fotku mosquittem uložit do adresáře.

Nemáte někdo něco podobného nasazené?
Odpovědět

Zpět na „Miniaturní počítače (Arduino, Raspberry a další)“