FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: xsichtasdf am 28 Mai 2018, 21:40:11

Titel: DOIF - Twilight Wert mit Türkontakt
Beitrag von: xsichtasdf am 28 Mai 2018, 21:40:11
Guten Abend zusammen,
ich betreibe bereits Twilight seit geraumer Zeit zum steuern meiner Rollos im Haus.

Nun habe ich die Terrasse erneuert und LED-Spots in diese eingebaut.
Anhand einer HomeMatic Steckdose kann ich die Spots auch steuern und mir daher folgendes Szenario ausgedacht:
- Terassentür ist auf (Kontakt ist im Türgriff - ergo wir sitzen draußen)
- Draußen wird es dunkel (anhand von Twilight bestimmt)
- Spots gehen an.

Das beschriebene Szenario habe ich in folgendem DOIF festgehalten:

#RAW-DEF
defmod terassenlicht_steuerung DOIF (([TC_TWILIGHT:twilight] < 80) and [Fenster_WZ:"on"]) (set Schalter_LED_Terrasse on) DOELSEIF ([Fenster_WZ:"off"]) (set Schalter_LED_Terrasse off)\

attr terassenlicht_steuerung checkReadingEvent 1
attr terassenlicht_steuerung checkall all
attr terassenlicht_steuerung room 01_Konfiguration

setstate terassenlicht_steuerung cmd_2
setstate terassenlicht_steuerung 2018-05-28 21:30:47 Device TC_TWILIGHT
setstate terassenlicht_steuerung 2018-05-28 21:26:01 cmd 2
setstate terassenlicht_steuerung 2018-05-28 21:26:01 cmd_event Fenster_WZ
setstate terassenlicht_steuerung 2018-05-28 21:26:01 cmd_nr 2
setstate terassenlicht_steuerung 2018-05-28 21:26:01 e_Fenster_WZ_events reading: off
setstate terassenlicht_steuerung 2018-05-28 21:30:47 e_TC_TWILIGHT_twilight 66.8
setstate terassenlicht_steuerung 2018-05-18 14:09:37 mode enabled
setstate terassenlicht_steuerung 2018-05-28 21:26:01 state cmd_2


Das funktioniert soweit auch gut, jedoch stolpere ich in derzeit über folgendes Fehlerbild.
Die Tür ist offen, bevor der Twilight-Wert ([TC_TWILIGHT:twilight] < 80) ist.
Nach Zeitraum x ist der Wert <80, die Tür ist weiterhin offen aber das Licht geht nicht an.

Erst wenn ich die Tür nun händisch schließe und wieder öffne, wird das Licht aktiviert.

Habe bereits das DOIF mehrfach umgestellt, jedoch komme ich nicht weiter.

Für Feedback wäre ich wirklich dankbar!


VG
Xsicht

Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: mumpitzstuff am 28 Mai 2018, 22:45:42
Wenn die States exakt deinem Fehlerbild entsprechen, dann ist meines Erachtens bei Fenster_WZ on und off genau vertauscht.

Deine States sagen aus das Twilight < 80 ist und das Fenster auf off steht (offen?). Damit landest du genau im DOELSEIF. Wenn du jetzt die Tür schliesst, dann geht der Status des Fensters auf on und das Licht geht an, weil twilight < 80. Das wäre genau dein Fehlerbild.

Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: CoolTux am 29 Mai 2018, 06:08:52
Zitat von: xsichtasdf am 28 Mai 2018, 21:40:11
Guten Abend zusammen,
ich betreibe bereits Twilight seit geraumer Zeit zum steuern meiner Rollos im Haus.

Nun habe ich die Terrasse erneuert und LED-Spots in diese eingebaut.
Anhand einer HomeMatic Steckdose kann ich die Spots auch steuern und mir daher folgendes Szenario ausgedacht:
- Terassentür ist auf (Kontakt ist im Türgriff - ergo wir sitzen draußen)
- Draußen wird es dunkel (anhand von Twilight bestimmt)
- Spots gehen an.

Das beschriebene Szenario habe ich in folgendem DOIF festgehalten:

#RAW-DEF
defmod terassenlicht_steuerung DOIF (([TC_TWILIGHT:twilight] < 80) and [Fenster_WZ:"on"]) (set Schalter_LED_Terrasse on) DOELSEIF ([Fenster_WZ:"off"]) (set Schalter_LED_Terrasse off)\

attr terassenlicht_steuerung checkReadingEvent 1
attr terassenlicht_steuerung checkall all
attr terassenlicht_steuerung room 01_Konfiguration

setstate terassenlicht_steuerung cmd_2
setstate terassenlicht_steuerung 2018-05-28 21:30:47 Device TC_TWILIGHT
setstate terassenlicht_steuerung 2018-05-28 21:26:01 cmd 2
setstate terassenlicht_steuerung 2018-05-28 21:26:01 cmd_event Fenster_WZ
setstate terassenlicht_steuerung 2018-05-28 21:26:01 cmd_nr 2
setstate terassenlicht_steuerung 2018-05-28 21:26:01 e_Fenster_WZ_events reading: off
setstate terassenlicht_steuerung 2018-05-28 21:30:47 e_TC_TWILIGHT_twilight 66.8
setstate terassenlicht_steuerung 2018-05-18 14:09:37 mode enabled
setstate terassenlicht_steuerung 2018-05-28 21:26:01 state cmd_2


Das funktioniert soweit auch gut, jedoch stolpere ich in derzeit über folgendes Fehlerbild.
Die Tür ist offen, bevor der Twilight-Wert ([TC_TWILIGHT:twilight] < 80) ist.
Nach Zeitraum x ist der Wert <80, die Tür ist weiterhin offen aber das Licht geht nicht an.

Erst wenn ich die Tür nun händisch schließe und wieder öffne, wird das Licht aktiviert.

Habe bereits das DOIF mehrfach umgestellt, jedoch komme ich nicht weiter.

Für Feedback wäre ich wirklich dankbar!


VG
Xsicht

Das Problem ist das Du bei Fenster ein Event abfragst. Du musst den Status abfragen.

[Fenster_WZ:state] eq "on"
Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: xsichtasdf am 29 Mai 2018, 08:50:07
Zitat von: mumpitzstuff am 28 Mai 2018, 22:45:42
Wenn die States exakt deinem Fehlerbild entsprechen, dann ist meines Erachtens bei Fenster_WZ on und off genau vertauscht.

Deine States sagen aus das Twilight < 80 ist und das Fenster auf off steht (offen?). Damit landest du genau im DOELSEIF. Wenn du jetzt die Tür schliesst, dann geht der Status des Fensters auf on und das Licht geht an, weil twilight < 80. Das wäre genau dein Fehlerbild.

Hi, vielen Dank für deine Antwort.
Ich finde die Bezeichnung bei den Kontakten auch manchmal verwirrend, ist aber in diesem Fall tatsächlich korrekt.
Wenn die Tür geschlossen ist, befindet sie sich im Status "off", wenn offen im Status "on".

Zitat von: CoolTux am 29 Mai 2018, 06:08:52
Das Problem ist das Du bei Fenster ein Event abfragst. Du musst den Status abfragen.

[Fenster_WZ:state] eq "on"

Vielen Dank! Ich werde das heute umgehend ausprobieren und hier das Feedback posten.
Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: xsichtasdf am 29 Mai 2018, 21:23:35
Nabend,
Das Problem besteht leider immer noch, hat sich dahin gehend jedoch verschärft, da der gesamte DoIf nun gar nicht mehr funktioniert.
Er erkennt anscheinend den state nicht.

defmod terassenlicht_steuerung DOIF (([TC_TWILIGHT:twilight] < 80) and ([Fenster_WZ:state] eq "on")) (set Schalter_LED_Terrasse on) DOELSEIF ([Fenster_WZ:"off"]) (set Schalter_LED_Terrasse off)\

attr terassenlicht_steuerung checkReadingEvent 1
attr terassenlicht_steuerung checkall all
attr terassenlicht_steuerung room 01_Konfiguration

setstate terassenlicht_steuerung cmd_2
setstate terassenlicht_steuerung 2018-05-29 21:20:51 Device TC_TWILIGHT
setstate terassenlicht_steuerung 2018-05-29 21:17:46 cmd 2
setstate terassenlicht_steuerung 2018-05-29 21:17:46 cmd_event Fenster_WZ
setstate terassenlicht_steuerung 2018-05-29 21:17:46 cmd_nr 2
setstate terassenlicht_steuerung 2018-05-29 21:18:45 e_Fenster_WZ_events reading: on
setstate terassenlicht_steuerung 2018-05-29 21:20:51 e_TC_TWILIGHT_twilight 74.4
setstate terassenlicht_steuerung 2018-05-29 21:17:17 mode enabled
setstate terassenlicht_steuerung 2018-05-29 21:17:46 state cmd_2


Eine Idee, wieso es nicht mehr klappt?
Danke und VG
Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: Damian am 29 Mai 2018, 21:33:08
Zitat von: xsichtasdf am 29 Mai 2018, 21:23:35
Nabend,
Das Problem besteht leider immer noch, hat sich dahin gehend jedoch verschärft, da der gesamte DoIf nun gar nicht mehr funktioniert.
Er erkennt anscheinend den state nicht.

defmod terassenlicht_steuerung DOIF (([TC_TWILIGHT:twilight] < 80) and ([Fenster_WZ:state] eq "on")) (set Schalter_LED_Terrasse on) DOELSEIF ([Fenster_WZ:"off"]) (set Schalter_LED_Terrasse off)\

attr terassenlicht_steuerung checkReadingEvent 1
attr terassenlicht_steuerung checkall all
attr terassenlicht_steuerung room 01_Konfiguration

setstate terassenlicht_steuerung cmd_2
setstate terassenlicht_steuerung 2018-05-29 21:20:51 Device TC_TWILIGHT
setstate terassenlicht_steuerung 2018-05-29 21:17:46 cmd 2
setstate terassenlicht_steuerung 2018-05-29 21:17:46 cmd_event Fenster_WZ
setstate terassenlicht_steuerung 2018-05-29 21:17:46 cmd_nr 2
setstate terassenlicht_steuerung 2018-05-29 21:18:45 e_Fenster_WZ_events reading: on
setstate terassenlicht_steuerung 2018-05-29 21:20:51 e_TC_TWILIGHT_twilight 74.4
setstate terassenlicht_steuerung 2018-05-29 21:17:17 mode enabled
setstate terassenlicht_steuerung 2018-05-29 21:17:46 state cmd_2


Eine Idee, wieso es nicht mehr klappt?
Danke und VG

Benutzt du auch die aktuelle DOIF-Version?

# $Id: 98_DOIF.pm 16755 2018-05-18 13:47:23Z Damian $
Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: xsichtasdf am 29 Mai 2018, 21:52:43
Zitat von: Damian am 29 Mai 2018, 21:33:08
Benutzt du auch die aktuelle DOIF-Version?

# $Id: 98_DOIF.pm 16755 2018-05-18 13:47:23Z Damian $

Hi, Grade zur Sicherheit nochmal geupdated - Fehlerbild unverändert.

Version: 98_DOIF.pm        16755 2018-05-18 13:47:23Z Damian

Ggf. Hilft es als Hinweis:
Die Zustandsprüfung der Fensterkontakte erfolgt mit einem Arduino und Firmata.

So sieht das die Konfiguration für sie Terrassentür aus:
defmod Fenster_WZ FRM_IN 40
attr Fenster_WZ IODev FIRMATA
attr Fenster_WZ alarmDevice Sensor
attr Fenster_WZ alarmSettings alarm6,|Fenster_WZ.*on|Terassentür|on
attr Fenster_WZ alias Fenster_WZ
attr Fenster_WZ internal-pullup on
attr Fenster_WZ room Wohnzimmer
attr Fenster_WZ stateFormat reading

setstate Fenster_WZ off
setstate Fenster_WZ 2018-05-29 21:47:56 reading off
setstate Fenster_WZ 2018-04-26 19:38:12 state Initialized


Hier ist der state 'initialized' klappt es deswegen nicht?
Wenn ja, wie löse ich das Thema denn dann? ???
VG
Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: Damian am 29 Mai 2018, 21:57:45
Zitat von: xsichtasdf am 29 Mai 2018, 21:52:43
Hi, Grade zur Sicherheit nochmal geupdated - Fehlerbild unverändert.

Version: 98_DOIF.pm        16755 2018-05-18 13:47:23Z Damian

Ggf. Hilft es als Hinweis:
Die Zustandsprüfung der Fensterkontakte erfolgt mit einem Arduino und Firmata.

So sieht das die Konfiguration für sie Terrassentür aus:
defmod Fenster_WZ FRM_IN 40
attr Fenster_WZ IODev FIRMATA
attr Fenster_WZ alarmDevice Sensor
attr Fenster_WZ alarmSettings alarm6,|Fenster_WZ.*on|Terassentür|on
attr Fenster_WZ alias Fenster_WZ
attr Fenster_WZ internal-pullup on
attr Fenster_WZ room Wohnzimmer
attr Fenster_WZ stateFormat reading

setstate Fenster_WZ off
setstate Fenster_WZ 2018-05-29 21:47:56 reading off
setstate Fenster_WZ 2018-04-26 19:38:12 state Initialized


Hier ist der state 'initialized' klappt es deswegen nicht?
Wenn ja, wie löse ich das Thema denn dann? ???
VG

on/off steht nicht in state sondern im Reading namens "reading". Das hast du offenbar durch stateFormat abgeändert.

Abgesehen davon sind die beiden Attribute

attr terassenlicht_steuerung checkReadingEvent 1
attr terassenlicht_steuerung checkall all


in deiner Definition nicht sinnvoll.
Titel: Antw:DOIF - Twilight Wert mit Türkontakt
Beitrag von: xsichtasdf am 30 Mai 2018, 08:07:53
Zitat von: Damian am 29 Mai 2018, 21:57:45
on/off steht nicht in state sondern im Reading namens "reading". Das hast du offenbar durch stateFormat abgeändert.

Abgesehen davon sind die beiden Attribute

attr terassenlicht_steuerung checkReadingEvent 1
attr terassenlicht_steuerung checkall all


in deiner Definition nicht sinnvoll.

Habe die beiden Attribute gelöscht.
Tatsächlich wurde der Kontakt so in FHEM durch Firmata automatisch angelegt. Händisch habe ich daran nichts modifiziert.

Ich teste, ob es ohne die beiden Attribute nun funktioniert.
Hättest du denn einen Lösungsansatz, wie ich den Kontakt "korrigieren" kann?