Probleme mit DBLog, Tabelle History, Value Leer obwohl Event OK

Begonnen von ahlermi, 04 Mai 2022, 08:23:05

Vorheriges Thema - Nächstes Thema

ahlermi

Hallo Zusammen,

ich bin dabei die Plots auf das DB Log umzustellen, allerdings machen einige Geräte Probleme, es werden einfach nur Leere Werte in die DB geschrieben.

Man sieht in der Tabelle sogar das korrekte Event mit Wert, aber in Value kommt nix an.
Hat jemand einen Tipp für mich? siehe Screenshot.

Gruß Michael



Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FUUID      6201890a-f33f-6442-eb6f-384e7eb664be6c44
   FVERSION   93_DbLog.pm:v4.12.7-s25800/2022-03-08
   MODE       asynchronous
   MODEL      MYSQL
   NAME       LogDB
   NR         956
   NTFY_ORDER 50-LogDB
   PID        31056
   REGEXP     .*:.*
   STATE      Commit already running - resync at NextSync
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=192.168.69.116;port=3306
   dbuser     fhem
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     LASTLIMITRUNTIME 1651645096.60639
     OLDSTATE   Commit already running - resync at NextSync
     PACKAGE    main
     READINGCOL 64
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    4.12.7
   READINGS:
     2022-05-04 08:18:16   CacheOverflowLastNum 24117
     2022-05-04 05:40:49   CacheOverflowLastState exceeded
     2022-05-04 08:18:31   CacheUsage      26255
     2022-05-04 08:18:16   NextSync        2022-05-04 08:18:46 or if CacheUsage 2000 reached
     2022-05-04 05:26:25   background_processing_time 24.6103
     2022-03-28 18:04:22   reduceLogState  reduceLogNbl 7 average started
     2022-05-04 05:26:25   sql_processing_time 17.9663
     2022-05-04 08:18:16   state           Commit already running - resync at NextSync
Attributes:
   DbLogExclude .*
   DbLogSelectionMode Exclude/Include
   DbLogType  Current/History
   addStateEvent 0
   asyncMode  1
   bulkInsert 1
   cacheEvents 2
   cacheLimit 2000
   defaultMinInterval .*::120::force
   disable    0
   room       System->Logs
   showproctime 1
   userReadings DbFileSize:reduceLogState.* { (split(' ',`cat /media/nas/Downloads/db.log`))[0] }
   verbose    1
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN

ahlermi

Nach ca. 8 Stunden debugging habe ich festgestellt das einige Module eine Aufbereitung für DbLog zur Verfügung stellen.


sub DbLog_splitFn


Da die Felder die mich interessieren aus dem statistics Modul kommen, sind diese dem Entwickler meines 73_SolvisClient.pm Moduls natürlich nicht bekannt.

Leider hat das 73_SolvisClient.pm Modul dann einfach garkeinen Wert zurück gegeben, das konnte ich jetzt fixen.

Der else Teil ist von mir.


#####################################
#
#      DbLog event interpretation
#
sub DbLog_splitFn {
    my $event = shift;
    my $device = shift;

    my %ChannelDescriptions = %{$devicesChannelDescriptions{$device}};

    my ($reading, $value, $unit);

    my @splited = split(/ /,$event);

    $reading = $splited[0];;
    $reading =~ tr/://d;

    $unit = '';

    if ( defined( $ChannelDescriptions{$reading}{Unit} ) ) {
        $unit = $ChannelDescriptions{$reading}{Unit};
        $value = $splited[1];
    }else{
        $value = shift @splited;
        $value = join(" ", @splited);
    }
    return ($reading, $value, $unit);
} # end DbLog_splitFn

1;


Jetzt kommt im Log zwar keine Einheit an, aber wenigstens Werte!

Gruß Michael
PI4 FHEM, PI3 FHEM, 6 x Echo mit talk2fhem, Siri, SNIPS auf PI3 mit Samson UB1, YeeLight, Homematic, MAX!, 433Mhz, LaCross, Xiaomi Vacuum V1, ESPEasy, Gardena, Telegram, FLOORPLAN, HEOS, Xiaomi Aqara, Sonoff, SolvisMax, SolvisClient, HUE, ESPEasy für Bayernlüfter, Harmony, Tasmota, JKBMS, EASUN