Ukládání zpráv MQTT
K ukládání dat z našich senzorů rádi používáme InfluxDB, databázi pro časové řady. Jako most mezi MQTT a InfluxDB jsme vytvořili nástroj mqtt2influxdb. Připojí se k InfluxDB i k brokeru MQTT, podle uživatelské konfigurace odebírá topicy MQTT a ukládá data ze zpráv.
- Windows
- Linux
- macOS
Abyste mohli nástroj mqtt2influxdb nainstalovat, musíte mít v počítači nainstalovaný Python a pip, oba v systémové proměnné PATH.
Nastavení přenosu z MQTT do InfluxDB
Nástroj mqtt2influxdb nainstalujete tímto příkazem:
sudo pip3 install --upgrade mqtt2influxdb
Dále vytvořte adresář, do kterého budete ukládat konfigurační soubory. Stačí spustit příkaz:
sudo mkdir /etc/hardwario
Konfigurační soubor vytvoříte v libovolném textovém editoru; v tomto návodu použijeme nano:
sudo nano /etc/hardwario/mqtt2influxdb.yml
V editoru nano uložíte změny klávesovou zkratkou Ctrl + O a editor ukončíte zkratkou Ctrl + X.
Ukázka konfiguračního souboru
mqtt:
host: 127.0.0.1
port: 1883
influxdb:
host: 127.0.0.1
port: 8086
database: node
points:
- measurement: temperature
topic: node/+/thermometer/+/temperature
fields:
value: $.payload
tags:
id: $.topic[1]
channel: $.topic[3]
- measurement: relative-humidity
topic: node/+/hygrometer/+/relative-humidity
fields:
value: $.payload
tags:
id: $.topic[1]
channel: $.topic[3]
- measurement: illuminance
topic: node/+/lux-meter/0:0/illuminance
fields:
value: $.payload
tags:
id: $.topic[1]
- measurement: pressure
topic: node/+/barometer/0:0/pressure
fields:
value: $.payload
tags:
id: $.topic[1]
- measurement: co2
topic: node/+/co2-meter/-/concentration
fields:
value: $.payload
tags:
id: $.topic[1]
- measurement: voltage
topic: node/+/battery/+/voltage
fields:
value: $.payload
tags:
id: $.topic[1]
- measurement: button
topic: node/+/push-button/+/event-count
fields:
value: $.payload
tags:
id: $.topic[1]
channel: $.topic[3]
- measurement: tvoc
topic: node/+/voc-lp-sensor/0:0/tvoc
fields:
value: $.payload
tags:
id: $.topic[1]
- measurement: tvoc
topic: node/+/voc-sensor/0:0/tvoc
fields:
value: $.payload
tags:
id: $.topic[1]
V sekci tags můžete použít vlastní identifikátory, např.: tags: room: bedroom
Jestli konfigurační soubor funguje, otestujete tímto příkazem:
mqtt2influxdb -c /etc/hardwario/mqtt2influxdb.yml --test
Pokud je vše v pořádku, můžete nástroj mqtt2influxdb spustit také jako službu, která poběží na pozadí a spustí se i po restartu:
pm2 start `which python3` --name "mqtt2influxdb" -- `which mqtt2influxdb` -c /etc/hardwario/mqtt2influxdb.yml
pm2 save