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.
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
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.
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.
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
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?
Ja, Du hattest allerdings ursprünglich die Auswertung des Events vorgenommen, das ist nochmal etwas anderes.
Alles gut erklärt in der Doku :)
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
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 (<)\
[ZWave_SENSOR_NOTIFICATION_3:luminance:d]
https://commandref.fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen
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
Moin,
wer oder was erzeugt diesen Event?
[Sonnenschutz_UG:"on"]
Mach mal ein list von Sonnenschutz_UG
Gruß Otto
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
Poste mal das entsprechende Event aus dem Eventmonitor.
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.
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??
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
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
Du kennst noch meine Bemerkung zu dem Thema? ::)
attr Sonnenschutz_UG event-on-update-reading
1Auszug 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.