[gelöst] DbLog Fehler: Readings doppelt in Datenbank geschrieben

Begonnen von andies, 13 September 2018, 20:56:39

Vorheriges Thema - Nächstes Thema

andies

Ich habe ein Problem mit DbLog, hier erstmal ein List
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf (sysmon:.*|Stromzaehler:.*|Viessmann:.*NurGestern.*|Viessmann:.*temperatur.*|Viessmann2:.*Vorlauf.*|Viessmann2:.*Ruecklauf.*|Garagensensor:Temperatur:.*|Heizungskeller:Gasverbrauch:.*|Heizungskeller:Wasser:.*|DECT1:temperature.*|Sonoff_pow1:.*|BresserTemeo_1:temperature.*|SensorHydrAbgleich.*:.*Temperatur.*|DECT1:power.*|.*thermostat_Clima:measured-temp.*|Wasserzaehler_IEC_01:Verbrauch.*|.*rssi_at_WLAN_HmUART.*|Blitzwolf(1|2):Verbrauch.*)
   MODE       asynchronous
   MODEL      MYSQL
   NAME       DbLog
   NR         20
   NTFY_ORDER 50-DbLog
   PID        5121
   REGEXP     (sysmon:.*|Stromzaehler:.*|Viessmann:.*NurGestern.*|Viessmann:.*temperatur.*|Viessmann2:.*Vorlauf.*|Viessmann2:.*Ruecklauf.*|Garagensensor:Temperatur:.*|Heizungskeller:Gasverbrauch:.*|Heizungskeller:Wasser:.*|DECT1:temperature.*|Sonoff_pow1:.*|BresserTemeo_1:temperature.*|SensorHydrAbgleich.*:.*Temperatur.*|DECT1:power.*|.*thermostat_Clima:measured-temp.*|Wasserzaehler_IEC_01:Verbrauch.*|.*rssi_at_WLAN_HmUART.*|Blitzwolf(1|2):Verbrauch.*)
   STATE      connected
   TYPE       DbLog
   UTF8       0
   VERSION    3.10.10
   dbconn     mysql:database=fhem;host=127.0.0.1;port=3306
   dbuser     root
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     OLDSTATE   connected
     READINGCOL 64
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
   READINGS:
     2018-09-13 20:43:22   CacheUsage      0
     2018-09-13 20:43:22   NextSync        2018-09-13 20:43:52 or if CacheUsage 500 reached
     2018-09-08 21:57:44   lastRowsDeleted 809143
     2018-09-13 20:43:22   state           connected
   cache:
     index      3863
Attributes:
   asyncMode  1
   group      intern
   verbose    0


Wenn ich jetzt das nachfolgende Gerät loggen will
Internals:
   IODev      Mosquitto
   NAME       Blitzwolf2
   NR         198
   STATE      Gestern 0 kWh
   TYPE       MQTT_DEVICE
   Helper:
     DBLOG:
       Verbrauch:
         DbLog:
           TIME       1536864080.68908
           VALUE      2.41000000000008
   READINGS:
     2018-09-13 20:41:20   ENERGY_Current  0.514
     2018-09-13 20:41:20   ENERGY_Factor   0.5
     2018-09-13 20:41:20   ENERGY_Period   2.41
     2018-09-13 20:41:20   ENERGY_Power    58.1
     2018-09-13 20:41:20   ENERGY_Today    0.52026
     2018-09-13 20:41:20   ENERGY_Total    0.52026
     2018-09-13 20:41:20   ENERGY_Voltage  224.3
     2018-09-13 20:41:20   ENERGY_Yesterday 0
     2018-09-13 20:23:57   LWT             online
     2018-09-13 20:41:20   POWER           ON
     2018-09-13 20:41:20   SENSOR          {"Time":"2018-09-13T19:41:20","ENERGY":{"Total":0.52026,"Yesterday":0.00000,"Today":0.52026,"Period":2.410,"Power":58.100,"Factor":0.50,"Voltage":224.300,"Current":0.514}}
     2018-09-13 20:41:20   STATE           {"Time":"2018-09-13T19:41:20","Uptime":"0T05:35:24","Vcc":3.222,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
     2018-09-13 20:41:20   Time            2018-09-13T19:41:20
     2018-09-13 20:41:20   Uptime          0T05:35:24
     2018-09-13 20:41:20   Vcc             3.222
     2018-09-13 20:41:20   Verbrauch       2.41000000000008
     2018-09-13 20:41:20   Wifi_AP         1
     2018-09-13 20:41:20   Wifi_APMac      38:10:D5:1C:D5:B8
     2018-09-13 20:41:20   Wifi_RSSI       42
     2018-09-13 20:41:20   Wifi_SSId       WLAN-120954
     2018-09-13 11:32:54   state           off
     2018-09-13 20:41:20   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      /cmnd/blitzwolf2/POWER
       values:
         on
         off
   sets:
     off       
     on         
   subscribe:
     tele/blitzwolf2/LWT
     tele/blitzwolf2/SENSOR
     tele/blitzwolf2/STATE
   subscribeExpr:
     ^tele\/blitzwolf2\/LWT$
     ^tele\/blitzwolf2\/SENSOR$
     ^tele\/blitzwolf2\/STATE$
   subscribeQos:
     tele/blitzwolf2/LWT 0
     tele/blitzwolf2/SENSOR 0
     tele/blitzwolf2/STATE 0
   subscribeReadings:
     tele/blitzwolf2/LWT:
       cmd       
       name       LWT
     tele/blitzwolf2/SENSOR:
       cmd       
       name       SENSOR
     tele/blitzwolf2/STATE:
       cmd       
       name       STATE
Attributes:
   IODev      Mosquitto
   devStateIcon .*:noIcon:noFhemwebLink
   group      Messen
   publishSet on off /cmnd/blitzwolf2/POWER
   room       Info
   stateFormat Gestern ENERGY_Yesterday kWh
   subscribeReading_LWT tele/blitzwolf2/LWT
   subscribeReading_SENSOR tele/blitzwolf2/SENSOR
   subscribeReading_STATE tele/blitzwolf2/STATE
   useSetExtensions 1
   userReadings Verbrauch difference {1000*ReadingsVal($name,"ENERGY_Total",0);;}
   verbose    0
   webCmd     on:off

dann werden Einträge mehrfach in die Datenbank geschrieben. Dabei passiert es auch, dass zu einem Zeitpunkt verschiedene Werte erscheinen: Einmal null, einmal der von null verschiedene.

Da die Konsole des Blitzwolf keine doppelten Einträge ausgibt, müsste dies ein DbLog-Problem sein. Suchen im Forum ergab zwar einen Treffer, aber keine Lösung.

Hier der Konsolenauszug:
19:43:50 MQT: tele/blitzwolf2/STATE = {"Time":"2018-09-13T19:43:50","Uptime":"0T05:37:54","Vcc":3.222,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
19:43:50 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-13T19:43:50","ENERGY":{"Total":0.52268,"Yesterday":0.00000,"Today":0.52268,"Period":2.420,"Power":57.700,"Factor":0.50,"Voltage":224.700,"Current":0.514}}
19:46:20 MQT: tele/blitzwolf2/STATE = {"Time":"2018-09-13T19:46:20","Uptime":"0T05:40:24","Vcc":3.222,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":40,"APMac":"38:10:D5:1C:D5:B8"}}
19:46:20 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-13T19:46:20","ENERGY":{"Total":0.52510,"Yesterday":0.00000,"Today":0.52510,"Period":2.420,"Power":57.600,"Factor":0.50,"Voltage":223.700,"Current":0.512}}
19:48:50 MQT: tele/blitzwolf2/STATE = {"Time":"2018-09-13T19:48:50","Uptime":"0T05:42:54","Vcc":3.222,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
19:48:50 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-13T19:48:50","ENERGY":{"Total":0.52751,"Yesterday":0.00000,"Today":0.52751,"Period":2.410,"Power":58.000,"Factor":0.50,"Voltage":224.000,"Current":0.513}}
19:51:20 MQT: tele/blitzwolf2/STATE = {"Time":"2018-09-13T19:51:20","Uptime":"0T05:45:24","Vcc":3.222,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
19:51:20 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-13T19:51:20","ENERGY":{"Total":0.52993,"Yesterday":0.00000,"Today":0.52993,"Period":2.420,"Power":57.900,"Factor":0.50,"Voltage":224.700,"Current":0.515}}
19:53:50 MQT: tele/blitzwolf2/STATE = {"Time":"2018-09-13T19:53:50","Uptime":"0T05:47:54","Vcc":3.223,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
19:53:50 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-13T19:53:50","ENERGY":{"Total":0.53234,"Yesterday":0.00000,"Today":0.53234,"Period":2.410,"Power":58.400,"Factor":0.51,"Voltage":223.400,"Current":0.513}}

Weiß jemand, wie man das in den Griff kriegt?
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

DS_Starter

#1
Hallo andies,

ich glaube eher dass dein Device innerhalb einer Sekunde mehrere Events erzeugt. DbLog kleinste Zeiteinheit zur Unterscheidung (Timestamp) ist aber 1 Sekunde. Deswegen erscheint es dir als ob unterschiedliche Werte zum gleichem Zeitpunkt (Timestamp) auftreten.
Du müsstest dir mal die Events des Devices im Eventmonitor anschauen.

Andere Möglichkeit ist direkt im DbLog. Setze dir zuerst im global device mselog = 1. Damit siehst du Millisekunden im Log bzw. Eventmonitor.
Dann im DbLog das Attribut verbose4Devs = Blitzwolf2 und verbose = 4.
Dadurch werden im Logfile nur die Einträge bzgl. dieses Devices angezeigt und das Log nicht überschwemmt.
   
Hier im Beispiel mal eine Logausgabe für ein Device SMA_Energymeter:


2018.09.13 21:27:25.262 4: DbLog LogDB -> ################################################################
2018.09.13 21:27:25.271 4: DbLog LogDB -> ###              start of new Logcycle                       ###
2018.09.13 21:27:25.278 4: DbLog LogDB -> ################################################################
2018.09.13 21:27:25.285 4: DbLog LogDB -> number of events received: 10 for device: SMA_Energymeter
2018.09.13 21:27:25.291 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Bezug_WirkP_Zaehler_Diff: 0.0132
2018.09.13 21:27:25.301 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Bezug_WirkP_Zaehler_Diff: 0.0132, Reading: Bezug_WirkP_Zaehler_Diff, Value: 0.0132, Unit:
2018.09.13 21:27:25.307 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Bezug_WirkP_Kosten_Diff: 0.0035
2018.09.13 21:27:25.320 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Bezug_WirkP_Kosten_Diff: 0.0035, Reading: Bezug_WirkP_Kosten_Diff, Value: 0.0035, Unit:
2018.09.13 21:27:25.328 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Einspeisung_WirkP_Zaehler_Diff: 0
2018.09.13 21:27:25.339 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Einspeisung_WirkP_Zaehler_Diff: 0, Reading: Einspeisung_WirkP_Zaehler_Diff, Value: 0, Unit:
2018.09.13 21:27:25.345 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Einspeisung_WirkP_Verguet_Diff: 0.0000
2018.09.13 21:27:25.357 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Einspeisung_WirkP_Verguet_Diff: 0.0000, Reading: Einspeisung_WirkP_Verguet_Diff, Value: 0.0000, Unit:
2018.09.13 21:27:25.364 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: -791.4
2018.09.13 21:27:25.376 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: -791.4, Reading: state, Value: -791.4, Unit: W
2018.09.13 21:27:25.383 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Saldo_Wirkleistung: -791.4
2018.09.13 21:27:25.395 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Saldo_Wirkleistung: -791.4, Reading: Saldo_Wirkleistung, Value: -791.4, Unit: W
2018.09.13 21:27:25.403 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Bezug_Wirkleistung: 791.4
2018.09.13 21:27:25.414 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Bezug_Wirkleistung: 791.4, Reading: Bezug_Wirkleistung, Value: 791.4, Unit: W
2018.09.13 21:27:25.421 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Bezug_Wirkleistung_Zaehler: 5876.2275
2018.09.13 21:27:25.431 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Bezug_Wirkleistung_Zaehler: 5876.2275, Reading: Bezug_Wirkleistung_Zaehler, Value: 5876.2275, Unit: kWh
2018.09.13 21:27:25.437 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Einspeisung_Wirkleistung: 0.0
2018.09.13 21:27:25.448 4: DbLog LogDB -> check Device: SMA_Energymeter , Event: Einspeisung_Wirkleistung_Zaehler: 9805.0167
2018.09.13 21:27:25.459 4: DbLog LogDB -> added event - Timestamp: 2018-09-13 21:27:25, Device: SMA_Energymeter, Type: SMAEM, Event: Einspeis


Das "check device" besagt dass ein Event empfangen wurde und bewertet wird. Wenn es geloggt werden soll , erscheint danach "added event" , wie im Beispiel zu sehen.

Einen Workaround kannst du erzielen indem du event-on-change-reading setzt, eventuell mit einem mininterval-Zusatz.
In der Datenbank kannst du auch einen Primary Key setzen. Dadurch werden generell doppelte Datensätze vermieden.
Wenn du das letztere machen willst kannst du dich ja nochmal melden.

Edit: Eine andere Möglichkeit besteht darin, z.B. täglich ein DbRep mit "set ... delSeqDoublets" über die DB auszuführen. Die Routine entfernt dir diese nicht benötigten Datensätze ohne einen SVG-Plot zu zerstören. Im DbRep das Attr device = Blitzwolf2 setzen um nur Datensätze dieses Devices zu behandeln. Das wäre eine Massnahme um die bereits geloggten Sätze zu bereinigen.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

andies

Danke für den Tipp, war ein Treffer ins Schwarze:

2018-09-14 07:14:05 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 STATE: {"Time":"2018-09-14T06:14:05","Uptime":"0T16:08:09","Vcc":3.226,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_APMac: 38:10:D5:1C:D5:B8
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_SSId: WLAN-120954
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_AP: 1
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_RSSI: 42
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 POWER: ON
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Vcc: 3.226
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Uptime: 0T16:08:09
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Time: 2018-09-14T06:14:05
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 transmission-state: incoming publish received
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 SENSOR: {"Time":"2018-09-14T06:14:05","ENERGY":{"Total":1.13471,"Yesterday":0.77064,"Today":0.36407,"Period":2.400,"Power":57.700,"Factor":0.50,"Voltage":224.300,"Current":0.513}}
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Time: 2018-09-14T06:14:05

Ich habe auch eine Vermutung, wie die doppelten Einträge entstehen. Könnte das dieses Device sein?

defmod ej3 expandJSON (Sonoff|Blitzwolf).*:.*:.{.*}

Damit sollen die json aus den MQTT Geräten auseinander genommen werden.
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

DS_Starter

#3
Zitat
Ich habe auch eine Vermutung, wie die doppelten Einträge entstehen. Könnte das dieses Device sein?
Code: [Auswählen]

defmod ej3 expandJSON (Sonoff|Blitzwolf).*:.*:.{.*}

Da bin ich mir nicht so sicher.
Es stellt sich mir die Frage, woher die vielen "Verbrauch: 0" kommen.

Wenn ich es richtig sehe, extrahiert "expandJSON" schön dieses JSON in seine Bestandteile:


2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 STATE: {"Time":"2018-09-14T06:14:05","Uptime":"0T16:08:09","Vcc":3.226,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":42,"APMac":"38:10:D5:1C:D5:B8"}}
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_APMac: 38:10:D5:1C:D5:B8
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_SSId: WLAN-120954
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_AP: 1
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Wifi_RSSI: 42
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 POWER: ON
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Vcc: 3.226
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Uptime: 0T16:08:09
2018-09-14 07:14:06 MQTT_DEVICE Blitzwolf2 Time: 2018-09-14T06:14:05


In dem JSON kommt aber weder "Verbrauch" noch "transmission-state" vor.
Ich benutze das Modul selbst nicht und kann nur mutmaßen.
Diese Readings kommen wahrscheinlich direkt vom Device "Blitzwolf2".  Setz dir dort doch mal das erwähnte event-on-change-reading auf die relevanten Readings.
Dann sieht man evtl. mehr.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

andies

#4
Zitat von: DS_Starter am 14 September 2018, 08:43:54
Wenn ich es richtig sehe, extrahiert "expandJSON" schön dieses JSON in seine Bestandteile:
Genau, das ist die Funktion des devices.

Zitat von: DS_Starter am 14 September 2018, 08:43:54
Setz dir dort doch mal das erwähnte event-on-change-reading auf die relevanten Readings.
Habe ich gemacht, da Total die Gesamtmenge an Energie misst, habe ich
event-on-change-reading ENERGY_Total
gewählt. Das ergab dann gar keine Ereignisse mehr, weil ENERGY_Total erst "erzeugt" werden muss. Es gibt anscheinend kein Ereignis dazu. Danach habe ich
event-on-change-reading SENSOR,Verbrauch
probiert, weil ich das im Ereignismonitor gesehen hatte und das dann die Aufteilung der Readings auslöst. Im Ereignismomnitor sieht es dann so aus

2018-09-14 10:47:47 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 10:47:47 MQTT_DEVICE Blitzwolf2 SENSOR: {"Time":"2018-09-14T10:47:46","ENERGY":{"Total":1.34189,"Yesterday":0.77064,"Today":0.57125,"Power":29.600,"Factor":0.25,"Voltage":227.500,"Current":0.515}}
2018-09-14 10:47:47 MQTT_DEVICE Blitzwolf2 Verbrauch: 2.08000000000015
2018-09-14 10:47:48 MQTT_DEVICE Blitzwolf2 Verbrauch: 0
2018-09-14 10:47:48 MQTT_DEVICE Blitzwolf2 SENSOR: {"Time":"2018-09-14T10:47:48","ENERGY":{"Total":1.34192,"Yesterday":0.77064,"Today":0.57128,"Power":58.400,"Factor":0.50,"Voltage":227.500,"Current":0.515}}
2018-09-14 10:47:48 MQTT_DEVICE Blitzwolf2 Verbrauch: 0.0299999999999727

Jetzt frage ich mich, warum Blitzwolf da zweimal meldet? Am Ende gelangt folgendes in die MySQL-Datenbank
| 2018-09-14 10:47:47 | Blitzwolf2 | MQTT_DEVICE | Verbrauch: 0                                                                                                                                                                        | Verbrauch | 0                                |      |
| 2018-09-14 10:47:47 | Blitzwolf2 | MQTT_DEVICE | Verbrauch: 2.08000000000015                                                                                                                                                         | Verbrauch | 2.08000000000015                 |      |
| 2018-09-14 10:47:48 | Blitzwolf2 | MQTT_DEVICE | Verbrauch: 0                                                                                                                                                                        | Verbrauch | 0                                |      |
| 2018-09-14 10:47:48 | Blitzwolf2 | MQTT_DEVICE | Verbrauch: 0.0299999999999727                                                                                                                                                       | Verbrauch | 0.0299999999999727               |      |


PS In der Konsole meldet er sich zu dem Zeitpunkt zweimal

10:47:47 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-14T10:47:46","ENERGY":{"Total":1.34189,"Yesterday":0.77064,"Today":0.57125,"Power":29.600,"Factor":0.25,"Voltage":227.500,"Current":0.515}}
10:47:48 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-14T10:47:48","ENERGY":{"Total":1.34192,"Yesterday":0.77064,"Today":0.57128,"Power":58.400,"Factor":0.50,"Voltage":227.500,"Current":0.515}}
10:48:09 MQT: tele/blitzwolf2/STATE = {"Time":"2018-09-14T10:48:09","Uptime":"0T00:35:50","Vcc":3.230,"POWER":"ON","Wifi":{"AP":1,"SSId":"WLAN-120954","RSSI":44,"APMac":"38:10:D5:1C:D5:B8"}}
10:48:09 MQT: tele/blitzwolf2/SENSOR = {"Time":"2018-09-14T10:48:09","ENERGY":{"Total":1.34226,"Yesterday":0.77064,"Today":0.57162,"Period":2.450,"Power":57.600,"Factor":0.50,"Voltage":224.300,"Current":0.513}}

Damit liegt es am Blitzwolf, oder?
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

DS_Starter

Zitat
Jetzt frage ich mich, warum Blitzwolf da zweimal meldet?

Das würde ich mich auch fragen und versuchen zu ergründen. Du müsstest mit der Ursachenforschung also weiter vorn beim Ersteller der Messages beginnen.

Zitat
Das ist ja eine Stunde her. Da wird nichts in die Datenbank geschrieben...
Ich weiß jetzt nicht ob es eine Frage oder Feststelung war. Jedenfalls wird nur "Verbrauch" in die DB geschrieben weil der Regex es so bestimmt (Blitzwolf(1|2):Verbrauch.*)

Das event-on-change-reading müsstest du vermutlich mal so setzen:

event-on-change-reading SENSOR,Verbrauch

Dann sollte es in der DB nur Verbräuche loggen wenn sie sich geändert haben.

EDIT:  da hat sich jetzt einiges überschnitten mit unseren Beiträgen ...
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

andies

Ja, sorry, das ist mir beim Schreiben auch aufgefallen - Danke für die Hilfe und die Geduld!

Ich habe nun Verbrauch auch in die event-on-change aufgenommen und nun zeigt alles auf Blitzwolf. Habe gerade da einen Fall eröffnet, denn dort scheint das Problem zu liegen: https://github.com/arendst/Sonoff-Tasmota/issues/3795

Warten wir mal ab, was passiert.
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Es gab Rückmeldung aus dem Tasmota-Forum. Theo schreibt
ZitatPeriod is only send when teleperiod is finished for the simple reason that it calculates the power used between teleperiod moments. When an energy status is requested outside the teleperiod timestamp it cannot know the period power usage as it does not know the period time to calculate.

So update your openhab receiver to be clever enough to handle a message without a period field.
In der Tat ist Period in der Rückgabe enthalten. Entweder sorgt man dafür, nur diese Werte zu speichern oder man sendet (anscheinend) das Kommando Powerdelta 0 in der Konsole, das ebenfalls dafür sorgen soll. Scheint also gelöst zu sein.
FHEM 6.1 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann