[gelöst] at timespec aus dummy mit Uhrzeiten und sunset Funktion

Begonnen von Thomas41587, 23 Juli 2020, 13:38:58

Vorheriges Thema - Nächstes Thema

Thomas41587

Hallo zusammen,
ich würde mir gerne ein "at" bauen, dessen Zeit aus einem dummy kommt. Das ganze funktioniert wunderbar, solange der dummy "echte" Zeiten enthält (z.B. 10:15:00). Sobald aber eine Funktion im dummy steht (z.B. sunset()), klappt es nicht mehr.
Das at:

defmod at_test at *{ReadingsVal("dummy_uhrzeit_rolllaeden_90pz","state",0)} set dummy1 on

Was muss hier noch ergänzt werden, dass das "at" auch Funktionen als Zeit genutzt werden können.

TomLee

Wienhast du den das at angelegt ?

Über jeden Weg in FHEMWEB wird der Ersatzwert moniert, der bei dir nicht in " steht  !

Mit sollte es klappen:

defmod at_test at *{ReadingsVal("dummy_uhrzeit_rolllaeden_90pz","state","0")} set dummy1 on

Gruß

Thomas

Thomas41587

Das at habe ich genau so angelegt, wie ich es in meinem codeblock stehen habe.
Ich verstehe die Antwort nicht ganz. Dein Code ist doch identisch zu meinem?

Mit sunet() als "state" im dummy erhalte ich:
the function "ReadingsVal("dummy_uhrzeit_rolllaeden_90pz","state","0")" must return a timespec and not sunset()

Mit einer Uhrzeit im dummy funktioniert alles

Beta-User

0. cfg.-Editing ist outdated. Daher war das indirekt die Aufforderung, das zu unterlassen, eben weil es Fehler verursacht, die schwer zu lokalisieren sind und anders einfacher abgefangen werden können. Und 0 ist geringfügig was anderes als "0", auch wenn Perl das intern fast nicht unterscheidet

1. Der Default-Wert sollte aber eine Uhrzeit sein für die ReadingsVal-Abfrage, also z.B. "12:00".

2. Wenn im dummy der state auf "{sunset()}" steht, klappt es auch... Sonst ist es eben ein Text, wenn nicht in geschweiften Klammern.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

Fehler meinerseits nachvollzogen hab ich es mit einer Uhrzeit im Ersatzwert die in " steht, nicht wie bei dir die 0 ohne ".
Gezeigt hab ich aber eine 0 in " im Ersatzwert, dann bekomm ich auch die Fehlermeldung.


Also :

defmod at_test at *{ReadingsVal("dummy_uhrzeit_rolllaeden_90pz","state","00:00:00")} set dummy1 on

Thomas41587

Danke für die Aufklärungen, jetzt habe ich es verstanden und es funktioniert.
Ich editiere übrigens nicht in der cfg rum, sondern nutze maximal "raw definition".
Die Lösung, für alle die danach suchen:
defmod at_test at *{ReadingsVal("dummy_haus_uhrzeit_rolllaeden_90pz","state","00:00:00")} set dummy1 on
defmod dummy_haus_uhrzeit_rolllaeden_90pz dummy
setstate dummy_haus_uhrzeit_rolllaeden_90pz {sunset()}


Funktioniert selbstverständlich auch mit Uhrzeiten, dann die geschweiften Klammern aber weg lassen im state!