Dummy on off time=> error: Wrong timespec off: either HH:MM:SS or {perlcode}

Begonnen von oelidoc, 08 Juli 2018, 17:24:56

Vorheriges Thema - Nächstes Thema

oelidoc

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

oelidoc

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

oelidoc

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

oelidoc

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

oelidoc

Vielen Dank Otto für die Anregungen.
Ich werd mal sehen wie´s läuft und mich dann ggfs. noch mal melden.

Gruß oelidoc

Per

Kannst du nicht die on-/off-Fälle in einer Abfrage vorher auswerten? Dann kommt bei der Zeit auch nur ein Zeitformat an.

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

oelidoc

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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF