Helper module at - mit welcher Definition blinkt eine Lampe um xx:xx Uhr

Begonnen von cmonty14, 08 Mai 2019, 01:19:06

Vorheriges Thema - Nächstes Thema

cmonty14

Hallo,

in der command reference zum Helper module at steht:
define a1 at 17:00:00 set lamp on
-> lamp wird um 17:00 eingeschaltet

define a7 at +*{3}00:00:02 set lamp on-for-timer 1
-> lamp blinkt 3 mal

Frage:
Wie muss der define aussehen, damit die lampe 3 mal blinkt um genau 17:00 Uhr?

THX

kumue

define d1 DOIF ([17:00:00])(set lamp on-for-timer 1)
attr d1 repeatcmd 5
attr d1 repeatsame 3


Würde bedeuten:
17:00:00 =>  Blinken für 1sec
17:00:05 =>  Blinken für 1sec
17:00:10 =>  Blinken für 1sec

repeatcmd = der Befehl wird aller 5sec wiederholt
repeatsame = Begrenzung auf 3 Ausführungen

oder muss es ein at sein ?  ???

Auf eine Lösung mit at wäre ich auch gespannt, habe es jetzt auf die Schnelle nicht hinbekommen...  ::)

krikan

Man kann in einem at ein at definieren; also die beiden Beispiele aus der commandref zusammenführen.

Falls https://fhem.de/commandref.html#setExtensions vom lamp-Modul unterstützt werden:

define a1 at 17:00:00 set lamp blink 3 1

Das gezeigte at wird genau einmal (das nächste Mal) um 17 Uhr ausgeführt und ist dann "weg". Das gezeigte DOIF an jedem Tag um 17 Uhr.

Beta-User

Ergänzend zum Hinweis von krikan:

Wenn doch blink nicht unterstützt werden sollte, könnte man auch mit dem zeitlich exakten at ein weiteres "blink"-at definieren...

define a1 at 16:59:58 defmod a7 at +*{3}00:00:02 set lamp on-for-timer 1

(Um's einigermaßen vollständig zu machen: Darüber hinaus ginge noch, sleep und weitere on-for-timer-Anweisungen in einem at zu verwenden...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kumue

Zitat von: krikan am 08 Mai 2019, 08:38:22
Das gezeigte DOIF an jedem Tag um 17 Uhr.

Wirklich ?
Es ist kein do always gesetzt, kein DOELSEIF, kein DOELSE definiert und somit kein Zustandswechsel...
Oder irre ich ?

krikan

Zitat von: kumue am 08 Mai 2019, 16:35:46
Wirklich ?
Es ist kein do always gesetzt, kein DOELSEIF, kein DOELSE definiert und somit kein Zustandswechsel...
Oder irre ich ?
Jetzt verunsichert, warten wir auf die DOIF-Experten.  :)

Damian

Zitat von: krikan am 08 Mai 2019, 18:29:03
Jetzt verunsichert, warten wir auf die DOIF-Experten.  :)
Einfach mal ausprobieren. ;)

Für die Wiederholung mit repeatcmd selbst braucht man kein do always, da man aber am nächsten Tag wieder den gleichen Zweig ausführen will, bracht man hier do always oder Zustandswechsel mit einem weiteren Zweig.

Edit: alternativ:

define d1 DOIF ([17:00-17:00:16,+5])(set lamp on-for-timer 1)
attr d1 do always


oder ohne Attribute
define d1 DOIF {[17:00-17:00:16,+5];fhem_set "lamp on-for-timer 1"}

Das war Perl-Mode. :)

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Byte09

Zitat von: cmonty14 am 08 Mai 2019, 01:19:06
Hallo,

in der command reference zum Helper module at steht:
define a1 at 17:00:00 set lamp on
-> lamp wird um 17:00 eingeschaltet

define a7 at +*{3}00:00:02 set lamp on-for-timer 1
-> lamp blinkt 3 mal

Frage:
Wie muss der define aussehen, damit die lampe 3 mal blinkt um genau 17:00 Uhr?

THX

falls es kein at, doif oder so sein muss anbe eine rawdefinition eines MSwitch.

ist im Grunde nach dem anlegen selbsterklärend und 'out-of -the box' finktionieren , vorausgesetzt dein zu schaltendes device heisst auch 'lamp'

gruss Byte09

defmod blink MSwitch
attr blink MSwitch_Debug 0
attr blink MSwitch_Delete_Delays 1
attr blink MSwitch_Expert 1
attr blink MSwitch_Extensions 0
attr blink MSwitch_Help 1
attr blink MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr blink MSwitch_Include_Devicecmds 1
attr blink MSwitch_Include_MSwitchcmds 0
attr blink MSwitch_Include_Webcmds 0
attr blink MSwitch_Inforoom MSwitch
attr blink MSwitch_Lock_Quickedit 1
attr blink MSwitch_Mode Notify
attr blink room 02_Test

setstate blink active
setstate blink 2019-05-08 19:07:45 .Device_Affected lamp-AbsCmd1
setstate blink 2019-05-08 19:08:59 .Device_Affected_Details lamp-AbsCmd1#[NF]on-for-timer#[NF]no_action#[NF]1#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]2#[NF]2#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1
setstate blink 2019-05-08 19:08:36 .Device_Events no_trigger
setstate blink 2019-05-08 19:07:00 .First_init done
setstate blink 2019-05-08 19:07:00 .Trigger_cmd_off no_trigger
setstate blink 2019-05-08 19:07:00 .Trigger_cmd_on no_trigger
setstate blink 2019-05-08 19:08:36 .Trigger_condition
setstate blink 2019-05-08 19:07:00 .Trigger_off no_trigger
setstate blink 2019-05-08 19:07:00 .Trigger_on no_trigger
setstate blink 2019-05-08 19:08:36 .Trigger_time on~off~ononly[17#[dp]00]~offonly~onoffonly
setstate blink 2019-05-08 19:07:00 .V_Check V2.00
setstate blink 2019-05-08 19:08:36 Trigger_device no_trigger
setstate blink 2019-05-08 19:07:00 Trigger_log off
setstate blink 2019-05-08 19:16:40 state active



krikan

Am Rande:
Zitat von: Damian am 08 Mai 2019, 19:14:29
Für die Wiederholung mit repeatcmd selbst braucht man kein do always, da man aber am nächsten Tag wieder den gleichen Zweig ausführen will, bracht man hier do always oder Zustandswechsel mit einem weiteren Zweig.
Zu meiner irrigen Aussage brachte mich das Lesen der Attributbeschreibung von https://fhem.de/commandref_DE.html#DOIF_do_always und die Aussage darin:
ZitatAusnahme ist eine einzige Bedingung ohne do always, wie im obigen Beispiel, hierbei wird intern ein virtuelles DOELSE angenommen, um bei Nicht-Erfüllung der Bedingung einen Zustandswechsel in cmd_2 zu provozieren, da sonst nur ein einziges Mal geschaltet werden könnte, da das Modul aus dem cmd_1-Zustand nicht mehr herauskäme.
Das habe ich beim obigen DOIF für anwendbar gehalten. Wenn ich nach oben scrolle (oberhalb der HTML-Sprungmarke) sehe ich aber das die Attributbeschreibung unter der Überschrift Ereignissteuerung steht und dann bei Zeitsteuerung wohl so nicht anwendbar ist.
Sorry.

Gruß, Christian