FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: oelidoc am 08 Juli 2018, 17:24:56

Titel: Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: oelidoc am 08 Juli 2018, 17:24:56
Hallo,
ich möchte mit einem dummy eine Bewässerung steuern. Der dummy soll sie durch Klick auf das Glühbirnensymbol ein- und auschalten sowie über Schieberegler zeitgesteuert einschalten können.

define Bewaesserung dummy
attr Bewaesserung alexaName Bewässerung
attr Bewaesserung genericDeviceType switch
attr Bewaesserung room Garten,Mobil,alexaRoom
attr Bewaesserung setList state:time on off
attr Bewaesserung webCmd state


Das dazu gehörige DOIF:

define bewaesserung DOIF ([[Bewaesserung]] or [Bewaesserung] eq "on") (set Ventil_Vorgarten on-for-timer 3) (set Ventil_Hauseingang on-for-timer 3) (set Ventil_Terrasse on-for-timer 3) (set Ventil_Hecke on-for-timer 3) (set Bewaesserung off)
DOELSEIF ([Bewaesserung] eq "off") (set Ventil_.* off)
attr bewaesserung cmdState Vorgarten,Hauseingang,Terrasse,Hecke,aus|aus
attr bewaesserung do always
attr bewaesserung room Garten
attr bewaesserung wait 0,10,10,10,10:0


Die Bewaesserungszeiten sind zu Testzwecken auf wenige Sekunden reduziert. An sich funktioniert das ganze auch wie gewünscht, ausser, dass das DOIF nicht mit der Bedingung on/off und der indirekten Zeitangabe zurecht kommt:  timer_01_c01  error: Wrong timespec off (oder on): either HH:MM:SS or {perlcode}

Ich komm einfach nicht drauf, wie ich diesen Schönheitsfehler wegbekomme. Wie kann ich die Bedingung formulieren, dass auf on / off / indirekte Zeitangabe getriggert werden kann?

Gruß

oelidoc
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Otto123 am 08 Juli 2018, 17:27:54
Hi,

in dem Du für die Zeit einfach ein separates Reading nimmst.
setreading Bewässerung time 14:00:03

Im DOIF dann mit [[Bewässerung:time]]

Gruß Otto
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: oelidoc am 08 Juli 2018, 17:38:22
Danke Otto!

Und wie bekomme ich jetzt für das neue Reading einen Slider in den dummy?
Ausserdem habe ich jetzt das Problem, dass das DI jeden Tag zur eingestellten Zeit getriggert wird - was ich eigentlich gerade nicht wollte.
Wie kann ich dafür sorgen, dass der Timer nur einmal ausgeführt wird?

Gruß

oelidoc
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Otto123 am 08 Juli 2018, 18:49:17
Hi

Sorry ich arbeite nicht mit slidern und wusste nicht das state:time einen Zeitslider erzeugt :)
Dann dreh den Spieß doch einfach um. Lass die Zeit im state und mach ein Reading zustand. Und dann die Abfrage anstatt so
([[Bewaesserung:time]] or [Bewaesserung] eq "on") meinst so?([[Bewaesserung]] and [Bewaesserung:zustand] eq "on")

gerade gesehen: was mit setlist <> state:time geht, geht natürlich auch für jedes andere Reading setlist <> time:time   :D

Gruß Otto
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: oelidoc am 08 Juli 2018, 19:04:31
Okay,

bleibt aber,wenn ich das richtig sehe, das Problem, dass das DI jeden Tag über "time" getriggert wird, oder?

Edith: nee, quatsch ich kann ja den state auf "off" setzen und dann wird die Bedingung am nächsten Tag nicht wahr.

Gruß oelidoc
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Otto123 am 08 Juli 2018, 19:10:24
bei zustand ne on bleibt alles aus.

ich habe nicht verstanden wie Du es wirklich machen willst.. ???

Ich hatte gedacht
Zustand on off für generelles automatik an oder aus
reading time für die Zeit flexibel einstellbar. Wenn on dann zu dieser Zeit

Oder wolltest Du "intelligente" Erkennung? Also wenn im dummy on steht, soll er an sein und wenn im dummy eine Zeit steht, soll die Zeit gelten und wenn im Dummy Ostern steht, soll Ostern werden?

Geht sicher irgendwie, aber eben nicht so einfach, dann musst Du einen "Interpreter" zwischenschalten :)

Gruß Otto
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: oelidoc am 08 Juli 2018, 19:18:13
Ja, eigentlich Möglichkeit 3  :)

Zum Installieren/Testen der Bewässerung mal schnell an und aus schalten können.

Zur nächtlichen Bewässerung nur eine Zeit einstellen....

Mit meiner ursprünglichen Fassung geht das glaube ich schon. Kann ich denn die o.g. Fehlermeldung gefahrlos ignorieren? Weil, dann könnte man es evtl. einfach so lassen...

Gruß oelidoc
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Otto123 am 08 Juli 2018, 20:10:25
Du musst damit leben.   ;D ::)
Du bekommst jetzt eine Fehlermeldung und es funktioniert (warum auch immer) scheinbar trotzdem.  :o

Ich hatte mal einen Kollegen, der hat immer gesagt: Es besteht kein Anspruch auf die Beibehaltung von Fehlern!

Ich würde den Dummy interpretieren, zwei Readings im Dummy oder im DOIF setzen und dann im DOIF sauber reagieren.
Die Lösung dazu liegt aber gerade nicht rum :)

Gruß Otto
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: oelidoc am 08 Juli 2018, 21:26:38
Vielen Dank Otto für die Anregungen.
Ich werd mal sehen wie´s läuft und mich dann ggfs. noch mal melden.

Gruß oelidoc
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Per am 09 Juli 2018, 12:36:04
Kannst du nicht die on-/off-Fälle in einer Abfrage vorher auswerten? Dann kommt bei der Zeit auch nur ein Zeitformat an.
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Damian am 09 Juli 2018, 20:47:48
Mal zum Verständnis.

Indirekte Zeitangaben werden inzwischen großzügig beim DOIF behandelt und das aus gutem Grunde.

1. Die das Reading wird erst ausgewertet, wenn das ganze System hochgefahren wird.

2. Wird das Reading zur Laufzeit gesetzt, wird DOIF wach und versucht die Zeit zu setzen, gelingt das nicht, weil keine saubere Zeitdefinition dort steht, dann gibt es eine passende Fehlermeldung im entsprechenden Reading und der Timer wird nicht gesetzt.

3. Sobald eine korrekte Zeit gesetzt wird, wird der Timer wieder gesetzt.
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: oelidoc am 09 Juli 2018, 21:07:14
Hallo Damian,
ja, das ist mir auch klar. Und die Fehlermeldung kommt in meinem DI natürlich vollkommen zurecht. Aber tatsächlich habe ich _mit_ der Fehlermeldung z.Zt. genau die Funktionalität, die ich haben wollte. Aber die Anregungen von Per und Otto haben mir ja schon aufgezeigt, wie man das DI besser machen könnte. Ich arbeite dran - nur leider habe ich aus anderen Gründen (Todesfall in der Familie) im Moment zu wenig Zeit, mich darum zu kümmern. Habt bitte etwas Geduld mit mir.

Gruß oelidoc
Titel: Antw:Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}
Beitrag von: Damian am 09 Juli 2018, 21:32:36
Zitat von: oelidoc am 09 Juli 2018, 21:07:14
Hallo Damian,
ja, das ist mir auch klar. Und die Fehlermeldung kommt in meinem DI natürlich vollkommen zurecht. Aber tatsächlich habe ich _mit_ der Fehlermeldung z.Zt. genau die Funktionalität, die ich haben wollte. Aber die Anregungen von Per und Otto haben mir ja schon aufgezeigt, wie man das DI besser machen könnte. Ich arbeite dran - nur leider habe ich aus anderen Gründen (Todesfall in der Familie) im Moment zu wenig Zeit, mich darum zu kümmern. Habt bitte etwas Geduld mit mir.

Gruß oelidoc

Wenn bei falscher Zeitangabe kein Zeittrigger kommen soll, dann ist alles ok. Die Fehlermeldung kannst du dann als Warnung sehen.