FHEM Forum

FHEM => Automatisierung => Thema gestartet von: mister am 17 Dezember 2018, 23:36:45

Titel: Wechsel zwischen zwei Zuständen
Beitrag von: mister am 17 Dezember 2018, 23:36:45
Hallo zusammen,

ich habe Lichter die den Zusand "an" und "Flackern" haben

Jetzt möchte ich wenn eine dummy nennen wir ihn test "an" ist, das die Lichet an gehen und jede stunde für 5 min auf Flackern gehen und dann wieder zurück auf An. Das soll so lange laufen bis der dummy nicht mehr an ist. Kann mir da jemand helfen verzweifle daran schon langsam
Titel: Antw:Wechsel zwischen zwei Zuständen
Beitrag von: connormcl am 18 Dezember 2018, 00:20:42
Es gibt zig Möglichkeiten, das umzusetzen...je nachdem welche Konstrukte dir zusagen gehts natürlich einfacher/anders...

Bspw. würde ich das ohne viel nachzudenken so umsetzen:

Dummy A mit Zustand ein/aus
Dummy B mit Zustand flackern/an/aus


Dummy A bekommt ein notify und schaltet Dummy B bei ein(A) auf an und bei aus(A) auf aus.
Dummy B hat ein notify und prüft zunächst den Status von Dummy A auf "ein" und falls das zutrifft stellt es sich auf "an" und erstellt ein "at" ab jetzt+55, das den Dummy B auf flackern stellt.
Nach 55 Minuten wird nun Dummy B auf flackern gestellt. Darauf muss das notify mit einem weiteren Abschnitt (oder ein anderes notify) drauf reagieren wieder den Zustand von Dummy A auf "ein" prüfen und nach 5 Minuten den Dummy B wieder per "at" auf "an" stellen. Dies geht dann immer so weiter, solange Dummy A auf "ein" steht.
Im notify von Dummy A muss dann bei Wechsel auf "aus" noch Dummy B auf "aus" gestellt werden.


Aber da das kompliziert zu programmieren ist, gibts bestimmt gleich noch einen weiteren Vorschlag mit "DOIF" und anderem...
Titel: Antw:Wechsel zwischen zwei Zuständen
Beitrag von: Byte09 am 18 Dezember 2018, 05:58:12
Zitat von: mister am 17 Dezember 2018, 23:36:45
Hallo zusammen,

ich habe Lichter die den Zusand "an" und "Flackern" haben

Jetzt möchte ich wenn eine dummy nennen wir ihn test "an" ist, das die Lichet an gehen und jede stunde für 5 min auf Flackern gehen und dann wieder zurück auf An. Das soll so lange laufen bis der dummy nicht mehr an ist. Kann mir da jemand helfen verzweifle daran schon langsam

ich hab mal ein beispiel mit MSwitch zusammengeklickt. kannnst du dir ja mal anschauen , wenn du willst und bei fragen gerne nachhaken. im grunde ist es selbsterklärend, wenn du es dir anschaust.
die raw enthält 2 dummys d1 und d2 . d2 steht für das Licht, d1 steht für den schalter 'an' aus deinem beispiel. das Device flackern ( MSwitch) übernimmt das eigentliche schalten. Angelegt werden die 3 devices im Raum 1_test.

im Gegensatz zur oben vorgeschlagenen Lösung benötigst du hier keine x notifys und at's etc. sondern es wird alle von einem device übernommen. Ähnlich wird das ganze auch über DOIF umsetzbar sein , kenne mich aber damit nicht aus.

in diesem beispiel sind die schaltzeiten 55 sekunden an , dann 5 sekunden flackern.

die komplette Rawdefinition daher, da MSwitch komplett über die Weboberfläche konfiguriert wird und nicht nur über eine Definition (wie Notify,Doif etc. ) darstellbar ist.

gruss Byte09

defmod flackern MSwitch d1     # d2 MSwitch_Self
attr flackern MSwitch_Debug 0
attr flackern MSwitch_Delete_Delays 1
attr flackern MSwitch_Expert 0
attr flackern MSwitch_Extensions 0
attr flackern MSwitch_Help 0
attr flackern MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr flackern MSwitch_Include_Devicecmds 1
attr flackern MSwitch_Include_MSwitchcmds 0
attr flackern MSwitch_Include_Webcmds 1
attr flackern MSwitch_Inforoom MSwitch
attr flackern MSwitch_Lock_Quickedit 1
attr flackern MSwitch_Mode Notify
attr flackern room 1_test

defmod d1 dummy
attr d1 room 1_test
attr d1 webCmd on:off

defmod d2 dummy
attr d2 room 1_test
attr d2 setList an flackern aus

setstate d1 on
setstate d1 2018-12-18 06:09:18 state on

setstate d2 an
setstate d2 2018-12-18 05:43:42 an
setstate d2 2018-12-18 05:43:10 flackern
setstate d2 2018-12-18 06:09:18 state an

setstate flackern active
setstate flackern 2018-12-18 05:47:47 .Device_Affected MSwitch_Self-AbsCmd1,d2-AbsCmd1,d2-AbsCmd2
setstate flackern 2018-12-18 06:09:13 .Device_Affected_Details MSwitch_Self-AbsCmd1#[NF]exec_cmd_1#[NF]del_delays#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]01#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]d2-AbsCmd1#[NF]an#[NF]aus#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]d2-AbsCmd2#[NF]flackern#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]55#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1
setstate flackern 2018-12-18 06:09:18 .Device_Events state:on#[tr]no_trigger#[tr]state:off
setstate flackern 2018-12-18 05:33:47 .First_init done
setstate flackern 2018-12-18 05:50:07 .Trigger_cmd_off state:off
setstate flackern 2018-12-18 05:50:07 .Trigger_cmd_on state:on
setstate flackern 2018-12-18 05:35:56 .Trigger_condition
setstate flackern 2018-12-18 05:50:07 .Trigger_off no_trigger
setstate flackern 2018-12-18 05:50:07 .Trigger_on no_trigger
setstate flackern 2018-12-18 05:35:56 .Trigger_time
setstate flackern 2018-12-18 05:33:47 .V_Check V2.00
setstate flackern 2018-12-18 06:09:18 EVENT state:on
setstate flackern 2018-12-18 06:09:18 EVTFULL d1:state:on
setstate flackern 2018-12-18 06:09:18 EVTPART1 d1
setstate flackern 2018-12-18 06:09:18 EVTPART2 state
setstate flackern 2018-12-18 06:09:18 EVTPART3 on
setstate flackern 2018-12-18 05:35:56 Trigger_device d1
setstate flackern 2018-12-18 05:50:07 Trigger_log off
setstate flackern 2018-12-18 05:49:48 last_cmd 1
setstate flackern 2018-12-18 06:09:18 last_event state:on
setstate flackern 2018-12-18 06:09:18 last_exec_cmd set d2 an
setstate flackern 2018-12-18 06:09:20 state active

Titel: Antw:Wechsel zwischen zwei Zuständen
Beitrag von: Damian am 18 Dezember 2018, 08:50:48
Zitat von: connormcl am 18 Dezember 2018, 00:20:42
Aber da das kompliziert zu programmieren ist, gibts bestimmt gleich noch einen weiteren Vorschlag mit "DOIF" und anderem...

Konkret:

DOIF ([test] eq "an") (set Lichter an)(set Lichter flackern) DOELSEIF ([test] eq "aus")(set Lichter aus)

attr wait 0,3300
attr repeatcmd 3600
attr do always