FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Damian am 31 Januar 2017, 20:43:08

Titel: neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 31 Januar 2017, 20:43:08
Mit der neuen Version ist es nun möglich Befehlszweige bzw. Zustände über einen set-Befehl bedingungslos auszulösen.

Die Syntax lautet:

set <DOIF_Modul> cmd_<NR>

Der Befehl hat folgende Eigenschaften:

1) es wird der Ausführungszweig mit der Nummer <NR> (cmd_1, cmd_2, cmd_3, usw. ) bedingungslos ausgeführt
2) der set-Befehl übersteuert alle Attribute wie z. B. wait, do, usw.
3) ein laufender Wait-Timer wird unterbrochen.
4) beim deaktivierten oder im Modus disable befindlichen Modul wird der set Befehl ignoriert.

Die Übersteuerung der Befehlsausführung lässt sich damit leicht über das Webinterface vornehmen.

Bsp.: Schaltbare Lampe über Fernbedienung und Webinterface

define di_lamp DOIF ([FB:"on"]) (set lamp on) DOELSEIF ([FB:"off"]) (set lamp off)
attr di_lamp cmdState on|off
attr di_lamp devStateIcon on:on:cmd_2 initialized|off:off:cmd_1


Das Anklicken des on/off-Lampen-Icons führt zum Schalten der Lampe.


Edit: Version wurde eingecheckt
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 07 Februar 2017, 20:41:56
Ich sehe, dass die Version sechs mal geladen wurde.

Wie sind die Erfahrungen? Gibt es noch Ideen zum neuen set cmd-Kommando?

Ansonsten werde ich die Version einchecken.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: igami am 07 Februar 2017, 21:26:17
Ich habe es bisher nur an einer Stelle genutzt, finde es aber super.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Invers am 07 Februar 2017, 22:41:23
Finde ich echt toll und funktoniert super an inzwischen vielen Stellen!!!
Bin begeistert. Vielen Dank.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 07 Februar 2017, 23:09:15
Als ich diesen Post verfasste https://forum.fhem.de/index.php/topic,66090.msg573383.html#msg573383

empfand ich es als recht kompliziert diesen einfachen Fall (Lampe on/off über Webinterface zu schalten) mit DOIF abzubilden.

Ein paar Stunden später gab´s dann diese Version ;)
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: igami am 08 Februar 2017, 06:02:39
Ich habe vorher immer noch structures erstellt um alle betroffenen Geräte auf einmal schalten zu können, aber so ist es doch deutlich einfacher.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Ellert am 08 Februar 2017, 19:26:40
Mir gefällt, dass trotz der Aussage:
Zitat2) der set-Befehl übersteuert alle Attribute wie z. B. wait, do, usw.
in Befehlssequenzen die Wait-Timer wie gewohnt berücksichtigt werden.

Ist in dieser Version auch die Optimierung der indirekten Timer enthalten (checkReadingEvent für indirekte Timer intern als default)?
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 08 Februar 2017, 20:59:21
Zitat von: Ellert am 08 Februar 2017, 19:26:40
Mir gefällt, dass trotz der Aussage:in Befehlssequenzen die Wait-Timer wie gewohnt berücksichtigt werden.

Ist in dieser Version auch die Optimierung der indirekten Timer enthalten (checkReadingEvent für indirekte Timer intern als default)?

-neben dem neuen set cmd-Kommado, ist checkReadingEvent für indirekte Timer als default drin

-es werden Angaben in eckigen Klammern im Ausführungsteil nur ersetzt, wenn sie auch wirklich ersetzbar sind (also existierende Readings und Devices beinhalten), sonst bleibt der Ausdruck wie er ist, siehe https://forum.fhem.de/index.php/topic,65916.msg571719.html#msg571719

-es wird nur der laufende Timer unterbrochen bzw. der erste übersteuert, die Waittimer der Folgesequenzen werden wie gewohnt abgearbeitet.

-für die Nachvollziehbarkeit der Ausführung, steht im Reading cmd_event das set-Kommando drin, so lässt sich der manuelle Auslöser identifizieren.

- sinnvolle cmd-Befehle werden abhängig von der Definition automatisch erkannt und im set-dropdown Menü angezeigt.

- cmd-Angaben, die es laut Definition nicht gibt, werden bewusst nicht abgefangen, man kann damit einen neuen Zustand setzen, den es sonst nicht gibt z. B. set my_DOIF cmd_99 - wer weiß wofür es gut sein kann ;)

Der Wunsch nach set cmd wurde schon früher geäußert, den Nutzen habe ich damals nicht gesehen. In Verbindung mit dem Webinterface macht die Erweiterung allerdings durchaus Sinn.

Zum Glück war die Realisierung einfacher, als ich befürchtet hatte. :)

Es fehlt nur noch die Doku. Ich denke, das werde ich am Wochenende vervollständigen und dann die Version einchecken.

Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: carlos am 09 Februar 2017, 10:32:32
Diese Version ist super. Ich habe sie schon im Einsatz mit Alexa:
Internals:
   DEF        ([$SELF:mybutton] eq "start")  ({system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")})
DOELSEIF ([$SELF:mybutton] eq "stop") ({system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")})
DOELSEIF ([$SELF:mybutton] eq "restart")  ({system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")})
DOELSEIF ([$SELF:mybutton] eq "status")  ({system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")})
   NAME       FHEM.Alexa.DOIF
   NR         1553
   NTFY_ORDER 50-FHEM.Alexa.DOIF
   STATE      Alexa running as PID 19053
   TYPE       DOIF
   .userReadings:
   Readings:
     2017-02-09 10:19:32   Device          FHEM.Alexa.DOIF
     2017-02-09 10:19:31   INFO            Alexa running as PID 19053
     2017-02-09 10:19:32   STATUS          on
     2017-02-09 10:08:26   cmd             1
     2017-02-09 10:08:26   cmd_event       FHEM.Alexa.DOIF
     2017-02-09 10:08:26   cmd_nr          1
     2017-02-09 10:19:32   e_FHEM.Alexa.DOIF_mybutton start
     2017-02-09 10:08:26   error           {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")}: -1
     2017-02-09 10:08:26   mybutton        start
     2017-02-09 10:08:26   state           on
   Condition:
     0          ReadingValDoIf($hash,'FHEM.Alexa.DOIF','mybutton') eq "start"
     1          ReadingValDoIf($hash,'FHEM.Alexa.DOIF','mybutton') eq "stop"
     2          ReadingValDoIf($hash,'FHEM.Alexa.DOIF','mybutton') eq "restart"
     3          ReadingValDoIf($hash,'FHEM.Alexa.DOIF','mybutton') eq "status"
   Devices:
     0           FHEM.Alexa.DOIF
     1           FHEM.Alexa.DOIF
     2           FHEM.Alexa.DOIF
     3           FHEM.Alexa.DOIF
     all         FHEM.Alexa.DOIF
   Do:
     0:
       0          {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")}
     1:
       0          {system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")}
     2:
       0          {system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")}
     3:
       0          {system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")}
   Helper:
     event      STATUS: on,Device: FHEM.Alexa.DOIF,e_FHEM.Alexa.DOIF_mybutton: start
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   FHEM.Alexa.DOIF
     timerevent STATUS: on,Device: FHEM.Alexa.DOIF,e_FHEM.Alexa.DOIF_mybutton: start
     triggerDev FHEM.Alexa.DOIF
     timerevents:
       STATUS: on
       Device: FHEM.Alexa.DOIF
       e_FHEM.Alexa.DOIF_mybutton: start
     timereventsState:
       STATUS: on
       Device: FHEM.Alexa.DOIF
       e_FHEM.Alexa.DOIF_mybutton: start
     triggerEvents:
       STATUS: on
       Device: FHEM.Alexa.DOIF
       e_FHEM.Alexa.DOIF_mybutton: start
     triggerEventsState:
       STATUS: on
       Device: FHEM.Alexa.DOIF
       e_FHEM.Alexa.DOIF_mybutton: start
   Internals:
   Itimer:
   Readings:
     0           FHEM.Alexa.DOIF:mybutton
     1           FHEM.Alexa.DOIF:mybutton
     2           FHEM.Alexa.DOIF:mybutton
     3           FHEM.Alexa.DOIF:mybutton
     all         FHEM.Alexa.DOIF:mybutton
   Regexp:
     0:
     1:
     2:
     3:
     All:
   State:
   Trigger:
Attributes:
   cmdState   on|off|restart|status
   readingList mybutton
   room       Alexa
   setList    mybutton:start,stop,restart,status
   stateFormat INFO
   userReadings INFO STATUS
   webCmd     mybutton


Funktioniert prima.

Gruß

Carlos


Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 11 Februar 2017, 19:50:23
Neue Version wurde eingecheckt. Sie ist morgen per Update verfügbar.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Ellert am 12 Februar 2017, 19:46:47
Ich habe mit dem Update ab und zu eine Perl-Warnung, konnte aber noch keine bestimmte Definition erkennen:
PERL WARNING: Use of uninitialized value $cmdList in concatenation (.) or string at ./FHEM/98_DOIF.pm line 2030, <GEN15> line 33.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 12 Februar 2017, 20:12:26
Zitat von: Ellert am 12 Februar 2017, 19:46:47
Ich habe mit dem Update ab und zu eine Perl-Warnung, konnte aber noch keine bestimmte Definition erkennen:
PERL WARNING: Use of uninitialized value $cmdList in concatenation (.) or string at ./FHEM/98_DOIF.pm line 2030, <GEN15> line 33.

Das sind vermutlich die DOIF-Fälle ohne jegliche Bedingungen. Da fehlt die Initialisierung. Werde ich gleich korrigieren.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 12 Februar 2017, 20:54:13
Zitat von: Damian am 12 Februar 2017, 20:12:26
Das sind vermutlich die DOIF-Fälle ohne jegliche Bedingungen. Da fehlt die Initialisierung. Werde ich gleich korrigieren.

Ich habe die korrigierte Version eingecheckt.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Per am 13 Februar 2017, 15:13:30
Kurze Rückinfo: hat alles funktioniert wie vorher (wusste nämlich nix von dem Termin :D), ein neues DOIF mit den neuen Features hat auch ausgezeichnet gearbeitet.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 14 Februar 2017, 22:08:13
Ich habe neue Zeitvariablen $md im Format "MM-DD" und $ymd im Format "YYYY-MM-DD" eingebaut:

Damit lassen sich größere Zeitbereiche in der Bedingung eingrenzen:

vom 01.01 bis zum 26.02:

$md ge "01-01" and $md le "02-26"

oder

z. B. es Weihnachtet:

$ymd ge "2017-12-23" and $ymd le "2018-01-05"

Version ist bereits eingecheckt und ab morgen verfügbar.

Man kann so etwas natürlich über die holiday-Datei machen. Allerdings sind dort keine Jahresangaben vorgesehen.

Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Invers am 14 Februar 2017, 23:07:58
Danke.
Aber verstehe ich was falsch?
"YYYY-MM-DD"
Wäre doch danbn nicht
2017-23-12
sondern nach meinem Verständnis
2017-12-23

Sorry, falls ich triefe. :-)
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 15 Februar 2017, 09:30:34
Zitat von: Invers am 14 Februar 2017, 23:07:58
Danke.
Aber verstehe ich was falsch?
"YYYY-MM-DD"
Wäre doch danbn nicht
2017-23-12
sondern nach meinem Verständnis
2017-12-23

Sorry, falls ich triefe. :-)

Gut aufgepasst, war mein Fehler ich korrigiere es im Post gleich.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Ellert am 15 Februar 2017, 19:59:49
Wäre es sinnvoll den direkten set-Befehl zu erweitern und cmdState mit einbeziehen.

So, dass cmd_<nr> ein gültiger Set-Parameter ist und wenn cmdState für den letzten Befehl eines Zweiges gesetzt ist, dieser Wert der gültige Parameter ist?

(Bedingung) () () ()
DOELSEIF (Bedingung) () () ()

cmdState ,,|,,on


In der cmdList würde dann "cmd_1 on" stehen und für DOIF_cmd müsste dann auf "cmd_2" zurück gemapped werden.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 15 Februar 2017, 23:07:36
Zitat von: Ellert am 15 Februar 2017, 19:59:49
Wäre es sinnvoll den direkten set-Befehl zu erweitern und cmdState mit einbeziehen.

So, dass cmd_<nr> ein gültiger Set-Parameter ist und wenn cmdState für den letzten Befehl eines Zweiges gesetzt ist, dieser Wert der gültige Parameter ist?

(Bedingung) () () ()
DOELSEIF (Bedingung) () () ()

cmdState ,,|,,on


In der cmdList würde dann "cmd_1 on" stehen und für DOIF_cmd müsste dann auf "cmd_2" zurück gemapped werden.

Ich habe auch schon überlegt cmdStat für setlist auszuwerten

mit cmdStat on|off

würde in der Dropdown-Auswahl statt cmd_1 on und statt cmd_2 off stehen, on würde dann cmd_1 bedeuten und off cmd_2 ohne etwas zu umzubiegen.

Eine andere Version habe ich im aktuellen Thread zu dem Thema angehängt, dort wird zusätzlich jeder set Befehl akzeptiert, auf den man dann triggern kann, dass dürfte mit den anderen Features nicht kollidieren.

Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Per am 16 Februar 2017, 11:37:26
Wird schwer, wenn man
cmdState on|on|off
oder ähnliches hat.
Sieht auf den ersten Blick unnütz auch, aber i.V. mit wait oder repeatcmd durchaus brauchbar.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 16 Februar 2017, 13:19:01
Zitat von: Per am 16 Februar 2017, 11:37:26
Wird schwer, wenn man
cmdState on|on|off
oder ähnliches hat.
Sieht auf den ersten Blick unnütz auch, aber i.V. mit wait oder repeatcmd durchaus brauchbar.

Zwei gleiche Zustände wären dann nicht sinnvoll nutzbar, weil dann keine eindeutige Zuordnung wäre

Muss man schauen, ob das alles Sinn macht. Es sind nur Ideen, die vielleicht eine Sackgasse darstellen.

Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Per am 17 April 2017, 09:51:43
Auch wenn das schon ne Weile alt ist, ist mir erst heute folgendes aufgefallen:
Set $SELF arbeitet nicht als "goto", sondern als "call".
Ist das so gewollt? Kann man das beeinflussen oder irgendwie was tun?

define DOIF.Tester DOIF (0) (set $SELF cmd_2) (set $SELF cmd_2) (set $SELF cmd_2)\
(0) (set dummy )


ergibt:
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_nr: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_event: set_cmd_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_nr: 1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_seqnr: 1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd: 1.1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_event: set_cmd_1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_1_1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_nr: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_event: set_cmd_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_nr: 1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_seqnr: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd: 1.2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_event: set_cmd_1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_1_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_nr: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd: 2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_event: set_cmd_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_2
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_nr: 1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_seqnr: 3
2017-04-17 09:39:30 DOIF DOIF.Tester cmd: 1.3
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_event: set_cmd_1
2017-04-17 09:39:30 DOIF DOIF.Tester cmd_1


Das kann man gut nutzen (wenn man weiss, dass es so ist), will man aber nicht immer.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 17 April 2017, 11:23:21
define DOIF.Tester DOIF (0) (set $SELF cmd_2) (set $SELF cmd_2) (set $SELF cmd_2)\
(0) (set dummy )


Fehlt da nicht etwas? Wo ist denn cmd_2?

set $SELF cmd_2 ruft einfach den zweiten Zweig aus, es ist also als "Call" zu sehen und kein "GOTO"

Beispiel:

defmod di_bla DOIF (0) (set $SELF cmd_2) (set $SELF cmd_2) (set $SELF cmd_2) DOELSE (set bla on)
attr di_bla do always


set di_bla cmd_1
führt drei mal set bla on aus, etwas anderes habe ich auch nicht erwartet.




Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Per am 17 April 2017, 12:48:43
Zitat von: Damian am 17 April 2017, 11:23:21Fehlt da nicht etwas? Wo ist denn cmd_2?
Ist beim Kopieren verloren gegangen :(.

Zitat von: Damian am 17 April 2017, 11:23:21es ist also als "Call" zu sehen und kein "GOTO"
Also "by design".
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Ralli am 17 April 2017, 12:57:21
Zitat von: Damian am 31 Januar 2017, 20:43:08
Mit der neuen Version ist es nun möglich Befehlszweige bzw. Zustände über einen set-Befehl bedingungslos auszulösen.

Übrigens auch hierfür danke. Auch das war ein Wunsch auf meiner Liste :) .
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Per am 30 April 2017, 22:47:59
Muss das mal wieder aufheben.

Zitat von: Damian am 17 April 2017, 11:23:21führt drei mal set bla on aus, etwas anderes habe ich auch nicht erwartet.
Wie wird mit wait umgegangen?
[code](0) (set $SELF cmd_2)(set $SELF cmd_2)(set $SELF cmd_2)(set $SELF cmd_2)
DOELSEIF (0) () () ()

wait 0:5,5,5[/code]
(Vereinfacht zum evtl. Nachstellen)
Ergibt irgendwie ein merkwürdiges Verhalten...
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 01 Mai 2017, 17:18:46
Zitat von: Per am 30 April 2017, 22:47:59
Muss das mal wieder aufheben.
Wie wird mit wait umgegangen?
[code](0) (set $SELF cmd_2)(set $SELF cmd_2)(set $SELF cmd_2)(set $SELF cmd_2)
DOELSEIF (0) () () ()

wait 0:5,5,5[/code]
(Vereinfacht zum evtl. Nachstellen)
Ergibt irgendwie ein merkwürdiges Verhalten...

Alles wie erwartet, die ersten drei set cmd2 führen den jeweils ersten Befehl ohne Zeitverzögerung aus (die verzögerten kommen nicht zum Zuge). Beim vierten werden auch die restlichen zwei Befehle zeitverzögert ausgeführt.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: kumue am 29 November 2019, 04:38:39
Zitat von: Damian am 14 Februar 2017, 22:08:13
Ich habe neue Zeitvariablen $md im Format "MM-DD" und $ymd im Format "YYYY-MM-DD" eingebaut:

Damit lassen sich größere Zeitbereiche in der Bedingung eingrenzen:

vom 01.01 bis zum 26.02:

$md ge "01-01" and $md le "02-26"

oder

z. B. es Weihnachtet:

$ymd ge "2017-12-23" and $ymd le "2018-01-05"

Version ist bereits eingecheckt und ab morgen verfügbar.

Man kann so etwas natürlich über die holiday-Datei machen. Allerdings sind dort keine Jahresangaben vorgesehen.

funktionieren die variablen auch im perl-modus ?
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>
Beitrag von: Damian am 29 November 2019, 07:46:39
Zitat von: kumue am 29 November 2019, 04:38:39
funktionieren die variablen auch im perl-modus ?
ja
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: kumue am 29 November 2019, 22:45:23
das freut mich, aber ich scheitere leider am ersten Versuch..

{if ([22:42] and ($md eq "11-29")); {fhem_set "dummy1 on"}}

FM:
condition c01: syntax error, line 1, at EOF

Damian, kannst Du bitte ein Beispiel aufzeigen. Danke!
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Damian am 29 November 2019, 22:58:22
Zitat von: kumue am 29 November 2019, 22:45:23
das freut mich, aber ich scheitere leider am ersten Versuch..

{if ([22:42] and ($md eq "11-29")); {fhem_set "dummy1 on"}}

FM:
condition c01: syntax error, line 1, at EOF

Damian, kannst Du bitte ein Beispiel aufzeigen. Danke!

eher:

{if ([22:42] and ($md eq "11-29")) {fhem_set "dummy1 on"}}

Der if-Befehl ist ja nicht hinter der Bedingung zu ende, sondern erst hinter dem Ausführungsteil, daher kein Semikolon dazwischen.
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: kumue am 29 November 2019, 23:08:51
perfekt, danke auch für die erklärung !
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Rudibarani am 09 Januar 2020, 21:26:31
Hallo,

hab gerade gemerkt, dass man die $md-Variable im DOIF nicht über ein Jahresende einsetzen kann.

Das hier geht nicht: (($md ge "12-01" and $md le "01-15"))
Das hier funktioniert: (($md ge "12-01" and $md le "12-31") or ($md ge "01-01" and $md le "01-15"))

Vielleicht hilft diese Info nochmal jemandem.
Viele Grüße
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Per am 10 Januar 2020, 11:41:58
Zitat von: Rudibarani am 09 Januar 2020, 21:26:31
Das hier geht nicht: (($md ge "12-01" and $md le "01-15"))
Aber das:
(($md ge "12-01" or $md le "01-15"))
Und schon passt es ;)
Titel: Antw:neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
Beitrag von: Rudibarani am 10 Januar 2020, 17:53:23
Lieber Per,

vielen Dank - auch eine gute Lösung! Ich wollte vor allem dafür sensibilisieren, dass die Variable derzeit nicht über die Jahresgrenze hinweg in größer / kleiner-Beziehungen gesetzt werden kann.

Viele Grüße