FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: thomasg am 12 Januar 2020, 10:24:06

Titel: KNX-Wärmemengenzähler - Doppelte DB-Logeinträge
Beitrag von: thomasg am 12 Januar 2020, 10:24:06
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



Titel: Antw:KNX-Wärmemengenzähler - Doppelte DB-Logeinträge
Beitrag von: Shadow3561 am 12 Januar 2020, 10:53:34
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
Titel: Antw:KNX-Wärmemengenzähler - Doppelte DB-Logeinträge
Beitrag von: thomasg am 12 Januar 2020, 11:06:10
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.