Hallo,
ich möchte von meinen Xiaomi Bewegungsmelder die Bewegungen in SVG Plot anzeigen, welche im DbLog aufgezeichnet werden.
Leider funktioniert dies nicht.
Der Bewegungsmelder zeigt im state entweder motion oder nomotion an.
Im DbLog habe ich den Zustand motion mit in die DEF geschrieben.
Im DbLog habe ich das Attribut DbLogType auf history eingestellt.
Im SVG Plot habe ich bei "Device:Reading" folgendes hineingeschrieben:
BEWEGUNGSMELDER_MOBIL:state:::$val=($val=~'motion'?11:20)
Sollte es nicht so funktionieren? Also wenn beim BEWEGUNGSMELDER_MOBIL state auf motion ist 11 ansonsten 20 und dies dann auch so im Graph anzeigen?
Hier der List vom Bewegungsmelder:
Internals:
DEF sensor 23 IODev=deCONZ
FUUID 5f1bd2bf-f33f-f59f-ff88-d3f05616afc9229c
FVERSION 31_HUEDevice.pm:0.218370/2020-05-02
ID S23
INTERVAL
IODev deCONZ
NAME BEWEGUNGSMELDER_MOBIL
NR 41
STATE nomotion
TYPE HUEDevice
lastupdated 2021-04-18 17:03:15
lastupdated_local 2021-04-18 19:03:15
manufacturername LUMI
modelid lumi.sensor_motion.aq2
name Bewegungsmelder
on 1
reachable 1
swversion 20170627
type ZHAPresence
uniqueid 00:15:8d:00:03:02:17:8e-01-0406
Helper:
DBLOG:
state:
DbLog:
TIME 1618765395.54532
VALUE nomotion
READINGS:
2021-04-18 18:51:43 battery 95
2021-04-18 18:51:43 batteryPercent 95
2021-04-18 18:51:43 reachable 1
2021-04-18 19:03:15 state nomotion
2021-04-18 18:51:43 temperature 21
helper:
devtype S
reachable 0
update_timeout 1
configList:
json:
ep 1
etag adef18e7026de25db4a68771d865e74e
lastseen 2021-04-18T17:01:45.352
manufacturername LUMI
modelid lumi.sensor_motion.aq2
name Bewegungsmelder
swversion 20170627
type ZHAPresence
uniqueid 00:15:8d:00:03:02:17:8e-01-0406
config:
battery 95
duration 90
temperature 2100
state:
lastupdated 2021-04-18T17:03:15.541
setList:
Attributes:
IODev deCONZ
event-on-change-reading state
model lumi.sensor_motion.aq2
room Alarm
List vom SVG Plot:
Internals:
CFGFN
DEF DbLog:SVG_DbLog_19:HISTORY
FUUID 607aaa1f-f33f-f59f-a776-7fdbc7c78a167d96
GPLOTFILE SVG_DbLog_19
LOGDEVICE DbLog
LOGFILE HISTORY
NAME SVG_DbLog_19
NR 2503
STATE initialized
TYPE SVG
Attributes:
room Alarm,deCONZ_Geraete
List von DbLog:
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./db.conf
DEF ./db.conf .*:(temperature|humidity|dewpoint|absFeuchte|pressure|state|open|closed|on|off|motion).*
FUUID 5f1bd2be-f33f-f59f-6fb5-44333465b6dbfc15
FVERSION 93_DbLog.pm:v4.10.2-s22246/2020-06-23
MODE synchronous
MODEL SQLITE
NAME DbLog
NR 24
NTFY_ORDER 50-DbLog
PID 31319
REGEXP .*:(temperature|humidity|dewpoint|absFeuchte|pressure|state|open|closed|on|off|motion).*
STATE connected
TYPE DbLog
dbconn SQLite:dbname=/opt/fhem/fhem.db
dbuser
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE connected
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 4.10.2
Helper:
DBLOG:
state:
DbLog:
TIME 1618651818.5357
VALUE waiting for connection
READINGS:
2021-04-18 19:05:06 state connected
Attributes:
DbLogType History
ZitatSollte es nicht so funktionieren?
Keine Ahnung, DbLog kenne ich nicht, aber "Show preprocessed input" koennte beim debuggen helfen.
Uebrigens ist dieses Thema mit grosser Wahrscheinlichkeit in der DbLog oder SVG Bereich besser aufgehoben.
"Show preprocessed input" zeigt folgendes:
Also mit 11 eigentlich richtig. Aber eigentlich war die ganze Zeit keine Bewegung, also sollte doch dort 20 stehen?
get DbLog HISTORY INT 2021-04-20_00:00:00 2021-04-20_23:59:59 BEWEGUNGSMELDER_MOBIL:state:::$val=($val=~'motion'?11:20)
2021-04-20_00:06:36 11
2021-04-20_00:09:26 11
2021-04-20_00:09:27 11
2021-04-20_00:10:57 11
2021-04-20_00:15:54 11
2021-04-20_00:17:24 11
2021-04-20_00:18:58 11
2021-04-20_00:21:32 11
2021-04-20_03:04:48 11
2021-04-20_03:06:18 11
2021-04-20_03:06:37 11
2021-04-20_03:09:24 11
2021-04-20_08:55:18 11
2021-04-20_08:57:56 11
2021-04-20_11:55:16 11
2021-04-20_11:56:46 11
2021-04-20_12:00:57 11
2021-04-20_12:02:28 11
2021-04-20_12:26:06 11
2021-04-20_12:27:36 11
2021-04-20_12:30:19 11
2021-04-20_12:31:49 11
2021-04-20_12:32:13 11
2021-04-20_12:33:43 11
2021-04-20_13:29:23 11
2021-04-20_13:31:53 11
2021-04-20_13:32:30 11
2021-04-20_13:34:01 11
2021-04-20_14:14:48 11
2021-04-20_14:16:18 11
2021-04-20_14:16:27 11
2021-04-20_14:17:57 11
2021-04-20_14:26:15 11
2021-04-20_14:28:53 11
2021-04-20_14:31:22 11
2021-04-20_14:36:00 11
2021-04-20_14:36:13 11
2021-04-20_14:40:12 11
2021-04-20_14:40:31 11
2021-04-20_14:48:03 11
2021-04-20_14:48:52 11
2021-04-20_15:22:23 11
2021-04-20_15:22:46 11
2021-04-20_15:24:16 11
2021-04-20_15:27:03 11
2021-04-20_15:28:33 11
2021-04-20_15:57:22 11
2021-04-20_15:58:53 11
2021-04-20_15:59:59 11
2021-04-20_16:23:27 11
2021-04-20_16:51:23 11
2021-04-20_16:52:53 11
2021-04-20_16:54:34 11
2021-04-20_16:56:04 11
2021-04-20_17:10:18 11
2021-04-20_17:11:48 11
2021-04-20_17:17:09 11
2021-04-20_17:18:39 11
2021-04-20_17:19:26 11
2021-04-20_17:20:57 11
2021-04-20_17:28:48 11
2021-04-20_17:30:18 11
2021-04-20_17:45:24 11
2021-04-20_17:46:54 11
2021-04-20_17:52:32 11
2021-04-20_17:54:02 11
2021-04-20_18:17:57 11
2021-04-20_18:19:27 11
2021-04-20_18:22:57 11
2021-04-20_18:24:27 11
2021-04-20_18:31:43 11
2021-04-20_18:33:13 11
2021-04-20_18:53:42 11
2021-04-20_18:55:12 11
2021-04-20_19:01:13 11
2021-04-20_19:02:43 11
2021-04-20_19:03:49 11
2021-04-20_19:06:28 11
2021-04-20_19:08:58 11
2021-04-20_19:10:28 11
2021-04-20_19:10:37 11
2021-04-20_19:12:07 11
2021-04-20_19:17:49 11
2021-04-20_19:19:20 11
#BEWEGUNGSMELDER_MOBIL:state:::$val=($val=~'motion'?11:20)
Im "DbLog habe ich noch "nomotion" hinzugefügt, hat aber auch nichts geändert.
Zitat$val=~'motion'?11:20
Vermutlich hast Du es uebersehen, dass =~ nicht der "gleichheit", sondern der "enthaelt" (bzw. regexp match) Operator ist.
Habe es jetzt geändert in
BEWEGUNG_MOBIL:state:::$val=($val=='motion'?11:20)
Ändert sich aber trotzdem nichts?
== bedeutet "ist"
=~ bedeutet "beinhaltet"
motion ist auch in nomotion enthalten; somit kann es nicht funktionieren.
Bei "ist" funktioniert es aber auch nicht.
Oder habe ich es falsch verstanden?
Oder der Devicename ein anderer? Dieser steht aber bei NAME.
Zitat== bedeutet "ist"
Nich ganz, es bedeutet "numerisch gleich", d.h. mit == muesste im FHEM-Log Perl-WARNINGs hageln.
Stringvergleich ist eq. Der Haken dabei (mit FileLog sicher, mit DbLog k.A.): im Expression darf kein Leerzeichen vorkommen.
Ich wuerde es umdrehen:$val=~'nomotion'?20:11.
Vielen Dank, so funktioniert es.
:)