Fibaro Flood Sensor

Begonnen von pi-user, 14 Mai 2017, 19:51:48

Vorheriges Thema - Nächstes Thema

pi-user

#15
Hier ist das Ergebnis von list <Device>


Internals:
   DEF        c720bd0b 4
   IODev      ZWDongle
   NAME       Wassermelder.HW
   NR         154
   STATE      wakeupInterval 86400 1
   TYPE       ZWave
   ZWaveSubDevice no
   homeId     c720bd0b
   nodeIdHex  04
   Readings:
     2017-05-15 06:18:13   CMD             ZW_APPLICATION_UPDATE
     2017-05-15 06:19:06   alarm           HomeSecurity: Event cleared: Previous Events cleared
     2017-05-14 19:36:44   battery         100 %
     2017-05-14 20:18:52   model           FIBARO System FGFS101 Zwave+ Flood Sensor
     2017-05-14 20:18:52   modelConfig     fibaro/fgfs101zw5.xml
     2017-05-14 20:18:52   modelId         010f-0b01-1002
     2017-05-14 19:36:44   powerlvl        current 0 remain 0
     2017-05-14 20:18:50   state           wakeupInterval 86400 1
     2017-05-15 07:08:04   temperature     23.21 C
     2017-05-15 06:18:24   timeToAck       0.028
     2017-05-15 06:18:24   transmit        OK
     2017-05-15 06:18:22   wakeup          notification
Attributes:
   IODev      ZWDongle
   classes    ZWAVEPLUS_INFO APPLICATION_STATUS ASSOCIATION ASSOCIATION_GRP_INFO BASIC BATTERY CONFIGURATION CRC_16_ENCAP DEVICE_RESET_LOCALLY FIRMWARE_UPDATE_MD MANUFACTURER_SPECIFIC MULTI_CHANNEL_ASSOCIATION ALARM POWERLEVEL SECURITY SENSOR_ALARM SENSOR_MULTILEVEL VERSION WAKE_UP
   room       ZWave
   vclasses   ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BASIC:1 BATTERY:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:3 MANUFACTURER_SPECIFIC:2 MULTI_CHANNEL_ASSOCIATION:2 POWERLEVEL:1 SECURITY:1 SENSOR_ALARM:1 SENSOR_MULTILEVEL:5 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2



krikan

Du hast kein Reading basicSet, weil der Sensor das nicht mehr im Standard an den Controller schickt. Das wird bei Deinem Sensor über eine andere Command Class signalisiert.

Letztlich hast Du (mindestens) 2 Lösungswege:
a)
Controller in Assogroup 2 des Sensors aufnehmen. Dann bekommt der Controller laut Doku des Sensors zusätzlich die Befehle mit der Command Class BASIC und Du kannst so wie beim "alten" Sensor stateFormat setzen. Diese einfach anmutende Lösung empfehle ich ausdrücklich nicht, da unnötiger Funkverkehr verursacht wird. Gefahr von unnötigen Funkkollisionen.
b)
attr <device> extendedAlarmReadings 1
setzen. Einen Testalarm auslösen, damit man die Events für Alarm und Ende Alarm kennt.
In stateFormat das passend umsetzen, wie beispielsweise hier: https://wiki.fhem.de/wiki/Z-Wave-PHI_PST02-1A-T%C3%BCr-,_Bewegungs-,_Helligkeits-,_Temperatursensor#STATE_mit_open.2Fclosed_anzeigen oder hier Infos zu Events liefern.

pi-user

Hallo krikan,

ich danke Dir. :) Ich werde heute Abend probieren.

pi-user

Ich habe gerade getestet. Die Logdatei sieht nun so aus:

2017.05.15 19:27:49 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 456) line 1.
2017.05.15 19:27:49 3: eval: Wassermelder.HW.Alarm: warning in condition c01
2017.05.15 19:28:13 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 458) line 1.
2017.05.15 19:28:13 3: eval: Wassermelder.HW.Alarm: warning in condition c01
2017.05.15 19:32:44 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 468) line 1.
2017.05.15 19:32:44 3: eval: Wassermelder.HW.Alarm: warning in condition c01
2017.05.15 19:32:51 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 470) line 1.
2017.05.15 19:32:51 3: eval: Wassermelder.HW.Alarm: warning in condition c01
2017.05.15 19:33:15 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 472) line 1.
2017.05.15 19:33:15 3: eval: Wassermelder.HW.Alarm: warning in condition c01
2017.05.15 19:33:22 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 474) line 1.
2017.05.15 19:33:22 3: eval: Wassermelder.HW.Alarm: warning in condition c01
2017.05.15 19:33:32 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 476) line 1.
2017.05.15 19:33:32 3: eval: Wassermelder.HW.Alarm: warning in condition c01


Was ist das denn?

pi-user

Es gibt ein neues Reading "alarm_Water". Bitte siehe das Bild. Ich kann aber damit nicht viel anfangen.

pi-user

Ich habe die Lösung :)

define Wassermelder notify Wassermelder.HW:alarm..Water.*

Wenn der Wassermelder mit Wasser in Berührung kommt, dann bekomme ich eine Benachrichtigung. Soweit so gut. :) Aber wenn ich den Wassermelder vom Wasser befreie, dann bekommt ich wieder die gleiche Meldung. Warum bekomme ich zwei Meldungen?

tomspatz

#21
ZitatWarum bekomme ich zwei Meldungen?
Weil der Flood Sensor zwei Alarme generiert.
Beispiel:
2016-10-22 14:19:00 ZWave WasserSensorKueche alarm: Water: Leak detected - Unknown Location
2016-10-22 14:19:03 ZWave WasserSensorKueche alarm: Water: Event cleared: unknown event 0

Jeweils wenn wasser detektert wird und dann wieder wenn es trocken wird.
Dein notify triggert immer auf beide.
Probiere es nur auf Leak zu Triggern.

Event Monitor ist dein Freund ;)

btw:
get Wassermelder.HW configAll
Liefert dir alle Parameter die das jeweilige device kann.

LG
Tom

pi-user

Oh, da hast Du Recht.

Ich habe so probiert, aber ohne Erfolg:

define Wassermelder notify Wassermelder.HW:alarm..Water.Leak

pi-user

Es hat leider nicht mit

define Wassermelder notify Wassermelder.HW:alarm..Water.*Leak

funktioniert! Aus diesem Grund habe ich mein Problem so gelöst:

define Wassermelder notify Wassermelder.HW:alarm..Water.* {\
if( lc($EVTPART2) eq "leak" ) {\
fhem (<Nachricht schicken> );;\
}\
}


Ich wollte eigentlich ungern eine if Abfrage einbauen! Vielleicht habt ihr noch eine Idee, wie man auf Leak Event richtig reagiert. Danke.

tomspatz

notify ist leider nicht mein Freund, schau in den Event Monitor und NUR triggere NUR auf Leak.
https://fhem.de/commandref_DE.html#notify

LG
Tom

krikan

Soll jetzt eigentlich der STATE geändert werden oder ist das Ziel ein notify zu erstellen!?  :-\
Sorry, bin etwas verwirrt.  :-[

define Wassermelder notify Wassermelder.HW:alarm..Water..Leak.* {\

Sollte in Trockenübung auf Alarm-Event triggern, wenn nicht "attr <device> extendedAlarmReadings 1" gesetzt ist.


pi-user

>Soll jetzt eigentlich der STATE geändert werden oder ist das Ziel ein notify zu erstellen!?
Wenn ich irgendwie schaffe, um den STATE zu ändern, muss ich trotzdem notify verwenden, um benachrichtigt zu werden! Z.B.

define WassermelderNotify notify Wassermelder.HW:.* {\
if((ReadingsVal("Wassermelder.HW",<STATE>,"") eq  "XYZ")) {\
//bla bla
}\
}


Also, ich brauche so oder so ein notify. Ich vermute es zumindest.  ???

tomspatz

Jetzt probiere ich es zu letzten mal SORRY auch wenn das jetzt vom Start abweicht.

Zum dritten male NUR auf Leak Triggern.
Mein funktionierendes DOIF dafür sieht so aus:
defmod WasserleckBadAlarm DOIF ([WasserSensorBad:alarm] =~ "Leak") (set PushBenachrichtigung msg 'Wasser Sensor Bad' 'Wasserrohrbruch !')
Wobei du jetzt das device und die Benachrichtigung anpassen musst.

Und STATE muss nicht umgebogen werden.
SORRY krikan  ;)

LG
Tom


pi-user

Hallo Tom,

danke. Ich werde es probieren. Ich habe aber eine kleine Frage. Wie wird DOIF ausgelöst? Das ist doch kein notify. Oder ist es eine Schleife, die ständig läuft und prüft? Danke.

krikan

Zitat von: tomspatz am 16 Mai 2017, 10:44:17
Und STATE muss nicht umgebogen werden.
Für ein notify/DOIF auf einen Alarm oder sonstiges Ereignis des Sensors ist das Setzen von stateFormat natürlich nicht notwendig. Aber ohne stateFormat wird sich "wakeupInterval 86400 1" in STATE vermutlich nicht wirklich erledigen. Halte mich jetzt aber hier zurück, da ich wohl zu verwirrt bin...  :-X