Hauptmenü

Aussperrschutz Rollo

Begonnen von noplease, 22 April 2022, 18:14:49

Vorheriges Thema - Nächstes Thema

noplease

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

Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

noplease

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.

ph1959de

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.
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

gent

Oder Du probierst einfach mal "ASC AutoShuttersControl"

LG, Holger
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

Otto123

#5
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 wäre die Stelle in der Doku von DOIF die übertragen exakt Deine Aufgabe löst.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

noplease

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

Prof. Dr. Peter Henning

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

Otto123

#8
@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 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")
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz