Jako stabilní podvozek pro provoz statistik a grafů jsem se rozhodl použít Raspberry PI 3 ve verzi Desktop. Dnes se pokusím nainstalovat programy a nástroje, které budu potřebovat pro sběr, vyhodnocování a vizualizaci statistik a grafů. A jaké nástroje to jsou?

  • InfluxDB – databáze pro ukládání statistických dat
  • Grafana – nástroj pro vizualizaci a tvorbu luxusních grafů a dashboardů s mnoha dalšími rozšířeními
  • Node-Red – platforma zajišťující komunikaci mezi Loxone (pomocí websockets) a normálním světem
  • Perl – programovací jazyk pomocí jehož budu parsovat JSON a XML data z tepelného čerpadla NIBE a meteo stanice Wario Weather

Před tím než začneme cokoliv instalovat, tak provedeme aktualizace. Příkazy už snad ani nebudu připomínat:

$ sudo apt-get update
$ sudo apt-get upgrade

Instalace InfluxDB

InfluxDB je velmi jednoduchá open-source databáze pro ukládání dat, která se mění v čase (time series database). Je psaná v jazyce „Go“ a je optimalizovaná pro rychlé a vysoce dostupné ukládání a vyčítání dat v  časových řadách, tedy dat jako jsou monitoring, aplikační metriky, IoT data nebo real-time analýzy. InfluxDB Má také podporu zpracování dat z Graphite. Databáze časových řad má série záznamů vždy spojené s časovou značkou (timestamp). Časová značka může bát uložena spolu s daty měření nebo ji InfluxDB vygeneruje sama

TCP port 8086 je používán pro client-server komunikaci přes HTTP API poskytované databází InfluxDB
TCP port 8088 je používán pro RPC službu (zálohování a obnova)

Kromě výše uvedených portů nabízí InfluxDB také řadu zásuvných modulů, které mohou vyžadovat vlastní porty. Všechna mapování portů lze měnit prostřednictvím konfiguračního souboru, který je umístěn na /etc/influxdb/influxdb.conf pro výchozí instalace.

Přidání repozitáře InfluxData:

Poznámka: Po stisknutí klávesy Enter se u některých příkazů zobrazí nová výzva a u jiných příkazů se nic jiného se nezobrazí. V rozhraní příkazového řádku CLI to znamená, že příkaz byl spuštěn a nebyly zobrazeny žádné chyby. Pokud se něco pokazí, zobrazí se vždy chyba. Žádné zprávy, dobré zprávy :)!

$ cd /tmp

$ sudo  curl -sL https://repos.influxdata.com/influxdb.key >>  influxdb.key

 $ sudo  apt-key add influxdb.key

Pokud příkaz neproběhne z důvodu chybějící knihovny curl, spusťte příkaz sudo apt-get install curl

echo "deb https://repos.influxdata.com/debian stretch stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Pokud máte jinou distribuci než „stretch“, je potřeba zadat správný název distribuce

Instalace InfluxDB z přidaného repozitáře

V předchozím kroku jsme přidali repozitář InfluxDB (/etc/apt/sources.list.d/influxdb.list), teď nainstalujeme databázi

# sudo apt-get update

# sudo apt-get install influxdb

Start databázové služby

# sudo service influxdb start

Konfigurace InfluxDB

Systém má interní výchozí hodnoty všech nastavení uloženy v konfiguračním souboru. Zobrazit výchozí nastavení lze pomocí příkazu influxd config. Většina nastavení, která jsou uložena konfiguračním souboru (/etc/influxdb/influxdb.conf) je naštěstí celkem dobře komentována.

# sudo nano /etc/influxdb/influxdb.conf

Zde lze měnit nastavení dle potřeba, nastavení, která jsem měnil já jsou cesty, kam budou ukládány adresáře „data“, „meta“ a „wal“. Nechci tyto informaci ukládat do výchozího úložiště, ale do adresáře „/data„. Pokud půjdete stejnou cestou jako já, nezapomeňte adresáři přidělit patřičná oprávnění (vlastník:skupina = influxdb:influxdb)

Další údaj, který jsem změnil, je povolení HTTP endpointu, který umožňuje přijímat data pomocí HTTP API. Je třeba v konfiguračním souboru najít oblast „[http]“ kde bude řádek „# enabled = true„; Smazáním znaku „#“ endpoint povolíme.

Dva způsoby, jak InfluxDB načítá influxdb.conf

1. způsob: spouštění influxd s parametrem config, který obsahuje cestu ke konfoguračnímu souboru

# sudo influxd -config /etc/influxdb/influxdb.conf

2. způsob: nastavení proměnné prostředí INFLUXDB_CONFIG_PATH tak, aby obsahovala cestu ke konfoguračnímu souboru

# sudo echo $INFLUXDB_CONFIG_PATH /etc/influxdb/influxdb.conf

# sudo influxd

InfluxDB prvně zkontroluje parametr -config a až následně proměnnou prostředí. Více informací najdete v oficiální dokumentaci.

Po uložení změn v konfiguračním souboru je potřeba službu influxd restartovat

# sudo service influxdb restart

Test, že je InfluxDB funkční

Otevřete internetový prohlížeč a přejděte na adresu http://[ipadresaRaspberry]:8086 tedy například http://192.168.1.22:8086

Pokud je vše v pořádku, zobrazí se Vám informace „404 page not found„, pokud se toto nezobrazí, pravděpodobně jste někde udělali chybu a je třeba pátrat.

Pokud neznáte IP adresu Vašeho raspberry, lze ji zjistit příkazem ifconfig

Pro test můžete také spustit InfluxDB z příkazového řádku pomocí příkazu „influx„. Pokud je vše funkční, zobrazá se Vám podobná nebo stejná obrazovka:

Napsáním příkazu „exit“ se vrátíte zpět do linux shell.

Ještě než se ponoříte do bezhlavého používání InfluxDB, je dobré se seznámit s některými klíčovými pojmy databáze. Tento dokument poskytuje základní seznámení s těmito pojmy a společnou terminologií InfluxDB. Úvodní příručka zde.

Poznámka pod čarou

U některých instalací se i nedařilo influxDB spouštět po bootu. Pomohl drobný zásah, úprava souboru „influxdb.service“

#sudo nano /lib/systemd/system/influxdb.service

A změnit

User=influxdb
Group=influxdb

na

#User=influxdb
#Group=influxdb

a spustit příkazy

sudo systemctl daemon-reload
sudo sudo service influxdb start

U posledních instalací to už ale nebylo potřeba

Užitečné příkazy

# sudo systemctl start influxdb
# sudo systemctl stop influxdb
# sudo systemctl restart influxdb

# sudo systemctl status influxdb

Instalace Grafana

Takže, jak nainstalovat Grafana na Raspberry PI? Na internetu (GitHub) jsem našel apt repozitář „Bintray Debian Repository“.

Nejprve nainstalujeme základní balíčky a přidáme bintray klíč do apt úložiště klíčů:

sudo apt-get install apt-transport-https curl

curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -

Příkaz na konci obsahuje pomlčku

Aktualizace apt:

Pro Raspberry pi 1 a Raspberry Pi Zero W, použijte tyto příkazy:

echo "deb https://dl.bintray.com/fg2it/deb-rpi-1b jessie main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Edit 25.11.2018: Pro verzi Debian 9 (Stretch) použijte tento příkaz:

echo "deb https://dl.bintray.com/fg2it/deb-rpi-1b stretch main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Pro Raspberry pi 2 a Raspberry Pi 3, použijte tyto příkazy:

echo "deb https://dl.bintray.com/fg2it/deb jessie main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Jistě jste si všimli, že je zde uvedena distribuce „jessie“, je to z toho důvodu, že v době instalace příkaz pro „stretch“ nefungoval.

Samotná instalace Grafana

sudo apt-get update
sudo apt-get install grafana

Nastartování služby

sudo service grafana-server start

Tímto příkazem se spustí proces grafana-server jako uživatel grafana, který byl vytvořen během instalace. Výchozí port HTTP je 3000 a výchozí uživatel a skupina je admin.

Chcete-li nakonfigurovat server Grafana, aby se spustil při spuštění, postupujte takto:

sudo update-rc.d grafana-server defaults

Teď je na čase otestovat, že je naše instalace Grafana v pořádku. Otevřete internetový prohlížeč a přejděte na adresu http://[ipadresaRaspberry]:3000 tedy například http://192.168.1.22:3000. Měla by se zobrazit přihlašovací stránka Grafana serveru:

Hotovo! Byla to hračka. Právě jste úspěšně nainstalovali Influxdb a Grafana na superpočítači Raspberry Pi. Pokud s Grafanou začínáte (jasně že začínáte, jinak byste nečetli tento návod), vřele doporučuji podívat se na dobře zpracovanou dokumentaci:

Edit 25.11.2918: Pomocí následujících příkazů lze (volitelně) do Grafana doinstalovat pluginy, které umožňují využít další typy zobrazení dat:

sudo grafana-cli plugins install grafana-clock-panel
sudo grafana-cli plugins install natel-discrete-panel
sudo grafana-cli plugins install briangann-gauge-panel
sudo grafana-cli plugins install vonage-status-panel
sudo grafana-cli plugins install neocat-cal-heatmap-panel
sudo grafana-cli plugins install natel-plotly-panel
sudo grafana-cli plugins install mtanda-histogram-panel

sudo service grafana-server restart

Instalace Node-Red

S instalací Node-Red na Raspberry Pi jsem se trochu trápil, ale nakonec jsem se inspiroval přímo oficiální dokumentací a povedlo se. Většina návodů říká, že je třeba nainstalovat node.js správné verze a pak pomocí správce balíčků npm nainstalovat node-red a patřičné moduly. Tato cesta mi přišla složitá a hlavně mi systém úplně nefungoval. Pokud máte nainstalovanou verzi Raspbian nebo jinou instalaci na bázi Debianu, jako je Ubuntu nebo Diet-Pi, ve které Node-RED není předinstalován, můžete jej nainstalovat nebo aktualizovat pomocí Node-RED upgrade scriptu:

# sudo bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

Na skutečně minimálních instalacích Debianu možná budete muset před spuštěním skriptu spustit ještě příkaz

# sudo apt-get install-essential

První příkaz se postará o vše: spustí instalační skript a provede instalaci a konfiguraci všech modulů potřebných pro provoz Node-Red na Raspberry Pi. Buďte trpělivý, nějaký čas to vezme. Po dokončení instalace budete míst na obrazovce přibližně toto:

Po instalaci je potřeba spustit příkaz, který aktivuje automatický start služby Node-Red po bootu Raspberry.

# sudo systemctl enable nodered.service

Pokud byste z nějakého důvodu chtěli automatický start služby vypnout, použijte příkaz

# sudo systemctl enable nodered.service

Pro ruční start služby a zobrazení konzole slouží příkaz

# sudo node-red-start

Jakmile je služba spuštěna, je třeba otestovat, že Node-Red běží. Otevřete internetový prohlížeč a přejděte na adresu http://[ipadresaRaspberry]:1880 tedy například http://192.168.1.22:1880. Měla by se zobrazit hlavní stránka Node-Red:

Instalace doplňků Node-Red pro Loxone a InfluxDB

Aby bylo možné Loxone propojit s InfluxDB pomocí Node-Red, je třeba nainstalovat doplňky, které tuto komunikaci umožní. Cesta, kterou jsem se dočetl na internetu je pomocí instalce balíčků pomocí NPM (npm install node-red-contrib-loxone). Bohužel i po úspěšné instalaci balíčku se v Node-Red nic nezobrazilo. Šel jsem na to tedy jinou cestou.

Přes ikonu menu v pravého horním menu otevřete položku „Manage palette“ a přejděte na záložku „Install“.

 

Zadejte hledaný výraz „loxone“ a nainstalujte balíček „node-red-contrib-loxone„, následně zadejte hledaný výraz „influx“ a nainstalujte „node-red-contrib-influxdb„.

Po dokončení instalace se v levé nabídce zobrazí NODY pro Loxone:

Perfektní. Máme připraveno kompletní prostředí pro ukládání dat do InfluxDB a jejich následné vizualizace prostřednictvím Grafana.

Rapberry PI-Desktop: statistiky a grafy (Loxone, InfluxDB, Grafana, Node-Red)
Štítky:                        

3 komentáře u „Rapberry PI-Desktop: statistiky a grafy (Loxone, InfluxDB, Grafana, Node-Red)

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.