FritzBox 6.3 per CUxD steuern

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

ARuff
Beiträge: 12
Registriert: 14.02.2016, 22:28
Wohnort: Varel

Re: FritzBox 6.3 per CUxD steuern

Beitrag von ARuff » 15.12.2017, 19:37

Hallo Leute ich komme nicht weiter.
habe Homematik auf Pi3 und eine FritzBox 7490 mit 06.92
meien W-Lan Geschichte Läuft, abder nicht die DECt steckdosen:

kann einer mir helfen
Danke

[attachment=0]Geräte.gif[/attachment]
[attachment=1]Geräte1.gif[/attachment]

[#!/bin/sh
# FB-AHA.sh
# Version 0.1.6
# --------------------------------------------------------------------------------
script="FB-AHA"
Debugmsg1=$Debugmsg1"Script-Version : $0 v0.1.6 \n"
Debugmsg1=$Debugmsg1"verwendbar mit : FB.common v0.1.6 / FB.cfg v0.1.1 \n"
# --------------------------------------------------------------------------------
# TR-064 aktivieren, Benutzer mit User und Passwort anlegen

Debug="1" # mit "0" deaktivieren, wenn nicht mehr benötigt

ADDONDIR="/usr/local/addons/cuxd"
#COMMON="FB.common"
COMMON="$ADDONDIR/user/FB.common"
. $COMMON
# --------------------------------------------------------------------------------

AHAURL="http://$IP/webservices/homeautoswitch.lua"


set_CUxD_temperature(){
if [ "$1" != "" ] ; then
Debugmsg1=$Debugmsg1"set_CUxD_temperature: http://$HOMEMATIC:8181/FritzBox.exe?Status=dom.GetObject%28%27CUxD.$2.SET_TEMPERATURE%27%29.State%28%22$1%22%29 \n"
$cURL -s $cURL_timout "http://$HOMEMATIC:8181/FritzBox.exe?Status=dom.GetObject%28%27CUxD.$2.SET_TEMPERATURE%27%29.State%28%22$1%22%29"
else
Debugmsg1=$Debugmsg1"$IP -> set_CUxD_temperature: $3/$2 - Fehler, keine Status.\n"
logger -i -t $0 -p 3 "$IP -> set_CUxD_temperature: $3/$2 - Fehler, keine Status."
fi
}

get_FBAHA_state(){ # 0 / 1 / inval
get_SID
Debugmsg2=$Debugmsg2"URL: $AHAURL?ain=$AIN&switchcmd=getswitchstate&sid=$SID \n"
stateFBAHA=$($cURL -s "$AHAURL?ain=$AIN&switchcmd=getswitchstate&sid=$SID")
}
get_FBAHA_present(){ # 0 / 1
get_SID
Debugmsg2=$Debugmsg2"URL: $AHAURL?ain=$AIN&switchcmd=getswitchpresent&sid=$SID \n"
presentFBAHA=$($cURL -s $cURL_timout "$AHAURL?ain=$AIN&switchcmd=getswitchpresent&sid=$SID")
}

get_FBAHA_DEVICE_state(){
devicesFBAHA="$temp/$script@$IP-devices.xml"
test="$temp/test.xml"
get_FBAHA_DEVICE_$CCU

response_Name=$(sed -n "/deviceidentifier=$AIN/{s/.*<deviceidentifier=$AIN//;s/<\/device>.*//;p;}" $devicesFBAHA | sed -n 's:.*<name>\(.*\)</name>.*:\1:p' )

get_FBAHA_Celsius=$(sed -n "/deviceidentifier=$AIN/{s/.*<deviceidentifier=$AIN//;s/<\/device>.*//;p;}" $devicesFBAHA | sed -n 's:.*<celsius>\(.*\)</celsius>.*:\1:p' )
response_Celsius=$(printf "%.2i\n" $get_FBAHA_Celsius | sed -e "s:.$:.&:g")

get_FBAHA_Power=$(sed -n "/deviceidentifier=$AIN/{s/.*<deviceidentifier=$AIN//;s/<\/device>.*//;p;}" $devicesFBAHA | sed -n 's:.*<power>\(.*\)</power>.*:\1:p' )
response_Power=$(printf "%.4i\n" $get_FBAHA_Power | sed -e "s:...$:.&:g")

Debugmsg2=$Debugmsg2"\nGeraet: $response_Name / $AIN \n\nPower: $get_FBAHA_Power = $response_Power Watt\nTemperatur: $get_FBAHA_Celsius = $response_Celsius °C\n"
}
get_FBAHA_DEVICE_CCU1(){
if [ -f $devicesFBAHA ]; then
rm -f $devicesFBAHA
Debugmsg1=$Debugmsg1"$IP -> FBAHA: Daten loeschen \n"
fi
get_SID
Debugmsg1=$Debugmsg1"$IP -> FBAHA: Daten holen ($AHAURL?&switchcmd=getdevicelistinfos&sid=$SID) \n"
echo -n $($cURL -s $cURL_timout "$AHAURL?switchcmd=getdevicelistinfos&sid=$SID" | sed 's|[" ]||g' ) > $devicesFBAHA
}
get_FBAHA_DEVICE_CCU2(){
if [ -f $devicesFBAHA ]; then
find $temp/ -name "$script@$IP-devices.xml" -mmin +2 -print0 | xargs -0 rm -f
Debugmsg1=$Debugmsg1"$IP -> FBAHA: Daten pruefen \n"
fi
if [ -f $devicesFBAHA ]; then
Debugmsg1=$Debugmsg1"$IP -> FBAHA: Daten vorhanden \n"
else
get_SID
Debugmsg1=$Debugmsg1"$IP -> FBAHA: Daten holen ($AHAURL?&switchcmd=getdevicelistinfos&sid=$SID) \n"
echo -n $($cURL -s $cURL_timout "$AHAURL?switchcmd=getdevicelistinfos&sid=$SID" | sed 's|[" ]||g' ) > $devicesFBAHA
fi
}

# switch / ain / state / sysvar/cux
case $1 in
"test") Debugmsg1=$Debugmsg1"test: erfolgreich\n"
get_SID
logout
;;
"switch") AIN=$2
if [ $3 = "0" ] ; then
get_SID
$cURL -s $cURL_timout "$AHAURL?ain=$AIN&switchcmd=setswitchoff&sid=$SID"
Debugmsg2=$Debugmsg2"$AHAURL?ain=$AIN&switchcmd=setswitchoff&sid=$SID\n"
elif [ $3 = "1" ] ; then
get_SID
$cURL -s $cURL_timout "$AHAURL?ain=$AIN&switchcmd=setswitchon&sid=$SID"
Debugmsg2=$Debugmsg2"$AHAURL?ain=$AIN&switchcmd=setswitchon&sid=$SID\n"
elif [ $3 = "state" ] ; then
get_FBAHA_state
set_CUxD_state $stateFBAHA $4 $1
elif [ $3 = "state1" ] ; then
get_FBAHA_state
get_FBAHA_present
set_CUxD_state $stateFBAHA $4 $1
if [ $presentFBAHA = "0" ] || [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar $presentFBAHA $4-Status $1
if [ $presentFBAHA = "0" ] ; then
logger -i -t $0 -p 3 "$IP -> $3/$2 - nicht online"
fi
else
presentFBAHA=2
set_CCU_SysVar $presentFBAHA $4-Status $1
fi
elif [ $3 = "state1-p" ] ; then
get_FBAHA_state
get_FBAHA_present
set_CUxD_state $stateFBAHA $4 $1
if [ $presentFBAHA = "0" ] || [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar $presentFBAHA $4-Status $1
if [ $presentFBAHA = "0" ] ; then
logger -i -t $0 -p 3 "$IP -> $3/$2 - nicht online"
fi
else
presentFBAHA=2
set_CCU_SysVar $presentFBAHA $4-Status $1
fi
get_FBAHA_DEVICE_state
if [ $get_FBAHA_Power != "" ] ; then
set_CCU_SysVar $response_Power $4-Leistung $1
elif [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar "" $4-Leistung $1
fi
elif [ $3 = "state1-t" ] ; then
get_FBAHA_state
get_FBAHA_present
set_CUxD_state $stateFBAHA $4 $1
if [ $presentFBAHA = "0" ] || [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar $presentFBAHA $4-Status $1
if [ $presentFBAHA = "0" ] ; then
logger -i -t $0 -p 3 "$IP -> $3/$2 - nicht online"
fi
else
presentFBAHA=2
set_CCU_SysVar $presentFBAHA $4-Status $1
fi
get_FBAHA_DEVICE_state
if [ $get_FBAHA_Celsius != "" ] ; then
set_CCU_SysVar $response_Celsius $4-Temperatur $1
elif [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar "" $4-Temperatur $1
fi
elif [ $3 = "state1-pt" ] ; then
get_FBAHA_state
get_FBAHA_present
set_CUxD_state $stateFBAHA $4 $1
if [ $presentFBAHA = "0" ] || [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar $presentFBAHA $4-Status $1
if [ $presentFBAHA = "0" ] ; then
logger -i -t $0 -p 3 "$IP -> $3/$2 - nicht online"
fi
else
presentFBAHA=2
set_CCU_SysVar $presentFBAHA $4-Status $1
fi
get_FBAHA_DEVICE_state
if [ $get_FBAHA_Celsius != "" ]; then
set_CCU_SysVar $response_Celsius $4-Temperatur $1
elif [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar "" $4-Temperatur $1
fi
if [ $get_FBAHA_Power != "" ] ; then
set_CCU_SysVar $response_Power $4-Leistung $1
elif [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar "" $4-Leistung $1
fi
elif [ $3 = "state1-pts" ] ; then
get_FBAHA_state
get_FBAHA_present
set_CUxD_state $stateFBAHA $4 $1
if [ $stateFBAHA != "" ] ; then
set_CCU_SysVar $stateFBAHA $4-Schaltzustand $1
else
set_CCU_SysVar "" $4-Schaltzustand $1
fi
if [ $presentFBAHA = "0" ] || [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar $presentFBAHA $4-Status $1
if [ $presentFBAHA = "0" ] ; then
logger -i -t $0 -p 3 "$IP -> $3/$2 - nicht online"
fi
else
presentFBAHA=2
set_CCU_SysVar $presentFBAHA $4-Status $1
fi
get_FBAHA_DEVICE_state
if [ $get_FBAHA_Celsius != "" ] ; then
set_CCU_SysVar $response_Celsius $4-Temperatur $1
elif [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar "" $4-Temperatur $1
fi
if [ $get_FBAHA_Power != "" ] ; then
set_CCU_SysVar $response_Power $4-Leistung $1
elif [ $presentFBAHA = "1" ] ; then
set_CCU_SysVar "" $4-Leistung $1
fi
elif [ $3 = "power" ] ; then
get_FBAHA_DEVICE_state
if [ $get_FBAHA_Power != "" ] ; then
set_CCU_SysVar $response_Power $4-Leistung $1
else
set_CCU_SysVar "" $4-Leistung $1
fi
elif [ $3 = "power1" ] ; then
get_FBAHA_DEVICE_state
set_CUxD_state $response_Power $4 $1
elif [ $3 = "temperature" ] ; then
get_FBAHA_DEVICE_state
if [ $get_FBAHA_Celsius != "" ] ; then
set_CCU_SysVar $response_Celsius $4-Temperatur $1
else
set_CCU_SysVar "" $4-Temperatur $1
fi
elif [ $3 = "temperature1" ] ; then
get_FBAHA_DEVICE_state
set_CUxD_state $response_Celsius $4 $1
elif [ $3 = "temperature2" ] ; then
get_FBAHA_DEVICE_state
set_CUxD_temperature $response_Celsius $4 $1
else
logger -i -t $0 -p 3 "$IP -> $1: Fehler"
fi
;;

*) Debugmsg1=$Debugmsg1"MAIN : ERROR - Bitte wie folgt aufrufen: \n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh BEFEHL WERT (0=aus|1=ein) \n"
Debugmsg1=$Debugmsg1" Verfuegbar: \n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [0|1] -> aus/ein \n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state] [CUX2801004:1] -> Status an CUxD-Remote (28)\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state] [CUX2801004:1] -> ein/aus an CUxD (90)State-Monitor Device\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state1] [CUX2801004:1] -> Status an CUxD-Remote (28) und SysVar [CUX2801004:1-Status] -> Werteliste: nicht erreichbar;erreichbar;unbekannt\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state1-p] [CUX2801004:1] -> Status an CUxD-Remote (28) und SysVar: [CUX2801004:1-Status] [CUX2801004:1-Leistung]\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state1-t] [CUX2801004:1] -> Status an CUxD-Remote (28) und SysVar: [CUX2801004:1-Status] [CUX2801004:1-Temperatur]\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state1-pt] [CUX2801004:1] -> Status an CUxD-Remote (28) und SysVar: [CUX2801004:1-Status] [CUX2801004:1-Leistung] [CUX2801004:1-Temperatur]\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [state1-pts] [CUX2801004:1] -> Status an CUxD-Remote (28) und SysVar: [CUX2801004:1-Status] [CUX2801004:1-Leistung] [CUX2801004:1-Temperatur] [CUX2801004:1-Schaltzustand]\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [power] [CUX2801004:1] -> SysVar [CUX2801004:1-Leistung] -> Zahl\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [power1] [CUX2801004:1] -> CUxD (90)Transform Device \n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [temperature] [CUX2801004:1] -> SysVar [CUX2801004:1-Temperatur] -> Zahl\n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [temperature1] [CUX2801004:1] -> CUxD (90)Transform Device \n"
Debugmsg1=$Debugmsg1" ./FB-AHA.sh switch [AIN|MAC] [temperature2] [CUX2801004:1] -> CUxD (90)Thermostat Device \n"

EndFritzBoxSkript 4 "Falscher-Parameter-Aufruf-$1-$2-$3-$4";;
esac
EndFritzBoxSkript 0 "Erfolgreich"
][/code]


DATEIANHÄNGE
FB.zip
FB.cfg v0.1.1
FB.common v0.1.6
FB-main.sh v0.1.4
FB-AHA.sh v0.1.6
FB-fon.sh v0.1.0
Dateianhänge
Geräte.gif
Geräte1.gif

Benutzeravatar
ecky78
Beiträge: 70
Registriert: 03.06.2016, 21:55

Re: FritzBox 6.3 per CUxD steuern

Beitrag von ecky78 » 15.12.2017, 20:56

Hi :-)

Zuerst fällt mir auf, daß unter SWITCH|CH_PARAM1 die Nummer ohne Leerzeichen eingetragen werden muß.

Grüße, Ecky
Grüße,
Ecky

ARuff
Beiträge: 12
Registriert: 14.02.2016, 22:28
Wohnort: Varel

Re: FritzBox 6.3 per CUxD steuern

Beitrag von ARuff » 15.12.2017, 22:12

:D :D :D :D :D :D Super Danke danke Danke Schalten kann ich Sie jetzt.
ein Tag arbeit und dann sowas ........ :roll:

Benutzeravatar
Wortmann30
Beiträge: 1233
Registriert: 21.03.2014, 22:39

Re: FritzBox 6.3 per CUxD steuern

Beitrag von Wortmann30 » 29.12.2017, 12:20

Hallo zusammen

Ich muss eine neue Fritz Box kaufen da die alte
1 sehr alt ist und diese Art von Nutzung über die Homematic nicht unterstützt und
2. weil sie so langsam den Geist auf.

Meine Situation ist wie folgt:
Ich habe einen Router im Keller, der aber kaum mit seinem wlan durch die Betondecke ins EG kommt.
Daher habe ich sehr gut gelegen im EG eine Fritz box die am lan hängt und mir das WLAN für den Rest der Bude ganz gut abdeckt.
Zusätzlich hängen an der Fritz box noch ein paar Geräte wie drucker oder PC über lan.

Was will ich tun?
Wie gesagt das WLAN ins Haus bringen und Geräte am lan anhängen also Gigabit muss er können auf dem lan.
Ich möchte per hm das WLAN ausschalten können sowie ein Gäste Netzwerk aufbauen können.
Ein Modem ist nicht erforderlich da es ohnehin nicht genutzt wird.
Es wird darüber keine Telefonie gemacht das hängt an der connect box von Unitymedia im Keller per Kabel und dann ein Siemens gigaset Telefon wenn ich es recht im Kopf habe.

Nun stellt sich bei mir die Frage welche Boxen sind zu empfehlen und arbeiten mit der hm am besten zusammen?
Auf was muss man beim Kauf achten?

Danke
Grüsse


To be continued...

86bibo
Beiträge: 145
Registriert: 27.11.2013, 11:25

Re: FritzBox 6.3 per CUxD steuern

Beitrag von 86bibo » 31.12.2017, 13:57

Hallo, ich setze das die Ansteuerung per CUxD auch sehr erfolgreich ein. Danke für die super Integration.

Ich nutze sehr oft die Ein/Ausschaltung des Gäste-WLANs. Hier nutze ich in der Regel die Laufzeit von 21h, da wir nicht soo häufig Gäste haben und ich es nicht andauernd laufen lassen will. Meine Frage ist nun, kann ich mir die Restlaufzeit des Gastzuganges als Status von der CCU abfragen lassen? Ich hab die Funktion "Status WlanZeitschaltung" gefunden, aber nichts dergleichen für das Gäste-WLan.

Alternativ: Hat jemand eine clevere Idee, wie ich die Restzeit in der CCU berechnen kann ohne ein solches Programm minütlich laufen zu lassen? Die Angabe in Reststunden reicht mir vollkommen.

dondaik
Beiträge: 9101
Registriert: 16.01.2009, 19:48
Wohnort: Steingaden

Re: FritzBox 6.3 per CUxD steuern

Beitrag von dondaik » 31.12.2017, 14:01

ggf ist das thema "betriebsstundenzähler" ein ansatz für dich.
-------
wer schreibfehler findet darf sie behalten.

86bibo
Beiträge: 145
Registriert: 27.11.2013, 11:25

Re: FritzBox 6.3 per CUxD steuern

Beitrag von 86bibo » 31.12.2017, 14:12

ich habe sowas auch schon für andere Geräte wie die Waschmaschine integriert. Allerdings will ich kein Skript, welches minütlich ausgeführt wird. Wenn ich es stündlich ausführe, dann habe ich aber eine rel. große Unschärfe drin. Wenn ich das Gäste-Wlan um 12:01 Uhr anschalte, dann zählt es um 13 Uhr ne Stunde runter, würde also so passen. Wenn ich es aber um 12:59 Uhr zählt es ebenfalls um 13 Uhr ne Stunde runter. Kann man natürlich so machen, aber ich dachte, es gibt noch ne elegantere Lösung.

Benutzeravatar
ecky78
Beiträge: 70
Registriert: 03.06.2016, 21:55

Re: FritzBox 6.3 per CUxD steuern

Beitrag von ecky78 » 01.01.2018, 15:37

Du könntest auch ein Programm durch die Änderung des Zählers triggern und diese Zähler-SV dann im DANN- Zweig mit 60 min. Verzögerung um eins reduzieren, per Skript-Einzeiler a la

Code: Alles auswählen

dom.GetObject("GWLAN-Countdown").State(dom.GetObject("GWLAN-Countdown").Value() -1);
Durch diese Änderung wird das Programm dann gleich wieder ausgelöst. Im WENN würde ich dann noch eine Kontrolle auf Werte größer Null mit "nur Prüfen" einbauen, sonst läuft das Ding endlos weiter und zählt in den negativen Bereich ;-)

Grüße, Ecky
Grüße,
Ecky

fantasticn
Beiträge: 97
Registriert: 15.03.2016, 15:34

Re: FritzBox 6.3 per CUxD steuern

Beitrag von fantasticn » 23.01.2018, 19:53

Hallo Leute,

ich habe die drei Einzel-Scripts aus dem ersten Post herunter geladen, IP, Nutzername und Passwort in die CFG-Datei eingetragen, dann alles auf die CCU in das vorgegebene Verzeichnis ( /usr/local/addons/cuxd/user ) kopiert und die Rechte auf 777 gesetzt. Ich habe nun unter WinSCP mal ein Terminal-Fenster geöffnet und ein paar Tests gemacht. Mit "./FB-main.sh WLAN 0" schaltet er das WLAN aus. Auch Einschalten geht etc. Aber, was eigentlich der Hauptgrund für die Nutzung des Scripts war, nämlich die Aktivierung/Deaktivierung von Rufumleitungen, klappt irgendwie nicht. Ich habe eine Rufumleitung eingerichtet und dann sowohl mit "./FB-fon.sh RUFUMLEITUNG 0 1", als auch mit "./FB-fon.sf Diversity 0 1" versucht, aber sie wird nicht aktiviert. Auch eine aktivierte Rufumleitung zu deaktivieren klappt nicht.

Ich besitze eine FritzBox 7590 mit aktueller Labor-Firmware.

Any ideas?

Benutzeravatar
ecky78
Beiträge: 70
Registriert: 03.06.2016, 21:55

Re: FritzBox 6.3 per CUxD steuern

Beitrag von ecky78 » 27.01.2018, 17:06

Hallo,

wäre es möglich, das Script so zu erweitern, daß auch die el. Energie aus den Fritz!DECT200 Steckdosen ausgelesen werden kann? Laut AHA-Doku ist das möglich, ich krieg' es nur selber nicht hin.

Grüße, Ecky
Grüße,
Ecky

Antworten

Zurück zu „CUxD“