Hallo zusammen,
ich habe meinen neuen Wärmemengenzähler mit KNX erfolgreich in Betrieb genommen (Kamstrup Multical 403) und möchte nun die Werte via fhem loggen.
Habe das grade einmal mit der Rücklauftemperatur getestet. Leider werden für diese in der current und der history immer doppelte einträge erzeugt. Kann mir jemand sagen, was ich falsch mache?
Dblog ist so eingestellt, dass es u.a. readings mit namen temperature loggt.
List HAR.WMZ_RL
Internals:
CFGFN
DEF 4/3/9:dpt9.001
DEVNAME HAR.WMZ_RL
FIRSTGADNAME g1
FUUID 5e1a0da6-f33f-c37d-1fb1-9b70bf3e9f85e85f
GETSTRING g1:noArg
IODev KNX
KNX_MSGCNT 272
KNX_RAWMSG C0111aw043091936
KNX_TIME 2020-01-12 10:22:29
LASTInputDev KNX
MSGCNT 272
NAME HAR.WMZ_RL
NR 66081
NTFY_ORDER 50-HAR.WMZ_RL
SETSTRING g1:slider,-670760,13415,670760
STATE 24.80 °C
TYPE KNX
GADDETAILS:
g1:
CODE 04309
GROUP 4/3/9
MODEL dpt9.001
NO 1
OPTION
RDNAMEGET getG1
RDNAMEPUT putG1
RDNAMESET setG1
SETLIST :slider,-670760,13415,670760
GADTABLE:
04309 g1
Helper:
DBLOG:
temperature:
horstDbLog:
TIME 1578820949.24167
VALUE 24.80
READINGS:
2020-01-12 10:22:29 getG1 24.80 °C
2020-01-12 10:22:29 last-sender 1/1/26
2020-01-12 10:22:29 state 24.80 °C
2020-01-12 10:22:29 temperature 24.80
Attributes:
IODev KNX
room Sensoren
userReadings temperature {sprintf("%0.2f", ( ReadingsVal("$name","state",0)))}
Auszug eventlog
2020.01.12 10:14:21 1 : PERL WARNING: Argument "24.80 °C" isn't numeric in sprintf at (eval 483242) line 1.
2020.01.12 10:14:21 3 : eval: {sprintf("%0.2f", ( ReadingsVal("$name","state",0)))}
2020.01.12 10:14:21 1 : PERL WARNING: Argument "24.80 °C" isn't numeric in sprintf at (eval 483243) line 1.
2020.01.12 10:14:21 3 : eval: {sprintf("%0.2f", ( ReadingsVal("$name","state",0)))}
2020-01-12 10:14:21 KNX HAR.WMZ_RL getG1: 24.80 °C
2020-01-12 10:14:21 KNX HAR.WMZ_RL last-sender: 1/1/26
2020-01-12 10:14:21 KNX HAR.WMZ_RL 24.80 °C
2020-01-12 10:14:21 KNX HAR.WMZ_RL temperature: 24.80
2020-01-12 10:14:21 KNX HAR.WMZ_RL getG1: 24.80 °C
2020-01-12 10:14:21 KNX HAR.WMZ_RL last-sender: 1/1/26
2020-01-12 10:14:21 KNX HAR.WMZ_RL 24.80 °C
2020-01-12 10:14:21 KNX HAR.WMZ_RL temperature: 24.80
Abfrage DBLOG
sqlite> select * from history where type = 'KNX' and timestamp = '2020-01-12 10:14:21';
2020-01-12 10:14:21|HAR.WMZ_RL|KNX|temperature: 24.80|temperature|24.80|
2020-01-12 10:14:21|HAR.WMZ_RL|KNX|temperature: 24.80|temperature|24.80|
sqlite>
List 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|power|consumption|VOC).*
FUUID 5dd1401c-f33f-c37d-7f48-21dd73f2a44f4911
FVERSION 93_DbLog.pm:v4.9.1-s20515/2019-11-16
MODE synchronous
MODEL SQLITE
NAME horstDbLog
NR 82
NTFY_ORDER 50-horstDbLog
PID 538
REGEXP .*:(temperature|humidity|power|consumption|VOC).*
STATE connected
TYPE DbLog
dbconn SQLite:dbname=/media/horst_data/log/fhem/horst.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.9.1
READINGS:
2020-01-12 10:33:51 state connected
Attributes:
DbLogType Current/History
Für einen Lösungshinweis wäre ich sehr dankbar
Moin,
bei den doppelten Einträgen kann ich dir leider nicht helfen.
Ändere doch mal bei deinem
userReadings temperature {sprintf("%0.2f", ( ReadingsVal("$name","state",0)))}
das ReadingsVal in ReadingsNum.
Dann bekommst du wenigstens die PerlWarning nicht im Log.
MfG
Danke für den Hinweis. Habe es jetzt mal so gecshrieben:
attr HAR.WMZ_RL userReadings temperature { ReadingsNum($name,"getG1",0)}
Denke wegen den doppelte Einträgen habe ich selbst einen Workarround gefunden:
Immer wenn ich den Sensor HAR.WMZ_RL über die FHEM-Oberfläche via RAW definition / Execute anpasse sehe ich n+1 Einträge. Also jede Anpassung erzeugt weitere zeitgleiche Einträge. Ich bin darauf gekommen, weil ich plötzloich 5 zeitgleiche einträge im Log hatte.
Ein shutdown reboot hat geholfen. Jetzt gibt es nur noch einen Eintrag. Trotzdem seltsamen verhalten. Bei meinen anderen (OWX) Sensoren habe ich das so nicht erlebt.