Notify für Fensterkontakte

Begonnen von holzwurm83, 27 Juli 2014, 20:29:02

Vorheriges Thema - Nächstes Thema

holzwurm83

Hallo zusammen,

ich habe mir pro Fenster zwei Sensoren eingebaut mit denen ich den Status der Fenster abfragen und darstellen möchte.

Wollte dafür ein Dummy und eine notify anlegen. Bei dem notify tue ich mir noch etwas schwer und hoffe auf eure Unterstützung.

Folgendes muss immer abgefragt werden um den Status zu definieren:

Readings der Sensoren:

Sensor 1 = 51200 & Sensor 2 = 0  => Fenster ist zu
Sensor 1 = 0 & Sensor 2 = 51200  => Fenster ist gekippt
Sensor 1 = 0 & Sensor 2 = 0  => Fenster ist offen

Wenn es dafür einen einfacheren und besseren weg gibt bin ich dafür offen!

Danke für eure Hilfe!
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

justme1968

du kannst dazu seine structure verwenden in der du beide sensoren zusammen fasst. mit den _map attributen mappst du die beiden zustände des  einen auf closed und tilted und die des anderen auf closed und open.

in der structure verwendest du clientstate_priority um die rangfolge von closed, tilted und open festzulegen.

ein beispiel findest du hier:  http://forum.fhem.de/index.php?topic=20404.msg139577#msg139577 und hier noch eins: http://forum.fhem.de/index.php/topic,23495.msg167659.html#msg167659

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

holzwurm83

Hallo Andre,

danke für das Feedback. Sollte ja eigentlich auch einfach gehen, aber irgendwie wohl nicht bei mir. :) Die Device kann ich nur mit eventMap mappen. Mit Fenster_Map ändert sich da nichts bei mir.

In der Stucture bekomme ich immer nur undefined.

Kann es sein das es daran liegt, dass der Sensor nur ein "sensor" Reading erzeugt und kein "state"

Hier noch meine cfg:

[define HMW_Sen_SC_12_DR_JEQ0545703_03 HM485 000094E5_03
attr HMW_Sen_SC_12_DR_JEQ0545703_03 Fenster Fenster_WZ_OST
attr HMW_Sen_SC_12_DR_JEQ0545703_03 Fenster_map sensor_51200:closed sensor_0:tilied
attr HMW_Sen_SC_12_DR_JEQ0545703_03 firmwareVersion 3.01
attr HMW_Sen_SC_12_DR_JEQ0545703_03 group Fenster
attr HMW_Sen_SC_12_DR_JEQ0545703_03 model HMW_Sen_SC_12_DR
attr HMW_Sen_SC_12_DR_JEQ0545703_03 room HM485
attr HMW_Sen_SC_12_DR_JEQ0545703_03 serialNr JEQ0545703
attr HMW_Sen_SC_12_DR_JEQ0545703_03 subType sensor
define HMW_Sen_SC_12_DR_JEQ0545703_04 HM485 000094E5_04
attr HMW_Sen_SC_12_DR_JEQ0545703_04 Fenster Fenster_WZ_OST
attr HMW_Sen_SC_12_DR_JEQ0545703_04 Fenster_map sensor_51200:open sensor_0:closed
attr HMW_Sen_SC_12_DR_JEQ0545703_04 firmwareVersion 3.01
attr HMW_Sen_SC_12_DR_JEQ0545703_04 group Fenster
attr HMW_Sen_SC_12_DR_JEQ0545703_04 model HMW_Sen_SC_12_DR
attr HMW_Sen_SC_12_DR_JEQ0545703_04 room HM485
attr HMW_Sen_SC_12_DR_JEQ0545703_04 serialNr JEQ0545703
attr HMW_Sen_SC_12_DR_JEQ0545703_04 subType sensor


define Fenster_WZ_OST structure Fenster HMW_Sen_SC_12_DR_JEQ0545703_03 HMW_Sen_SC_12_DR_JEQ0545703_04
attr Fenster_WZ_OST clientstate_behavior relative
attr Fenster_WZ_OST clientstate_priority open tilted closed
attr Fenster_WZ_OST group Fenster
attr Fenster_WZ_OST room Wohnzimmer

- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

justme1968

ja. structure arbeitet hier nur mit state.

schau mal ob du mit stateFormat den state vom reading sensor nach STATE bekommst und es dann geht.

wenn nicht kannst du je einen readingsProxy dafür verwenden. so wie im 1-wire beispiel.

einfacher im sinn von weniger devices und weniger code geht es wenn du direkt mit notifys arbeitest und alles von hand machst.

der weg über structure und die nötige vorbereitung ist nicht unbedingt komplizierter wenn du genau weisst was wo warum passiert :)

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Damian

Zitat von: justme1968 am 28 Juli 2014, 20:28:45
ja. structure arbeitet hier nur mit state.

schau mal ob du mit stateFormat den state vom reading sensor nach STATE bekommst und es dann geht.

wenn nicht kannst du je einen readingsProxy dafür verwenden. so wie im 1-wire beispiel.

einfacher im sinn von weniger devices und weniger code geht es wenn du direkt mit notifys arbeitest und alles von hand machst.

der weg über structure und die nötige vorbereitung ist nicht unbedingt komplizierter wenn du genau weisst was wo warum passiert :)

gruss
  andre

Oder einfach so:

define di_Fenster
DOIF ([Sensor1:sensor] == 51200 and [Sensor2:sensor] == 0)
  (set Fenster zu)
DOELSEIF ([Sensor1:sensor] == 0 and [Sensor2:sensor] == 51200)
  (set Fenster gekippt)
DOELSEIF ([Sensor1:sensor] == 0 and [Sensor2:sensor] == 0)
  (set Fenster offen)


Fenster ist hier ein dummy. "sensor" soll der Reading sein, wo deine Information steht.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holzwurm83

Hallo Jungs,

danke schon mal für eure Hilfe!

@ Andre:
Zitatschau mal ob du mit stateFormat den state vom reading sensor nach STATE bekommst und es dann geht.
wie meinst du das genau? Meinst du vom Sensor in die Structure, oder im Sensor selbst? Ein STATE ist im sensor vorhanden und das Sensor reading wird dort auch geschrieben.

@ Damian:
Habe deine Variante auch getestet. Der Staus zu und gekippt funktionieren. Nur der Status offen nicht.
define Fenster2 dummy
attr Fenster2 room Wohnzimmer
define di_Fenster DOIF ([HMW_Sen_SC_12_DR_JEQ0545703_05:sensor] == 51200 and [HMW_Sen_SC_12_DR_JEQ0545703_06:sensor] == 0)   (set Fenster2 zu)
DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_05:sensor] == 0 and [HMW_Sen_SC_12_DR_JEQ0545703_06:sensor] == 51200)   (set Fenster2 gekippt)
DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_05:sensor] == 0 and [HMW_Sen_SC_12_DR_JEQ0545703_06:sensor] == 0)   (set Fenster2 offen)
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Damian

Zitat von: holzwurm83 am 30 Juli 2014, 20:21:11
Hallo Jungs,

danke schon mal für eure Hilfe!

@ Andre:wie meinst du das genau? Meinst du vom Sensor in die Structure, oder im Sensor selbst? Ein STATE ist im sensor vorhanden und das Sensor reading wird dort auch geschrieben.

@ Damian:
Habe deine Variante auch getestet. Der Staus zu und gekippt funktionieren. Nur der Status offen nicht.
define Fenster2 dummy
attr Fenster2 room Wohnzimmer
define di_Fenster DOIF ([HMW_Sen_SC_12_DR_JEQ0545703_05:sensor] == 51200 and [HMW_Sen_SC_12_DR_JEQ0545703_06:sensor] == 0)   (set Fenster2 zu)
DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_05:sensor] == 0 and [HMW_Sen_SC_12_DR_JEQ0545703_06:sensor] == 51200)   (set Fenster2 gekippt)
DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_05:sensor] == 0 and [HMW_Sen_SC_12_DR_JEQ0545703_06:sensor] == 0)   (set Fenster2 offen)

Warum benennst du dir die Sensoren nicht um, z. B. : "rename MW_Sen_SC_12_DR_JEQ0545703_05 Sensor5", dann hast du weniger zu tippen.

Wenn die ersten Fälle funktionieren, dann muss auch der dritte funktionieren, wenn die Zustände der Sensoren so sind, wie du annimmst, es sei denn da steht noch was anderes außer 0.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holzwurm83

ZitatWarum benennst du dir die Sensoren nicht um, z. B. : "rename MW_Sen_SC_12_DR_JEQ0545703_05 Sensor5", dann hast du weniger zu tippen.
Da bin ich Wohl zu faul. ;D Ich kopier den Namen einmal beim anlegen und dann brauche ich ihn im gründe auch nicht.

Zitates sei denn da steht noch was anderes außer 0
Denkfehler! Es steht 51200 bei beiden und nicht 0  :)
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Damian

Zitat von: holzwurm83 am 30 Juli 2014, 22:06:29
Da bin ich Wohl zu faul. ;D Ich kopier den Namen einmal beim anlegen und dann brauche ich ihn im gründe auch nicht.
Denkfehler! Es steht 51200 bei beiden und nicht 0  :)

Zukünftig wirst du auch keinen Dummy für reine Anzeige brauchen, den Zustand kannst du im Modul selbst definieren, dann wird schon ausreichen:

define di_Fenster
DOIF ([Sensor1:sensor] == 51200 and [Sensor2:sensor] == 0)
DOELSEIF ([Sensor1:sensor] == 0 and [Sensor2:sensor] == 51200)
DOELSEIF ([Sensor1:sensor] == 51200 and [Sensor2:sensor] == 51200)

attr di_Fenster cmdState Fenster zu|Fenster gekippt|Fenster offen


Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holzwurm83

Das ist ja cool. Das geht dann mit der nächsten Version? Ich muss schon sagen, deine Module sind sehr User freundlich.
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Puschel74

Hallo,

Zitat von: holzwurm83 am 31 Juli 2014, 19:38:34
Ich muss schon sagen, deine Module sind sehr User freundlich.

Aber nur für User die nicht herkömmlich aka "zu Fuß" Programmieren wollen  ;D

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

ZitatIch muss schon sagen, deine Module sind sehr User freundlich.
ZitatAber nur für User die nicht herkömmlich aka "zu Fuß" Programmieren wollen

Ich kann mir nicht helfen, aber Perl Programmierer basteln auch nicht alles zu Fuß sondern benutzen Module wo es geht.
Macht die Programmierung schneller und weniger fehleranfällig.
Dafür das das Endprodukt langsamer ist, gibt es schnellere CPUs und RAM.

Ich verstehe nicht warum Perl Module toll sind, warum fhem viele tolle Module hat, und ausgerechnet ein fhem Modul welches die fhem Programmierung vereinfacht schlecht sein soll?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

marvin78

Es hat doch niemand gesagt, dass das schlecht ist. Trotzdem erledige ich viele dieser Aufgaben lieber mit einer Perl sub in der myUtils o.ä. weil ich da noch flexibler bin.

Das heißt nicht, dass DOIF per se schlecht ist. Es ist bloß nicht für jeden gleich gut geeignet. Mehr hat Puschel74 nicht gesagt.

holzwurm83

Hallo Damian,

ist das schon möglich?

Zukünftig wirst du auch keinen Dummy für reine Anzeige brauchen
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Damian

Zitat von: holzwurm83 am 31 August 2014, 23:12:19
Hallo Damian,

ist das schon möglich?

Zukünftig wirst du auch keinen Dummy für reine Anzeige brauchen

Ja.

Für weitere Infos siehe: http://fhem.de/commandref_DE.html#DOIF

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF