FBAHAHTTP - Vorlagen nutzen/einbinden

Begonnen von Matze89, 23 März 2019, 22:23:07

Vorheriges Thema - Nächstes Thema

Matze89

Hallo an euch,

ich habe bereits schon sehr intensiv nach Möglichkeiten gesucht, vordefinierte Vorlagen aus der FritzBox über FHEM zu aktivieren/steuern/deaktivieren. Da es bereits ein inoffizielles Alexa-Skill für die FritzBox gibt (https://www.fbsmarthome.site/?lng=de), diese bereits erfolgreich die Vorlagen nutzen kann, würde ich dieses sehr für FHEM beglückwünschen.

Wie seht ihr das? - Beispiele:
- Urlaubsmodus mit einem HomeKit Befehl (iOS -> Homebridge -> Fhem) in FHEM aktivieren und die Vorlagen in der FritzBox wechseln.
- Abwesenheit bemerken - Heizungsvorlage auf Abwesend stellen

Ich würde mich sehr über eure Tipps/Tricks freuen - besser noch - "FBAHAHTTP" mit dieser Funktion zu erweitern - möglich?

Kurze Hardwareinformation:
Ich nutze eine FritzBox 6490 mit 07.02

Liebe Grüße
Matze
FHEM mit RPi4 ::: SIGNALduino ::: Homebridge + homebridge-fhem ::: Zigbee = RaspBee + Hue + Paulmann + Ikea + Xiaomi ::: DECT = FritzBox 6590 + FRITZ!DECT ::: IR = Harmony ::: SIRO Akku-Rolloantrieb ::: EchoDots + alexa-fhem

amenomade

Voraussetzung für FBAHAHTTP ist, dass diese Funktion über die tr064 Schnittstelle verfügbar ist.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Matze89

#2
Zitat von: amenomade am 23 März 2019, 22:25:37
Voraussetzung für FBAHAHTTP ist, dass diese Funktion über die tr064 Schnittstelle verfügbar ist.

Entschuldige für die Ungewissheit, aber das kann ich mir nicht vorstellen, denn:
Ich gebe für den Alexa-Skill bereits auch nur die Externe MyFritz Adresse an, inklusive einen Benutzername und Passwort an
(Dies hat nur die Berechtigung von "Smart Home"). Dadurch können die Vorlagen einwandfrei verwendet werden.

Somit müsste dies ohne Probleme über den HTTP Zugang realisiert werden können?


Edit: Soeben schlau gemacht, worauf du hinaus wolltest. War es früher so, bezüglich der TR064 Schnittstelle? Dies wurde doch jetzt gesperrt eingeschränkt. Jetzt werden folgende Schnittstellen über FBAHAHTTP freigegeben. Hier ist das laut AVM folgendes möglich, inklusive Vorlage:

https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf
6.98 - HANFUN und HANFUN Unit - Vorlagen/Template gettemplatelistinfos und applytemplate

PS: Offener Quellcode für Amazon Alexa und Google Assistant für die FritzBox von Raphael Pala:
https://bitbucket.org/raphpa/fbsmarthome - Bezogen auf die Befehle für die Vorlagen ;-)

Gruß Matthias
FHEM mit RPi4 ::: SIGNALduino ::: Homebridge + homebridge-fhem ::: Zigbee = RaspBee + Hue + Paulmann + Ikea + Xiaomi ::: DECT = FritzBox 6590 + FRITZ!DECT ::: IR = Harmony ::: SIRO Akku-Rolloantrieb ::: EchoDots + alexa-fhem

amenomade

Du hast teilweise recht.
Die meisten Funktionalitäten für die Hausautomatisierung werden über den AHA HTTP Server zur Verfügung gestellt. Somit sollten die Vorlagen auch einstellbar sein.
tr-064 wurde aber nicht gesperrt, und einige Funktionen sind nur darüber erreichbar. Siehe in deiner Fritzbox Heimnetz > Netzwerk > Netzwereinstellungen ganz unten.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rudolfkoenig

Ich habe gerade zu FBAHAHTTP "get templateList" und "set template XXX" hinzugefuegt.

get templateList funktioniert.

Fuer "set template XXX" liefert der AHA Server "HTTP 400 Bad request" zurueck, vmtl. ist das, was ich sende falsch.
Ich habe https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf so interpretiert, dass man
ain=<templatename>&switchcmd=applytemplate
senden muss, das ist aber offensichtlich falsch.

Wenn mir jemand die korrekte Syntax beschreibt, dann korrigiere ich es gerne.


Matze89

#5
Hallo rudolfkoenig,

vielen Dank für die schnelle und kompetente Mithilfe!  ;)

Ich habe mir aus dem SVN Trunk die 00_FBAHAHTTP.pm eingebunden, um dies zu verstehen/protokollieren. Ich bin kein begabter Programmierer.

Folgendes Problem ist mir soeben noch aufgekommen:
- Es dürfen keine Leerzeichen in den Vorlagen Namen vorkommen, ansonsten gibt es Probleme vermischt die Bezeichnung im Set.

Modul nennt sich bei mir als name "FBDECT" - Wenn ich jetzt "get FBDECT templatelist" ausführe, wird folgendes über Verbose 5 ausgegeben:
2019.03.24 13:45:24 5: FBDECT: dispatch <device identifier="08761 0378940" id="18" functionbitmask="2944" fwversion="04.09" manufacturer="AVM" productname="FRITZ!DECT 200"><present>1</present><name>Entertaiment-TV</name><switch><state>1</state><mode>manuell</mode><lock>0</lock><devicelock>0</devicelock></switch><powermeter><voltage>230718</voltage><power>199410</power><energy>315264</energy></powermeter><temperature><celsius>260</celsius><offset>0</offset></temperature></device>
2019.03.24 13:45:24 5: FBDECT: dispatch <device identifier="11959 0278448" id="16" functionbitmask="320" fwversion="03.68" manufacturer="AVM" productname="Comet DECT"><present>1</present><name>KZ-H</name><temperature><celsius>185</celsius><offset>0</offset></temperature><hkr><tist>37</tist><tsoll>32</tsoll><absenk>32</absenk><komfort>42</komfort><lock>0</lock><devicelock>0</devicelock><errorcode>0</errorcode><batterylow>0</batterylow><windowopenactiv>0</windowopenactiv><battery>50</battery><nextchange><endperiod>1553467500</endperiod><tchange>42</tchange></nextchange><summeractive>0</summeractive><holidayactive>0</holidayactive></hkr></device>
2019.03.24 13:45:23 5: FBDECT: dispatch <device identifier="11959 0389176" id="17" functionbitmask="320" fwversion="03.68" manufacturer="AVM" productname="Comet DECT"><present>1</present><name>BZ-H</name><temperature><celsius>180</celsius><offset>0</offset></temperature><hkr><tist>36</tist><tsoll>32</tsoll><absenk>32</absenk><komfort>42</komfort><lock>0</lock><devicelock>0</devicelock><errorcode>0</errorcode><batterylow>0</batterylow><windowopenactiv>0</windowopenactiv><battery>50</battery><nextchange><endperiod>1553484600</endperiod><tchange>42</tchange></nextchange><summeractive>0</summeractive><holidayactive>0</holidayactive></hkr></device>
2019.03.24 13:45:23 5: FBDECT: dispatch <device identifier="09995 0048324" id="20" functionbitmask="320" fwversion="04.88" manufacturer="AVM" productname="FRITZ!DECT 301"><present>1</present><name>SZ-H</name><temperature><celsius>195</celsius><offset>0</offset></temperature><hkr><tist>39</tist><tsoll>32</tsoll><absenk>32</absenk><komfort>42</komfort><lock>0</lock><devicelock>0</devicelock><errorcode>0</errorcode><batterylow>0</batterylow><windowopenactiv>0</windowopenactiv><battery>90</battery><nextchange><endperiod>1553446800</endperiod><tchange>42</tchange></nextchange><summeractive>0</summeractive><holidayactive>0</holidayactive></hkr></device>
2019.03.24 13:45:23 5: FBDECT: dispatch <device identifier="11960 0781472" id="19" functionbitmask="320" fwversion="03.68" manufacturer="AVM" productname="Comet DECT"><present>1</present><name>WZ-H-R</name><temperature><celsius>215</celsius><offset>20</offset></temperature><hkr><tist>43</tist><tsoll>32</tsoll><absenk>32</absenk><komfort>42</komfort><lock>0</lock><devicelock>0</devicelock><errorcode>0</errorcode><batterylow>0</batterylow><windowopenactiv>0</windowopenactiv><battery>10</battery><nextchange><endperiod>1553436000</endperiod><tchange>42</tchange></nextchange><summeractive>0</summeractive><holidayactive>0</holidayactive></hkr></device>
2019.03.24 13:45:23 5: FBDECT: dispatch <group identifier="AC:F5:74-900" id="900" functionbitmask="4160" fwversion="1.0" manufacturer="AVM" productname=""><present>1</present><name>WZ-H</name><hkr><tist>0</tist><tsoll>32</tsoll><absenk>32</absenk><komfort>42</komfort><lock>0</lock><devicelock>0</devicelock><errorcode>0</errorcode><batterylow>0</batterylow><windowopenactiv>0</windowopenactiv><battery>1</battery><nextchange><endperiod>1553436000</endperiod><tchange>42</tchange></nextchange><summeractive>0</summeractive><holidayactive>0</holidayactive></hkr><groupinfo><masterdeviceid>0</masterdeviceid><members>21,19</members></groupinfo></group>
2019.03.24 13:45:23 5: FBDECT: dispatch <device identifier="09995 0095691" id="21" functionbitmask="320" fwversion="04.88" manufacturer="AVM" productname="FRITZ!DECT 301"><present>1</present><name>WZ-H-L</name><temperature><celsius>200</celsius><offset>0</offset></temperature><hkr><tist>40</tist><tsoll>32</tsoll><absenk>32</absenk><komfort>42</komfort><lock>0</lock><devicelock>0</devicelock><errorcode>0</errorcode><batterylow>0</batterylow><windowopenactiv>0</windowopenactiv><battery>60</battery><nextchange><endperiod>1553436000</endperiod><tchange>42</tchange></nextchange><summeractive>0</summeractive><holidayactive>0</holidayactive></hkr></device>


-

Wenn ich jetzt "Urlaub" als Test nehme und "set FBDECT template Urlaub" ausführe, erfolgt folgendes:
2019.03.24 13:57:09 1: No sensible response for ain=Urlaub&switchcmd=applytemplate after reconnect, giving up
2019.03.24 13:57:09 5: FBAHAHTTP_Write reply for FBDECT:


-


Hab etwas gefunden - bezogen auf das Script vom Alexa... wie das eingesetzt wird:

string requestUri = fritzBoxAddress.TrimEnd('/') + "/" + SMARTHOMEPAGE + "?sid=" + connection.FritzBoxSessionId + "&switchcmd=applytemplate&ain=" + device.Identifier;
FHEM mit RPi4 ::: SIGNALduino ::: Homebridge + homebridge-fhem ::: Zigbee = RaspBee + Hue + Paulmann + Ikea + Xiaomi ::: DECT = FritzBox 6590 + FRITZ!DECT ::: IR = Harmony ::: SIRO Akku-Rolloantrieb ::: EchoDots + alexa-fhem

rudolfkoenig

ZitatHab etwas gefunden - bezogen auf das Script vom Alexa... wie das eingesetzt wird:

string requestUri = fritzBoxAddress.TrimEnd('/') + "/" + SMARTHOMEPAGE + "?sid=" + connection.FritzBoxSessionId + "&switchcmd=applytemplate&ain=" + device.Identifier;
Genau das sende ich mAn bei "set template", und die Parameterreihenfolge umzudrehen macht keinen Unterschied.

Ich waere dankbar fuer ein funktionierende Version, ohne Variablennamen, sondern mit tatsaechlichen Werten.


amenomade

Zitat von: rudolfkoenig am 24 März 2019, 13:17:19
Ich habe gerade zu FBAHAHTTP "get templateList" und "set template XXX" hinzugefuegt.

get templateList funktioniert.

Fuer "set template XXX" liefert der AHA Server "HTTP 400 Bad request" zurueck, vmtl. ist das, was ich sende falsch.
Ich habe https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf so interpretiert, dass man
ain=<templatename>&switchcmd=applytemplate
senden muss, das ist aber offensichtlich falsch.

Wenn mir jemand die korrekte Syntax beschreibt, dann korrigiere ich es gerne.

Und so machen die auch hier: https://github.com/andig/fritzapi
sid muss man (natürlich) auch mitsenden.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Hat das Template vielleicht ein eigenes ain, was nicht der Templatename ist?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Gerold

als ain muss der Identifier der Templates mitgegeben werden, z.B.:


ain=tmp236E3D-39DEC6610&switchcmd=applytemplate

rudolfkoenig

Habs angepasst, scheint zu funktionieren.
Leerzeichen in template Namen werden weiterhin nicht unterstuetzt, waere an zu vielen Stellen Umbau notwendig.

Gerold

ja, klappt auch bei mir. Habe 3 Testtemplates in der FB angelegt und kann sie aus FHEM heraus über das FBAHATTP Device aktivieren.

hal2000pd

In der CommandRef (https://fhem.de/commandref.html#FBAHAHTTP) steht (noch?), dass das Setzen von Templates aus unbekanntem Grund aktuell nicht funktioniert.
Ich habe das bei mir gerade eingerichtet, und wie oben beschrieben, muss lediglich sichergestellt sein, dass die Template-Namen keine Leerzeichen enthalten. Ansonsten funktioniert es bei mir wie es soll.

Kann das in der CommandRef entsprechend geändert werden?

rudolfkoenig

Danke fuer den Hinweis, habe de Doku geaendert.