Hallo zusammen,
ich habe heute den Wassermelder von Fibaro unter fhem eingebunden. Normalerweise muss das Attribut state in Readings on oder off zeigen. Zurzeit zeigt der state aber folgendes:
state wakeupInterval 86400 1
Ich habe den Wassermelder mit etwas Wasser zum Singen gebracht, aber in der fhem Logdatei passiert gar nichts! Wann wird sich der Status ändern?
Vielen Dank im Voraus.
https://wiki.fhem.de/wiki/Z-Wave#Warum_bleibt_der_Status_.28STATE.29_des_neu_inkludierten_Ger.C3.A4tes_dauerhaft_auf_.22associationAdd_.3CassociationGroup.3E_.3CCtrlNodeId.3E.22_stehen.3F gilt hier analog.
Es gibt im Übrigen kein Attribut state.
Es gibt ein Reading state, ein Internal STATE und ein Attribut stateFormat.
Gruß, Christian
Danke, aber ich werde irgendwie mit stateFormat nicht schlau!?! Wie bekomme ich mit dem Readings State hin? ich habe auch andere Z-Wave Sensoren eingebunden und sie gaben auf Anhieb funktioniert.
Wie sieht der Befehl dafür aus?
https://fhem.de/commandref.html#stateFormat
Mehr kann ich Dir leider nur schreiben, wenn Du mehr Infos lieferst (bspw. "list <device>"). Kenne den Sensor nicht und habe keine Ahnung, was der schickt.
Bin noch noch nicht einmal sicher, ob insbesondere die Assoziation erfolgreich war. Hast Du die mit "get <device> associationAll" kontrolliert?
Ich habe get <device> associationAll" ausgeführt. Ergebnis: Working in Background
Der Z-Wave Dongle hat aber den Wassermelder registriert. Ich muss nur irgendwie den State so korrigieren, dass er on oder off anzeigt. Schade, dass das Ganze nicht einfach beim Inkludieren automatisch stattfindet!
Zitat von: pi-user am 14 Mai 2017, 20:29:36
Ich habe get <device> associationAll" ausgeführt. Ergebnis: Working in Background
Dann wecke ihn manuell auf, damit es beim Sensor abegfragt wird.
Zitat
Der Z-Wave Dongle hat aber den Wassermelder registriert.
Wenn die Assoziation und die Konfiguration stimmt ist alles ok...
Wenn nicht, was ich aus der schwammigen Beschreibung "Ich habe den Wassermelder mit etwas Wasser zum Singen gebracht, aber in der fhem Logdatei passiert gar nichts!" befürchte, dann hilft momentan noch kein stateFormat
ZitatIch muss nur irgendwie den State so korrigieren, dass er on oder off anzeigt.
Das ist mir schon klar; nur kann ich Dir nicht helfen, wenn ich keine Ahnung habe, was der Sensor bei einem Alarm liefert. Dann musst Du auf jemanden warten, der den Sensor auch hat. Wobei es den Sensor in 2 komplett unterschiedlichen Versionen gibt und Du nicht verraten hast, welchen Du hast.
Fazit: Bitte mehr Fakten.. :)
PS: https://wiki.fhem.de/wiki/Z-Wave#Welche_Infos_sollten_Anfragen_im_ZWave-Forum_enthalten.3F
Danke. Ich werde morgen nachschauen, welche Version ich habe.
Ich steuere meinen Sensor wie folgt an:
define Alarm_Waschraum_Wassersensor_Alarm DOIF ([Waschraum_Wassersensor_Alarm:basicSet] > 0)\
(\
set Sonos_Wohnzimmer Speak 50 de Der Sensor im Waschraum meldet Wasser. Bitte in den Keller gehen und kontrollieren!;;\
{email('xxx@xxx.net','Alarm: Wassersensor','Der Sensor im Waschraum meldet Wasser. Bitte in den Keller gehen und kontrollieren!')}\
)
attr Alarm_Waschraum_Wassersensor_Alarm repeatcmd 120
Hallo item,
ich werde es probieren. Ich habe eigentlich immer notify verwendet!
Moldel: FIBARO System FGFS101 Zwave+ Flood Sensor
Der State steht immer noch auf "wakeupInterval 86400 1". Das ist echt krank! Die anderen Z-Wave Geräte haben sofort funktioniert.
Ich bin seit gestern dabei den State auf "on" oder "off" zu bekommen, aber ohne Erfolg.
Hast du das Reading "basicSet" nicht? Bei mir hat FHEM den Sensor als quasi 2 Geräte erkannt. Bei einem
Readings
UNPARSED
SENSOR_MULTILEVEL 083104014400000717
2017-03-01 18:38:58
state
0
2017-04-21 08:18:13
temperature
18.25 C
2017-05-14 19:49:00
und bei dem zweiten Eintrag eben u. a. das basicSet Reading:
Readings
UNPARSED
UNKNOWN_B1 08b1050144000006fe
2017-04-26 09:52:14
alarm_type_00
level 255 node 14 seconds 0
2017-04-23 15:20:28
alarm_type_05
level 0 node 14 seconds 0
2017-04-23 15:20:25
basicSet
0
2017-04-23 15:20:25
battery
81 %
2016-09-04 14:41:28
cmdGet
wakeupInterval
2016-10-28 00:05:06
configAcousticAndVisualSignals
AcousticACTIVEVisualACTIVE
2016-10-30 07:04:11
mcCapability_01
SENSOR_BINARY
2016-08-25 22:55:00
mcCapability_02
SENSOR_MULTILEVEL
2016-08-25 22:55:00
mcEndpoints
total 2, different
2016-08-25 22:55:00
model
FIBARO System FGFS101 Flood Sensor
2016-08-25 22:55:00
modelConfig
fibaro/fgfs101.xml
2016-08-25 22:55:00
modelId
010f-0b00-1001
2016-08-25 22:55:00
state
TRANSMIT_NO_ACK
2016-10-30 21:37:43
timeToAck
0.073
2017-05-11 10:24:15
transmit
OK
2017-05-11 10:24:15
wakeup
notification
2017-05-11 10:24:13
FIBARO System FGFS101 Flood Sensor und FIBARO System FGFS101 Zwave+ Flood Sensor sind unterschiedliche Sensoren.
Sorry, das wusste ich nicht - bin noch Z-Wave DAU :)
Zitat von: item am 15 Mai 2017, 14:38:39
Sorry, das wusste ich nicht - bin noch Z-Wave DAU :)
Ist vom Hersteller mMn auch etwas verwirrend gemacht. Der Unterschied wird nicht sehr deutlich.
@pi-user
Wenn Du zumindest die Ausgabe von "list <device>" des Sensors postet, dann bist Du vielleicht schneller am Ziel.
Hallo item,
ich habe kein Reading "basicSet"! Kann man es mit dem set Befehl setzen? Ich habe nachgeschaut. Man kann set basicSet <Parameter???> aufrufen. Ich weiß nur nicht, wozu basicSet gut sein soll und was für einen Parameter man übergeben muss. Vielleicht muss man doch mit einem set Befehl etwas setzen, damit der Zustand (State) sich ändert!
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
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.
Hallo krikan,
ich danke Dir. :) Ich werde heute Abend probieren.
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?
Es gibt ein neues Reading "alarm_Water". Bitte siehe das Bild. Ich kann aber damit nicht viel anfangen.
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?
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
Oh, da hast Du Recht.
Ich habe so probiert, aber ohne Erfolg:
define Wassermelder notify Wassermelder.HW:alarm..Water.Leak
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.
notify ist leider nicht mein Freund, schau in den Event Monitor und NUR triggere NUR auf Leak.
https://fhem.de/commandref_DE.html#notify (https://fhem.de/commandref_DE.html#notify)
LG
Tom
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.
>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. ???
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
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.
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
Hallo krikan,
vielen Dank für die Antworten. :)
Ich werde mir trotzdem mit dem stateFormat anschauen. Es schadet doch nicht.
@krikan
ZitatFü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
Das stimmt zwar exakt ist allerdings nur optisch relevant.
LG
Tom
ZitatIch habe so probiert, aber ohne Erfolg:
Falls ihr Regexp noch nicht kennt, oder verdraengt habt, dass notify automatisch ein ^ und $ an dem spezifizierten Regexp anfuegt, oder einfach denk-/tippfaul seid, dann gibt es zwei Wege, das notify-Regexp vom FHEM generieren zu lassen:
1. mit vorhandenen eventTypes-Definition (was in der ausgelieferten fhem.cfg Voreinstellung ist) bietet das notify Change-Wizard ein Dropdown an, um das notify-Regexp zu erweitern (Change condition).
2. Event-Monitor auswaehlen, Event erzeugen, Zeile markieren, und Create/Modify device anklicken.
Voraussetzung fuer beide Methoden ist, dass FHEM das Event bereits empfangen hat.