FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ahstax am 29 September 2020, 17:29:40

Titel: [GELÖST] FritzBox 6591 LEDs an und ausschalten
Beitrag von: ahstax am 29 September 2020, 17:29:40
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
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: Otto123 am 29 September 2020, 19:21:03
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

Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag 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}
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: ahstax am 30 September 2020, 12:30:35
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}
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 30 September 2020, 19:39:25
Man keine URL mittels GetFileFromURL() (https://wiki.fhem.de/wiki/HttpUtils#GetFileFromURL) aufrufen.

Ansonsten wäre es mit einem HTTPMOD machbar.
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 30 September 2020, 20:53:16
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.
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: ahstax am 02 Oktober 2020, 21:25:15
Ja, leider hat das auch bei mir/meiner FB keine Wirkung...

Muss das Script installiert/vorhanden sein?
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: Otto123 am 02 Oktober 2020, 22:50:22
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 (https://www.mengelke.de/Projekte/FritzBox-Tools) was aktuell noch entwickelt wird - das sollte man mal testen.

Gruß Otto
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 03 Oktober 2020, 01:49:12
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

Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 03 Oktober 2020, 02:39:03
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

Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: Otto123 am 03 Oktober 2020, 10:45:41
Das funktioniert bei meiner 7490 ;) fix umgesetzt :)
Hinweis zum Einsatz:
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 03 Oktober 2020, 11:42:03
Stimmt. Und dazu, sollte das Device nicht FBleds heissen, dann auch die 'replacementXXvalue ReadingsVal("<name>",...' anpassen
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: ahstax am 03 Oktober 2020, 12:45:35
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?
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 03 Oktober 2020, 13:01:25
[gelöst] im Titel des ersten Post?
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 03 Oktober 2020, 13:02:44
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 ;)
Titel: Antw:FritzBox 6591 LEDs an und ausschalten
Beitrag von: ahstax am 03 Oktober 2020, 13:06:59
Als Reading nehme ich dann einen Wert dieser?
Zitat von: amenomade am 03 Oktober 2020, 02:39:03
Und jetzt vollständig mit
- set FBleds an|aus
- set FBleds envLight(An|Aus)
- set FBleds dimValue 1|2|3
- set FBleds getStatus
Titel: Antw:[GELÖST] FritzBox 6591 LEDs an und ausschalten
Beitrag von: amenomade am 03 Oktober 2020, 13:14:06
Ein dieser:
   READINGS:
     2020-10-03 02:37:02   dimValue        3
     2020-10-03 02:37:02   envLight        1
     2020-10-03 02:37:02   ledDisplay      0


Z.B.:
attr FBleds stateFormat { ReadingsVal("FBleds", "ledDisplay", 0) == 0 ? "an" : "aus" }

oder
attr FBleds stateFormat { "leds:".(ReadingsVal("FBleds", "ledDisplay", 0) == 0 ? "an" : "aus")." env:".(ReadingsVal("FBleds", "envLight", 0) == 0 ? "aus" : "an")." dim:".ReadingsVal("FBleds", "dimValue", 3)  }
Titel: Antw:[GELÖST] FritzBox 6591 LEDs an und ausschalten
Beitrag von: ahstax am 03 Oktober 2020, 18:07:16
Zitat von: amenomade am 03 Oktober 2020, 13:14:06
attr FBleds stateFormat { ReadingsVal("FBleds", "ledDisplay", 0) == 0 ? "an" : "aus" }


Der ist es (in meinem Fall)!

D A N K E ! ! !  :)