[GELÖST] FritzBox 6591 LEDs an und ausschalten

Begonnen von ahstax, 29 September 2020, 17:29:40

Vorheriges Thema - Nächstes Thema

ahstax

Hallo,

Kann man mit FHEM bei einer FRITZ!Box 6591, die mit FBAHAHTTP eingebunden ist, die LEDs der Fritzbox an und ausschalten?
Wenn ja, wie?

Neugierige Grüße,
Andreas

Otto123

Hallo Andreas,

über FBAHAHTTP wüsste ich nicht, aber über das Fritzbox Modul könntest Du mit TR064 die LEDs beim Neustart der Box blinkern lassen ;)

Spaß beiseite: Es soll über die lua Schnittstelle gehen. http://fritz.box/system/led_display.lua
Das Modul hat zwar lua aber ich denke nicht alles. Ich weiß Jörg hat da mal was gebastelt für Profile https://forum.fhem.de/index.php?topic=109689.0

Vielleicht geht es irgendwie? Im IPPhone Forum gibt es auch ein Script

Gruß Otto

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

amenomade

Das sollte ja über lua gehen:
http://fritz.box/data.lua?sid=<SID>&led_display=<0|1|2>&apply=&oldpage=/system/led_display.lua

Das SID kriegt man aus dem FritzBox Modul:
$defs{FritzBox}{fhem}->{sid}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ahstax

Vielen Dank für den Input!
Kann man eine URL wie diese http://fritz.box/data.lua?sid=<SID>&led_display=<0|1|2>&apply=&oldpage=/system/led_display.lua einfach in einen FHEM-Befehl einbauen?

Zitat von: amenomade am 29 September 2020, 19:44:31
Das sollte ja über lua gehen:
http://fritz.box/data.lua?sid=<SID>&led_display=<0|1|2>&apply=&oldpage=/system/led_display.lua

Das SID kriegt man aus dem FritzBox Modul:
$defs{FritzBox}{fhem}->{sid}

amenomade

Man keine URL mittels GetFileFromURL() aufrufen.

Ansonsten wäre es mit einem HTTPMOD machbar.
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

So ein HTTPMOD:
defmod FBleds HTTPMOD http://fritz.box/system/led_display.lua 0
attr FBleds replacement01Mode expression
attr FBleds replacement01Regex %%sid%%
attr FBleds replacement01Value { $defs{FritzBox}{fhem}->{sid} }
attr FBleds set01Data sid=%%sid%%&led_display=$val&apply=
attr FBleds set01Max 2
attr FBleds set01Min 0
attr FBleds set01Name ledValue
attr FBleds verbose 5


schickt den richtigen Befehl bei "set FBleds ledValue 2":
2020.09.30 20:39:17 4: FBleds: HandleSendQueue sends set01 with timeout 2 to http://fritz.box/system/led_display.lua,

data: sid=9f10682af7a6c797&led_display=2&apply=, No Header

(Voraussetzung ist ein funktionierendes FRITZBOX Device mit User und pw gesetzt, damit man eine gültige sid kriegt)

Allerdings scheint es bei mir keine Wirkung auf den LEDs zu haben. ledValue 2 sollte die LEDs ausschalten.
Das ist aber was im Skript hier z.B. gemacht wird https://github.com/jhubig/FritzBoxShell/releases/tag/v1.0.5

Vielleicht kannst Du erstmal den Skript testen: https://github.com/jhubig/FritzBoxShell/wiki/Installation,-Configuration-&-First-test
Wenn es geht, dann gucken wir weiter mit einem HTTPMOD. Wenn es nicht geht... weiss ich nicht.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ahstax

Ja, leider hat das auch bei mir/meiner FB keine Wirkung...

Muss das Script installiert/vorhanden sein?

Otto123

Wenn ich die Beiträge in diversen Foren dazu richtig verstehe, hat AVM da was in der Firmware / Funktion geändert.
Es gibt aber ein php Script was aktuell noch entwickelt wird - das sollte man mal testen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

amenomade

#8
Kooles Skript!

LED Status ermitteln:
get <fritzbox> luaQuery box:settings/led_display

Und die interessante Zeile (LED setzen):
      request('POST','/data.lua',"sid=$sid&apply=&page=led&ledDisplay=$led[0]&envLight=$led[1]&dimValue=$led[2]"); // LED schalten:

Also: folgendes HTTPMOD schaltet mit "set FBleds aus/an" die Leds aus/an (Nebeneffekt: es setzt auch die Helligkeit auf "Sehr hell" und die Anpassung an das Umgebungslicht an - das sind die envLight und dimValue Parameter, die ich fest kodiert habe - da gibt es aber Spielraum) :

defmod FBleds HTTPMOD http://fritz.box/data.lua 0
attr FBleds replacement01Mode expression
attr FBleds replacement01Regex %%sid%%
attr FBleds replacement01Value { $defs{FritzBox}{fhem}->{sid} }
attr FBleds set01Data sid=%%sid%%&apply=&page=led&ledDisplay=2&envLight=1&dimValue=3
attr FBleds set01Name aus
attr FBleds set01NoArg 1
attr FBleds set02Data sid=%%sid%%&apply=&page=led&ledDisplay=0&envLight=1&dimValue=3
attr FBleds set02Name an
attr FBleds set02NoArg 1

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

#9
Und jetzt vollständig mit
- set FBleds an|aus
- set FBleds envLight(An|Aus)
- set FBleds dimValue 1|2|3
- set FBleds getStatus

Zuerst ein "set FBleds getStatus" machen, damit die Readings ausgefüllt werden. Danach nutzt er die Readings, um bei einem set die andere Werte nicht zu ändern.

defmod FBleds HTTPMOD http://fritz.box/data.lua 0
attr FBleds reading20JSON data_ledSettings_ledDisplay
attr FBleds reading20Name ledDisplay
attr FBleds reading21JSON data_ledSettings_envLight
attr FBleds reading21Name envLight
attr FBleds reading22JSON data_ledSettings_dimValue
attr FBleds reading22Name dimValue
attr FBleds replacement01Mode expression
attr FBleds replacement01Regex %%sid%%
attr FBleds replacement01Value { $defs{FritzBox}{fhem}->{sid} }
attr FBleds replacement02Mode expression
attr FBleds replacement02Regex %%envLight%%
attr FBleds replacement02Value ReadingsVal("FBleds","envLight",1)
attr FBleds replacement03Mode expression
attr FBleds replacement03Regex %%dimValue%%
attr FBleds replacement03Value ReadingsVal("FBleds","dimValue",3)
attr FBleds replacement04Mode expression
attr FBleds replacement04Regex %%ledDisplay%%
attr FBleds replacement04Value ReadingsVal("FBleds","ledDisplay",0)
attr FBleds set00Data sid=%%sid%%&page=led
attr FBleds set00Name getStatus
attr FBleds set00NoArg 1
attr FBleds set00ParseResponse 1
attr FBleds set01Data sid=%%sid%%&apply=&page=led&ledDisplay=2&envLight=%%envLight%%&dimValue=%%dimValue%%
attr FBleds set01Name aus
attr FBleds set01NoArg 1
attr FBleds set01ParseResponse 1
attr FBleds set02Data sid=%%sid%%&apply=&page=led&ledDisplay=0&envLight=%%envLight%%&dimValue=%%dimValue%%
attr FBleds set02Name an
attr FBleds set02NoArg 1
attr FBleds set02ParseResponse 1
attr FBleds set03Data sid=%%sid%%&apply=&page=led&ledDisplay=%%ledDisplay%%&envLight=1&dimValue=%%dimValue%%
attr FBleds set03Name envLightAn
attr FBleds set03NoArg 1
attr FBleds set03ParseResponse 1
attr FBleds set04Data sid=%%sid%%&apply=&page=led&ledDisplay=%%ledDisplay%%&envLight=0&dimValue=%%dimValue%%
attr FBleds set04Name envLightAus
attr FBleds set04NoArg 1
attr FBleds set04ParseResponse 1
attr FBleds set05Data sid=%%sid%%&apply=&page=led&ledDisplay=%%ledDisplay%%&envLight=%%envLight%%&dimValue=$val
attr FBleds set05Max 3
attr FBleds set05Min 1
attr FBleds set05Name dimValue
attr FBleds set05ParseResponse 1

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Otto123

Das funktioniert bei meiner 7490 ;) fix umgesetzt :)
Hinweis zum Einsatz:

  • URL anpassen falls die Fritzbox nicht auf fritz.box hört.
  • { $defs{FritzBox}{fhem}->{sid} } anpassen auf das FHEM Fritzbox Device. Ohne das geht es nicht! (SID)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

amenomade

Stimmt. Und dazu, sollte das Device nicht FBleds heissen, dann auch die 'replacementXXvalue ReadingsVal("<name>",...' anpassen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ahstax

#12
Ihr seid "der Gerät"!  ;)
Herzlichen Dank! Das klappt wunderbar!!!!

Jetzt muss ich noch ein webCmd einbauen (zur komfortablen Darstellung!) und ein oder zwei "at", um die Anzeige zu aktualisieren bzw Nachts ein/aus zu schalten. Das sollte ich (hoffentlich) hin bekommen...
Allerdings gibt es kein "State", wenn ich das richtig sehe?

amenomade

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

Zitat von: ahstax am 03 Oktober 2020, 12:45:35

Allerdings gibt es kein "State", wenn ich das richtig sehe?
Nein, das setzt HTTPMOD nicht standardmässig. Kann man aber mit stateFormat einfach lösen. Du hast ja die Readings ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus