Z-Wave Command Class 0x53 NETWORK_SCHEDULE (SCHEDULE)

Begonnen von Darkwing Duck, 17 Dezember 2019, 17:48:47

Vorheriges Thema - Nächstes Thema

Darkwing Duck

Hallo zusammen,

im Zusammenhang mit meinen Fibaro-Thermostaten (siehe anderer Thread) lese ich mich gerade, mit Hilfe der Anleitung meiner Thermostate, der Z-Wave Command Class Specification und der FHEM-Commandref, in die o.g. Command Class ein. Prinzipiell wird die Klasse durch FHEM seit diesem Patch unterstützt. Gibt es irgendwo (getestete) Beispiele, wie set <device> schedule aufzurufen ist? Ich habe leider im Forum außer Erwähnungen im Zusammenhang mit dem Danalock-Türschloss nichts dazu finden können.

Insbesondere den letzten Teil, also die mit Leerzeichen getrennten CMDs, verstehe ich nicht. Laut commandref sollen die Parameter die Struktur

set <device> schedule ID USER_ID YEAR-MONTH-DAY WDAY ACTIVE_ID DURATION_TYPE HOUR:MINUTE DURATION NUM_REPORTS CMD ... CMD

aufweisen. Wenn ich diesen Befehl allerdings mit mehr als genau 12 Token ausführe, bekomme ich immer die Antwort "wrong format, see commandref". Oder in Zahlen ausgedrückt:

set <device> schedule 5 1 2019-12-17 3 0 1 06:15 2 0 123

wird seitens FHEM ausgeführt (und dann vom Thermostat abgewiesen, aber das nachzuvollziehen wäre mein nächster Schritt), wohingegen

set <device> schedule 5 1 2019-12-17 3 0 1 06:15 2 0 123 456

zu o.g. Fehlermeldung führt.

Daraufhin habe ich versucht nachzuvollziehen, was in dem entsprechenden Modul passiert. In der 10_ZWave.pm wird in ZWave_scheduleSet diese Struktur mittels Regex überprüft und anschließend die Parameter in die entsprechenden Hex-Werte umgewandelt. Meine Perl- und Regex-Kenntnisse sind leider begrenzt, aber nach meinem Verständnis hätte ich jetzt gesagt, dass die Variante mit mehreren CMDs der geforderten Struktur entspricht. Wo ist hier mein Fehler?

Als Randinformation, warum ich das versuche: Laut Anleitung benötigen meine Thermostate hier wohl mehrere Befehle, die mindestens die ID der Command Classes für Thermostat_Setpoint bzw.  Thermostat_Mode und die jeweils zugehörigen Sollwerte umfassen.

rudolfkoenig

Ich bin hier nur als Regexp-Fixer unterwegs:

"5 1 2019-12-17 3 0 1 06:15 2 0 123 456"
5 => ID
1 => uID
2019-12-17 => sYear-sMonth-sDay
3 => sWDay
0 => durationType
1 => ??? Ueberfluessig
06:15 => sHour:sMinute
2 => duration
0 => numReports
123 456 => cmd

Darkwing Duck

So hatte ich es in der Commandref auch verstanden. Nur leider führt die Variante mit durch Leerzeichen getrennter Liste von Commands eben zu o.g. Fehlermeldung (,,wrong format..."). Seitens des Moduls wird der setSchedule-Befehl so wie ich es sehe nur ausgeführt, wenn nur ein einzelnes Command angegeben wird. Für meinen Fall brauche ich aber nach aktuellem Verständnis mehrere.