FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: spacy am 15 Mai 2015, 14:18:45

Titel: at zu einer Variablen Zeit
Beitrag von: spacy am 15 Mai 2015, 14:18:45
Hallo,

ich habe ein Dummy Device angelegt mit attr setList state:time

jetzt möchte ich die Zeit die ich dort einstelle mit at verwenden, was leider nicht klappt.
Meine Zeile sieht so aus

define Wasser_Seite_Ein_Auto at +*{ Value("Ventil1Start") }
aber so mag at das nicht. Hat da einer ne Idee?

Die Fehlermeldung:

the at function "Value("Ventil3Start")" must return a timespec and not "???"
Danke
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Prof. Dr. Peter Henning am 15 Mai 2015, 19:14:59
Nun, wer lesen kann ist immer im Vorteil.

Die Fehlermeldung besagt doch eindeutig, was der übergebene Wert sein sollte, nämlich eine Zeitangabe ähnlich "12:34". Und dass dem nicht so ist, sondern dass irgend etwas Anderes übergeben wird.

Klar ?

pah
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 15 Mai 2015, 20:58:54
Oh ja wer lesen kann ist klar im Vorteil, das stimmt.
ABER wenn ich im WEB Interface{ Value("Ventil1Start") } eingebe bekomme ich die Zeit angezeigt die ich auch eingestellt habe. Leider nicht wenn ich es so wie im ersten Posting eintrage.

Na ja aber danke
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: stromer-12 am 15 Mai 2015, 21:21:09
Nimm mal die Leerzeichen raus.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 16 Mai 2015, 10:55:37
Das hatte ich auch schon versucht da ich das im Command ref gelesen habe.
Wie gesagt wenn ich das so in der Commando Zeile im Webinterface eintrage dann wird mir auch der Wert zb. 14.30 so angezeigt.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: frank am 16 Mai 2015, 11:04:26
Zitatthe at function "Value("Ventil3Start")" must return a timespec and not "???"
dein code bezieht sich aber auf "Ventil1Start".
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: flurin am 16 Mai 2015, 22:21:57
Zitat von: spacy am 16 Mai 2015, 10:55:37
Das hatte ich auch schon versucht da ich das im Command ref gelesen habe.
Wie gesagt wenn ich das so in der Commando Zeile im Webinterface eintrage dann wird mir auch der Wert zb. 14.30 so angezeigt.

Was zeigt:


list Ventil1Start



Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 16 Mai 2015, 22:57:11
Zitat von: spacy am 16 Mai 2015, 10:55:37
Das hatte ich auch schon versucht da ich das im Command ref gelesen habe.
Wie gesagt wenn ich das so in der Commando Zeile im Webinterface eintrage dann wird mir auch der Wert zb. 14.30 so angezeigt.

Was hältst du davon eine korrekte Zeit abzulegen - Zeiten werden üblicherweise mit Doppelpunkt angegeben und nicht mit Punkt, also z. B. 14:30

Gruß

Damian
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 17 Mai 2015, 09:40:10
Ich lege die ZEIT nicht selber ab sondern das "setList state:time"
und da wird es richtig mit Doppelpunkt übergeben. Sorry mein Fehler hier im Text.

@Flurin das zeit list Ventil1Start
Internals:
   CFGFN      ./config/relay.cfg
   NAME       Ventil1Start
   NR         92
   STATE      00:00
   TYPE       dummy
   Readings:
     2015-05-11 12:12:59   state           00:00
Attributes:
   alias      Beregnung Start Seite
   group      Beregnung Seite
   room       Bewässerung
   setList    state:time
   sortby     1
   webCmd     state
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 17 Mai 2015, 09:47:10
Zitat von: spacy am 17 Mai 2015, 09:40:10
Ich lege die ZEIT nicht selber ab sondern das "setList state:time"
und da wird es richtig mit Doppelpunkt übergeben. Sorry mein Fehler hier im Text.

@Flurin das zeit list Ventil1Start
Internals:
   CFGFN      ./config/relay.cfg
   NAME       Ventil1Start
   NR         92
   STATE      00:00
   TYPE       dummy
   Readings:
     2015-05-11 12:12:59   state           00:00
Attributes:
   alias      Beregnung Start Seite
   group      Beregnung Seite
   room       Bewässerung
   setList    state:time
   sortby     1
   webCmd     state

Du darfst bei at keine Leerzeichen angeben, statt

define Wasser_Seite_Ein_Auto at +*{ Value("Ventil1Start") }

angeben:

define Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")}

Gruß

Damian
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 17 Mai 2015, 11:20:26
das hatte ich schon geändert.

Hier mal alles wie ich es stehen habe,

DEFINITION:
define Ventil1Start dummy
attr Ventil1Start alias Beregnung Start Seite
attr Ventil1Start group Beregnung Seite
attr Ventil1Start room Bewässerung
attr Ventil1Start setList state:time
attr Ventil1Start sortby 1
attr Ventil1Start webCmd state

define Ventil1Dauer dummy
attr Ventil1Dauer alias Beregnungs Dauer Seite
attr Ventil1Dauer group Beregnung Seite
attr Ventil1Dauer room Bewässerung
attr Ventil1Dauer setList state:time
attr Ventil1Dauer sortby 2
attr Ventil1Dauer webCmd state

define Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {if("Ventil1" eq "auto") {my $hm1 = Value("Ventil1Dauer") ;; fhem ("set relais Port5 on-for-timer $hm1") ;; Log 3, "Ventil 1 an"}}

FEHLER MELDUNG:

define Wasser_Seite_Ein_Auto Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {if("Ventil1" eq "auto") {my $hm1 = Value("Ventil1Dauer") ; fhem ("set relais Port5 on-for-timer $hm1") ; Log 3, "Ventil 1 an"}}: the at function "Value("Ventil1Start")" must return a timespec and not ???
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Prof. Dr. Peter Henning am 17 Mai 2015, 13:42:16
Wie viele Antworten hat er jetzt benötigt, um endlich die vollständige Konfiguration zu posten ?  :'(

Immer noch Mengen an Leerzeichen drin...

pah
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: stromer-12 am 17 Mai 2015, 13:55:25
Nach dem Definieren deines Ventil1Start Dummys musst du noch die Zeit setzen bevor das at erzeugt werden kann.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: flurin am 17 Mai 2015, 17:15:35
Zitat von: spacy am 17 Mai 2015, 11:20:26
das hatte ich schon geändert.

Hier mal alles wie ich es stehen habe,

DEFINITION:
define Ventil1Start dummy
attr Ventil1Start alias Beregnung Start Seite
attr Ventil1Start group Beregnung Seite
attr Ventil1Start room Bewässerung
attr Ventil1Start setList state:time
attr Ventil1Start sortby 1
attr Ventil1Start webCmd state

define Ventil1Dauer dummy
attr Ventil1Dauer alias Beregnungs Dauer Seite
attr Ventil1Dauer group Beregnung Seite
attr Ventil1Dauer room Bewässerung
attr Ventil1Dauer setList state:time
attr Ventil1Dauer sortby 2
attr Ventil1Dauer webCmd state

define Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {if("Ventil1" eq "auto") {my $hm1 = Value("Ventil1Dauer") ;; fhem ("set relais Port5 on-for-timer $hm1") ;; Log 3, "Ventil 1 an"}}

FEHLER MELDUNG:

define Wasser_Seite_Ein_Auto Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {if("Ventil1" eq "auto") {my $hm1 = Value("Ventil1Dauer") ; fhem ("set relais Port5 on-for-timer $hm1") ; Log 3, "Ventil 1 an"}}: the at function "Value("Ventil1Start")" must return a timespec and not ???

Versuchs mal zunächst so:


set Venti1Start 00:01



define Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {Log 3, "Ventil 1 an"}


Wenn das klappt, dann so:


set Ventil1Dauer 10



define Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {if(Value("Ventil1") eq "auto")
{my $hm1 = Value("Ventil1Dauer");; fhem("set relais Port5 on-for-timer $hm1");; Log 3, "Ventil 1 an"}}


if(Value("Ventil1") eq "auto")
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 17 Mai 2015, 17:55:13
Hmm ich weiß nicht ob ich mich falsch ausgedrückt habe.

Also es soll so sein das ich über das Webinterface per Schieberegler eine StartZeit Ventil1Start und eine Dauer Ventil1Dauer einstellen möchte.
Wenn dann die Zeit erreicht ist soll mit dem "at" ein Ventil "Ventil1" für eine Dauer gesetzt werden.
Aber egal wie ich es eintrage sagt mir das log immer das at mit dem Timespec nicht klar kommt. Frage ich den Value aber im Webinterface ab ist es in ordnung. Wenn da 14:30 eingestellt sind dann wird das auch so angezeigt.

@ Prof. Dr. Peter Henning, wenn Sie in irgent einer art helfen können würde ich mich sehr freuen.ABER wenn nicht dann spam bitte nicht nur kraftlose Kommentare. Danke
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: duke-f am 17 Mai 2015, 18:23:54
Ich weiss jetzt nicht ob das hilft, aber ein Versuch ist es vielleicht wert.

Ich habe Deinen Code komplett in meine Spar-Config des Dritt-FHEM-Raspies kopiert und genau Deine beschriebene Fehlermeldung bekommen. Danach habe ich alles außer der letzten Zeile kopiert. Anschließend habe ich durch Verschieben der unter "Bewässerung" neu aufgeführten Schieberegler für die beide Werte "Beregnung Start Seite" und "Beregnung Dauer Seite" Werte eingestellt und mit "+" gespeichert (?).

Dann wiederum in der Komandozeile unter FHEM die letzte Deiner Codezeilen eingegeben:
define Wasser_Seite_Ein_Auto at +*{Value("Ventil1Start")} {if("Ventil1" eq "auto") {my $hm1 = Value("Ventil1Dauer") ;; fhem ("set relais Port5 on-for-timer $hm1") ;; Log 3, "Ventil 1 an"}}
und es kam keine Fehlermeldung mehr.

Bin auch Laie und kann das nicht erklären, aber vielleicht fehlt in der Konfiguration einfach ein Startwert, um die letzte Zeile ausführen zu können.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: stromer-12 am 17 Mai 2015, 19:40:36
at +*{Value("Ventil1Start")}
Value() liefert den state zurück, wenn nichts im state steht wird auch nichts zurückgegeben.
Mit ReadingsVal() kann auch ein Defaultwert bei nichtvorhandenen Abfragewert zurückgegen werden.
ReadingVal() wäre hier besser.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 17 Mai 2015, 20:06:01
im state steht ja was drin und bei ReadingsVal kommt
the at function "ReadingsVal("Ventil1Start")" must return a timespec and not Not enough arguments for main::ReadingsVal at (eval 43162) line 1, near ""Ventil1Start")"
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: stromer-12 am 17 Mai 2015, 20:13:07
Steht doch in der Commandref die Syntax von ReadingsVal().

ReadingsVal("Device","Reading","Default")

also

at +*{ReadingsVal("Ventil1Start","state","00:01")}
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Puschel74 am 17 Mai 2015, 20:26:15
Ich war mal so unverschämt und hab den Code in meine Testumgebung geprügelt.
Der Code funktioniert bei mir einwandfrei.
Ganz ohne Fehlermeldung oder irgendwelcher anderer Meldungen.
Egal ob ReadingsVal oder Value - wobei das Grundlagen sind die vorgängig angelernt/angelesen werden sollten.
Wie schon einige Male beschrieben müssen einfach nur VOR dem anlegen des at die Zeiten gesetzt sein.

Was dann vielleicht noch Fragen aufwerfen dürfte wäre der Ausführungszeitpunkt - aber das at wird NICHT durch ein neues setzen der Zeiten aktualisiert.
Dazu müsste das ganze in ein notify und das at daraus dann
a) entweder angelegt oder
b) modifiziert werden
Aber auch das wurde schon des öfteren erklärt und beschrieben.

Da die Fragestellung in meiner Testumgebung einwandfrei klappt - nach den Angaben in diesem Thread - lösch ich mal wieder alle Dummys.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Prof. Dr. Peter Henning am 17 Mai 2015, 20:36:51
@Puschel74: Bei mir funktionierte das ebenfalls schon vor einigen Stunden ohne Probleme. Ich nehme an, dass "spacy" die fünffach erteilten Ratschläge zur Reihenfolge der Definitionen einfach nicht befolgt hat.

LG

pah
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Puschel74 am 17 Mai 2015, 20:47:13
Zitat von: Prof. Dr. Peter Henning am 17 Mai 2015, 20:36:51
@Puschel74: Bei mir funktionierte das ebenfalls schon vor einigen Stunden ohne Probleme. Ich nehme an, dass "spacy" die fünffach erteilten Ratschläge zur Reihenfolge der Definitionen einfach nicht befolgt hat.

LG

pah
Nichts anderes habe ich erwartet/vermutet.
Da du aber tiefer in FHEM "blickst" wollte ich das ganze nur probieren  ;)
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: duke-f am 17 Mai 2015, 22:51:20
Vielleicht hat er's einfach nicht kapiert? Wäre das schlimm?
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Prof. Dr. Peter Henning am 18 Mai 2015, 07:15:12
Was ist daran nicht zu kapieren, dass man jemandem schreibt, er möge Zeiten festsetzen bevor das "at" definiert wird ?

pah
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: duke-f am 18 Mai 2015, 08:13:22
 ;)
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 18 Mai 2015, 08:49:23
Hmm noch mal, bin wohl zu blond um deinen Wegen zu folgen.
Wenn ich im Webinterface per schiebe Regeler eine Zeit festlege, ist sie dann nicht festgelegt?
Aber wie Puschel schon geschrieben hat, muss das dann wohl durch ein Notify passieren.

Naja danke
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: duke-f am 18 Mai 2015, 09:03:43
Ja eigentlich schon. Ich denke auch, dass die Ursache des Problems damit gelöst ist.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 18 Mai 2015, 09:47:01
Zitat von: spacy am 18 Mai 2015, 08:49:23
Hmm noch mal, bin wohl zu blond um deinen Wegen zu folgen.
Wenn ich im Webinterface per schiebe Regeler eine Zeit festlege, ist sie dann nicht festgelegt?
Aber wie Puschel schon geschrieben hat, muss das dann wohl durch ein Notify passieren.

Naja danke

oder so definieren:

define Wasser_Seite_Ein_Auto DOIF( [+[Ventil1Start]] and [Ventil1] eq "auto") (set relais Port5 on-for-timer [Ventil1Dauer])
attr Wasser_Seite_Ein_Auto do always


DOIF erkennt im Gegensatz zu at eine Änderung des Dummys und setzt  automatisch die neue Zeit. Hier braucht man kein notify zusätzlich um die Zeit zu stellen.

Gruß

Daman
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: gloob am 18 Mai 2015, 13:19:56
Hallo,

Zum automatischen Update per DOIF habe ich auch nochmal eine Frage. Ich habe  versucht das ganze jetzt so umzusetzen, jedoch wird die Aktion bei mir nicht ausgeführt. Hab ich irgendwo noch einen Fehler?


# Water morning
define time dummy
set time 13:18:00
define water3 DOIF ([[time]]) (define waterMorning at +*{6}00:00:10 set Steckdose.K5 on-for-timer 5)
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 18 Mai 2015, 16:49:01
bei mir wird die aktion so auch nicht ausgeführt. Leider gibt es auch keinen Log den ich dazu liefern könnte.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Wuppi68 am 18 Mai 2015, 16:56:32
verbose auf 5 setzen und ins Log schauen?
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 18 Mai 2015, 17:00:42
schon passiert nichts zu sehen
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: maxritti am 18 Mai 2015, 17:03:58
Zitat von: gloob am 18 Mai 2015, 13:19:56
Hallo,

Zum automatischen Update per DOIF habe ich auch nochmal eine Frage. Ich habe  versucht das ganze jetzt so umzusetzen, jedoch wird die Aktion bei mir nicht ausgeführt. Hab ich irgendwo noch einen Fehler?


# Water morning
define time dummy
set time 13:18:00
define water3 DOIF ([[time]]) (define waterMorning at +*{6}00:00:10 set Steckdose.K5 on-for-timer 5)

Genauso?

Bei Damian sehe ich zumindest noch ein Attribut was zu setzen ist:

attr Wasser_Seite_Ein_Auto do always
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: maxritti am 18 Mai 2015, 17:27:49
War ja quatsch mit dem do always.
Zumindest das erste mal geht das ganz wunderbar.

Einfach mal Deine 3 Zeilen (mit angepasster Zeit) per Copy & Paste in Fhem eingegeben

define time dummy
set time 17:25:00
define water3 DOIF ([[time]]) (define waterMorning at +*{6}00:00:10 set Steckdose.K5 on-for-timer 5)


und das DOIF triggerte um 17:25:00

Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 18 Mai 2015, 17:37:40
Zitat von: maxritti am 18 Mai 2015, 17:27:49
War ja quatsch mit dem do always.
Zumindest das erste mal geht das ganz wunderbar.

Einfach mal Deine 3 Zeilen (mit angepasster Zeit) per Copy & Paste in Fhem eingegeben

define time dummy
set time 17:25:00
define water3 DOIF ([[time]]) (define waterMorning at +*{6}00:00:10 set Steckdose.K5 on-for-timer 5)


und das DOIF triggerte um 17:25:00

na ja, wenn möchte, dass das Modul nochmal den Befehl ausführt (auch mit neuer Zeitangabe), dann muss man schon do always setzen, denn es gibt ja nur den einen Zustand. Genaueres zu do always kann man in der Commanderf zu DOIF nachlesen.

Gruß

Damian
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 18 Mai 2015, 18:48:58
Hallo Damian,

danke für Deine Hilfe. Leider passiert nichts wenn ich das so eintrage wie Du es mir aufgetragen hast.

Wenn ich aber anstatt der Variable eine Feste Zeit eintrage dann funktionier es nicht. Hast du noch nen Tip für mich wo mein Fehler liegen könnte bzw wo bei mir in der Birne der Fehler legt.
Ich danke dir sehr für deine fachliche Hilfe

Gruß
Klaus

Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 18 Mai 2015, 20:05:59
Zitat von: spacy am 18 Mai 2015, 18:48:58
Hallo Damian,

danke für Deine Hilfe. Leider passiert nichts wenn ich das so eintrage wie Du es mir aufgetragen hast.

Wenn ich aber anstatt der Variable eine Feste Zeit eintrage dann funktionier es nicht. Hast du noch nen Tip für mich wo mein Fehler liegen könnte bzw wo bei mir in der Birne der Fehler legt.
Ich danke dir sehr für deine fachliche Hilfe

Gruß
Klaus

Hallo Klaus,

damit wir hier nicht wieder raten müssen, was das Problem ist, brauchst du nur die Ausgabe von list <dein_doif_modul> hier zu posten, dann kann ich dir direkt sagen, wo das Problem liegt.


Gruß

Damian
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: flurin am 18 Mai 2015, 20:11:01
Zitat von: gloob am 18 Mai 2015, 13:19:56
Hallo,

Zum automatischen Update per DOIF habe ich auch nochmal eine Frage. Ich habe  versucht das ganze jetzt so umzusetzen, jedoch wird die Aktion bei mir nicht ausgeführt. Hab ich irgendwo noch einen Fehler?


# Water morning
define time dummy
set time 13:18:00
define water3 DOIF ([[time]]) (define waterMorning at +*{6}00:00:10 set Steckdose.K5 on-for-timer 5)


Für solche Fälle habe ich die Repeat-Funktion geschrieben.


define du_time dummy
set du_time 13:18

define du_interval dummy
set du_interval 10

define du_repeat dummy
set du_repeat 6



define di_repeat_cmd DOIF ([[du_time]] or [[du_repeat:time]])
(set Steckdose.K5 on-for-timer 5,
{set_repeat_time("du_repeat","du_interval")})
attr di_repeat_cmd do always


Repeat-Funktion siehe:

http://forum.fhem.de/index.php/topic,36814.0.html
(http://forum.fhem.de/index.php/topic,36814.0.html)

Gruss
flurin
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 18 Mai 2015, 20:34:07
Internals:
   CFGFN      ./config/relay.cfg
   DEF        ( [+[Ventil2Start]] and [Ventil2] eq "auto") (set relais Port5 on-for-timer [Ventil2Dauer])
   NAME       Wasser_Tropfschlauch_Ein_Auto
   NR         109
   NTFY_ORDER 50-Wasser_Tropfschlauch_Ein_Auto
   STATE      ???
   TYPE       DOIF
   Readings:
     2015-05-18 20:31:15   timer_1_c1      19.05.2015 14:56:15
   Condition:
     0           DOIF_time_once($hash->{timer}{0},$wday,"") and InternalDoIf('Ventil2','STATE','') eq "auto"
   Days:
   Devices:
     0           Ventil2
     all         Ventil2
   Do:
     0          set relais Port5 on-for-timer [Ventil2Dauer]
   Helper:
     last_timer 1
     sleeptimer -1
   Internals:
     0           Ventil2:STATE
     all         Ventil2:STATE
   Itimer:
     all         Ventil2Start
   Realtime:
     0          14:56:15
   State:
   Time:
     0          +[Ventil2Start]
   Timecond:
     0          0
   Timer:
     0          0
   Timerfunc:
   Timers:
     0           0
Attributes:


so sieht es aus, also genauso wie auch beim at befehl den ich genutzt hatte im state sind drei ?
Wieso no.
Wenn ich nen list auf das Ventil2Start mache sieht das so aus
Internals:
   CFGFN      ./config/relay.cfg
   NAME       Ventil2Start
   NR         104
   STATE      18:25
   TYPE       dummy
   Readings:
     2015-05-18 18:23:49   state           18:25
Attributes:
   alias      Beregnung Start Tropfschlauch
   group      Tropfschlauch
   room       Bewässerung
   setList    state:time
   webCmd     state


Genau die Uhrzeit die ich per Regler  im Web einstelle. Und das verstehe ich nicht.
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 18 Mai 2015, 20:43:19
Und so sieht es aus wenn die Ventil2 Auto = True ist

Internals:
   CFGFN      ./config/relay.cfg
   DEF        ( [+[Ventil2Start:state]] and [Ventil2] eq "auto") (set relais Port5 on-for-timer [Ventil2Dauer])
   NAME       Wasser_Tropfschlauch_Ein_Auto
   NR         109
   NTFY_ORDER 50-Wasser_Tropfschlauch_Ein_Auto
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-05-18 20:41:45   cmd_event       Ventil2
     2015-05-18 20:41:45   cmd_nr          2
     2015-05-18 20:41:45   e_Ventil2_STATE Auto
     2015-05-18 20:41:45   state           cmd_2
     2015-05-18 20:37:41   timer_1_c1      19.05.2015 15:02:41
   Condition:
     0           DOIF_time_once($hash->{timer}{0},$wday,"") and InternalDoIf('Ventil2','STATE','') eq "auto"
   Days:
   Devices:
     0           Ventil2
     all         Ventil2
   Do:
     0          set relais Port5 on-for-timer [Ventil2Dauer]
   Helper:
     last_timer 1
     sleeptimer -1
   Internals:
     0           Ventil2:STATE
     all         Ventil2:STATE
   Itimer:
     all         Ventil2Start
   Readings:
   Realtime:
     0          15:02:41
   State:
   Time:
     0          +[Ventil2Start:state]
   Timecond:
     0          0
   Timer:
     0          0
   Timerfunc:
   Timers:
     0           0
   Trigger:
Attributes:
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 18 Mai 2015, 20:44:29
Zitat von: spacy am 18 Mai 2015, 20:34:07
Internals:
   CFGFN      ./config/relay.cfg
   DEF        ( [+[Ventil2Start]] and [Ventil2] eq "auto") (set relais Port5 on-for-timer [Ventil2Dauer])
   NAME       Wasser_Tropfschlauch_Ein_Auto
   NR         109
   NTFY_ORDER 50-Wasser_Tropfschlauch_Ein_Auto
   STATE      ???
   TYPE       DOIF
   Readings:
     2015-05-18 20:31:15   timer_1_c1      19.05.2015 14:56:15
   Condition:
     0           DOIF_time_once($hash->{timer}{0},$wday,"") and InternalDoIf('Ventil2','STATE','') eq "auto"
   Days:
   Devices:
     0           Ventil2
     all         Ventil2
   Do:
     0          set relais Port5 on-for-timer [Ventil2Dauer]
   Helper:
     last_timer 1
     sleeptimer -1
   Internals:
     0           Ventil2:STATE
     all         Ventil2:STATE
   Itimer:
     all         Ventil2Start
   Realtime:
     0          14:56:15
   State:
   Time:
     0          +[Ventil2Start]
   Timecond:
     0          0
   Timer:
     0          0
   Timerfunc:
   Timers:
     0           0
Attributes:


so sieht es aus, also genauso wie auch beim at befehl den ich genutzt hatte im state sind drei ?
Wieso no.
Wenn ich nen list auf das Ventil2Start mache sieht das so aus
Internals:
   CFGFN      ./config/relay.cfg
   NAME       Ventil2Start
   NR         104
   STATE      18:25
   TYPE       dummy
   Readings:
     2015-05-18 18:23:49   state           18:25
Attributes:
   alias      Beregnung Start Tropfschlauch
   group      Tropfschlauch
   room       Bewässerung
   setList    state:time
   webCmd     state


Genau die Uhrzeit die ich per Regler  im Web einstelle. Und das verstehe ich nicht.

Ist ganz einfach. Mit dem Pluszeichen setzt du den Timer um 18 Stunden und 35 Minuten weiter (wie du es auch bei at definiert hast). Die Schaltzeit ist dann 14:56:15 (siehe Realtime). Wenn du die Zeit absolut haben willst also 18:25 Uhr, dann musst du das Pluszeichen weglassen. Ausführliche Informationen zu Zeitangaben (das sind einige mehr als bei at) solltest du genau in der Commandref zu DOIF durchlesen, wenn du das Modul nutzen willst.

also: ... ([[Ventil2Start]] and [Ventil2] eq "auto")...

Gruß

Damian
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: spacy am 19 Mai 2015, 10:48:14
Vielen Danke für deine Hilfe Damin.

Haut jetzt so weit hin ;)

habe mir dann noch mal das Command.ref angesehen und wollte dann eine Abschaltzeit mit OffTime erzeugen.
Die "list" Ausgabe sieht so aus

Internals:
   CFGFN      ./config/relay.cfg
   DEF        ([[Ventil2Start]-[Ventil2Dauer]] and [Ventil2] eq "Auto") (set relais PortA6 on, set end {(OffTime("[Ventil2Start]"))}) DOELSE (set relais PortA6 off)
   NAME       Wasser_Tropfschlauch_Ein_Auto
   NR         111
   NTFY_ORDER 50-Wasser_Tropfschlauch_Ein_Auto
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-05-19 10:30:00   cmd_event       timer_1
     2015-05-19 10:30:00   cmd_nr          1
     2015-05-19 10:26:43   e_Ventil2_STATE Auto
     2015-05-19 10:30:00   error           Undefined subroutine &main::OffTime called at (eval 547) line 1.

     2015-05-19 10:30:00   state           cmd_1
     2015-05-19 10:30:00   timer_1_c1      20.05.2015 10:30:00
     2015-05-19 10:26:40   timer_2_c1      20.05.2015 00:10:00
   Condition:
     0          DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and InternalDoIf('Ventil2','STATE','') eq "Auto"
   Days:
   Devices:
     0           Ventil2
     all         Ventil2
   Do:
     0          set relais PortA6 on, set end {(OffTime("[Ventil2Start]"))}
     1          set relais PortA6 off
   Helper:
     last_timer 2
     sleeptimer -1
   Internals:
     0           Ventil2:STATE
     all         Ventil2:STATE
   Itimer:
     all         Ventil2Start Ventil2Dauer
   Readings:
   Realtime:
     0          10:30:00
     1          00:10:00
   State:
   Time:
     0          [Ventil2Start]
     1          [Ventil2Dauer]
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
     0           0  1
   Trigger:
Attributes:

Es gibt einen Error in der Subroutine mit OffTime.
Liegt das etwa an der Version von Fhem die ich nutze?

Fhem info:
  Release  : 5.6
  OS       : linux
  Arch     : arm-linux-gnueabihf-thread-multi-64int
  Perl     : v5.14.2
  uniqueID : 6e33f79a0106deabf76c07c646d1ac6b
  upTime   : 00:25:38

Defined modules:
  CALVIEW         : 1
  CUL             : 1
  CUL_FHTTK       : 4
  CUL_HM          : 19
  CUL_WS          : 2
  Calendar        : 2
  DOIF            : 1
  Dashboard       : 3
  FHEMWEB         : 3
  FHT             : 4
  FS20            : 5
  FileLog         : 43
  HMLAN           : 1
  Heating_Control : 4
  I2C_MCP23008    : 1
  PRESENCE        : 7
  RPII2C          : 1
  RPI_GPIO        : 5
  SVG             : 13
  Text2Speech     : 1
  Weather         : 1
  at              : 33
  dummy           : 58
  notify          : 55
  readingsGroup   : 1
  telnet          : 1
  watchdog        : 7
  weblink         : 9

Defined models per module:
  CUL             : CUL
  CUL_HM          : ActionDetector,HM-LC-BL1-FM,HM-LC-SW4-DR,HM-SEC-SC,HM-SEC-SD,HM-SEC-SDTeam,HM-Sen-MDIR-O
  CUL_WS          : S300TH
  FS20            : fs20bs,fs20rcu


danke
Titel: Antw:at zu einer Variablen Zeit
Beitrag von: Damian am 19 Mai 2015, 11:51:57
Zitat von: spacy am 19 Mai 2015, 10:48:14
Vielen Danke für deine Hilfe Damin.

Haut jetzt so weit hin ;)

habe mir dann noch mal das Command.ref angesehen und wollte dann eine Abschaltzeit mit OffTime erzeugen.

Offtime musst du schon selbst in Perl programmieren. Wenn deine Ausschaltzeit einfach über den Dummy angegeben wird, dann brauchst du auch nichts dynamsich über ausgelagerte Perl-Funktionen zu berechnen.

Es reicht dann:
([[Ventil2Start]-[Ventil2Dauer]] and [Ventil2] eq "Auto") (set relais PortA6 on) DOELSE (set relais PortA6 off)Gruß

Damian