Array ( [0] => facebook [1] => twitter [2] => google_plus )

How To: Temperatur von Smarthome Geräten über Fritzbox auslesen/darstellen (Teil 1)

Posted on:8. Februar 2015

Author:Markus Köhler

Category:Programmierung

Share: / /

Praktischerweise haben die Smarthome-Geräte von AVM einen integrierten Temperatursensor. So also auch mein Fritz!DECT Repeater 100. Als ich die Temperatur in der Smarthome-Übersicht der Fritzbox gesehen habe, kam mir die Idee, diese programmatisch auszulesen und abzuspeichern.

Ansicht "Heimnetz" > "Smart Home" der Fritz!Box 7490

Ansicht „Heimnetz“ > „Smart Home“ der Fritz!Box 7490

Das Auslesen der Temperatur von der Fritzbox habe ich in C#.net gelöst, und zwar in einer Windows Forms-Anwendung. Diese zeigt auch die jeweils aktuelle Temperatur nochmal an und läuft bei mir auf dem Homeserver, der rund um die Uhr alle 10 Sekunden die Daten vom Router abgreift und sobald sich die Temperatur zum vorherigen Wert verändert, diese in die Datenbank schreibt.

Frontend der C#-Anwendung

Frontend der C#-Anwendung

Die Temperatur wird von der Fritzbox als dreistellige Zahl zurückgegeben, wobei die letzte Ziffer eigentlich die Nachkommastelle der Temperatur ist. Der Wert „getdevicelistinfos“ für den URL-Parameter „switchcmd“ liefert Details für sämtliche angeschlossene Smarthome-Geräte. Darum müssen wir in diesem speziellen Fall nicht, wie sonst immer erforderlich, die MAC-Adresse des Smarthome-Gerätes mit übergeben. Der Auslese-Vorgang beschränkt sich auf die folgenden Codezeilen:

Auslesen der Temperatur in C#

Auslesen der Temperatur in C#

Hier bekommen wir sowohl die Temperatur als auch einen optionalen „Offset“, mit dem man in den Einstellungen des Smarthome-Gerätes die Temperaturerkennung bei Bedarf um einige Grad verschieben kann. Dieser Code-Schnipsel nutzt die Hilfs-Methoden GetSessionId() und SeiteEinlesen(), die wie folgt aussehen:

Hilfsmethoden in C#

Hilfsmethoden in C#

Dann natürlich das ganze in einem Timer-Event, alle 10 Sekunden der Check ob die Temperatur sich verändert hat. Für die Anzeige auf der Form müssen wir uns Threading bedienen:

Invoke des Labels in C#

Invoke des Labels in C#

Den Rest des Codes zum Auslesen muss ich hier wohl nicht darlegen, da es im Prinzip auch nur eine Quick&Dirty-Lösung war. Weiter geht’s in Teil 2 des Tutorials mit der grafischen Darstellung der Werte aus der Datenbank in PHP.

GD Star Rating
loading...

Kommentar verfassen

%d Bloggern gefällt das: