FHEM Tutorial-Reihe - Part 27: Analytics-Daten auf LCD per MQTT

Mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks.

FHEM Tutorial-Reihe - Part 27: Analytics-Daten auf LCD per MQTT
FHEM Tutorial-Reihe - Part 27: Analytics-Daten auf LCD per MQTT
  • Matthias Kleine
  • 21.02.2017
  • Hardware
  • ESP8266
  • MQTT
  • Darstellung

Kurz vorweg: Dieses Tutorial ist etwas anders und sehr speziell. Dennoch wollte ich Euch auf die Reise mitnehmen und meine Gedankengänge und Schritte schildern. Ziel war es, die Google-Analytics Daten auf einem kleinen LCD-Display (16x2 Zeichen) darzustellen. Da ich noch einen OnionOmega liegen hatte, wollte ich diesen nun endlich mal sinnvoll verwenden. Ansonsten wünsche ich gute Unterhaltung, eventuell lernst Du ja noch etwas.

Achtung: Dieser Inhalt wurde vor mehreren Jahren aufgenommen und ist nicht mehr aktuell! Es ist nicht empfohlen nach dieser Anleitung vorzugehen.

Was wird benötigt?

  • Ein OnionOmega - alternativ auch ein RaspberryPi oder Arduino (dann geht der gezeigte Code aber nicht bzw. dann würde ich auf WiringPi setzen)
  • Eine FHEM-Installation
  • Ein MQTT-Broker (siehe Teil 26)
  • Ein Google-Analytics-Konto + Property

Video

Hausbau-Kurs

Komponenten

AZDelivery 3 x HD44780 1602 LCD Modul Display 2x16 Zeichen mit blauem Hintergrund und weißen Zeichen kompatibel mit Arduino und Raspberry Pi inklusive E-Book! **

SunFounder Raspberry Pi Ultimate Starter Kit für Raspberry Pi 4B 3B+ 400, Java Python C Scratch Node.js, detaillierte Online-Tutorials, 161 Projekte, 337 Artikel (Kameramodul, Lautsprecher) **

Befehle

Als erstes muss ein neues API-Projekt unter in der Google Developer Console angelegt werden. Wie genau das klappt ist im Video erklärt.

Folgende Befehle brauchst Du, wenn Du Docker nicht verwenden möchtest:

sudo apt-get update
sudo apt-get install php5 git-core
mkdir -p /opt/analytics-mqtt
cd /opt/analytics-mqtt
git clone https://github.com/klein0r/php-analytics-mqtt.git .
php composer.phar install

Dann müssen noch in der run.php die entsprechenden Werte gesetzt werden, welche wie im Video gezeigt eingesammelt wurden. Hier ein Beispiel, wie das ausehen könnte:

$serviceAccountEmail = 'account-123@*.iam.gserviceaccount.com';
$profile = '12345678';
$mqttBroker = '192.168.1.100';

Damit die Daten dann regelmäßig von dem API abgeholt werden, muss die run.php noch als cronjob angelegt werden.

crontab -e

Ein Eintrag könnte dann wie folgt lauten, um alle 5 Minuten die Daten von der Analytics-API abzuholen und an FHEM zu schicken.

*/5 * * * * php -f /opt/analytics-mqtt/run.php > /dev/null

Danach den Editor wieder schließen. Der erste Teil wäre damit abgeschlossen. Wobei ich eine Lösung mit Docker natürlich wie immer bevorzugen würden (auch wenn dieser Container in diesem Fall echt wenig tut).

Jetzt muss noch das Gerät in FHEM angelegt werden, welches aus den MQTT-Nachrichten dann Readings macht. Das geht aber relativ einfach.

define AnalyticsData MQTT_DEVICE
attr AnalyticsData subscribeReading_last-7-days /Web/Analytics/Last7Days
attr AnalyticsData subscribeReading_last-28-days /Web/Analytics/Last28Days
attr AnalyticsData subscribeReading_active-users /Web/Analytics/Realtime/ActiveUsers

Der komplexeste Teil ist sicherlich das Verkabeln und einrichten des OnionOmega. Mit Version 2 sollte es so ziemlich genauso funktionieren.

Onion Omega

»Onion Omega«

Als erstes verbinden wir uns per SSH oder serieller Schnittstelle wie im Video gezeigt. Das Standard-Passwort lautet “onioneer”.

ls /dev/tty.*
screen /dev/tty.SLAB_USBtoUART 115200

ssh root@<ip.des.onion.omega>

Danach installieren wir ein paar Pakete nach. Hier muss man aufpassen, dass man nicht zuviel kram installiert. Der Speicher ist begrenzt und sehr schnell voll!

opkg update
opkg install php5 php5-cgi php5-cli
opkg install git git-http

Dann packen wir meine Display-Programmierung in ein neues Verzeichnis.

cd /root/
mkdir onion-php
cd onion-php
git clone https://github.com/klein0r/php-onion-omega.git .
wget https://raw.githubusercontent.com/bluerhinos/phpMQTT/master/phpMQTT.php

Hier muss in der Datei mqtt.php noch die IP des MQTT-Brokers hinterlegt werden. Den Autostart richten wir wie im Video gezeigt mit den folgenden Befehlen ein:

vi /etc/rc.local
php-cli /root/onion-php/mqtt.php 2>&1 &

Nach einem Reboot sollte dann alles betriebsbereit sein. Das können wir testen, indem wir die ersten Daten per MQTT auf die entsprechenden Pfade schicken. Am besten erstmal mit einem Tool wie MQTT.fx. Wenn das alles klappt, können wir in FHEM die MQTT_Bridge für die Analytics-Daten konfigurieren.

define MQTT_OnionDisplay MQTT_BRIDGE AnalyticsData
attr MQTT_OnionDisplay publishReading_active-users /Onion/Line1
attr MQTT_OnionDisplay publishReading_last-7-days /Onion/Line2

Wie man sieht ist der Aufbau sehr dynamisch. Heißt, dass ich nun jedes beliebige Gerät / dessen Readings auf das Display schicken kann. Sei es die aktuelle Temperatur im Wohnzimmer oder eben auch nur ein paar News. Wäre PHP auf dem Onion etwas schneller, könnte man nun auch noch Dinge tun wie:

  • Lauftext, wenn der Text zu lang ist.
  • Die letzten Nachrichten speichern und ein paar Minuten lang rotieren lassen, bis die Nachricht abläuft
  • und vieles mehr

Wenn ich mal ganz viel Langeweile habe, probiere ich den Compiler für OpenWRT noch zum Laufen zu bringen. Nativ sollten die GPIOs wesentlich schneller angesteuert werden können als aktuell.

Fazit

MQTT entwickelt sich langsam zu einem echten Lieblingsprotokoll. Man kann einfach Daten aus PHP senden, Perl wertet diese in FHEM aus und auf dem OnionOmega geht es in PHP weiter. Generell kann man PHP in diesem kompletten Tutorial durch irgendeine andere Sprache austauschen. Die Google-Libraries gibt es auch fast für jede gängige Sprache und MQTT versteht sowieso jede Sprache. Also wirklich extrem flexibel!

Das schöne ist auch, dass es egal ist ob jemand zuhört. Ich mache das Display einfach aus und die Nachrichten werden weiterhin vom Broker empfangen. Es gibt also keine Fehler oder ähnliches wenn die Gegenstelle nicht erreichbar ist.

Genauso könnte ich meine komplette Wohnung mit irgendwelchen Displays pflastern und überall die gleiche Software laufen lassen. MQTT verteilt dann eben an alle die gleichen Infos. Das finde ich wirklich sau stark!

Du willst mehr?

Smart-Home-Trainings von A-Z

Steig noch tiefer in die Themen ein und meistere Deine Projekte! Über 13.000 Teilnehmer konnten sich schon von der Qualität der Online-Kurse überzeugen.

ioBroker-Master-Kurs

ioBroker-Master-Kurs

Mehr Infos
Hausbau-Kurs

Hausbau mit KNX

Mehr Infos
Lox-Kurs

Lox-Kurs

Mehr Infos
Node-RED-Master-Kurs

Node-RED-Master-Kurs

Mehr Infos