72_FRITZBOX.pm ab Version 08.00.00

Begonnen von elektron-bbs, 09 Oktober 2024, 17:28:16

Vorheriges Thema - Nächstes Thema

JoWiemann

Hallo Frank,

deviceOverview gab es definitiv noch nie im FritzBox Modul.

Bei CSRF bin ich jetzt überfordert. Ich nutze die FhemWeb JavaScript Funktionen, die eigentlich immer das gültige CSRF kennen sollten. Ansonsten würde ja FhemWeb nicht funktionieren. Ich werde also im Entwicklerbereich mal nachfragen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Hallo Frank,

ich habe jetzt mehrfach hin und her probiert. Ich bekomme einfach keinen CSFR Fehler. Selbst nach RPi Neustart funktioniert es.

Grüße Jörg

PS: CSFR steht natürlich auf random
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

frank

hallo jörg,

Zitat von: JoWiemann am 28 März 2025, 07:34:30deviceOverview gab es definitiv noch nie im FritzBox Modul.
sag niemals nie!  ;)

der screenshot zeigt version 08.00.07k_Beta.
soweit ich es verstehe, fällt der "normale" bereich deviceOverview weg, wenn das modul die funktion FW_detailFn nutzt, um eigene darstellungen zu realisieren (zb bei AutoShuttersControl).
also logisch, wenn der bereich nicht mehr zu sehen ist.


gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

JoWiemann

Hallo Frank,

ah, mein Fehler und falsch verstanden. Sorry. Ich werde FW_detailFn wieder deaktivieren, da es m.E. nicht benötigt wird für CSFR. Wie schon geschrieben, mit der Nutzung der JavaScript Funktion FW_cmd ( https://wiki.fhem.de/wiki/DevelopmentFHEMWEB-API#FHEMWEB-Client_(pgm2)_Javascript-Funktionen ) muss es egal sein, wie CSFR Token im FhemWeb Device definiert ist.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

frank

sorry jörg,

csrf funktioniert jetzt doch mit den neuen buttons im reading.  :)

bei meinem test gestern abend waren vor dem restart noch die readings der alten version 08.03.00n_Beta vorhanden.
also alles bestens.

gruss frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

JoWiemann

Hallo Frank,

super. Dann werde ich die Version mal ins SVN einchecken.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Hallo,

ich habe die neue Version 08.03.00 des FRITZBOX Moduls eingecheckt.

Fehler:
- set <name> lockLandevice <number|mac> <on|off|rt|rtoff> -> Fehler behoben

Attribute:
retMsgbySet <all|error|none>

Mit dem Attribut kann die Rückgabe der SET Befehle festgelegt werden.
<all>: Standard. Es werden alle Ergebnisse des SET's zurück gegeben.
<error>: Es werden nur Fehler zurück gegeben.
<none>: Es erfolgt keine Rückgabe.

Readings:
box_notify_<notify_ID>
box_notify_<notify_ID>_info
Die beiden Readings werden erstellt, wenn die FritzBox die Info LED rot aktiviert und einen entsprechenden Hinweis auf der Webseite platziert. In den Readings befinden sich ein Button für weitere Informationen und ein Button um die Information zu quittieren. Durch diesen Link wird die Info in der FritzBox quittiert und es werden die beiden Readings auf -solved by click- gesetzt. Wird die Info von der FritzBox zurückgezogen, dann erhalten die Readings die Ergänzung -solved by FB-. Der Button wird auf '-solved by FB- Readings löschen' gesetzt. Über diesen Button können die beiden Readings box_notify_<notify_ID> und box_notify_<notify_ID>_info gelöscht werden.
Die Readings müssen über das Attribut: enableBoxReadings aktiviert werden.

Set's:
Für die AVM SmartHome Geräte Thermostate und Steckdosen sind umfangreiche Einstellungen möglich. Die Nachbildung in Fhem wäre wenig effektiv. Somit gibt es jetzt die Möglichkeit Einstellung in der FritzBox zu machen und diese als pre-defines in Fhem zu speichern. Durch einen Befehl zum Laden können diese pre-defines in die Fritzbox geladen werden.

set <name> smartHome <deviceID> <preDefSave:nameEinstellung>
speichert die Einstellungen für das Device unter dem angegeben Namen.

set <name> smartHome <deviceID> <preDefLoad [deviceID_load:]nameEinstellung[:A|:G]>
lädt eine gespeicherte Einstellung in die Fritzbox. Wird [deviceID_load:] angegeben, so wird die gespeicherte Einstellung eines anderen funktional identischen Device in die Fritzbox geladen.
Bei Devices vom Typ 'socket' (Steckdosen) kann noch differenziert werden, ob alle Einstellungen oder nur die der Webseite :A == 'Automatisch schalten' oder :G == 'Allgemein' geladen werden sollen.

Die ID kann über get <name> luaInfo <smartHome>, über get <name> smartHomePreDef ... oder über das Readings shdevice<..>_device (sofern die Readings aktiviert sind) ermittelt werden.

Get's:
get <name> smartHomePreDef [deviceID [Saved-PreDef-Name]]

Die mit set smartHome ... preDefSave gespeicherten pre-defines können über diesen get-Befehl angezeigt werden.
get <name> smartHomePreDef: listet alle gespeicherten Einstellungen auf. Diese Auflistung wird auch bei get <name> luaInfo smartHome mit angezeigt.

get <name> smartHomePreDef <deviceID>:
listet alle für das Device gespeicherten Einstellungen auf.

get <name> smartHomePreDef <deviceID> <Saved-PreDef-Name>:
zeigt die für das Device unter dem Saved-PreDef Namen gespeicherten Daten.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

bertl

Hallo Jörg,

danke für die neue Version, welche ich bezüglich 'lockLandevice' und 'lockFilterProfile' gleich getestet habe.

Wenn ich jetzt 'lockLandevice' aufrufe, zieht es zwar keien anderen Devices mehr runter, aber leider funktioniert es bei mir nicht.
Folgende Fehlermedlung kommt (falls du mehr Infos benötigst, einfach sagen):

2025.04.01 16:05:56 3: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set.1301] - BASIC:set FritzBox_Vorhaus lockLandevice - landevice1033196 on
2025.04.01 16:05:56 3: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set_lock_Landevice_OnOffRt_8.9014] - BASIC:set FritzBox_Vorhaus locklandevice landevice1033196 on Notebook-JAK-WLAN (Fritz!OS: 08.02)
2025.04.01 16:05:58 2: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set_lock_Landevice_OnOffRt_8.9043] - SIGNIFICANT:locklandevice: 32 Notebook-JAK-WLAN user30 E4:FD:45:E2:44:65 Notebook-JAK-WLAN
2025.04.01 16:05:58 2: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set_lock_Landevice_OnOffRt_8.9059] - SIGNIFICANT:locklandevice: 2 filtprof1792 user30 E4:FD:45:E2:44:65 Notebook-JAK-WLAN
2025.04.01 16:05:58 3: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set_lock_Landevice_OnOffRt_8.9160] - BASIC:locklandevice: Notebook-JAK-WLAN : filtprof1792 : landevice1033196 : user30 : Generic
Usage: $p->ping([ $host [, $timeout [, $family]]]) at ./FHEM/72_FRITZBOX.pm line 12818.
2025.04.01 16:06:02 1: [FritzBox_Vorhaus | 7530 | 164.08.02 | Readout_SetGet_Aborted.7583] - ERROR:Timeout reached for: locklandevice landevice1033196 on

Bei 'lockFilterProfile' kommt keine Fehlermeldung, aber es passiert leider auch nichts.

2025.04.01 16:04:06 3: [FritzBox_Vorhaus | 7530 | 164.08.02 | Attr.1248] - BASIC:Attr set retMsgbySet -> Neustart internal Timer - APICHECKED = 1
2025.04.01 16:04:14 3: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set_check_APIs.7943] - BASIC:Response -> luaQuery:200 luaData:200 TR064:200
2025.04.01 16:04:26 3: [FritzBox_Vorhaus | 7530 | 164.08.02 | Set.1301] - BASIC:set FritzBox_Vorhaus lockFilterProfile - Jakob status:never

Hast du 'lockFilterProfile' inzwischen auf nicht blockierend umgestellt?

Danke für deinen Support.

Schönen Abend
Robert

JoWiemann

Hallo Robert,

setz doch bitte verbose auf 4 poste dann das Log. Danke Dir.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

bertl

Hallo Jörg,

im Anhnag die Verbose 4 Logs für lockLanDevice und lockFilterProfile.

Danke fürs checken, Robert

Du darfst diesen Dateianhang nicht ansehen.
Du darfst diesen Dateianhang nicht ansehen.

JoWiemann

#130
Hallo Robwert,

anbei meine Rückmeldungen:

Zitat von: bertl am 01 April 2025, 16:13:13Wenn ich jetzt 'lockLandevice' aufrufe, zieht es zwar keien anderen Devices mehr runter, aber leider funktioniert es bei mir nicht.
Der set Befehl läuft auf einen TimeOut. Setz doch bitte das Attribut:
setgetTimeout<10|30|40|50|75|100|125>
den Timeout für das Ausführen von non blocking set/get Befehlen. Standard ist 10 (Sekunden)
auf einen Wert größer 10 und teste nocheinmal.

Zitat von: bertl am 01 April 2025, 16:13:13Bei 'lockFilterProfile' kommt keine Fehlermeldung, aber es passiert leider auch nichts.
Es sieht so aus, als wenn sich ab FritzOS 8.00 etwas geändert hat. Muss ich mir die Tage anschauen.

Zitat von: bertl am 01 April 2025, 16:13:13Hast du 'lockFilterProfile' inzwischen auf nicht blockierend umgestellt?
Mache ich, wenn ich die Anpassung für FritzOS 8.00 umsetze.

Grüße Jörg

Danke für deinen Support.

Schönen Abend
Robert

[/quote]
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

bertl

Hallo Jörg,

Zitat von: JoWiemann am 02 April 2025, 16:23:03Der set Befehl läuft auf einen TimeOut. Setz doch bitte das Attribut:
setgetTimeout<10|30|40|50|75|100|125>
den Timeout für das Ausführen von non blocking set/get Befehlen. Standard ist 10 (Sekunden)
auf einen Wert größer 10 und teste nocheinmal.

Ich habe jetzt den Timer auf 30 und dann auf 50 Sekunden gesetzt und es kommt jedes mal die Meldung
   'ERROR:Timeout reached for: locklandevice ...'

Wenn ich ein Device mittels folgenden bash-script sperre, funktioniert es unmittelbar ohne Probleme!

CONFIG="/opt/fhem/credentials/fritzbox.conf"
source $CONFIG
LANDEVICE=$1
DEVICE_NAME=$2
LOCK=$3

challenge=$(curl -s "http://$IP1/login_sid.lua?username=$FRITZUSER1" | grep -Po '(?<=<Challenge>).*?(?=</Challenge>)')
md5=$(echo -n ${challenge}"-"$FRITZPW1 | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}')
response="${challenge}-${md5}"
sid=$(curl -i -s -k -d "response=${response}&username=$FRITZUSER1" "http://$IP1" | grep -Po -m 1 '(?<=sid\":\")[a-f\d]+' | tail -1)

if [[ "$LOCK" == "on" || "$LOCK" == "ON" ]]
then
  curl -d "sid=${sid}&xhr=1&dev=${LANDEVICE}&lang=de&internetdetail=blocked&page=edit_device&apply=true&dev_name=${DEVICE_NAME}" "http://$IP1/data.lua" >/dev/null 2>&1
  echo "$(date +'%Y.%m.%d %H:%M:%S') 1: $scriptName: LanDevice $LANDEVICE, DeviceName $DEVICE_NAME will be locked ($LOCK)."
else
  curl -d "sid=${sid}&xhr=1&dev=${LANDEVICE}&lang=de&internetdetail=unlimited&page=edit_device&apply=true&dev_name=${DEVICE_NAME}" "http://$IP1/data.lua" >/dev/null 2>&1
  echo "$(date +'%Y.%m.%d %H:%M:%S') 1: $scriptName: LanDevice $LANDEVICE, DeviceName $DEVICE_NAME will be unlocked ($LOCK)."
fi

Vielleicht hilft das ja weiter!?

Schönen Abend
Robert

JoWiemann

Hallo Robert,

ich bin irritiert, dass bei Deiner 7530 mit FritzOS 8.02 der data.lua Aufruf funktioniert. Bei einer 7590 funktioniert er nicht mehr und muss durch einen JavaScript Aufruf ersetzt werden. Dass deutet darauf hin, dass bei der 7530 der JavaScript Aufruf fehl schlägt. Dass ist echt Mist.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Hallo Robert,

hm, bei einer FB7590 funktioniert seit 8.02 sowohl data.lua als auch javaScript. So sei es dann.

Anbei eine Version zum Testen, mit der Du das set <name> lockLanDevice auf data.lua umschalten kannst. Die Syntax für den set Befehl lautet dann:

set <name> lockLandevice <number|mac> <on|off|rt> OS7

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Hallo,

anbei eine neue 08.03.01 Beta zum Testen:

Da es wohl FB's mit FritzOS 8.nn gibt, die set <name> lockLanDevice nicht über javaScript ausführen, kann man den Befehl set <name> lockLanDevice auf data.lua umschalten. Die Syntax für den set Befehl lautet dann:

set <name> lockLandevice <number|mac> <on|off|rt> OS7

set <name> lockFilterProfile sollte wieder funktionieren und ist auf nonBlocking umgestellt.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM