Schlagwort: mobilealerts

Mobile Alerts Sensoren mit Proxy lokal auslesen und an Homeassistant senden

Vor knapp zwei Jahren habe ich einen Beitrag darüber veröffentlicht, wie ich meine Mobile Alerts Temperatursensoren per Weboberfläche mit einem Pythonskript auslese. Diese Variante funktionierte bei mir und funktioniert immer noch ohne Probleme. Letztens bin ich aber auf eine andere Möglichkeit gestoßen, die mir deutlich besser gefällt, da sie zuverlässiger und unabhängig von der Cloud ist. Mit einem Proxy, der zwischen den Gateway und das Internet geschalten wird, können die Daten abgefangen und weiter verarbeitet werden.
Hierfür gibt es das Programm „maserver„. Es nimmt auch direkt die Einstellungen am Gateway vor. Dieses sendet die Daten anschließend an einen MQTT Broker. Bei mir läuft es auf einem RaspberryPi mit Ubuntu Server 22.04.

Vorbereitungen

Auf dem Server müssen zunächst nodejs und npm installiert werden:

Danach kann man den maserver herunterladen:

Im Ordner „MMMMobilealerts“ befindet sich jetzt der maserver.

Konfiguration

Darin befindet sich die Datei „config-example.json“. Benenne diese in „config.json“ um. Folgende Konfigurationsmöglichkeiten gibt es:

  • localIPv4Address: Die IP-Adresse des Geräts, auf dem der Proxy läuft. Wird nur benötigt, wenn es mehrere IP-Adressen hat, z. B. wenn es über mehrere Netzwerkschnittstellen angebunden ist oder Docker oder ein VPN Server darauf läuft.
  • mqtt: Die Adresse zum MQTT Broker.
  • mqtt_home: Das Topic, in dem die Daten auf dem MQTT Broker gesendet werden sollen.
  • mqtt_username, mqtt_password, logfile: Selbsterklärend.
  • logGatewayInfo: Ob Infos über gefundene Gateways angezeigt werden sollen.
  • proxyServerPort: Der Port, auf dem der Proxyserver laufen soll.
  • mobileAlertsCloudForward: Ob die Daten an die Mobilealerts Cloud gesendet werden sollen.
  • serverPost: Die Daten können zusätzlich auch per POST versendet werden.
  • serverPostUser, serverPostPassword, locale: Selbsterklärend.

Meine Konfiguration sieht dann so aus:

Installation

Der Proxy wird mit

installiert, während man sich im „maserver“ Verzeichnis befindet.

Start

Gestartet werden kann das Programm mit:

Es findet automatisch den Gateway im Netzwerk und konfiguriert sich selbst im Gateway als Proxy. Nach spätestens 15 Minuten sollten die ersten Daten zu sehen sein.

Daten an Homeassistant senden

Im Homeassistant fügen wir zuerst die MQTT Integration unter „Einstellungen“->“Geräte und Dienste“->“Integration Hinzufügen“ hinzu.

Die Konfiguration der einzelnen Sensoren erfolgt dann über die configuration.yaml Datei und sieht beispielsweise so aus:

Dabei ist XXXXXXXXXXXX die 12-stellige Geräte-ID, die man in der Mobile Alerts App oder direkt auf der Rückseite der Sensoren findet.

Nach einem Neustart sollten die Daten in Homeassistant erscheinen:

Mobile Alerts Sensoren in Homeassistant

Mobile Alerts Sensoren ohne Rest API auslesen

Ich habe einige Mobile Alerts Sensoren im Haus. Diese wollte ich ursprünglich mit dem RaspberryPi über die Mobile Alerts Rest API auslesen. Da dort aber nur bestimmte Sensoren funktionieren (meine leider nicht) habe ich es auf eine etwas andere Art versucht. Diese Variante ist zwar nicht so zuverlässig und auch etwas umständlich, aber sie funktioniert immerhin.

Tipp: Es gibt auch eine andere Methode

Vorbereitungen

Die Sensoren sollten schon mit dem Gateway verbunden und in die Mobile Alerts App integriert sein. In den Einstellungen der App findet man relativ weit unten die Phone ID. Diese wird später noch gebraucht.

Dann besucht man die Seite https://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=XXXXXXXXXXXX

Am Ende muss noch die Phone ID ergänzt werden. Dort sollte man nun alle Sensoren sehen.

Skript erstellen

Jetzt brauchen wir einige Zeilen aus dem Quellcode. So wird auch später das Python Skript, welches die Daten ausliest, funktionieren. Dazu macht man einen Rechtsklick auf die Seite und wählt dann „Seitenquelltext anzeigen“ (Kann je nach Browser variieren).

Hier sehe ich zum Beispiel, dass sich die Temperatur des Badezimmers in Zeile 66 befindet. Die Luftfeuchtigkeit befindet sich in Zeile 70. Und da ist dann auch die Schwachstelle des Skripts. Sollte sich die Temperatur des Badezimmers mal nicht mehr in Zeile 66 befinden, funktioniert das Skript nicht mehr und muss angepasst werden. In der Regel gibt es so eine Änderung aber nur, wenn ein weiterer Sensor hinzugefügt oder entfernt wird.

Das ist auch schon das Skript. Es liest vorerst nur die Daten aus.

Zeile 4: Hier wird der Quelltext der Webseite heruntergeladen. Er wird in /home/pi/sensors.txt gespeichert. (nicht vergessen, die Phone ID zu ersetzen) (Update: Seit 15.4.21 Wird der Download per wget von Mobilealerts blockiert. Die zusätzliche Option „-U firefox“ lässt die Webseite denken, dass es sich um einen firefox browser handelt. Ich hoffe, dass das so weiterhin funktionieren wird.)

Zeile 5 und 6: Hier wird eine Variable auf die entsprechenden Zeilen (66 und 70) gesetzt und dann alles, bis auf die Zahl entfernt. Bei Der Temperatur muss noch das Komma durch einen Punkt ersetzt werden.

Zeile 8 und 9: Hier werden die ausgelesenen Daten ausgegeben. Natürlich kann hier auch etwas ganz anderes stehen. Die Daten könnten zum Beispiel in eine Datenbank geschrieben werden oder anderweitig verarbeitet werden (z.B: Wenn es im Schlafzimmer zu heiß aber draußen kälter ist, soll das Fenster geöffnet werden)

Zeile 10: Der Quelltext wird gelöscht. Er wird ja nicht mehr benötigt.

Ich hoffe, ich konnte dir mit diesem kurzen Tutorial weiterhelfen 😉