FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Wasserwerk33 am 24 Juli 2018, 19:22:58

Titel: Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 24 Juli 2018, 19:22:58
Hallo Leute.
Habe eine Logo zum Jaoulsien steuern und Fhem. Nun wollte ich das meine Jalousien selbstständig fahren wenn ich den passenden schalter für anschalte.

Nur ich habe warscheinlich einen fehler in meinem Doif. Habe meine anderen schon angeschaut finde ich nur nicht. Hat jemand nen tipp?
defmod Wohnzimmer_Sonnenschutz DOIF ([16:00-20:30] and [Sonnenschutz_UG: "on"]) (set Wohnzimmer_runter TRIGGER) DOELSEIF ([20:31] and [Sonnenschutz_UG: "on"]) (set Wohnzimmer_hoch TRIGGER)
attr Wohnzimmer_Sonnenschutz room Sonnenschutz

setstate Wohnzimmer_Sonnenschutz initialized
setstate Wohnzimmer_Sonnenschutz 2018-07-24 17:35:38 cmd 0
setstate Wohnzimmer_Sonnenschutz 2018-07-24 17:35:38 mode enabled
setstate Wohnzimmer_Sonnenschutz 2018-07-24 17:35:38 state initialized
setstate Wohnzimmer_Sonnenschutz 2018-07-24 17:35:38 timer_01_c01 25.07.2018 14:00:00
setstate Wohnzimmer_Sonnenschutz 2018-07-24 17:35:38 timer_02_c01 24.07.2018 20:30:00
setstate Wohnzimmer_Sonnenschutz 2018-07-24 17:35:38 timer_03_c02 24.07.2018 20:31:00



Das ist ein Code von meiner Logo
defmod Wohnzimmer_hoch S7_DWrite db 0 8.0
attr Wohnzimmer_hoch IODev myLogo
attr Wohnzimmer_hoch room Logo,Sonnenschutz
attr Wohnzimmer_hoch webCmd TRIGGER


Haben den Trigger befehl per hand in Fhem ausgeführt. Also in der Logo Steuerung dort klappt er. Also ist dort nicht der Fehler.

Hat wer nen vielleicht nen Tip?

Danke schon mal.
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 24 Juli 2018, 20:19:02
Hi,

ich halte dies für falsch:[Sonnenschutz_UG: "on"] -> [Sonnenschutz_UG:"on"]

Das hier
[16:00-20:30] and [Sonnenschutz_UG:"on"] würde schalten wenn zwischen 16:00 und 20:30 ein Event mit on in Sonnenschutz_UG kommt. Könnte funktionieren, falls es diesen Event gibt.

das hier [20:31] and [Sonnenschutz_UG:"on"] würde schalten wenn exakt 20:31 ein Event mit on in Sonnenschutz_UG kommt. Ist praktisch unmöglich, es sei denn Sonnenschutz_UG wird von der gleichen Uhr auf on getriggert :)
ZitatAnwendungsbeispiel: wie oben, jedoch wird hier nur das Ereignis (welches im Eventmonitor erscheint) ausgewertet und nicht der Status von "remotecontrol" wie im vorherigen Beispiel

define di_garage DOIF ([remotecontrol:"on"]) (set garage on) DOELSEIF ([remotecontrol:"off"]) (set garage off)

In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht. Falls "on" gefunden wird, wird der Ausdruck wahr und der DOIF-Fall wird ausgeführt, ansonsten wird der DOELSEIF-Fall entsprechend ausgewertet. Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence". Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen. Weitere Informationen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden. Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.
Gruß Otto
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Damian am 24 Juli 2018, 20:32:10
Zitatwürde schalten wenn exakt 20:31 ein Event mit on in Sonnenschutz_UG kommt. Ist praktisch unmöglich, es sei denn Sonnenschutz_UG wird von der gleichen Uhr auf on getriggert :)

Es ist grundsätzlich unmöglich, denn die Events und Timer werden nacheinander abgearbeitet. Ein Event-Trigger und Timer-Trigger können bei DOIF niemals gleichzeitig wahr sein.
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 24 Juli 2018, 20:39:27
Okay. Also habe ich das richtig verstanden. Das ich die Uhrzeit verändern muss?
Das ich mit einem Eventmonitor arbeiten muss??
Den die Jalousien sollen ja von 16:00-20:30 uhr Schalten wenn wir den zusätzlichen schalter anschalten. um 20:31 sollen sie dann wieder hochfahren.
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 24 Juli 2018, 20:47:02
1. nein
2. Immer eine gute Idee aber hat jetzt nicht unbedingt etwas mit dem falschen Code zu tun. Deine Frage klingt unwissend. https://wiki.fhem.de/wiki/Event_monitor
3. dann musst Du um 20:31 den Zustand abfragen [?Sonnenschutz_UG] eq "on" also
([20:31] and [?Sonnenschutz_UG] eq "on")
https://commandref.fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger


Gruß Otto
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 24 Juli 2018, 21:24:36
Okay nochmal den Referenz vom Doif gelesen. Also wenn ich ein Fragen zeichen vor der Abfrage mache dann bedeutet dieser nur als zustand und nicht als Trigger befehl?

Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 24 Juli 2018, 21:28:23
Ja, Du hattest allerdings ursprünglich die Auswertung des Events vorgenommen, das ist nochmal etwas anderes.
Alles gut erklärt in der Doku :)
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Damian am 24 Juli 2018, 23:35:39
Zitat von: Wasserwerk33 am 24 Juli 2018, 21:24:36
Okay nochmal den Referenz vom Doif gelesen. Also wenn ich ein Fragen zeichen vor der Abfrage mache dann bedeutet dieser nur als zustand und nicht als Trigger befehl?

Das habe ich gestern versucht vereinfacht zu erklären: https://forum.fhem.de/index.php/topic,89608.msg820768.html#msg820768
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 26 Juli 2018, 21:13:30
So nun habe ich getüftelt, so sollte es doch nach dem Doif Wiki funktonieren?

([?13:00-18:00] and [Sonnenschutz_UG:"on"]) (set Garten_runter Trigger) DOELSEIF ([18:00]) (set Garten_hoch Trigger)
Das hochfahren klappt auch. Und wenn ich cmd auslöse klappt dieses auch. Sollte so doch nun funktonieren oder was meint Ihr??


Könnt ihr mir vielleicht sagen wie ich die Warnung noch wegbekomme?? Der Lichtsensor arbeitet nun mal mit % und schalten funktoniert. Zumindestens beim Licht
defmod Esszimmer_Sonnenschutz DOIF ([?7:30-13:00] and [Sonnenschutz_UG:"on"]) (set Esszimmer_runter Trigger) DOELSEIF ([14:00] or [ZWave_SENSOR_NOTIFICATION_3:luminance] < 30) (set Esszimmer_hoch Trigger)
attr Esszimmer_Sonnenschutz do always
attr Esszimmer_Sonnenschutz room Sonnenschutz

setstate Esszimmer_Sonnenschutz cmd_2
setstate Esszimmer_Sonnenschutz 2018-07-26 14:44:35 Device ZWave_SENSOR_NOTIFICATION_3
setstate Esszimmer_Sonnenschutz 2018-07-24 21:54:40 cmd 2
setstate Esszimmer_Sonnenschutz 2018-07-24 21:54:40 cmd_event ZWave_SENSOR_NOTIFICATION_3
setstate Esszimmer_Sonnenschutz 2018-07-24 21:54:40 cmd_nr 2
setstate Esszimmer_Sonnenschutz 2018-07-26 14:44:35 e_ZWave_SENSOR_NOTIFICATION_3_luminance 50 %
setstate Esszimmer_Sonnenschutz 2018-07-24 21:50:57 mode enabled
setstate Esszimmer_Sonnenschutz 2018-07-24 21:54:40 state cmd_2
setstate Esszimmer_Sonnenschutz 2018-07-26 13:00:00 timer_01_c01 27.07.2018 07:30:00
setstate Esszimmer_Sonnenschutz 2018-07-26 13:00:00 timer_02_c01 27.07.2018 13:00:00
setstate Esszimmer_Sonnenschutz 2018-07-26 14:00:00 timer_03_c02 27.07.2018 14:00:00
setstate Esszimmer_Sonnenschutz 2018-07-26 14:44:35 warning condition c02: Argument "50 %" isn't numeric in numeric lt (<)\
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 26 Juli 2018, 21:16:13
[ZWave_SENSOR_NOTIFICATION_3:luminance:d]
https://commandref.fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 04 August 2018, 14:24:41
Danke für den letzten Tipp. Hat geholfen Danke schön.

Aber meine Steuerung schaltet einfach nicht.  :(

Wenn ich sie über cmd Auslöse fährt sie runter oder hoch. Hast du noch einen Tipp für mich?

defmod Esszimmer_Sonnenschutz DOIF ([?7:30-13:00] and [Sonnenschutz_UG:"on"]) (set Esszimmer_runter Trigger) DOELSEIF ([14:00]) (set Esszimmer_hoch Trigger)
attr Esszimmer_Sonnenschutz do always
attr Esszimmer_Sonnenschutz room Sonnenschutz

setstate Esszimmer_Sonnenschutz cmd_2
setstate Esszimmer_Sonnenschutz 2018-08-04 14:00:00 cmd 2
setstate Esszimmer_Sonnenschutz 2018-08-04 14:00:00 cmd_event timer_3
setstate Esszimmer_Sonnenschutz 2018-08-04 14:00:00 cmd_nr 2
setstate Esszimmer_Sonnenschutz 2018-07-26 22:10:34 mode enabled
setstate Esszimmer_Sonnenschutz 2018-08-04 14:00:00 state cmd_2
setstate Esszimmer_Sonnenschutz 2018-08-04 13:00:00 timer_01_c01 05.08.2018 07:30:00
setstate Esszimmer_Sonnenschutz 2018-08-04 13:00:00 timer_02_c01 05.08.2018 13:00:00
setstate Esszimmer_Sonnenschutz 2018-08-04 14:00:00 timer_03_c02 05.08.2018 14:00:00
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 05 August 2018, 10:44:28
Moin,

wer oder was erzeugt diesen Event?
[Sonnenschutz_UG:"on"]
Mach mal ein list von Sonnenschutz_UG

Gruß Otto
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 05 August 2018, 20:46:25
Hi

Das löse ich aus. Es ist ein schalter auf meinem Tablet ui.

Internals:
   ADDRESS    7.0
   AREA       db
   CHANGED   
   DB         0
   DEF        db 0 7.0
   IODev      myLogo
   LASTInputDev myLogo
   LENGTH     1
   MSGCNT     306130
   NAME       Sonnenschutz_UG
   NR         32
   POSITION   56
   STATE      off
   TYPE       S7_DWrite
   myLogo_MSGCNT 306130
   myLogo_TIME 2018-08-05 20:45:39
   READINGS:
     2018-08-05 19:57:29   state           off
Attributes:
   IODev      myLogo
   event-on-change-reading 1
   room       Logo,Sonnenschutz
   webCmd     on:off


Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Damian am 05 August 2018, 20:57:50
Poste mal das entsprechende Event aus dem Eventmonitor.
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 05 August 2018, 21:16:00
Das hier
event-on-change-reading 1
ist Blödsinn! Aber nicht das Problem  ;D
Bedeutung:
Zitatevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 21 August 2018, 10:04:38
Hi Leute.

Also nach dem ich dieses entfernt habe funktonierte es problem los. Jedes mal wenn wir den schalter betätigt hatten und die umstände passten führen sie runter. Also lag es wohl dran. Dafür erstmal danke

Zitat von: Otto123 am 05 August 2018, 21:16:00
Das hier
event-on-change-reading 1
ist Blödsinn! Aber nicht das Problem  ;D
Bedeutung:

Wollte mir nun da ich auch ein Lichtsensor im Wohnzimmer habe dieses mit einbauen. Leider schalten sie nun nicht mehr.
nternals:
   DEF        ([?7:30-13:00] and [Sonnenschutz_UG:"on"] and [ZWave_SENSOR_NOTIFICATION_3:luminance:d] > 80) (set Kueche_runter Trigger) DOELSEIF ([14:00] or [ZWave_SENSOR_NOTIFICATION_3:luminance:d] < 71) (set Kueche_hoch Trigger)
   MODEL      FHEM
   NAME       Kueche_Sonnenschutz
   NR         110
   NTFY_ORDER 50-Kueche_Sonnenschutz
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-08-21 09:58:19   Device          ZWave_SENSOR_NOTIFICATION_3
     2018-08-21 09:46:58   cmd             1
     2018-08-21 09:46:58   cmd_count       1
     2018-08-21 09:46:58   cmd_event       set_cmd_1
     2018-08-21 09:46:58   cmd_nr          1
     2018-08-21 09:58:19   e_ZWave_SENSOR_NOTIFICATION_3_luminance 87 %
     2018-08-21 08:34:41   mode            enabled
     2018-08-21 09:46:58   state           cmd_1
     2018-08-21 08:34:41   timer_01_c01    22.08.2018 07:30:00
     2018-08-21 08:34:41   timer_02_c01    21.08.2018 13:00:00
     2018-08-21 08:34:41   timer_03_c02    21.08.2018 14:00:00
   Regex:
   attr:
     cmdState:
     repeatsame:
       1
       1
     wait:
     waitdel:
   condition:
     0          DOIF_time($hash,0,1,$wday,$hms) and EventDoIf('Sonnenschutz_UG',$hash,'on',1) and ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','luminance','','d') > 80
     1          DOIF_time_once($hash,2,$wday) or ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','luminance','','d') < 71
   days:
   devices:
     0           Sonnenschutz_UG ZWave_SENSOR_NOTIFICATION_3
     1           ZWave_SENSOR_NOTIFICATION_3
     all         Sonnenschutz_UG ZWave_SENSOR_NOTIFICATION_3
   do:
     0:
       0          set Kueche_runter Trigger
     1:
       0          set Kueche_hoch Trigger
     2:
   helper:
     event      temperature: 22.0 C
     globalinit 1
     last_timer 3
     sleeptimer -1
     timerdev   ZWave_SENSOR_NOTIFICATION_3
     timerevent luminance: 60 %
     triggerDev ZWave_SENSOR_NOTIFICATION_3
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_cmd_1
       state: cmd_1
     timerevents:
       luminance: 60 %
     timereventsState:
       luminance: 60 %
     triggerEvents:
       temperature: 22.0 C
     triggerEventsState:
       temperature: 22.0 C
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   itimer:
   localtime:
     0          1534915800
     1          1534849200
     2          1534852800
   readings:
     0           ZWave_SENSOR_NOTIFICATION_3:luminance
     1           ZWave_SENSOR_NOTIFICATION_3:luminance
     all         ZWave_SENSOR_NOTIFICATION_3:luminance
   realtime:
     0          07:30:00
     1          13:00:00
     2          14:00:00
   time:
     0          7:30
     1          13:00:00
     2          14:00:00
   timeCond:
     0          0
     1          0
     2          1
   timer:
     0          0
     1          0
     2          0
   timers:
     1           2
   trigger:
     all         Sonnenschutz_UG
   triggertime:
     1534849200:
       localtime  1534849200
       hash:
     1534852800:
       localtime  1534852800
       hash:
     1534915800:
       localtime  1534915800
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   repeatsame 1:1
   room       Sonnenschutz


Oder ist es besser den Schalter und den Lichtsensor in eine Structur einzubauen. Da das Doif nicht so viele uns berücksichtigen kann??
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 21 August 2018, 11:32:00
Moin,

also spontan würde ich sagen: Wozu?    do         always
   repeatsame 1:1

Das DOIF sieht ansonsten gut aus und sollt eigentlich so funktionieren. Nimm die beiden mal raus. Oder welchen Grund hast Du dafür gesehen?

Aber nochmal die Bemerkung zum Event: das hier [Sonnenschutz_UG:"on"] schaltet nur in dem Moment wo Du diesen Schalter umlegst! Wenn da jetzt die Helligkeit nicht reicht schaltet später nichts.

Ich vermute eher, Du willst dort auch den Status abfragen, dann mach es bitte so: [Sonnenschutz_UG] eq "on"

Gruß Otto
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Wasserwerk33 am 21 August 2018, 18:02:03
Hi
Also das ist ein schalter der dauerhaft auf on oder off steht. Kein trigger schalter.
[Sonnenschutz_UG] eq "on"

Habe ich eingebaut da die Schaltung der Logo als Trigger hinterlegt ist. Und sie die erstenmal ständig am schalten war wo die zustände passten.
repeatsame 1:1

Schalter zum Schalten über die Logo und dann fährt die Jalousie.

defmod Esszimmer_runter S7_DWrite db 0 7.6
attr Esszimmer_runter IODev myLogo
attr Esszimmer_runter event-on-update-reading 1
attr Esszimmer_runter room Logo,Sonnenschutz
attr Esszimmer_runter verbose 0
attr Esszimmer_runter webCmd TRIGGER


Der Schalter der der Logo sagt die Jalousien dürfen Sonnenschutz machen 
defmod Sonnenschutz_UG S7_DWrite db 0 7.0
attr Sonnenschutz_UG IODev myLogo
attr Sonnenschutz_UG event-on-update-reading 1
attr Sonnenschutz_UG room Logo,Sonnenschutz
attr Sonnenschutz_UG verbose 0
attr Sonnenschutz_UG webCmd on:off


Habe
   do         always
   repeatsame 1:1

entfernt und versucht den Lichtsensor zu veräppeln hat auch geklappt aber die Jalousie führ trotzdem nicht runter. Und löste auch nichts aus also auch kein event


Fehler gefunden.
Es lag an der Abfrage des Schalters.
Meine schreibweise war falsch.
Werde es morgen nochmal versuchen aber schaltet nun.

danke schon mal
Titel: Antw:Doif zum Schalten nutzen. Mit Logo Jalousien steuern
Beitrag von: Otto123 am 21 August 2018, 20:02:25
Du kennst noch meine Bemerkung zu dem Thema? ::)
attr Sonnenschutz_UG event-on-update-reading 1
Auszug aus der Doku
Zitatevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.
Die unterschiedlichen Bedeutungen von event-on-update-reading und event-on-change-reading sind folgende:
Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung eines jeden "readings" eines Gerätes ein Ereignis.
Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder änderungen von "readings" die in einem der Attribute gesetzt sind ein Ereignis.
Wenn ein "reading" in event-on-update-reading aufgeführt ist, erzeugt eine Aktualisierung ein Ereignis unabhängig ob das "reading" auch in event-on-change-reading aufgelistet ist.