72_FRITZBOX.pm: TR-064 Problem - Rufumleitung (Aufrufparameter vertauscht?)

Begonnen von pappn, 19 Oktober 2018, 20:39:01

Vorheriges Thema - Nächstes Thema

pappn

Hallo,

seit dem 21.09. habe ich Probleme mit dem Ein- und Ausschalten meiner Ruflumleitung mittels 72_FRITZBOX.pm. Im Log steht:2018.10.19 20:25:34 3: FRITZBOX: set FB_Unten diversity 1 on
2018.10.19 20:25:34 4: FRITZBOX FB_Unten: TR064_Cmd.4301 Perform TR-064 call - service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '1', parameter2='NewDeflectionId' => '0'
2018.10.19 20:25:35 2: FRITZBOX FB_Unten: TR064_Cmd.4322 TR064-Error 402:Invalid Args (service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '1', parameter2='NewDeflectionId' => '0')

Erst jetzt ist mir aufgefallen, dass offensichtlich die Reihenfolge der Parameter nicht zu stimmen scheint.
Sollte es nicht eher in dieser Reiehfolge laufen?
(service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewDeflectionId' => '0', parameter2='NewEnable' => '1')
Kann es sich dabei um einen Fehler im Modul handeln?

Pappn
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

rischbiter123

Versuch mal ohne Leerzeichen zwischen diversity und 1.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

pappn

Leerzeichen ist Pflicht und entspricht auch der CommandRef.
Sonst kommt Please define diversity1 first

Kann es vielleicht mit der neuen Frimware der FB zu tun haben? Habe nämlich zum gleichen Zeitpunkt FritzOS 07.01 installiert.
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

rischbiter123

#3
Hast Recht, war ein Fehler bei mir. Funktioniert bei mir allerdings auch nur manchmal.

LG

Andreas

Wenn ich etwas Zeit zwischen den Schaltvorgängen lasse, funktioniert es. Zumindest wenn ich in der Kommandozeile

set MeinFritz diversity 1 on bzw. off

eingebe.
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

pappn

Das macht bei mir keinen Unterschied. Rufumleitung wird morgens, wenn ich gehe, eingeschaltet und dann Abends, wenn ich zurück komme, wieder ausgeschaltet. Das hat auch bis September prima und fehlerfrei funktioniert.

Was mich halt wirklich wundert ist, dass die Reihenfolge der Parameter für den Aufruf nicht stimmt, wenn ich mir das mit verbose 4 im log ansehe.....
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

rischbiter123

Dann bin ich leider raus. Bei mir läuft es auf der 7590 mit FW 7.01

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

pappn

Hab gerade noch mal das log durchforstet.
Wie kann es sein, dass die Reihenfolge der Aufrufparameter einmal stimmt und dann nicht mehr?
2018.10.19 19:38:05 3: FRITZBOX: set FB_Unten diversity 1 on
2018.10.19 19:38:05 5: FRITZBOX FB_Unten: readPassword.4737 Read FritzBox password from file
2018.10.19 19:38:05 4: FRITZBOX FB_Unten: TR064_Cmd.4301 Perform TR-064 call - service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewDeflectionId' => '0', parameter2='NewEnable' => '1'
2018.10.19 19:38:53 3: FRITZBOX: set FB_Unten diversity 1 off
2018.10.19 19:38:53 4: FRITZBOX FB_Unten: TR064_Cmd.4301 Perform TR-064 call - service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '0', parameter2='NewDeflectionId' => '0'
2018.10.19 19:38:54 2: FRITZBOX FB_Unten: TR064_Cmd.4322 TR064-Error 402:Invalid Args (service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '0', parameter2='NewDeflectionId' => '0')


Einschalten ist OK mit richtiger Reihenfolge der Parameter
Perform TR-064 call - service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewDeflectionId' => '0', parameter2='NewEnable' => '1'

50 sec später wieder ausschalten Reihenfolger der Parameter vertauscht
Perform TR-064 call - service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '0', parameter2='NewDeflectionId' => '0'
mit entsprechender Fehlermeldung von der Fritzbox.
TR064-Error 402:Invalid Args (service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '0', parameter2='NewDeflectionId' => '0'

Habe jetzt auch noch mal hier gelesen: https://forum.fhem.de/index.php/topic,90106.0.html
Wenn ich nach demselben Muster die Befehle manuell absetzte funktioniert es.
RUL ein
get FB_Unten tr064Command X_AVM-DE_OnTel:1 x_contact SetDeflectionEnable  NewEnable 1 NewDeflectionId 0
RUL aus
get FB_Unten tr064Command X_AVM-DE_OnTel:1 x_contact SetDeflectionEnable  NewEnable 0 NewDeflectionId 0
Großes Fragezeichen

Interessanterweise lässt sich so auch die zweite RUL schalten, die mittels Modul nicht schaltbar ist, da nicht als Reading verfügbar.
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

bugware

Hallo zusammen.

Ich habe das Problem vermutlich auch auf einer 7490 mit FW 7.01. Da sich die FW gerade erst selbst installiert, hat es wohl was damit zu tun nehme ich an.

In geschätzt 25% der Fälle funktioniert es mit den beiden Befehlen von pappn, egal ob an oder aus.

Meist kommt aber
Service='X_AVM-DE_OnTel:1'   Control='x_contact'   Action='SetDeflectionEnable'
Parameter1='NewEnable' => '1'
Parameter2='NewDeflectionId' => '0'
----------------------------------------------------------------------
$VAR1 = {
          'UPnPError' => {
                           'errorCode' => '402',
                           'errorDescription' => 'Invalid Args'
                         }
        };


Hat jemand sonst schon was rausgefunden?

Vielen Dank und beste Grüße,
Andreas.
RPi 2, nanoCUL433, nanoCUL868-HM, SIGNALduino, HM, IT, SOMFY, Weishaupt-Mod, BOTVAC, MYSENSORS

pappn

Bei mir funktioniert es leider auch nicht zuverlässig. Quote ist vielleicht etwas besser als 25% aber alles andere als zuverlässig.
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs

stera

Habe leider die gleichen Probleme mit der 7490. Gibt es schon Ideen?

Gruß,
SteRa

stera

Wollte nochmal nachfragen.. Hat jemand schon eine Lösung?

Schöne Grüße,
SteRa

Romoker

Ich benutze diese Funktion relativ selten, aber heute ist mir das gleiche Problem mit der FB7490 FW 7.01 aufgefallen:

2018.11.30 23:18:37.682 3: FRITZBOX: set Fritzbox diversity 1 on
2018.11.30 23:18:38.684 2: FRITZBOX Fritzbox: TR064_Cmd.4322 TR064-Error 402:Invalid Args (service='X_AVM-DE_OnTel:1', control='x_contact', action='SetDeflectionEnable', parameter1='NewEnable' => '1', parameter2='NewDeflectionId' => '0')


Nur in ca. 50% der Fälle wird der Befehl korrekt ausgeführt. Das scheint wohl ein grundsätzlicheres Problem zu sein.
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

stera

Ja das ist echt schade. Benutze die Funktion sehr oft. Klingel ausschalten und automatisch Rufumleitung an. Dann schlafen die Kinder auch ruhig ein 8)

Überprüfe nun immer mit einem 3min Timer, ob die Zustände übereinstimmen, ansonsten schalte ich nochmal. Beim 2-3 Mal klappt es denn.

Gruß SteRa

Romoker

Ich habe mir letztes Wochenende das FRITZBOX-Modul angeschaut. Mit ist aufgefallen, dass der Fehler nur dann auftritt, wenn die beiden Aufrufargumente für das Setzen der Rufumleitung 'NewDeflectionId' und 'NewEnable' der Action 'SetDeflectionEnable' in der Reihenfolge vertauscht werden. Die älteren Fritz!OS-Versionen konnten damit umgehen, seit v7 funktioniert der Aufruf nur in der Reihenfolge 'NewDeflectionId' und dann 'NewEnable' fehlerfrei. Der Grund, warum das FHEM-Modul die Argumente manchmal vertauscht, liegt darin, dass die Zeichenkette aus einem Hash zusammengebaut wird. Mit dieser Methode ist die Reihenfolge zufällig. Andererseits gibt die TR-064-Spezifikation keine Reihenfolge der Argumente vor.

Ich habe dann Anfang dieser Woche ein Ticket bei AVM aufgemacht. Vom Produktmanagement habe ich heute folgende Nachricht bekommen:
ZitatBei dem Verhalten handelt es sich in der Tat um einen ein Defect, der durch ein neues Feature im FRITZ!OS entstanden ist.
- der Code geht, davon aus, dass die Reihenfolge festgelegt ist.
- laut Spezifikation TR064 muss das aber nicht sein

Wir haben hierzu einen Defect angelegt. Es lässt sich Stand heute allerdings noch nicht sagen, wann es für die Fragestellung eine Lösung gibt. Erfahrungsgemäß wird diese in einer kommenden Laborversion umgesetzt.

Wer nicht solange auf die Lösung warten möchte, kann im aktuellen Modul 72_FRITZBOX.pm die Zeile 4296
von
foreach (keys %params) {
auf
foreach (sort keys %params) {
ändern.
Damit läuft bei mir die Rufumschaltung mit "set diviserty ..." wieder fehlerfrei.
Die Änderung sollte keine Auswirkungen auf andere TR-064-Kommandos haben. Dafür lege ich aber nicht meine Hände ins Feuer. Das kann der Betreuer des FRITZBOX-Modul wesentlich besser beurteilen. Vielleicht kann tupol als Maintainer dann die Änderung im Code übernehmen.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

pappn

Das scheint sehr gut zu funktionieren. Danke für die Analyse und den Tip.
"When all else fails, read the instructions."

CUL868, RFXTFX433 und CCU3
FS20, S300TH, UNIRoll, Homematic IP, OZW672, diverse HOMEEASY, IT kompatible und China Zeugs