Änderungen

Update Fritzbox: Smart Home Schalter per Script steuern erstellt von Thorsten Eggeling's avatar Thorsten Eggeling
...@@ -13,7 +13,7 @@ Mehr Komfort bietet die Verwendung von "Internet -> MyFRITZ!-Konto". Wenn Sie si ...@@ -13,7 +13,7 @@ Mehr Komfort bietet die Verwendung von "Internet -> MyFRITZ!-Konto". Wenn Sie si
**Neu ab Fritz OS Version 7.20**: Aktivieren Sie "Zertifikat von letsencrypt.org verwenden (empfohlen)" ("Internet -> MyFRITZ!-Konto"). Die Fritzbox erhält dann ein allgemein gültiges SSL-Zertifikat und die Zertifikatwarnung im Browser entfällt. **Neu ab Fritz OS Version 7.20**: Aktivieren Sie "Zertifikat von letsencrypt.org verwenden (empfohlen)" ("Internet -> MyFRITZ!-Konto"). Die Fritzbox erhält dann ein allgemein gültiges SSL-Zertifikat und die Zertifikatwarnung im Browser entfällt.
# Bei der Fritzbox per Script anmelden ## Bei der Fritzbox per Script anmelden
Aus Sicherheitsgründen verwendet die Fritzbox bei der Anmeldung ein spezielles Verfahren, bei dem das Passwort nicht direkt übertragen wird. Die Dokumentation von AVM inklusive Beispielcode können Sie über https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_Technical_Note_-_Session_ID.pdf abrufen. Aus Sicherheitsgründen verwendet die Fritzbox bei der Anmeldung ein spezielles Verfahren, bei dem das Passwort nicht direkt übertragen wird. Die Dokumentation von AVM inklusive Beispielcode können Sie über https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_Technical_Note_-_Session_ID.pdf abrufen.
Der Aufruf der URL http://fritz.box/login_sid.lua liefert einen zufälligen Challenge-Wert. Aus diesem muss für die Antwort (Challenge-Response-Verfahren) zusammen mit dem Passwort ein Hash-Wert gebildet werden. In einem Bash-Script funktioniert das mit den folgenden Zeilen: Der Aufruf der URL http://fritz.box/login_sid.lua liefert einen zufälligen Challenge-Wert. Aus diesem muss für die Antwort (Challenge-Response-Verfahren) zusammen mit dem Passwort ein Hash-Wert gebildet werden. In einem Bash-Script funktioniert das mit den folgenden Zeilen:
...@@ -32,7 +32,7 @@ SID=$(curl --data "$POSTDATA" -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SI ...@@ -32,7 +32,7 @@ SID=$(curl --data "$POSTDATA" -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SI
``` ```
Die Variable $SID enthält anschließend eine Zeichenkette, die für alle weiteren Anfragen an die Fritzbox verwendet wird. Damit das Script funktioniert, müssen Curl, Sed, Awk, Iconv, Grep und Md5sum auf dem PC installiert sein. Das bei Raspbian auf dem Raspberry Pi standardmäßig der Fall. Bei anderen Systemen fehlt oft Curl. Installieren Sie die fehlende Software über die Paketverwaltung. Die Variable $SID enthält anschließend eine Zeichenkette, die für alle weiteren Anfragen an die Fritzbox verwendet wird. Damit das Script funktioniert, müssen Curl, Sed, Awk, Iconv, Grep und Md5sum auf dem PC installiert sein. Das bei Raspbian auf dem Raspberry Pi standardmäßig der Fall. Bei anderen Systemen fehlt oft Curl. Installieren Sie die fehlende Software über die Paketverwaltung.
# Schalter per Bash-Script schalten ## Schalter per Bash-Script schalten
Laden Sie smart_fritz_terminal.sh für die Kommandozeile herunter. Öffnen Sie das Script in einem Editor, unter Ubuntu etwa mit Laden Sie smart_fritz_terminal.sh für die Kommandozeile herunter. Öffnen Sie das Script in einem Editor, unter Ubuntu etwa mit
`gedit smart_fritz_terminal.sh &` `gedit smart_fritz_terminal.sh &`
...@@ -57,7 +57,7 @@ Ersetzen Sie "off" durch "on", um es wieder einzuschalten. "toggle" schaltet den ...@@ -57,7 +57,7 @@ Ersetzen Sie "off" durch "on", um es wieder einzuschalten. "toggle" schaltet den
Die Bedienung eines Schalters geht komfortabler, wenn Sie Verknüpfungen zum Script auf dem Desktop ablegen. Dafür verwenden Sie die Dateien "switch_1_on.desktop" und "switch_1_off.desktop", die Sie in Ubuntu im Dateimanager in den Ordner "Schreibtisch" unter "Persönlicher Ordner" kopieren. "smart_fritz_terminal.sh" kopieren Sie (als root) nach "/usr/local/bin". Per Doppelklick auf das jeweilige Desktop-Icons lässt sich der Schalter dann ein- und ausschalten. Die Bedienung eines Schalters geht komfortabler, wenn Sie Verknüpfungen zum Script auf dem Desktop ablegen. Dafür verwenden Sie die Dateien "switch_1_on.desktop" und "switch_1_off.desktop", die Sie in Ubuntu im Dateimanager in den Ordner "Schreibtisch" unter "Persönlicher Ordner" kopieren. "smart_fritz_terminal.sh" kopieren Sie (als root) nach "/usr/local/bin". Per Doppelklick auf das jeweilige Desktop-Icons lässt sich der Schalter dann ein- und ausschalten.
# Geräte über einen eigenen Webserver ansprechen ## Geräte über einen eigenen Webserver ansprechen
Ein etwas modifiziertes Bash-Script lässt sich auch über einen Webserver steuern. Der Vorteil dabei: Ein Webserver im lokalen Netzwerk, der aber per Portfreigabe ("Internet -> Freigaben -> Portfreigaben") aus dem Internet erreichbar ist, stellt nur die nötigen Smarthome-Funktionen bereit. Die Fritzbox muss nicht aus dem Internet erreichbar sein. Ein etwas modifiziertes Bash-Script lässt sich auch über einen Webserver steuern. Der Vorteil dabei: Ein Webserver im lokalen Netzwerk, der aber per Portfreigabe ("Internet -> Freigaben -> Portfreigaben") aus dem Internet erreichbar ist, stellt nur die nötigen Smarthome-Funktionen bereit. Die Fritzbox muss nicht aus dem Internet erreichbar sein.
Voraussetzung dafür ist, dass das Paket apache2 installiert ist. Sollte es noch nicht vorhanden sein, verwenden Sie folgende drei Befehlszeilen (Ubuntu/Linux Mint/Raspbian): Voraussetzung dafür ist, dass das Paket apache2 installiert ist. Sollte es noch nicht vorhanden sein, verwenden Sie folgende drei Befehlszeilen (Ubuntu/Linux Mint/Raspbian):
...@@ -90,7 +90,7 @@ steuern. ...@@ -90,7 +90,7 @@ steuern.
"[Server/Domain]" muss ein öffentlicher Domainname sein, den Sie entweder bei https://myfritz.net oder einem anderen Anbieter für dynamische IP-Adressen erhalten. "[Server/Domain]" muss ein öffentlicher Domainname sein, den Sie entweder bei https://myfritz.net oder einem anderen Anbieter für dynamische IP-Adressen erhalten.
**Bitte beachten Sie: ** Ein aus dem Internet erreichbarer Server im eigenen Netzwerk muss gut abgesichert sein. Installieren Sie stets alle Updates. Verwenden Sie im Script nur das Passwort oder einen Frizbox-Benutzer, dem der Zugang aus dem Internet nicht erlaubt ist und der nur Smarthome-Geräte steuern darf. Sollte der Inhalt des Scripts aufgrund einer Fehlkonfiguration für fremde Personen lesbar sein, kann diese mit dem Benutzernamen und Passwort dann keinen Zugang zur Fritzbox über das Internet erhalten. **Bitte beachten Sie:** Ein aus dem Internet erreichbarer Server im eigenen Netzwerk muss gut abgesichert sein. Installieren Sie stets alle Updates. Verwenden Sie im Script nur das Passwort oder einen Frizbox-Benutzer, dem der Zugang aus dem Internet nicht erlaubt ist und der nur Smarthome-Geräte steuern darf. Sollte der Inhalt des Scripts aufgrund einer Fehlkonfiguration für fremde Personen lesbar sein, kann diese mit dem Benutzernamen und Passwort dann keinen Zugang zur Fritzbox über das Internet erhalten.
... ...
......