Hallo Experten,
irgendwie komme ich nicht weiter.
Ich möchte via MQTT die Information "Wann war die letzte Bewegung ?" übertragen.
MQTT läuft inkl. MQTT_Generic_Bridge.
Ich hab auch schon einiges erfolgreich gepublished und subscriped (zu Home Assistant).
Mein Homematic-Bewegungsmelder HM-SEN-MDIR-O-2 halt folgende Parameter/Readings.
Bild siehe Anhang unten ...
Die "fertige" Info steht schon direkt oben neben dem Device-Namen.
Unten bei den Parametern steht bei protSnd eine naheliegende Zeit die nach dem ersten Doppelpunkt auch eine brauchbare Info liefern würde.
Aber die müsste ich dann noch irgendwie splitten ...
Auch ist das ja ein Parameter und kein Reading.
Bei den Readings steht leider nichts brauchbares dabei.
Der state-publish auf "Alles" mit "*:topic" liefert leider nur 5 Topics (brightness, motion, motionCount, state und trigger_cnt)
Wie bringe ich die gewünscht Info raus in ein Topic ?
Wie wäre es mit einem userReadings?
In etwa so:
attr HM_Bewegungsmelder userreadings lastMotion:state.* {if(ReadingsVal($name,"state","n.a.") eq "motion"){return ReadingsTimestamp($name,"state",0);}}
Dann sollte im "neuen" Reading lastMotion (Name kannst du frei angeben) der Zeitstempel des letzten motion sein.
(sofern bei Bewegung "motion" in state steht)
EDIT oder vielleiht besser:
attr HM_Bewegungsmelder userreadings lastMotion:motion.* {if(ReadingsVal($name,"motion","n.a.") eq "off"){return ReadingsTimestamp($name,"motion",0);}}
Besser sind list von Devices statt ScreenShots! Und lists dann bitte in "code-Tags", das '#' im "Menü"...
EDIT: andere Frage: wozu willst du die Uhrzeit der letzten Bewegung übertragen? ;)
Gruß, Joachim
Ui werd ich gleich ausprobieren .. sieht schon mal super aus.
ZitatBesser sind list von Devices statt ScreenShots! Und lists dann bitte in "code-Tags", das '#' im "Menü"...
Ich kannte den Befehl list nicht ... oder hatte ihn vergessen. 8-))
Internals:
DEF 4077BA
FUUID 5c976b67-f33f-c3e5-02a5-10397e0c1bd5e3f0
HMLAN1_MSGCNT 648
HMLAN1_RAWMSG E4077BA,0000,957660B8,FF,FFA4,B084104077BA2CD8BE06012C00
HMLAN1_RSSI -92
HMLAN1_TIME 2021-01-02 21:59:24
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 648
NAME HM_Bewegungsmelder
NOTIFYDEV global
NR 38
NTFY_ORDER 50-HM_Bewegungsmelder
STATE nomotion
TYPE CUL_HM
chanNo 01
lastMsg No:B0 - t:10 s:4077BA d:2CD8BE 06012C00
protLastRcv 2021-01-02 21:59:24
protRcv 646 last_at:2021-01-02 21:59:24
protSnd 100 last_at:2021-01-02 20:48:16
protState CMDs_done
rssi_at_HMLAN1 cnt:648 min:-105 max:-88 avg:-93.79 lst:-92
READINGS:
2020-12-31 21:57:02 Activity alive
2017-09-01 23:40:00 D-firmware 1.6
2017-09-01 23:40:00 D-serialNr MEQ1425514
2020-07-08 20:11:56 PairedTo 0x2CD8BE
2017-09-04 15:41:49 R-brightFilter 0
2017-09-04 15:41:49 R-captInInterval off
2017-09-04 15:41:49 R-evtFltrNum 2
2017-09-04 15:41:49 R-evtFltrPeriod 1 s
2017-09-04 15:41:49 R-minInterval 15
2017-09-04 15:41:48 R-pairCentral 0x2CD8BE
2017-09-04 15:41:49 R-sign off
2020-07-08 20:11:56 RegL_00. 00:00 02:01 0A:2C 0B:D8 0C:BE
2020-07-08 20:11:57 RegL_01. 00:00 01:22 02:00 08:00 22:C8
2021-01-02 21:59:24 battery ok
2021-01-02 21:59:24 brightness 44
2020-07-11 16:31:50 cfgState ok
2021-01-02 20:48:16 commState CMDs_done
2021-01-02 21:59:24 cover closed
2021-01-02 20:48:33 motion off
2021-01-02 20:48:16 motionCount 55_next:15s
2021-01-02 20:48:33 motionDuration 17
2019-06-03 22:47:59 powerOn 2019-06-03 22:47:59
2021-01-02 21:59:24 recentStateType info
2021-01-02 20:50:26 state nomotion
2021-01-02 20:48:16 trigger_cnt 55
helper:
HM_CMDNR 176
mId 005D
peerFriend peerAct,peerVirt
peerOpt 4:motionDetector
regLst 0,1,4p
rxType 28
supp_Pair_Rep 0
cmds:
TmplKey :no:1609617923.99612
TmplTs 1609617923.99612
cmdKey 1:1:0::HM_Bewegungsmelder:005D:01:
cmdLst:
assignHmKey noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan -btnNumber- -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
trgEventL -peer- -condition-
trgEventS -peer- -condition-
trgPressL [(-peer-|{all})]
trgPressS [(-peer-|{all})]
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt 4KS_Kanal1,4KS_Kanal2,4KS_Kanal3,4KS_Kanal4,HKT_1S_Bad_WindowRec,HKT_1S_Bad_remote,HKT_1S_Computerzimmer_WindowRec,HKT_1S_Computerzimmer_remote,HKT_1S_Esszimmer_WindowRec,HKT_1S_Esszimmer_remote,HKT_1S_Schlafzimmer_WindowRec,HKT_1S_Schlafzimmer_remote,HKT_1S_Wohnzimmer_WindowRec,HKT_1S_Wohnzimmer_remote,HKT_2S_Bad_WindowRec,HKT_2S_Bad_remote,HKT_2S_Schlafzimmer_WindowRec,HKT_2S_Schlafzimmer_remote,HKT_2S_Wohnzimmer_WindowRec,HKT_2S_Wohnzimmer_remote,HM_HS_Messschalter_1_Sw,HM_Messsteckdose_1_Sw,HM_Schalter_1S_WZ,HM_Schaltsteckdose_01,HM_Unterputzschalter_01,HM_WT0101_WindowRec,HM_WT0101_remote,HM_WT0201_WindowRec,HM_WT0201_remote,vccu
tplDel
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +4077BA,00,00,00
nextSend 1609621164.42414
prefIO
rxt 2
vccu
p:
4077BA
00
00
00
mRssi:
mNo B0
io:
HMLAN1:
-90
-90
prt:
bErr 0
sProc 0
sleeping 1
rspWait:
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_HMLAN1:
avg -93.7916666666667
cnt 648
lst -92
max -88
min -105
tmpl:
Attributes:
IODev HMLAN1
actCycle 000:10
actStatus alive
alias HM_Bewegungsmelder
autoReadReg 4_reqStatus
event-on-change-reading .*
expert defReg,rawReg
firmware 1.6
icon motion_detector
model HM-SEN-MDIR-O-2
mqttPublish *:topic={"state/$base/$name"}
peerIDs 00000000,
room Einfahrt
serialNr MEQ1425514
showtime 1
subType motionDetector
Zitatandere Frage: wozu willst du die Uhrzeit der letzten Bewegung übertragen? ;)
Um zu sehen ob jemand (z.B. Postbote) in den Hof reingefahren ist.
Im 1. Stock krieg ich das oft nicht mit.
Hmm, aber dann siehst du ja nur WANN zuletzt jemand "dort" war...
Wenn du die Bewegung überträgst siehst du das doch auch?
Aber: musst du wissen...
Bin gespannt, ob es klappt.
Gruß, Joachim
Funktioniert einwandrei !
Internals:
...
NAME HM_Bewegungsmelder
...
READINGS:
...
2021-01-02 22:48:42 lastMotion 2021-01-02 22:48:42
2021-01-02 22:48:42 motion off
...
Attributes:
...
mqttPublish lastMotion:topic={"state/$base/$name"}
...
userReadings lastMotion:motion.* {if(ReadingsVal($name,"motion","n.a.") eq "off"){return ReadingsTimestamp($name,"motion",0);}}
ZitatHmm, aber dann siehst du ja nur WANN zuletzt jemand "dort" war...
Vorerst reicht mir die Info.
Das ganze soll ja ins FrontEnd HomeAssistant.
Am schönsten wäre es dort wenn ich einen Sensor (Graphen) hätte der mir die letzten paar Stunden anzeigt und die Motions on/off als Graph mit der Waveform "Rechteck" anzeigt.
Evtl. muss ich das dann über influxDB und/oder Grafana integrieren.
Aber bis ich das alles so habe vergehen wohl noch ein paar Tage ... vielleicht Wochen. je nachdem wieviel zeit ich habe. 8-)
Home Assistant habe ich auch erst seit 2-3 Tagen...
EDIT: Kleiner Nachtrag für andere MQTT-Interessenten. Damit meine Topics immer bei FHEM/[Name des Geräts] herauskommen habe ich oben noch ein:
attr mqttGenericBridge globalDefaults base={"FHEM/$device"}
definiert
Wunderbar, freut mich!
Setzt du dann noch ein [gelöst] o.ä. "vor" dem ersten Post, danke.
Viel Spaß dann noch, Joachim