ShellScript:FritzBox: Unterschied zwischen den Versionen

Aus Wikimatic
Wechseln zu: Navigation, Suche
(Beschreibung)
(Befehlsübersicht)
 
(57 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
==Voraussetzungen==
+
== Voraussetzungen ==
'''[http://homematic-inside.de/software/cuxdaemon CUxD]''' muß installiert und sollte auf aktuellem Stand sein.
+
  
Wegen geändertem Loginverfahren muß auf der FritzBox mindestens die Version '''Fritz!OS 5.50''' installiert sein.
+
'''[http://homematic-inside.de/software/cuxdaemon CUxD]''' muß installiert und sollte auf aktuellem Stand sein.<br/>Wegen geändertem Loginverfahren muß auf der FritzBox mindestens die Version '''Fritz!OS 5.50''' installiert sein.
 +
 
 +
== Beschreibung ==
  
==Beschreibung==
 
 
Das Programm dient zur Steuerung der FritzBox und dazu, diverse Informationen von dieser zu holen.
 
Das Programm dient zur Steuerung der FritzBox und dazu, diverse Informationen von dieser zu holen.
  
 
Ein kleiner Auszug hiervon:
 
Ein kleiner Auszug hiervon:
 +
 
*WLAN ein/ausschalten und visualisieren
 
*WLAN ein/ausschalten und visualisieren
 
*Telefonbuch auslesen
 
*Telefonbuch auslesen
 
*Anrufe tätigen
 
*Anrufe tätigen
 
*Dect200 Schalter ein/ausschalten und visualisieren
 
*Dect200 Schalter ein/ausschalten und visualisieren
*Temperatur und Strommessungen der Dect200 auslesen
+
*Temperatur und Entergiemessung der Dect200 auslesen
 
*Onlinestatus von Geräten auslesen
 
*Onlinestatus von Geräten auslesen
  
 
Das Auslesen aus der FritzBox und setzten der Stati in der CCU übernimmt der mit CUxD mitgelieferte CURL-Befehl.
 
Das Auslesen aus der FritzBox und setzten der Stati in der CCU übernimmt der mit CUxD mitgelieferte CURL-Befehl.
  
 +
=== Visualisierung in der CCU ===
  
Die Visualisierung der Stati in der CCU kann klassisch über SystemVariable oder auch direkt mit CUxD erfolgen, welches den Vorteil birgt, daß vor allem ein/ausschaltbare Geräte nicht nur über eine Schaltfläche bedient werden können, sondern auch den korrekten Status anzeigen, falls eine Schaltung direkt über die FritzBox erfolgt ist.
+
Die Visualisierung der Stati in der CCU kann klassisch über '''SystemVariable''' oder auch direkt mit CUxD erfolgen, welche den Vorteil birgt, daß vor allem ein/ausschaltbare Geräte nicht nur über eine Schaltfläche bedient werden können, sondern auch den korrekten Status anzeigen, falls eine Schaltung direkt über die FritzBox erfolgt ist. Dies wird mit einem '''CUxD (28)System.Exec (Schalter)''' verwirklicht. Weitere Alternativen zur SystemVariable die CUxD zur Verfügung stellt und genutzt werden können sind das '''(90)State-Monitor Device, '''das'''(90)Transform Device '''und das '''(90)Thermostat Device'''.
  
Ein ein/ausschaltbares Gerät benötigt also 3 Script-Aufrufe: ausschalten [0], einschalten [1], Status-Abfrage [state] -> kurz [0|1|state]
+
=== Scriptaufruf ===
 +
 
 +
Um eine korrekte Visualisierung zu erhalten oder eine Schaltung tätigen zu können, muß natürlich das Script aufgerufen werden.<br/>Dies erfolgt entweder durch ein '''Script in einem Programm der WebUI''', durch ein '''CUxD (28)System.Exec '''oder einem '''CUxD (28)System.Timer'''.
 +
 
 +
== Installation ==
 +
 
 +
<u>zur Konfiguration stehen 3 Varianten zur Auswahl (Dateien mit einem Texteditor bearbeiten):</u>
  
==Installation==
 
zur Konfiguration stehen 3 Varianten zur Auswahl:
 
 
*FritzBox.sh -> es muß nur diese Datei hochgeladen werden
 
*FritzBox.sh -> es muß nur diese Datei hochgeladen werden
 
*FritzBox.cfg -> bei einem Update der FritzBox.sh muß nicht neu konfiguriert werden
 
*FritzBox.cfg -> bei einem Update der FritzBox.sh muß nicht neu konfiguriert werden
*direkt beim Aufruf (''sh FritzBox.sh x [IP] [Username|-] [Passwd] ...'') -> andere Konfigurationen werden überschreiben, die Verwendung von mehreren Boxen ist möglich
+
*direkt beim Aufruf (''sh FritzBox.sh '''x [IP] [Username|-] [Passwd]''' ...'') -> andere Konfigurationen werden ignoriert, die Verwendung von mehreren Boxen ist möglich
 +
 
 +
<u>Hochladen auf die CCU:</u>
  
Hochladen auf die CCU:
 
 
*mit FTP zu folgenden Pfad kopieren: ''/usr/local/addons/cuxd/user/''
 
*mit FTP zu folgenden Pfad kopieren: ''/usr/local/addons/cuxd/user/''
 
*Rechte von beiden auf 755 setzen
 
*Rechte von beiden auf 755 setzen
  
erster Aufruf:
+
<u>erster Aufruf:</u>
*mit Telnet in den Ordner wechseln, in dem sich das Script sich befindet: ''cd /usr/local/addons/cuxd/user/''
+
 
 +
*mit [[Telnet]] in den Ordner wechseln, in dem sich das Script sich befindet: ''cd /usr/local/addons/cuxd/user/''
 
*einen beliebigen Befehl aufrufen
 
*einen beliebigen Befehl aufrufen
 
**''sh FritzBox.sh WLAN 0'' (oder ''sh /usr/local/addons/cuxd/user/FritzBox.sh WLAN 0'' ohne Wechsel in den Ordner)
 
**''sh FritzBox.sh WLAN 0'' (oder ''sh /usr/local/addons/cuxd/user/FritzBox.sh WLAN 0'' ohne Wechsel in den Ordner)
**''sh FritzBox.sh WLAN 1'' (oder ''sh /usr/local/addons/cuxd/user/FritzBox.sh WLAN 1'' ohne Wechsel in den Ordner)
+
**''sh FritzBox.sh WLAN 1''
 +
**''sh FritzBox.sh WLAN state''
 +
 
 +
Nun sieht man, ob das Script Zugriff auf die Fritzbox hat. Gleichzeitig wird auch für CCU1 Besitzer die Datei CPWMD5 im Verzeichnis /usr/local/addons/cuxd/user/ installiert, da diese hier noch nötig ist. Die CCU2 kommt ohne sie aus.<br/>Ruft man das Script mit dem Parameter "h" auf, bekommt man eine Übersicht der Befehle: ''sh FritzBox.sh h''
 +
 
 +
<u>der Debug-Modus kann deaktiviert werden:</u>
 +
 
 +
*FritzBox.sh in einem Texteditor öffenen
 +
*Debug="1" nach Debug="0" ändern
 +
*FritzBox.sh hochladen
 +
 
 +
== Befehlsübersicht ==
 +
 
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state CUX2801xxx:x]'''<br/>aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [state CUX9001xxx:x]'''<br/>Status an CUxD (90)State-Monitor Device</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1 CUX2801xxx:x]'''<br/>aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar [CUX2801xxx:x-Status] -> Werteliste: nicht erreichbar;erreichbar;unbekannt</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-p CUX2801xxx:x]'''<br/>aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Leistung] -> Zahl</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-t CUX2801xxx:x]'''<br/>aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Temperatur] -> Zahl</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-pt CUX2801xxx:x]'''<br/>aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Leistung] [CUX2801xxx:x-Temperatur]</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-pts CUX2801xxx:x]'''<br/>aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Leistung] [CUX2801xxx:x-Temperatur] [CUX2801xxx:x-Schaltzustand]</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [power CUX2801xxx:x]'''<br/>Status an SysVar [CUX2801xxx:x-Leistung] -> Zah</span>l
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [power1 CUX9000xxx:x]'''<br/>Status an CUxD (90)Transform Device</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [temperature CUX2801xxx:x]'''<br/>Status an SysVar [CUX2801xxx:x-Temperatur] -> Zahl</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [temperature1 CUX9000xxx:x]'''<br/>Status an CUxD (90)Transform Device</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FB-AHA [AIN|MAC] [temperature2 CUX9002xxx:x]'''<br/>Status an CUxD (90)Thermostat Device</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FON-alarm [610|611|...] [1|2|3] [0|1|...] [Text]'''<br/><span style="font-size:small">Beispiel: ''sh FritzBox.sh FON-alarm 610 1 8 Hallo%20Welt''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FON-RingTone [610|611|...] [0|1|...]'''<br/><span style="font-size:small">Beispiel: ''shFritzBox.sh FON-RingTone 610 16''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh FON-Name [610|611|...] [Name]'''<br/><span style="font-size:small">Beispiel: ''sh FritzBox.sh FON-Name 610 Name''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WLAN [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WLAN5 [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WLANGast [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WLANNacht [0|1]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WLANAnwesend [Name des WLAN Geraetes] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh WLANAnwesend Geraet CCUVariable''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WLANOnline [Name des WLAN Geraetes] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh WLANOnline Geraet CCUVariable''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh LANAnwesend [Name des LAN Geraetes] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh LANAnwesend Geraet CCUVariable''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh LANOnline [Name des LAN Geraetes] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel:''sh FritzBox.sh LANOnline Geraet CCUVariable''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh WakeOnLan [Name des LAN Geraetes]'''<br/>Beispiel: ''sh FritzBox.sh WakeOnLan Geraetename''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh DECT [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh UMTS [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh CallThrough [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh NACHTRUHE [0|1]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh KLINGELSPERRE [0|1]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh ANRUFEN [(Telefonnummer z.B. **610)]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh RUFUMLEITUNG [0|1|2|3(Rufumleistung)] [0|1]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Diversity [0|1|2|3(Rufumleistung)] [0|1]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh DECT200 [16|17|18|19] [0|1]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh DECT200Energie [Nummer des Aktors:16|17|18|19] [Name der Variable in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh DECT200Energie 16 DECT200''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh AB [0|1|2...-9] [0|1|state CUX2801xxx:x]'''</span><br/><span style="font-size:small">aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))</span>
 +
*<span style="font-size:small">Beispiel schaltet den 2. AB ein: ''sh FritzBox.sh AB 1 1''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-AB [1|2...-10] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel Status 2. AB:''sh FritzBox.sh Status-AB 2 CCUVariableAB2''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Anrufliste'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Anrufliste2CCU [0000(HOMEMATIC Webmatic SYSVAR ID)] [Anzahl Eintraege]'''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-Rufumleitung [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-Rufumleitung RufumleitungVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-DECT [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-DECT DECTanausVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-UMTS [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-UMTS UMTSanausVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-DECT200 [16|17|18|19] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-DECT200 16 DECT16VariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-IP [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh SStatus-IP ExterneIPVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-KLINGELSPERRE [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-KLINGELSPERRE KLINGELSPERREVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-Verbindung [Name der logischen Variable (Bool)in der CCU] '''<br/>Beispiel: ''sh FritzBox.sh Status-Verbindung InternetverbundenVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-Verbindungszeit [Name der logischen Variable (Zeichenkette)in der CCU] '''<br/>Beispiel:''sh FritzBox.sh Status-Verbindungszeit InternetVerbindungszeitVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-WLAN [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-WLAN WLANanausVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-WLAN5 [Name der logischen Variable (Bool)in der CCU] '''<br/>Beispiel:''sh FritzBox.sh Status-WLAN5 WLAN5anausVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-WLANGast [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-WLANGast WLANGastanausVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-WLANZeitschaltung [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-WLANZeitschaltung WLANZeitschaltungVariableCCU''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Weckruf [0|1|2] [0|1]'''<br/>Beispiel - schaltet den ersten Weckruf ein: ''sh FritzBox.sh Weckruf 0 1''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh Status-Weckruf [0|1|2] [Name der logischen Variable (Bool)in der CCU]'''<br/>Beispiel: ''sh FritzBox.sh Status-Weckruf 0 CCUvarWeckruf1''</span>
 +
*<span style="font-size:small">'''sh FritzBox.sh reboot'''</span>
 +
 
 +
== Integration ==
 +
 
 +
=== CUxD - (28)System.Exec ===
 +
Dieses Gerät ruft das Shellscript auf.<br />
 +
Installation und Beschreibung des Gerätes ist aus der CUxD-Doku zu entnehmen.
 +
 
 +
==== ein-/ausschalten mit Statusanzeige ====
 +
 
 +
(28)System.Exec wird hier als Schalter verwendet (ein/aus).
 +
 
 +
<u>Geräteparameter einstellen:</u><br/>PARAM1 [sh /usr/local/addons/cuxd/user/FritzBox.sh]<span style="color:#B22222"> -> ruft das Script auf</span><br/>PARAM2 [x 192.168.125.1 CCU HomeMatic]<span style="color:#B22222"> -> der Login</span>
 +
 
 +
[[File:FritzBox geraete-parameter.jpg|RTENOTITLE]]
 +
 
 +
 
 +
 
 +
<u>Scriptaufruf und Login via Parameter:</u><br/>SWITCH|CMD_SHORT [$_P1$ $_P2$ WLAN 0] <span style="color: #BF0000">-> ausschalten</span><br/>SWITCH|CMD_LONG [$_P1$ $_P2$ WLAN 1] <span style="color: #BF0000">-> einschalten</span><br/>SWITCH|CMD_TIMER [$_P1$ $_P2$ WLAN state $CHANNEL$] <span style="color: #BF0000">-> Status-Abfrage für diesen Kanal</span>
 +
 
 +
[[File:FritzBox wlan.jpg|RTENOTITLE]]
 +
 
 +
 
 +
 
 +
<u>Scriptaufruf via Parameter, Login über die Config im Script:</u><br/>SWITCH|CMD_SHORT [$_P1$ WLAN5 0]<span style="color: #BF0000">-> ausschalten</span><br/>SWITCH|CMD_LONG [$_P1$ WLAN5 1] <span style="color: #BF0000">-> einschalten</span><br/>SWITCH|CMD_TIMER [$_P1$ WLAN5 state $CHANNEL$] <span style="color: #BF0000">-> Status-Abfrage für diesen Kanal</span>
 +
 
 +
[[File:FritzBox wlan5.jpg|RTENOTITLE]]
 +
 
 +
Hier wurde auch der Parameter <span style="font-weight: bold">$CHANNEL$</span> verwendet - dieser ersetzt SN:Kanal des Gerätes, von dem er aufgerufen wird.
 +
 
 +
 
 +
 
 +
<u>Verwendung eines Kanalparamters mit einem DECT200.Eintrag in den Geräteparametern:</u><br/>PARAM1 [sh /usr/local/addons/cuxd/user]<br/><br/>SWITCH|CMD_SHORT [$_P1$/FritzBox.sh FB-AHA $_C1$ 0]<span style="color: #BF0000">-> ausschalten</span><br/>SWITCH|CMD_LONG [$_P1$/FritzBox.sh FB-AHA $_C1$ 1] <span style="color: #BF0000">-> einschalten</span><br/>SWITCH|CMD_TIMER [$_P1$/FritzBox.sh FB-AHA $_C1$ state1 $CHANNEL$] <span style="color: #BF0000">-> Status-Abfrage für diesen Kanal</span>
 +
 
 +
[[File:FritzBox dect200.jpg|RTENOTITLE]]<br/><br/>Mit Hilfe von Kanalparametern können für mehrere DECT200 die Befehle immer gleich bleiben.<br/>Es ist nur die AIN-Nummer einzutragen.
 +
 
 +
==== ein-/ausschalten mit Statusanzeige und SystemVariablen ====
 +
 
 +
Funktion und Aufruf ist hier gleich wie bei "ein-/ausschalten mit Statusanzeige".<br/>Zusätzlich werden hier aber SystemVariablen benötigt, die von einem erweiterten "state"-Befehl befüllt werden. Je nach Befehl werden unterschiedliche SysVars benötigt.
  
 +
[[File:FritzBox exec.jpg|RTENOTITLE]]
  
Nun sieht man, ob das Script Zugriff auf die Fritzbox hat.
+
Befehl für dieses Beispiel: ''<span style="font-size:small">sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-pt CUX2801234:6]</span>''<br/>In "SWITCH|CMD_TIMER" ist also "state1-pt" anstelle von "state" einzutragen, da dieser Befehl die 3 SysVars befüllen kann.<br/>Die hier verwendete SN:Kanal ist jene, vom aufrufenden (28)System.Exec-Gerät. SystemVariablen sind in dieser Form anzulegen, damit eine die Zuordnung erfolgten kann.<br/>Die SystemVariablen wurden beim Erstellen dem entsprechenden (28)System.Exec-Gerät zugeordnet und dient nur einer schöneren Visualisierung.
Gleichzeitig wird auch für CCU1 Besitzer die Datei CPWMD5 im Verzeichnis /usr/local/addons/cuxd/user/ installiert, da diese hier noch nötig ist. Die CCU2 kommt ohne sie aus.
+
  
Ruft man das Script mit dem Parameter "h" auf, bekommt man eine übersicht der Befehle: ''sh FritzBox.sh h''
+
<span style="font-size:small"><u>Namen und eigenschaften der Systemvariablen:</u><br/>[CUX2801xxx:x-Status] -> Werteliste: nicht erreichbar;erreichbar;unbekannt<br/>[CUX2801xxx:x-Leistung] -> Zahl<br/>[CUX2801xxx:x-Temperatur] -> Zahl</span>

Aktuelle Version vom 16. April 2015, 23:40 Uhr

Voraussetzungen

CUxD muß installiert und sollte auf aktuellem Stand sein.
Wegen geändertem Loginverfahren muß auf der FritzBox mindestens die Version Fritz!OS 5.50 installiert sein.

Beschreibung

Das Programm dient zur Steuerung der FritzBox und dazu, diverse Informationen von dieser zu holen.

Ein kleiner Auszug hiervon:

  • WLAN ein/ausschalten und visualisieren
  • Telefonbuch auslesen
  • Anrufe tätigen
  • Dect200 Schalter ein/ausschalten und visualisieren
  • Temperatur und Entergiemessung der Dect200 auslesen
  • Onlinestatus von Geräten auslesen

Das Auslesen aus der FritzBox und setzten der Stati in der CCU übernimmt der mit CUxD mitgelieferte CURL-Befehl.

Visualisierung in der CCU

Die Visualisierung der Stati in der CCU kann klassisch über SystemVariable oder auch direkt mit CUxD erfolgen, welche den Vorteil birgt, daß vor allem ein/ausschaltbare Geräte nicht nur über eine Schaltfläche bedient werden können, sondern auch den korrekten Status anzeigen, falls eine Schaltung direkt über die FritzBox erfolgt ist. Dies wird mit einem CUxD (28)System.Exec (Schalter) verwirklicht. Weitere Alternativen zur SystemVariable die CUxD zur Verfügung stellt und genutzt werden können sind das (90)State-Monitor Device, das(90)Transform Device und das (90)Thermostat Device.

Scriptaufruf

Um eine korrekte Visualisierung zu erhalten oder eine Schaltung tätigen zu können, muß natürlich das Script aufgerufen werden.
Dies erfolgt entweder durch ein Script in einem Programm der WebUI, durch ein CUxD (28)System.Exec oder einem CUxD (28)System.Timer.

Installation

zur Konfiguration stehen 3 Varianten zur Auswahl (Dateien mit einem Texteditor bearbeiten):

  • FritzBox.sh -> es muß nur diese Datei hochgeladen werden
  • FritzBox.cfg -> bei einem Update der FritzBox.sh muß nicht neu konfiguriert werden
  • direkt beim Aufruf (sh FritzBox.sh x [IP] [Username|-] [Passwd] ...) -> andere Konfigurationen werden ignoriert, die Verwendung von mehreren Boxen ist möglich

Hochladen auf die CCU:

  • mit FTP zu folgenden Pfad kopieren: /usr/local/addons/cuxd/user/
  • Rechte von beiden auf 755 setzen

erster Aufruf:

  • mit Telnet in den Ordner wechseln, in dem sich das Script sich befindet: cd /usr/local/addons/cuxd/user/
  • einen beliebigen Befehl aufrufen
    • sh FritzBox.sh WLAN 0 (oder sh /usr/local/addons/cuxd/user/FritzBox.sh WLAN 0 ohne Wechsel in den Ordner)
    • sh FritzBox.sh WLAN 1
    • sh FritzBox.sh WLAN state

Nun sieht man, ob das Script Zugriff auf die Fritzbox hat. Gleichzeitig wird auch für CCU1 Besitzer die Datei CPWMD5 im Verzeichnis /usr/local/addons/cuxd/user/ installiert, da diese hier noch nötig ist. Die CCU2 kommt ohne sie aus.
Ruft man das Script mit dem Parameter "h" auf, bekommt man eine Übersicht der Befehle: sh FritzBox.sh h

der Debug-Modus kann deaktiviert werden:

  • FritzBox.sh in einem Texteditor öffenen
  • Debug="1" nach Debug="0" ändern
  • FritzBox.sh hochladen

Befehlsübersicht

  • sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh FB-AHA [AIN|MAC] [state CUX9001xxx:x]
    Status an CUxD (90)State-Monitor Device
  • sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1 CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar [CUX2801xxx:x-Status] -> Werteliste: nicht erreichbar;erreichbar;unbekannt
  • sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-p CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Leistung] -> Zahl
  • sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-t CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Temperatur] -> Zahl
  • sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-pt CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Leistung] [CUX2801xxx:x-Temperatur]
  • sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-pts CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter)) und SysVar: [CUX2801xxx:x-Status] [CUX2801xxx:x-Leistung] [CUX2801xxx:x-Temperatur] [CUX2801xxx:x-Schaltzustand]
  • sh FritzBox.sh FB-AHA [AIN|MAC] [power CUX2801xxx:x]
    Status an SysVar [CUX2801xxx:x-Leistung] -> Zah
    l
  • sh FritzBox.sh FB-AHA [AIN|MAC] [power1 CUX9000xxx:x]
    Status an CUxD (90)Transform Device
  • sh FritzBox.sh FB-AHA [AIN|MAC] [temperature CUX2801xxx:x]
    Status an SysVar [CUX2801xxx:x-Temperatur] -> Zahl
  • sh FritzBox.sh FB-AHA [AIN|MAC] [temperature1 CUX9000xxx:x]
    Status an CUxD (90)Transform Device
  • sh FritzBox.sh FB-AHA [AIN|MAC] [temperature2 CUX9002xxx:x]
    Status an CUxD (90)Thermostat Device
  • sh FritzBox.sh FON-alarm [610|611|...] [1|2|3] [0|1|...] [Text]
    Beispiel: sh FritzBox.sh FON-alarm 610 1 8 Hallo%20Welt
  • sh FritzBox.sh FON-RingTone [610|611|...] [0|1|...]
    Beispiel: shFritzBox.sh FON-RingTone 610 16
  • sh FritzBox.sh FON-Name [610|611|...] [Name]
    Beispiel: sh FritzBox.sh FON-Name 610 Name
  • sh FritzBox.sh WLAN [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh WLAN5 [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh WLANGast [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh WLANNacht [0|1]
  • sh FritzBox.sh WLANAnwesend [Name des WLAN Geraetes] [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh WLANAnwesend Geraet CCUVariable
  • sh FritzBox.sh WLANOnline [Name des WLAN Geraetes] [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh WLANOnline Geraet CCUVariable
  • sh FritzBox.sh LANAnwesend [Name des LAN Geraetes] [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh LANAnwesend Geraet CCUVariable
  • sh FritzBox.sh LANOnline [Name des LAN Geraetes] [Name der logischen Variable (Bool)in der CCU]
    Beispiel:sh FritzBox.sh LANOnline Geraet CCUVariable
  • sh FritzBox.sh WakeOnLan [Name des LAN Geraetes]
    Beispiel: sh FritzBox.sh WakeOnLan Geraetename
  • sh FritzBox.sh DECT [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh UMTS [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh CallThrough [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • sh FritzBox.sh NACHTRUHE [0|1]
  • sh FritzBox.sh KLINGELSPERRE [0|1]
  • sh FritzBox.sh ANRUFEN [(Telefonnummer z.B. **610)]
  • sh FritzBox.sh RUFUMLEITUNG [0|1|2|3(Rufumleistung)] [0|1]
  • sh FritzBox.sh Diversity [0|1|2|3(Rufumleistung)] [0|1]
  • sh FritzBox.sh DECT200 [16|17|18|19] [0|1]
  • sh FritzBox.sh DECT200Energie [Nummer des Aktors:16|17|18|19] [Name der Variable in der CCU]
    Beispiel: sh FritzBox.sh DECT200Energie 16 DECT200
  • sh FritzBox.sh AB [0|1|2...-9] [0|1|state CUX2801xxx:x]
    aus/ein, Status an das sendende Gerät (CUxD (28)System.Exec (Schalter))
  • Beispiel schaltet den 2. AB ein: sh FritzBox.sh AB 1 1
  • sh FritzBox.sh Status-AB [1|2...-10] [Name der logischen Variable (Bool)in der CCU]
    Beispiel Status 2. AB:sh FritzBox.sh Status-AB 2 CCUVariableAB2
  • sh FritzBox.sh Anrufliste
  • sh FritzBox.sh Anrufliste2CCU [0000(HOMEMATIC Webmatic SYSVAR ID)] [Anzahl Eintraege]
  • sh FritzBox.sh Status-Rufumleitung [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-Rufumleitung RufumleitungVariableCCU
  • sh FritzBox.sh Status-DECT [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-DECT DECTanausVariableCCU
  • sh FritzBox.sh Status-UMTS [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-UMTS UMTSanausVariableCCU
  • sh FritzBox.sh Status-DECT200 [16|17|18|19] [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-DECT200 16 DECT16VariableCCU
  • sh FritzBox.sh Status-IP [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh SStatus-IP ExterneIPVariableCCU
  • sh FritzBox.sh Status-KLINGELSPERRE [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-KLINGELSPERRE KLINGELSPERREVariableCCU
  • sh FritzBox.sh Status-Verbindung [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-Verbindung InternetverbundenVariableCCU
  • sh FritzBox.sh Status-Verbindungszeit [Name der logischen Variable (Zeichenkette)in der CCU]
    Beispiel:sh FritzBox.sh Status-Verbindungszeit InternetVerbindungszeitVariableCCU
  • sh FritzBox.sh Status-WLAN [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-WLAN WLANanausVariableCCU
  • sh FritzBox.sh Status-WLAN5 [Name der logischen Variable (Bool)in der CCU]
    Beispiel:sh FritzBox.sh Status-WLAN5 WLAN5anausVariableCCU
  • sh FritzBox.sh Status-WLANGast [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-WLANGast WLANGastanausVariableCCU
  • sh FritzBox.sh Status-WLANZeitschaltung [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-WLANZeitschaltung WLANZeitschaltungVariableCCU
  • sh FritzBox.sh Weckruf [0|1|2] [0|1]
    Beispiel - schaltet den ersten Weckruf ein: sh FritzBox.sh Weckruf 0 1
  • sh FritzBox.sh Status-Weckruf [0|1|2] [Name der logischen Variable (Bool)in der CCU]
    Beispiel: sh FritzBox.sh Status-Weckruf 0 CCUvarWeckruf1
  • sh FritzBox.sh reboot

Integration

CUxD - (28)System.Exec

Dieses Gerät ruft das Shellscript auf.
Installation und Beschreibung des Gerätes ist aus der CUxD-Doku zu entnehmen.

ein-/ausschalten mit Statusanzeige

(28)System.Exec wird hier als Schalter verwendet (ein/aus).

Geräteparameter einstellen:
PARAM1 [sh /usr/local/addons/cuxd/user/FritzBox.sh] -> ruft das Script auf
PARAM2 [x 192.168.125.1 CCU HomeMatic] -> der Login

RTENOTITLE


Scriptaufruf und Login via Parameter:
SWITCH|CMD_SHORT [$_P1$ $_P2$ WLAN 0] -> ausschalten
SWITCH|CMD_LONG [$_P1$ $_P2$ WLAN 1] -> einschalten
SWITCH|CMD_TIMER [$_P1$ $_P2$ WLAN state $CHANNEL$] -> Status-Abfrage für diesen Kanal

RTENOTITLE


Scriptaufruf via Parameter, Login über die Config im Script:
SWITCH|CMD_SHORT [$_P1$ WLAN5 0]-> ausschalten
SWITCH|CMD_LONG [$_P1$ WLAN5 1] -> einschalten
SWITCH|CMD_TIMER [$_P1$ WLAN5 state $CHANNEL$] -> Status-Abfrage für diesen Kanal

RTENOTITLE

Hier wurde auch der Parameter $CHANNEL$ verwendet - dieser ersetzt SN:Kanal des Gerätes, von dem er aufgerufen wird.


Verwendung eines Kanalparamters mit einem DECT200.Eintrag in den Geräteparametern:
PARAM1 [sh /usr/local/addons/cuxd/user]

SWITCH|CMD_SHORT [$_P1$/FritzBox.sh FB-AHA $_C1$ 0]-> ausschalten
SWITCH|CMD_LONG [$_P1$/FritzBox.sh FB-AHA $_C1$ 1] -> einschalten
SWITCH|CMD_TIMER [$_P1$/FritzBox.sh FB-AHA $_C1$ state1 $CHANNEL$] -> Status-Abfrage für diesen Kanal

RTENOTITLE

Mit Hilfe von Kanalparametern können für mehrere DECT200 die Befehle immer gleich bleiben.
Es ist nur die AIN-Nummer einzutragen.

ein-/ausschalten mit Statusanzeige und SystemVariablen

Funktion und Aufruf ist hier gleich wie bei "ein-/ausschalten mit Statusanzeige".
Zusätzlich werden hier aber SystemVariablen benötigt, die von einem erweiterten "state"-Befehl befüllt werden. Je nach Befehl werden unterschiedliche SysVars benötigt.

RTENOTITLE

Befehl für dieses Beispiel: sh FritzBox.sh FB-AHA [AIN|MAC] [0|1|state1-pt CUX2801234:6]
In "SWITCH|CMD_TIMER" ist also "state1-pt" anstelle von "state" einzutragen, da dieser Befehl die 3 SysVars befüllen kann.
Die hier verwendete SN:Kanal ist jene, vom aufrufenden (28)System.Exec-Gerät. SystemVariablen sind in dieser Form anzulegen, damit eine die Zuordnung erfolgten kann.
Die SystemVariablen wurden beim Erstellen dem entsprechenden (28)System.Exec-Gerät zugeordnet und dient nur einer schöneren Visualisierung.

Namen und eigenschaften der Systemvariablen:
[CUX2801xxx:x-Status] -> Werteliste: nicht erreichbar;erreichbar;unbekannt
[CUX2801xxx:x-Leistung] -> Zahl
[CUX2801xxx:x-Temperatur] -> Zahl