Python und Smart Home – Part 3 – Zugriff auf die Fritz!Box und AVM Smart Home Geräte über eine GUI

Idee: GUI mit den selben Anzeigen und Schalter(n) aus den Programmen von Part 1.

Dazu Anzeige der Temperaturen der Steckdose(n), Schaltern und Heizkörperthermostaten.

Speichern der Temperaturdaten in einer Textdatei.

 

Aktuell gibt es zwei Testprogramme, einmal für die LED-Lampe und eins für die beiden vorhandenen Steckdosen. Den Source-Code gibt es später...

 

Eventuell gibt es dann ein Programm, das alle vorhandenen AVM Smart Home Geräte unter einer Oberfläche zusammenfasst.

1. Testprogramm - AVM LED-Lampe

Als erstes soll der Zugriff auf die AVM Fritz!Box und eine AVM LED Lampe mittels eines GUI-Programms in Python realisiert werden. Aktuell haben wir auch nur eine AVM LED Lampe, und die ist auch nur zu Testzwecken installiert.

- Zugriff auf die Fritz!Box und der angeschlossenen AVM Smart Home-Geräten mittels der API fritzconnection.

- GUI erstellen mittels Python Tkinter

 

Hier im Beispiel werden die benötigten Daten (Fritz!Box Adresse, Benutzername und Passwort, sowie Aktor-Nummer (AIN) der LED) fest codiert im Programm eingetragen. In der nächsten Programmversion sollen die Daten (Fritz!Box) eingetragen (IP-Adresse) bzw. abgefragt (Passwort) und die Aktor-Nummer(n) aus den Gerätedaten ausgelesen werden.

Zudem soll der Zustand der LED ausgelesen werden (An oder Aus) und beim Starten des Programms dementsprechend auch angezeigt werden.

 

Aufbau des Programms

Es gibt vier verschiedene Label, zwei Buttons und ein Piktogramm (von links nach rechts):

- Label mit den Fritz!Box-Daten: Adresse und Fritz!OS-Version

- Label mit dem Zustand der LED: An oder Aus

- Piktogramm: Lampe an oder aus

- Button "Schalten": Damit wird die LED ein- oder ausgeschaltet

- Label mit Standard-Text "AVM Lampe"

- Label mit der Aktor-Nummer AIN

- Leerfeld

- Button "Programm beenden" beendet das Programm, noch ohne Nachfrage!

 

Python-Tkinter-Programm GUI für die AVM LED. Lampe ist aus.
Python-Tkinter-Programm GUI für die AVM LED. Lampe ist aus.

Hier ein Screenshot des Tkinter-Python-GUI-Programms für die eine vorhandene LED AVM-Lampe.

Hier der Zustand "AUS" der Lampe.

 

 

Python-Tkinter-Programm: GUI für die AVM LED. Lampe ist an.
Python-Tkinter-Programm: GUI für die AVM LED. Lampe ist an.

Hier der andere Screenshot, der andere Zustand der AVM LED-Lampe -> hier leuchtet die LED -> Zustand "AN".

Beim Schalten ändern sich zwei Anzeigen in der GUI: einmal das Lampen-Piktogramm und auch der Hintergrund und der Schriftzug (An bzw. Aus) oberhalb des Piktogramms.

 

Leider lässt sich die LED nur ein- oder ausschalten. Weder die Farbe lässt sich auswählen oder ändern, noch lässt sich die Intensität einstellen. Die LED leuchtet so, wie sie zuletzt geleuchtet hat.

2. Testprogramm - AVM Steckdosen

Als zweites soll der Zugriff über die AVM Fritz!Box auf die beiden AVM DECT Steckdosen mittels eines GUI-Programms in Python realisiert werden. Aktuell haben wir zwei solcher Steckdosen im Einsatz. Eine Steckdose ist im realen Einsatz und steuert einen Warmwasser-Boiler in der Küche, der nur Samstags und Sonntags den Boiler mit Strom versorgt und somit nur am Wochenende Warmwasser liefert. Die andere Steckdose ist nur zu Testzwecken da und es ist kein Verbraucher dran.

- Zugriff auf die Fritz!Box und der angeschlossenen AVM Smart Home-Geräten mittels der API fritzconnection.

- GUI erstellen mittels Python Tkinter

 

Wie auch im ersten Beispiel werden die benötigten Daten (Fritz!Box Adresse, Benutzername und Passwort, sowie Aktor-Nummern (AIN) der Steckdosen) fest codiert im Programm eingetragen. In der nächsten Programmversion sollen die Daten (Fritz!Box) eingetragen (IP-Adresse) bzw. abgefragt (Passwort) und die Aktor-Nummer(n) aus den Gerätedaten ausgelesen werden.

Zudem soll dann der Zustand der Steckdosen ausgelesen werden (An oder Aus) und beim Starten des Programms dementsprechend auch angezeigt werden. Ggf. auch gleich Anzeige der gemessenen Temperatur.

 

Aufbau des Programms

Es gibt neun verschiedene Label, vier Buttons und zwei Piktogramme:

- Label mit den Fritz!Box-Daten: Typ, Adresse und Fritz!OS-Version, daneben Leerfeld

- Label mit der Bezeichnung "AVM Steckdose Wohnzimmer" bzw. "AVM Steckdose Küche"

- Label mit der AIN für Wohnzimmer, bzw. Küche

- Label mit der Bezeichnung AUS (blau) oder AN (gelb)

- Piktogramme: Steckdose an oder aus

- Button "Wohnzimmer Schalten" bzw. "Küche schalten": Damit wird jeweils eine Steckdose ein- oder ausgeschaltet

- Label mit Anzeige der gemessenen Temperatur (links Wohnzimmer, rechts Küche)

- Button "Temperatur manuell auslesen"

- Button "Programm beenden" beendet das Programm, noch ohne Nachfrage!

 

Die Piktogramme sind übrigens Screenshots aus der AVM Smart Home Android App!

 

Python-Programm mit GUI für die beiden AVM DECT Steckdosen. Beide Steckdosen sind aus!Die AIN sind unkenntlich gemacht worden.
Python-Programm mit GUI für die beiden AVM DECT Steckdosen. Beide Steckdosen sind aus!Die AIN sind unkenntlich gemacht worden.
Python-Programm mit GUI: AVM DECT Steckdose im Wohnzimmer ist eingeschaltet.
Python-Programm mit GUI: AVM DECT Steckdose im Wohnzimmer ist eingeschaltet.
Python-Programm mit GUI: die Temperatur wird nach drücken des Buttons auch angezeigt.
Python-Programm mit GUI: die Temperatur wird nach drücken des Buttons auch angezeigt.

Weitere Funktionen:

- Wie schon erwähnt, wird der aktuelle Status der Steckdosen nicht ausgelesen, was angepasst werden müsste. Auch, ob überhaupt Steckdosen vorhanden sind!

- Abfrage, wenn das Programm beendet werden soll. Wenn man z.B. aus Versehen auf den Button Programm beenden klickt, aber eigentlich das Programm weiterlaufen soll.

Bei Interesse der hier aufgeführten Flohmarkt-Artikel einfach bei mir melden...