Ich habe 6 Rauchmelder und einen virtuellen Rauchmelder_Team definiert.
Auf meinem HM-OU-LED16 -Display habe ich pro physischem RM eine Led, die mir im Falle eines Falles anzeigen soll, welcher RM einen Alarm ausgelöst hat (neulich nachts um 2:00 hatte ich einen Fehlalarm). Ein Hochfahren des PCs, um dann nachzusehen, wer ausgelöst hat, dauert a) zu lange und b) rausgerissen aus dem Schlaf und bei dem Getröte kann man eh keinen klaren Gedanken fassen. Aber auf das Display schauen und eine rote Led erkennen sollte auch im Halbschlaf gelingen.
Im Filelog habe ich gesehen, dass smoke_detect nicht immer den auslösenden RM als Inhalt hat (01:57:42 RM_Flur_Keller; 01:58:19 -). Daher glaube ich nicht, dass dieses Reading verwendet werden sollte.
2014-08-02_01:57:42 RM_Flur_Keller trig_Rauchmelder_Btn1: 200
2014-08-02_01:57:42 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
2014-08-02_01:57:42 RM_Flur_Keller smoke-Alarm_03
2014-08-02_01:57:42 RM_Flur_Keller smoke_detect: RM_Flur_Keller
2014-08-02_01:57:42 RM_Flur_Keller trig_Rauchmelder_Btn1: 200
2014-08-02_01:57:42 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
2014-08-02_01:57:43 RM_Flur_Keller trig_Rauchmelder_Btn1: 200
2014-08-02_01:57:43 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
2014-08-02_01:58:19 RM_Flur_Keller trig_Rauchmelder_Btn1: 1
2014-08-02_01:58:19 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :1
2014-08-02_01:58:19 RM_Flur_Keller off
2014-08-02_01:58:19 RM_Flur_Keller smoke_detect: -
2014-08-02_01:58:20 RM_Flur_Keller trig_Rauchmelder_Btn1: 1
2014-08-02_01:58:20 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :1
2014-08-02_01:58:21 RM_Flur_Keller trig_Rauchmelder_Btn1: 1
2014-08-02_01:58:21 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :1
2014-08-02_01:59:18 RM_Flur_Keller trig_Rauchmelder_Btn1: 200
2014-08-02_01:59:18 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
2014-08-02_01:59:18 RM_Flur_Keller smoke-Alarm_05
2014-08-02_01:59:18 RM_Flur_Keller smoke_detect: RM_Flur_Keller
2014-08-02_01:59:19 RM_Flur_Keller trig_Rauchmelder_Btn1: 200
2014-08-02_01:59:19 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
2014-08-02_01:59:20 RM_Flur_Keller trig_Rauchmelder_Btn1: 200
2014-08-02_01:59:20 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
2014-08-02_01:59:55 RM_Flur_Keller trig_Rauchmelder_Btn1: 1
2014-08-02_01:59:55 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :1
2014-08-02_01:59:55 RM_Flur_Keller off
2014-08-02_01:59:55 RM_Flur_Keller smoke_detect: -
Lt. Wiki wäre wohl das Reading recentAlarm das richtige, allerdings scheitere ich schon daran, dass mein Teamlead dieses Reading anscheinend nicht kennt. Ein List Rauchmelder_Team
liefert mir:
Internals:
DEF 11000001
NAME Rauchmelder_Team
NR 60
STATE off
TESTNR 1
TYPE CUL_HM
chanNo 01
device Rauchmelder
peerList RM_Flur_OG,RM_Dachboden,RM_Werkzeugkeller,RM_Heizungskeller,RM_Flur_Keller,RM_Flur_Schlafzimmer,
sdTeam sdLead
Readings:
2014-09-21 15:22:38 peerList RM_Flur_OG,RM_Dachboden,RM_Werkzeugkeller,RM_Heizungskeller,RM_Flur_Keller,RM_Flur_Schlafzimmer,
2014-09-21 16:33:08 state off
2014-09-21 16:04:59 teamCall from Rauchmelder:1
Helper:
fkt sdLead
Role:
chn 1
vrt 1
Attributes:
expert 2_full
icon secur_smoke_detector
model virtual_1
peerIDs 22D47801,22D69601,22D6AB01,22F37701,22F60401,22F61201,
room Rauchmelder
webCmd teamCall:alarmOn:alarmOff
Ich habe trotzdem mal folgendes Notify versucht (mein Ziel: wenn recentAlarm den Inhalt RM_Dachboden hat, soll die Led rot werden ansonsten grün)
define Led_01.n1 notify { if (ReadingsVal("Rauchmelder_Team","recentAlarm","") eq "RM_Dachboden") { fhem("set Led_01 led red") } else { fhem("set Led_01 led green") } }
Die Anzeige bleibt allerdings aus (bei einem händischen set Led_01 led red
wird die Led eingeschaltet; das funktioniert also soweit), d.h. auf das Reading wird anscheinend überhaupt nicht reagiert (hätte jetzt eigentlich eine grüne Led erwartet).
Meine Fragen:
Wie komme ich an das Reading "recentAlarm"?
Was passt bei meinem notify nicht? Oder geht der nur nicht, solange "recentAlarm" fehlt?
2014-08-02_01:57:42 RM_Flur_Keller trigLast: Rauchmelder_Btn1 :200
wer ist Rauchmelder_Btn1? hier sollte dein teamlead stehen. ist dein peering komplett? wieviele teamlead existieren? poste ein list vom RM_Flur_Keller. was ergibt configcheck und peerxref von hminfo?
gruss frank
Gut beobachtet: Rauchmelder_Btn1 steht im Log mit Datum 02.08.2014
Am 03.08. habe ich "Rauchmelder_Btn1" umbenannt in "Rauchmelder_Team" (manchmal sind Aufzeichnungen wirklich hilfreich ;))
Daher habe ich jetzt in meinem notify "Rauchmelder_Team" stehen.
M.E. habe ich wirklich nur einen teamlead.
List RM_Flur_Keller ergibt:
Internals:
DEF 22F604
HMLAN1_MSGCNT 1
HMLAN1_RAWMSG E22F604,0000,0037D836,FF,FFB7,33A41022F604272E5706010100
HMLAN1_RSSI -73
HMLAN1_TIME 2014-09-22 08:35:31
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 1
NAME RM_Flur_Keller
NR 57
STATE off
TYPE CUL_HM
lastMsg No:33 - t:10 s:22F604 d:272E57 06010100
peerList Rauchmelder_Team,
protCmdDel 1
protLastRcv 2014-09-22 08:35:31
protResnd 1 last_at:2014-09-21 17:19:33
protResndFail 1 last_at:2014-09-21 17:19:37
protSnd 2 last_at:2014-09-22 08:35:31
protState CMDs_done
rssi_at_HMLAN1 avg:-73 min:-73 max:-73 lst:-73 cnt:1
Readings:
2014-09-21 17:19:18 Activity alive
2014-09-16 10:37:12 D-firmware 1.0
2014-09-16 10:37:12 D-serialNr KEQ0743893
2014-09-16 10:37:42 PairedTo 0x272E57
2014-09-16 10:37:42 R-pairCentral 0x272E57
2014-09-16 10:37:42 RegL_00: 02:01 0A:27 0B:2E 0C:57 00:00
2014-09-22 08:35:31 battery ok
2014-09-22 08:35:31 level 1
2014-09-21 17:19:18 peerList Rauchmelder_Team,
2014-09-22 08:35:31 recentStateType info
2014-09-22 08:35:31 state off
2014-09-21 16:04:59 teamCall from Rauchmelder:1
Helper:
cSnd 01272E5722F604010E
mId 0042
rxType 2
Io:
newChn +22F604,00,01,00
nextSend 1411367731.6608
prefIO
rxt 0
vccu
p:
22F604
00
01
00
Mrssi:
mNo 33
Io:
HMLAN1 -71
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rpt:
IO HMLAN1
flg A
ts 1411367731.59238
ack:
HASH(0xe1ee18)
338002272E5722F60400
Rssi:
At_hmlan1:
avg -73
cnt 1
lst -73
max -73
min -73
Attributes:
IODev HMLAN1
actCycle 099:00
actStatus alive
autoReadReg 4_reqStatus
expert 2_full
firmware 1.0
icon secur_smoke_detector
model HM-SEC-SD
msgRepeat 1
peerIDs 00000000,11000001,
room Rauchmelder
serialNr KEQ0743893
subType smokeDetector
webCmd statusRequest
Ich habe zwar Fehler/Warnings in meiner Konfiguration, die ich noch überarbeiten ,,darf" aber nichts zu meinen Rauchmeldern.
configCheck
configCheck done:
missing register list
Bad.Fenster: RegL_00:
Garagentor: RegL_00:
Wz.Fenster_Drehgriff: RegL_00:
trigger sent to unpeered device
triggerUnpeered: Bad.Fenster:272E57
triggerUnpeered: Garagentor:272E57
trigger sent to undefined device
triggerUndefined: Bad.Fenster:272E57
triggerUndefined: Garagentor:272E57
peerNeedsBurst cannot be determined
Bad.Fenster
Wz.Fenster_Drehgriff
Wz.Fenster_Drehgriff
PairedTo missing/unknown
Bad.Fenster
Garagentor
Wz.Fenster_Drehgriff
templist mismatch
Wz.Thermostat_Essecke_Clima: file: ./tempList.cfg for Wz.Thermostat_Essecke_Clima does not exist
Wz.Thermostat_TV_Clima: file: ./tempList.cfg for Wz.Thermostat_TV_Clima does not exist
Wandthermostat_1_Climate: file: ./tempList.cfg for Wandthermostat_1_Climate does not exist
Wandthermostat_2_Climate: file: ./tempList.cfg for Wandthermostat_2_Climate does not exist
peerXref
peerXref done:
x-ref list
Bad.Fenster => Wandthermostat_1_WindowRec
RM_Dachboden => Rauchmelder_Team
RM_Flur_Keller => Rauchmelder_Team
RM_Flur_OG => Rauchmelder_Team
RM_Flur_Schlafzimmer => Rauchmelder_Team
RM_Heizungskeller => Rauchmelder_Team
RM_Werkzeugkeller => Rauchmelder_Team
Rauchmelder_Team => RM_Dachboden RM_Flur_Keller RM_Flur_OG RM_Flur_Schlafzimmer RM_Heizungskeller RM_Werkzeugkeller
Wandthermostat_1_SwitchTr => Zw_Stecker_LM_1_Sw
Wandthermostat_1_WindowRec => Bad.Fenster
Wz.Fenster_Drehgriff => Wz.Thermostat_Essecke_WindowRec Wz.Thermostat_TV_WindowRec
Wz.Thermostat_Essecke_WindowRec => Wz.Fenster_Drehgriff
Wz.Thermostat_TV_WindowRec => Wz.Fenster_Drehgriff
Zw_Stecker_LM_1_Sw => Wandthermostat_1_SwitchTr
warning: sensor triggers but no config found
Bad.Fenster triggers 272E57
Garagentor triggers 272E57
Auf der Suche nach weiteren Informationen bin ich eben auch über diesen Threat gestolpert: http://forum.fhem.de/index.php?topic=26411.0
Da geht es auch um das fehlende Reading recentAlarm. Wenn ich die Aussagen da richtig interpretiere, hätte jetzt aber mein Rauchmelder_Team dieses Reading haben sollen, da es ja tatsächlich einen Alarm gegeben hatte.
Komplizierte Materie. Wird aber im Wiki explizit ausgewiesen und würde genau das liefern, was ich haben möchte.
Gruß
Holger
P.S. Meine FHEM-Version ist ziemlich aktuell (31.08.2014)
ZitatAm 03.08. habe ich "Rauchmelder_Btn1" umbenannt in "Rauchmelder_Team"
ZitatWenn ich die Aussagen da richtig interpretiere, hätte jetzt aber mein Rauchmelder_Team dieses Reading haben sollen, da es ja tatsächlich einen Alarm gegeben hatte.
wenn ich dich richtig verstehe, handelt es sich um den fehlalarm vom 2.8.
damals wurde, wenn alles funktioniert hat, dann ein reading recentalarm bei deinem "alten" teamlead hinterlegt. sollte dann in den zugehörigen logs vom damaligen teamlead zu finden sein. wenn nach dem umbenennen noch kein alarm stattgefunden hat, wird wohl noch kein reading beim "neuen" teamlead angelegt worden sein. cul_hm legt readings normalerweise erst an, wenn es einen grund (wert) dazu gibt. auch nach einem set clear readings, werden die readings erst nach und nach wieder neu angelegt, wenn die entsprechenden daten neu reinkommen.
also erzeuge einen alarm und schaue dann die readings deines teamlead an. vielleicht lässt sich mit trigger auch einer simulieren. musst du probieren.
Ja, tatsächlich. Nach Auslösen eines Alarms am Rauchmelder_Team (am einzelnen SD geht es m.W. nicht) hatte dieser das Reading recentAlarm (mit Inhalt Rauchmelder). Ich hätte nicht erwartet, dass durch ein Rename "Daten" verloren gehen.
Um jetzt meinen Notify zu testen, habe ich ihn etwas abgeändert
define Led_04.n1 notify { if (ReadingsVal("Rauchmelder_Team","recentAlarm","") eq "Rauchmelder") { fhem("set Led_04 led red") } else { fhem("set Led_04 led green") } }
und den Alarm erneut ausgelöst.
Erwartet hätte ich, dass jetzt die Led angeht. Leider passiert nichts, die Led bleibt aus.
Ein {ReadingsVal("Rauchmelder_Team", "recentAlarm", "")}
im Frontend eingegeben liefert mir die Ausgabe Rauchmelder
Vielleicht hast du ja hier auch eine Idee, was ich da falsch habe.
Danke
Holger
bei deinem notify fehlt die regex, die beschreibt, bei welchem event das notify triggern soll.
also zb
define Led_04.n1 notify Rauchmelder_Team:recentAlarm.* { if ($EVENT1 eq "Rauchmelder") { fhem("set Led_04 led red") } else { fhem("set Led_04 led green") } }