Hallo zusammen
Ich hab gegoogelt und probiert, ich komme nicht weiter.
Ich habe eine bestehende Rolladensteuerung die funktioniert schon eine Weile für mich zufriedenstellend.
Nun wollte ich mittels eines ZWave Türkontakt einen Aussperrschutz dazubasteln.
Zum Testen mit DOIF ([17:52])([Tuer_Sensor_Wz: "closed"]) (set RolloWz. closes)
Der Rolladen fährt runter egal ob die Tür auf oder zu ist.
Ich hab schon alle möglichen Beispiele ausprobiert aber das Ergebniss ist immer das gleiche. Der Rolladen fährt zu.
Das reading des Kontakt wird angezeigt "closed" oder "open"
Hier das list des DOIF
Internals:
DEF ([17:52])([Tuer_Sensor_Wz: "closed"]) (set RolloWz. closes)
FUUID 61daca62-f33f-63ca-2b9b-b5e2a9e5d705ad57
MODEL FHEM
NAME testrollowz
NOTIFYDEV global
NR 182
NTFY_ORDER 50-testrollowz
STATE cmd_1
TYPE DOIF
VERSION 25946 2022-04-11 08:24:02
READINGS:
2022-04-22 17:54:00 cmd 1.2
2022-04-22 17:54:00 cmd_event timer_1
2022-04-22 17:54:00 cmd_nr 1
2022-04-22 17:54:00 cmd_seqnr 2
2022-04-22 17:53:13 mode enabled
2022-04-22 17:54:00 state cmd_1
2022-04-22 17:54:00 timer_01_c01 23.04.2022 17:54:00
Regex:
accu:
collect:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday)
days:
do:
0:
0 [Tuer_Sensor_Wz: "closed"]
1 set RolloWz. closes
1:
helper:
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
triggerDev
timerevents:
timer_1
timereventsState:
timer_1
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
intervalfunc:
localtime:
0 1650729240
realtime:
0 17:54:00
time:
0 17:54:00
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1650729240:
localtime 1650729240
hash:
uiState:
uiTable:
Attributes:
alias testrollowz
room Wohnzimmer
Hi,
Du solltest vor allem auch diesen Beitrag beachten: https://forum.fhem.de/index.php/topic,71806.0.html
Dieses
DOIF ([17:52])([Tuer_Sensor_Wz: "closed"]) (set RolloWz. closes)
Führt um 17:52 zwei Befehle aus:
[Tuer_Sensor_Wz: "closed"] ist kein Befehl da passiert sicher nur ein Fehler, müsstest Du im Log sehen
set RolloWz. closes schließt alle Rollos die RolloWz heißen und noch irgendein Zeichen im Namen hintenan haben also RolloWz1 RolloWz2 RolloWzA usw.
Siehe auch in deinem List:
do:
0:
0 [Tuer_Sensor_Wz: "closed"]
1 set RolloWz. closes
Was wolltest Du? Diese Bedingung?
([17:52] and [Tuer_Sensor_Wz] eq "closed")
also mach 17:52 etwas wenn der Kontakt geschlossen ist ...
Und der eigentliche Befehl soll wirklich set RolloWz. closes heißen? Ungewöhnlich ... Was ist das für ein Aktor?
Schau Dir doch bitte die vielen Beispiele in der DOIF Doku an.
Gruß Otto
Erstmal Danke dass du versuchst mir zu helfen. DOIF Doku lese ich vorwärts und rückwärts und komme nicht weiter, deshalb stelle ich ja meine Frage hier.
Ich versuch das jetzt schon über eine Woche glaub mir. Nicht alle die hier eine Frage stellen lesen Nicht die CommandRef oder Howto oder suchen nach Beispielen.
Was möchte ich erreichen: Ich möchte dass der Rolladen nicht herunterfährt wenn die Terassentür noch offen ist.
Bisher läuft das mit diesem at Befehl : *{sunset(0,"17:31","22:03")} set RolloWz. closes (Aktor ist ein Eltako)
Nun soll zusätzlich der Türkontakt abgefragt werden damit der Rolladen nur herunter fährt wenn die Tür auch zu ist. Also nicht herunter fährt solange die Tür noch offen ist.
Eine bei mir funktionierende Lösung mit Weekdaytimer, Twilight und HomeMatic HM-SEC-RHS (Tür-/Fenster Drehgriffkontakt) :
defmod Rollo_rechts WeekdayTimer Rollo_rechts {twilight("aidTL","sr_weather","07:29","09:01")}|on 0123456|{twilight("aidTL","ss_weather","17:00","21:20")}|off (Value("hmRHS01") eq "closed")
Vielleicht hilft das weiter.
Oder Du probierst einfach mal "ASC AutoShuttersControl"
LG, Holger
Zitat von: noplease am 22 April 2022, 19:50:30
deshalb stelle ich ja meine Frage hier.
Und meine Erklärung und mein Vorschlag hat Dir nicht gefallen?
Also ich versuche Dir zu erklären um was es geht, Dein Code war irgendwie zusammen geschrieben, es gibt kein ähnliches Beispiel in der Doku.
ZitatBisher läuft das mit diesem at Befehl : *{sunset(0,"17:31","22:03")} set RolloWz. closes (Aktor ist ein Eltako)
Nun soll zusätzlich der Türkontakt abgefragt werden damit der Rolladen nur herunter fährt wenn die Tür auch zu ist. Also nicht herunter fährt solange die Tür noch offen ist.
Wenn Dir DOIF zu kompliziert erscheint, dann mach doch damit weiter was Du schon hast. Dort eben mit Perl Code:
{if (ReadingsVal('Tuer_Sensor_Wz','state','error') eq "closed") {fhem("set RolloWz. closes")}}
Kannst Du so einfach in der FHEM Kommandozeile testen.
Dein einzelnes Device heisst wirklich RolloWz. oder sprichst Du damit mehrere Devices an? Die Bedeutung des Punktes am Ende ist Dir klar?
Kannst Du ein list RolloWz. zeigen?
Nachtrag: hier (https://fhem.de/commandref_DE.html#DOIF_Kombination_von_Ereignis_und_Zeitsteuerung_mit_logischen_Abfragen)wäre die Stelle in der Doku von DOIF die übertragen exakt Deine Aufgabe löst.
Gruß Otto
Guten Morgen
Deine beiden Beispiele haben leider nicht funktioniert.
Nein die Auswirkung des Punktes ist mir nicht klar.
hier ein list RolloWz.
Internals:
DEF 01974AE6
FUUID 5dbdba14-f33f-63ca-aa92-7c4c53f18a6afbcf
IODev USB300
NAME RolloWz.
NR 35
NTFY_ORDER 50-RolloWz.
STATE stop
TYPE EnOcean
OLDREADINGS:
READINGS:
2022-04-16 16:07:35 IODev USB300
2022-04-23 07:01:59 anglePos 0
2022-04-23 07:01:59 endPosition open
2022-04-23 07:01:59 position 0
2022-04-22 17:14:44 state stop
helper:
Attributes:
IODev USB300
alias RolloWz.
comMode confirm
eep A5-3F-7F
manufID 00D
room Wohnzimmer
subDef 00000000
subType manufProfile
webCmd opens:stop:closes
hier das list des Tuerkontaktes
Internals:
DEF aaaaaaaa 13
FUUID 613db613-f33f-63ca-d965-9859ba302defb3c8
IODev ZWDongle_0
LASTInputDev ZWDongle_0
MSGCNT 116
NAME Tuer_Sensor_Wz
NR 177
STATE wakeupInterval 86400 1
TYPE ZWave
ZWDongle_0_MSGCNT 116
ZWDongle_0_RAWMSG 0004000d063105012200bd
ZWDongle_0_TIME 2022-04-23 08:36:40
ZWaveSubDevice no
homeId aaaaaaaa
isWakeUp 1
lastMsgSent 1650686440.10386
nodeIdHex 0d
READINGS:
2022-04-16 16:07:35 IODev ZWDongle_0
2022-04-03 20:31:05 UNPARSED PROPRIETARY 03880336
2022-04-22 19:37:33 alarm AccessControl: Window/Door is closed
2021-09-12 10:11:07 model FIBARO System FGDW002 Door Opening Sensor 2
2021-09-12 10:11:07 modelConfig fibaro/fgdw2.xml
2021-09-12 10:11:07 modelId 010f-0702-1000
2021-09-12 10:11:04 state wakeupInterval 86400 1
2022-04-23 08:36:40 temperature 18.9 C
2022-04-23 06:00:40 timeToAck 0.026
2022-04-23 06:00:40 transmit OK
2022-04-23 06:00:38 wakeup notification
2021-09-12 10:11:08 zwavePlusInfo version:01 role:SleepingReportingSlave node:Z-Wave+Node installerIcon:0c06 userIcon:0c06
Attributes:
IODev ZWDongle_0
alias Tuer_Sensor_Wz
classes ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO APPLICATION_STATUS BATTERY CONFIGURATION CRC_16_ENCAP DEVICE_RESET_LOCALLY FIRMWARE_UPDATE_MD MANUFACTURER_SPECIFIC MULTI_CHANNEL_ASSOCIATION ALARM POWERLEVEL SECURITY SENSOR_MULTILEVEL VERSION WAKE_UP
room Wohnzimmer,ZWave
vclasses ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:4 MANUFACTURER_SPECIFIC:2 MULTI_CHANNEL_ASSOCIATION:3 POWERLEVEL:1 SECURITY:1 SENSOR_MULTILEVEL:5 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2
Für so etwas habe ich das Modul YAAHM geschrieben. Da kann man Zeiten (auch z.B. für den Sonnenuntergang) mit Bedingungen ud Zeitoffsets kombinieren, ohne großartigen Code schreiben zu müssen.
LG
pah
@noplease
please no code without codetags! Der # Knopf über dem :-X Smiley
Meinen allerersten Hinweis hast Du nicht verstanden oder nicht gelesen? :o
Der Punkt hat eine spezielle Bedeutung beim regExp - er steht für ein beliebiges Zeichen - regExp hat eine zentrale Bedeutung bei FHEM. Es ist generell nicht ratsam Punkte in Namen zu verwenden!
Logisch das mein Beispiel nicht funktionieren konnte, Du hast einfach völlig konfuse Informationen geliefert!?
Zitat von: noplease am 22 April 2022, 18:14:49
Das reading des Kontakt wird angezeigt "closed" oder "open"
Ich kann jetzt nicht mal erkennen wann Dein Tuer_Sensor_Wz in welchem
Reading ein
geschlossen signalisiert!
Nochmal mein Code allgemein, Du musst nun die Werte READING und ZUSTAND durch Werte ersetzen die Dein Gerät liefert, wenn die Tür zu ist.
{if (ReadingsVal('Tuer_Sensor_Wz','READING','error') eq "ZUSTAND") {fhem("set RolloWz. closes")}}
Falls es alarm ist, dann wahrscheinlich so:
{if (ReadingsVal('Tuer_Sensor_Wz','alarm','error') eq "AccessControl: Window/Door is closed") {fhem("set RolloWz. closes")}}
Sorry da helfen keine anderen Tools und Module, wenn der Hilfesuchende nicht mal weiß was seine Geräte so liefern und wie er das umsetzen könnte!
Gruß Otto
Nachtrag:
Du hättest mit dem Code (falsch) [Tuer_Sensor_Wz: "closed"] und so richtig [Tuer_Sensor_Wz:"closed"] im DOIF einen Event (https://fhem.de/commandref_modular_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events) abfangen können der das Wort "closed" irgendwo enthält. Allerdings kann man nicht einfach zwei Events miteinander mit und verknüpfen, da zwei Events nicht zur gleichen Zeit vorkommen können. Du kannst also immer nur den Event (in deinem Fall die Zeit) mit der Abfrage eines Zustandes verknüpfen.
([17:52] and [Tuer_Sensor_Wz:alarm] eq "AccessControl: Window/Door is closed")