RFD-FHEM / RFFHEM

Counterpart of SIGNALDuino, it's the code for FHEM to work with the data received from the uC
GNU General Public License v3.0
44 stars 33 forks source link

Water tank level monitor TS-FT002 #977

Closed docolli closed 3 years ago

docolli commented 3 years ago

Specifications for new sensor / switch / or other device ...

Specifications

I've already identified messages with the help of this project -> https://github.com/theovassiliou/WTLMReceiver They come exactly every 180s and are in sync with the receive signal indicator on the base LCD.

Signal 0 = +480/-480ms Signal 1 = +480/-960ms

RAWMSG: MU;P0=-2076;P1=479;P2=-963;P3=-492;P4=-22652;D=01213121213121212131313121313131312121313131313121212121313131212131313131313131313121313121313131313131313131312131212121313121412131212121212131213121213121212131313121313131312121313131313121212121313131212131313131313131313121313121313131313131313131;CP=1;R=26;O;
RAWMSG: MU;P0=-3508;P1=500;P2=-480;P3=-961;P4=-22648;D=01213131312121213121212121313121212121213131313121212131312121212121212121213121213121212121212121212121312131313121213141312131313131312131213131213131312121213121212121313121212121213131313121212131312121212121212121213121213121212121212121212121312131;CP=1;R=26;O;

I've already included into my local SD_Protocol.Data.pm the following defintion and activated protocoll 120:

    "120" =>  # Water Tank Level Monitor TS-FT002
              # MU;P0=-21720;P1=486;P2=-15724;P3=-482;P4=-970;D=01213141414131313141313131314141313131313141414141313131413141314131313131414131313141313131313131313131314131313141313141014131414141414131413141413141414131313141313131314
      {
        name            => 'TS-FT002',
        comment         => 'Water tank level monitor with temperature',
        id              => '120',
        knownFreqs      => '433.92',
        one             => [1,-1], # 480,-480
        zero            => [1,-2], # 480,-960
        start           => [-33],    # -15840
        clockabs        => 480,
        format          => 'twostate',
        clientmodule    => 'SD_WS',
        modulematch     => '^W120#',
        preamble        => 'W120#',
        reconstructBit   => '1',
        length_min      => '72',
        length_max      => '72',
      },

However, a new device with protocol 120 has not been added, but a device "SIGNALduino_unknown_31" using protocol ID 31. What have I done wrong in my definition?

Additionally taken from the other github project the protocol seems to be:

Temperature (of water tank)*10: Nibble 13 (High) - 12 (Middle) - 10 (Low) [in °C; -40, if invalid] Depth: Nibble 7 (High) - 6 (Middle) - 8 (Low) [in cm] Device ID: Nibble 4 (High) - 5 (Low) Serial: Nibble 3 (High) - 3 (Low) Battery: Nibble 9 TransmitInterval: Nibble 11

Check also WTLMReceiver.cpp for details.

elektron-bbs commented 3 years ago

Die Whitelist wird erst dauerhaft gespeichert, nachdem "Save config" ausgeführt wurde (Hinweis mit dem roten Fragezeichen fehlt noch, Fix ist in Arbeit). Neustarts von FHEM hatte ich auch. Mit Protokoll 110 habe ich eigentlich keinerlei Probleme festgestellt. Das Attribut "development" kannst du wieder löschen (bis zum nächsten neuen Protokoll :-) Es sollte aber eigentlich keinen weiteren Einfluss haben.

docolli commented 3 years ago

Alles klar, habe mich schon gewundert, dass dies anscheinend ohne "Save config" gehen soll.

Jetzt sollte es dauerhaft aus sein, ich berichte...

sidey79 commented 3 years ago

Nicht wirklich - @sidey79 liest du mit?

Jetzt schon. Ich hatte wärmebedingt die letzte Woche hitzefrei :)

Das Speicherleck habe ich auf meinem Ubuntu Server leider auch. :( Hatte allerdings nicht den Eindruck, dass es durch das Signalduino Modul verursacht wird.

docolli commented 3 years ago

Hallo @sidey79 !

@elektron-bbs hatte da den richtigen Riecher: seit das Protokoll aus ist (gestern ~13:20), läuft auch mein FHEM stabil: grafik grafik

Ich werde es jetzt wieder aktivieren. Schreibt einfach, wenn ich wieder was testen soll. Mach ich gerne!

Ich hatte start => [1,-2, 1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2] genommen, damit das Modul sauber nur auf die Nachrichten von diesem Sensor reagiert. So eine Art Fingerprint, das war zumindest mein Verständniss von start. Daneben, gibt es auch noch sync. Wo sind da die Unterschiede?

elektron-bbs commented 3 years ago

Wie schon hier https://github.com/RFD-FHEM/RFFHEM/issues/977#issuecomment-863331508 beschrieben, läuft es auch mit einer kürzeren Startsequenz sauber.

Ich bin mir nur nicht sicher, wo es klemmt... Vielleicht in der sub SIGNALduino_PatternExists???

Ich hatte mir gestern mal eine Logausgabe eingebaut, um zu sehen, was bei Protokoll 111 so abgeht (siehe Anhang) - ca. 100 Nachrichten in gut 3 Minuten. Schuld daran ist wahrscheinlich, das ein clockabs von 480 +-Toleranz relativ häufig vorkommt.

Vielleicht macht es ja auch Sinn, vorher schon mal die Länge der Nachrichten zu prüfen. In dem Log sind schätzungsweise 90 % der Nachrichten zu kurz für Protokoll 111.

fhem-2021-06-19.log

docolli commented 3 years ago

Das mit der kürzeren Startsequenz werden ich testen.

Noch eine Info, die ich schon seit dem Einsatz meines "111er Sensors" beobachte: Es wurde damals neben dem 111er device auch ein device automatisch angelegt, welches mit Protokoll 31 läuft.

Im Log dazu finden sich exakt zu den Zeiten, wo der Sensor seine Nachrichten sendet, immer schön im 3min. Abstand Protokolleinträge: SIGNALduino_unknown_31-2021.log

elektron-bbs commented 3 years ago

Bei Protokoll 31 passen halt zufällig auch die Puls-/Pausezeiten. Kannst du ignorieren oder abschalten.

Ralf9 commented 3 years ago

Ich bin mir nur nicht sicher, wo es klemmt... Vielleicht in der sub SIGNALduino_PatternExists???

Ja das vermute ich auch. Es sieht so aus als würden alle Protokolle mit einem Start mit 6 oder mehr Einträgen Probleme machen. Also auch die Ids 31 und 42.

Ich habs mal auf einem Testsystem auf einem BananaPi mit Perl 5.28.1 getestet. Bei mir werden nicht so viele MU Nachrichten empfangen. Bei den Sensoren mit den IDs 0 und 7 werden fast nur MS-Nachrichten empfangen, aber die MU-Nachrichten von der WH3080 mit der Id 9 haben für den Test gereicht. Ohne die ID 111 siehts mit dem RAM gut aus. Um kurz nach 14 Uhr hab ich die ID 111 aktiviert und einen fhem restart gemacht, danach ist dann das verwendete RAM gestiegen. Das gestiegene verwendete RAM wird erst wieder nach einem fhem restart freigegeben. Hab zum Testen um 16 Uhr ein fhem restart gemacht.

Um 18 Uhr hab ich die Protokolle mit einem Start mit mehr als 3 Einträgen (u.a. 111, 42, 31..) deaktiviert, danach ist das verwendete RAM staibil unter 100 geblieben, nachdem ich die Ids nach 21 Uhr wieder aktiviert hatte ist das verwendete RAM wieder gestiegen.

Ich hab schon eine Idee für einen Wordaround, falls sich das Speicherleck nicht finden lässt. 20210620_ram_bug

sidey79 commented 3 years ago

Ich habe schon mittels Devel::Leak::Object nach Speicherlecks gesucht. Vielleicht findet ihr damit ja was. Ich hatte bislang wenig Erfolg.

docolli commented 3 years ago

Kurze Zwischenmeldung:

Seit ich den start gekürzt auf start => [1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 1.1111 - Test wegen RAM Problemen gestellt habe (20.06.21 - 12:16h) läuft FHEM stabil mit geringem Speicherverbrauch grafik

Die Anzahl der erfolgreich empfangenen Pakete pro Tag (max. 480 erwartet) hat sich seitdem nicht signifikant geändert:

Datum Pakete
2021-06-22 336
2021-06-21 321
2021-06-20 150
2021-06-19 104
2021-06-18 223
2021-06-17 188
2021-06-16 215
2021-06-15 218
2021-06-14 221
2021-06-13 344
2021-06-12 261
2021-06-11 377
2021-06-10 73
elektron-bbs commented 3 years ago

Bei mir normalisiert sich die RAM-Belegung erst mit einer Länge des Starts von 4 Bit:

Sync 1.1111 RaspberryPi3_Sync_11111_RAM

Sync 1111 RaspberryPi3_Sync_1111_RAM

docolli commented 3 years ago

Ich habe seit gestern Abend start => [1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 01.1111 gesetzt:

grafik

ca. 6h später gab es eine einmalige, deutliche Reduktion des freien Speichers. Seitdem nicht mehr. FHEM wurde (noch) nicht automatisch neu gestartet (war vorher ja der Fall). Ich lasse es so jetzt noch eine Weile laufen.

elektron-bbs commented 3 years ago

Mag sein, das das bei dir mit dieser Einstellung halbwegs funktioniert, bei mir jedenfalls nicht. Wir könnten versuchen, start => [1,-1, 1,-2, 1,-2, 1,-2], # Sync 0111 zu verwenden. Erst mit nur 4 Bit läuft FHEM bei mir ohne Auffälligkeiten. Dazu müsste ich aber das Modul ändern.

Ralf9 commented 3 years ago

Ich habe bei meiner 00_SIGNALduino.pm Version in der Routine "SIGNALduino_Parse_MU" die Erzeugung des Start Strings optimiert. Damit gibt es bei meinen Tests auch bei einem langen start Eintrag keinen hohen Speicherverbrauch. Dazu habe ich in der Protokollliste einen neuen Eintrag "starti" zugefügt. In das starti Array werden die Bits 0 oder 1 eingetragen. z.B. aus start => [1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 01 1111 wird dann starti => [0,1, 1,1,1,1],

Es muss dann nur noch einmal die PatternExists für one und zero aufgerufen werden

$pstrAr[1]=SIGNALduino_PatternExists($hash,\@{$ProtocolListSIGNALduino{$id}{one}},\%patternList,\$rawData)
$pstrAr[0]=SIGNALduino_PatternExists($hash,\@{$ProtocolListSIGNALduino{$id}{zero}},\%patternList,\$rawData)

dann kann damit in einer einfachen Schleife der Start String zusammengebaut werden

foreach my $startStrIdx (@{$ProtocolListSIGNALduino{$id}{starti}}) {
    $startStr .= $pstrAr[$startStrIdx];
}

Ich habe es in meiner Variante der 00_SIGNALduino.pm dev Version eingebaut update all https://raw.githubusercontent.com/Ralf9/RFFHEM/dev/controls_dev_ralf9_signalduino.txt https://forum.fhem.de/index.php/topic,111653.msg1058900.html#msg1058900

sidey79 commented 3 years ago

Was nimmst Du an, wo sich das Speicherleck befindet?

In SIGNALduino_PatternExists würde ich annehmen. Das ganze könnte ich in einem Test genauer unter die Lupe nehmen, allerdings glaube ich noch nicht daran, etwas zu finden.

Ralf9 commented 3 years ago

ich denke das index kann man als Ursache wahrscheinlich ausschließen $message_start = index($rawData, $startStr);

Ich vermute auch das SIGNALduino_PatternExists

Das regex kann man wahrscheinlich als ein Teil der Ursache auch nicht ganz ausschliessen

     my $regex="(?:$startStr)($signalRegex)";
      while ( $rawData =~ m/$regex/g)   {
sidey79 commented 3 years ago

@Ralf9

An der Regex hast Du doch nichts verändert oder?

Ralf9 commented 3 years ago

nein an der Regex habe ich nichts verändert

sidey79 commented 3 years ago

Ich habe ein Testprogramm geschrieben, aber das findet nichts. Vermutlich muss es mit der rmsg etwas zu tun haben

#!/usr/bin/env perl
use strict;
use warnings;
use lib::SD_Protocols;

# Track every object including where they're created
use Devel::Leak::Object qw{ GLOBAL_bless };
$Devel::Leak::Object::TRACKSOURCELINES = 1;

use Devel::Gladiator qw(walk_arena arena_ref_counts arena_table);

our %defs;

sub Debug
{
    print $_[0];
}

sub AttrVal {
    return 0;
}

sub
round($$)
{
  my($v,$n) = @_;
  return sprintf("%.${n}f",$v);
}

############################# package main
#=item SIGNALduino_PatternExists()
# This functons, needs reference to $hash, @array of values to search and %patternList where to find the matches.
#
# Will return -1 if pattern is not found or a string, containing the indexes which are in tolerance and have the smallest gap to what we searched
# =cut

# 01232323242423       while ($message =~ /$pstr/g) { $count++ }

sub SIGNALduino_PatternExists {
  my ($hash,$search,$patternList,$data) = @_;
  #my %patternList=$arg3;
  #Debug 'plist: '.Dumper($patternList) if($debug);
  #Debug 'searchlist: '.Dumper($search) if($debug);

  my $valid=1;
  my @pstr;
  my $debug = AttrVal($hash->{NAME},'debug',0);
  my $i=0;
  my $maxcol=0;

  foreach my $searchpattern (@{$search})    # z.B. [1, -4]
  {
    #my $patt_id;
    # Calculate tolernace for search
    #my $tol=abs(abs($searchpattern)>=2 ?$searchpattern*0.3:$searchpattern*1.5);
    my $tol=abs(abs($searchpattern)>3 ? abs($searchpattern)>16 ? $searchpattern*0.18 : $searchpattern*0.3 : 1);  #tol is minimum 1 or higer, depending on our searched pulselengh

    Debug "tol: looking for ($searchpattern +- $tol)" if($debug);

    my %pattern_gap ; #= {};
    # Find and store the gap of every pattern, which is in tolerance
    %pattern_gap = map { $_ => abs($patternList->{$_}-$searchpattern) } grep { abs($patternList->{$_}-$searchpattern) <= $tol} (keys %$patternList);
    if (scalar keys %pattern_gap > 0)
    {
      Debug "index => gap in tol (+- $tol) of pulse ($searchpattern) : ".Dumper(\%pattern_gap) if($debug);
      # Extract fist pattern, which is nearst to our searched value
      my @closestidx = (sort {$pattern_gap{$a} <=> $pattern_gap{$b}} keys %pattern_gap);

      my $idxstr='';
      my $r=0;

      while (my ($item) = splice(@closestidx, 0, 1))
      {
        $pstr[$i][$r]=$item;
        $r++;
        Debug "closest pattern has index: $item" if($debug);
      }
      $valid=1;
    } else {
      # search is not found, return -1
      return -1;
      last;
    }
    $i++;
    #return ($valid ? $pstr : -1);  # return $pstr if $valid or -1

    #foreach $patt_id (keys %$patternList) {
      #Debug "$patt_id. chk ->intol $patternList->{$patt_id} $searchpattern $tol";
      #$valid =  SIGNALduino_inTol($patternList->{$patt_id}, $searchpattern, $tol);
      #if ( $valid) #one pulse found in tolerance, search next one
      #{
      # $pstr="$pstr$patt_id";
      # # provide this index for further lookup table -> {$patt_id =  $searchpattern}
      # Debug 'pulse found';
      # last ; ## Exit foreach loop if searched pattern matches pattern in list
      #}
    #}
    #last if (!$valid);  ## Exit loop if a complete iteration has not found anything
  }
  my @results = ('');

  foreach my $subarray (@pstr)
  {
    @results = map {my $res = $_; map $res.$_, @$subarray } @results;
  }

  foreach my $search (@results)
  {
    Debug "looking for substr $search" if($debug);
    return $search if (index( ${$data}, $search) >= 0);
  }

  return -1;

  #return ($valid ? @results : -1);  # return @pstr if $valid or -1
}

sub SIGNALduino_splitMsg {
  my $txt = shift;
  my $delim = shift;
  my @msg_parts = split(/$delim/,$txt);

  return @msg_parts;
}

############################# package main
sub SIGNALduino_Split_Message {
  my $rmsg = shift;
  my $name = shift;
  my %patternList;
  my $clockidx;
  my $syncidx;
  my $rawData;
  my $clockabs;
  my $mcbitnum;
  my $rssi;

  my @msg_parts = SIGNALduino_splitMsg($rmsg,';');      ## Split message parts by ';'
  my %ret;
  my $debug = AttrVal($name,'debug',0);

  foreach (@msg_parts)
  {
    #Debug "$name: checking msg part:( $_ )" if ($debug);

    #if ($_ =~ m/^MS/ or $_ =~ m/^MC/ or $_ =~ m/^Mc/ or $_ =~ m/^MU/)  #### Synced Message start
    if ($_ =~ m/^M./)
    {
      $ret{messagetype} = $_;
    }
    elsif ($_ =~ m/^P\d=-?\d{2,}/ or $_ =~ m/^[SL][LH]=-?\d{2,}/) #### Extract Pattern List from array
    {
       $_ =~ s/^P+//;
       $_ =~ s/^P\d//;
       my @pattern = split(/=/,$_);

       $patternList{$pattern[0]} = $pattern[1];
       Debug "$name: extracted  pattern @pattern \n" if ($debug);
    }
    elsif($_ =~ m/D=\d+/ or $_ =~ m/^D=[A-F0-9]+/)                #### Message from array
    {
      $_ =~ s/D=//;
      $rawData = $_ ;
      Debug "$name: extracted  data $rawData\n" if ($debug);
      $ret{rawData} = $rawData;
    }
    elsif($_ =~ m/^SP=([0-9])$/)                                     #### Sync Pulse Index
    {
      Debug "$name: extracted  syncidx $1\n" if ($debug);
      #return undef if (!defined($patternList{$syncidx}));
      $ret{syncidx} = $1;
    }
    elsif($_ =~ m/^CP=([0-9])$/)                                     #### Clock Pulse Index
    {
      Debug "$name: extracted  clockidx $1\n" if ($debug);;
      $ret{clockidx} = $1;
    }
    elsif($_ =~ m/^L=\d/)                                         #### MC bit length
    {
      (undef, $mcbitnum) = split(/=/,$_);
      Debug "$name: extracted  number of $mcbitnum bits\n" if ($debug);;
      $ret{mcbitnum} = $mcbitnum;
    }
    elsif($_ =~ m/^C=\d+/)                                        #### Message from array
    {
      $_ =~ s/C=//;
      $clockabs = $_ ;
      Debug "$name: extracted absolute clock $clockabs \n" if ($debug);
      $ret{clockabs} = $clockabs;
    }
    elsif($_ =~ m/^R=\d+/)                                        #### RSSI
    {
      $_ =~ s/R=//;
      $rssi = $_ ;
      Debug "$name: extracted RSSI $rssi \n" if ($debug);
      $ret{rssi} = $rssi;
    }  else {
      Debug "$name: unknown Message part $_" if ($debug);;
    }
    #print "$_\n";
  }
  $ret{pattern} = {%patternList};
  return %ret;
}

my %dump1 = map { ("$_" => $_) } @{walk_arena()};

my $className = 'lib::SD_Protocols';
my $hash->{protocolObject}= new $className( filename => './FHEM/lib/SD_ProtocolData.pm' );
$hash->{NAME} = "dummy";

my %patternListRaw;
my $rawData = "MU;P0=-2076;P1=479;P2=-963;P3=-492;P4=-22652;D=01213121213121212131313121313131312121313131313121212121313131212131313131313131313121313121313131313131313131312131212121313121412131212121212131213121213121212131313121313131312121313131313121212121313131212131313131313131313121313121313131313131313131;CP=1;R=26;O;";
my $id=111;
my $message_start;
for (my $id=1; $id <112;$id++)
{
    if ( !defined $hash->{protocolObject}->getProperty($id,'clockabs')  ) { next };
    if ( !defined $hash->{protocolObject}->getProperty($id,'start')  ) { next };

    my %msg_parts = SIGNALduino_Split_Message($rawData, $hash->{NAME});
    my $clockabs= $hash->{protocolObject}->getProperty($id,'clockabs');

    $patternListRaw{$_} = $msg_parts{pattern}{$_} for keys %{$msg_parts{pattern}};
    my %patternList = map { $_ => round($patternListRaw{$_}/$clockabs,1) } keys %patternListRaw;

    my $startStr=SIGNALduino_PatternExists($hash,\@{$hash->{protocolObject}->getProperty($id,'start')},\%patternList,\$rawData );
    print qq[$startStr\n];

    $message_start = index($rawData, $startStr);
    if ( $message_start == -1)
    {
        next;
    } else {
        $rawData = substr($rawData, $message_start);
    }

    }

    my %dump2 = map { $dump1{$_} ? () : ("$_" => $_) } @{walk_arena()};
    use Devel::Peek; Dump \%dump2;
    arena_table();
1;
HomeAutoUser commented 3 years ago

@sidey79 @Ralf9, was nehmt ihr als Kriterium das vermutlich kein Fehler an der Position ist. Es gibt Fälle oder Systeme wo das „Leck“ langsam wächst bzw. auftritt oder sprunghaft nach Zeit x. Somit muss es ggf mit von einer Zusätzlichen Komponente / Faktor abhängig sein. Sollte der Fehler an der Sub sein, so sollte es ja stetig auftreten. … oder denke ich falsch???

So ist ein „fester Test“ nur die halbe Wahrheit denke ich.

sidey79 commented 3 years ago

Ich habe verdächtige Routinen in ein eigenes Programm kopiert und am Ende geprüft ob noch Variablen initialisiert sind, welche es nicht sein sollten.

Da wurden keine gefunden. Das war für mich der Indikator. Allerdings wird das ganze nur mit einer rmsg aufgerufen. Vielleicht tritt der Fehler nur mit einer bestimmten rmsg auf.

sidey79 commented 3 years ago

Ich habe Devel::Gladiator in fhem bei mir eingebaut.

Läuft jetzt ca 10h. 4 Millionen Scalar Werte 700000 Referenzen zu scalar 900000 Array Referenzen 860000 Arrays 15000 Coderefs

Wenn ich das richtig interpretiere sind das die Elemente die im Speicher liegen. An welcher Stelle die jeweils entstehen weiss ich nicht, liegt ja fast alles im global namespace.

docolli commented 3 years ago

Leider reichen meine Perl Kenntnisse nicht aus, euch hier konkret helfen zu können! Aber ich kann testen. Ich bin noch auf der ursprünglichen 00_SIGNALduino.pm version.

Ich habe eben die start Definition noch um 4Bit verlängert, um das Problem zu verschärfen. preamble und legth musste ich dann anpassen:

start           => [1,-2, 1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2, 1,-1, 1,-1, 1,-1], # Sync 101.1111.1000 (Test)
preamble        => 'W111#5F1', # add sync 0101.1111
length_min      => '60',
length_max      => '60',

Wenn ich fhem neu starte und dann der Sensor seine Daten schickt [hier 12:31:46] (ich sehe das ja auf dem Display des Sensors), genau dann geht die CPU Last des perl Prozesses auf 100% (für ca. 1min) und der Speicherverbrauch steigt. Nach kurzer Zeit geht die CPU Last wieder ins normale und der Speicher ist voll:

top - 12:32:42 up 36 days, 15:02,  1 user,  load average: 0,61, 0,35, 0,29
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,1 us,  1,1 sy,  0,0 ni, 98,7 id,  0,0 wa,  0,0 hi,  0,1 si,  0,0 st
MiB Mem :    924,2 total,    107,4 free,    604,5 used,    212,4 buff/cache
MiB Swap:    100,0 total,     61,4 free,     38,6 used.    261,2 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
11928 fhem      20   0  601996 584828   7176 S   2,7  61,8   1:12.32 perl

Es muss also mit der (erstmaligen?) Verarbeitung der konkreten 111er Nachricht vom Sensor zu tun haben. Je länger start, desto mehr Speicher wird verschwendet.

Ich beobacht auch danach noch ein paar Phasen mit 100% CPU last für ~1min. Der Speicherverbrauch steigt dann aber nicht mehr so deutlich an.

Um 12:46 zeigt des Gerät (endlich) empfange Darten als readings an! Dabei hatte auch wieder 100% CPU Last und mir ist die FHEM instanz neu gestartet.

docolli commented 3 years ago

Ich mir nach eine FHEM restart die Ausgabe von top in eine Datei geschrieben (alle 3s 1 Wert) und per grep gefiltert.

top -bc > signalduino_111_test.log

danach

grep perl signalduino_111_test.log > signalduino_111_test_perl.log

Die anfängliche hohe CPU Last kommt noch vom FHEM restart.

12618 fhem      20   0   52272  36824   6468 R  94,7   3,9   0:04.91 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   52932  37348   6468 S  15,5   3,9   0:05.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   52932  37348   6468 S   3,3   3,9   0:05.48 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   57988  42404   6484 R  26,2   4,5   0:06.28 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   67608  51908   6492 R  66,0   5,5   0:08.30 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   84400  68864   6604 S  94,1   7,3   0:11.16 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   85860  70340   7096 R  62,6   7,4   0:13.07 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73232   7116 S  16,9   7,7   0:13.59 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73232   7116 S   5,9   7,7   0:13.77 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73244   7116 S   3,9   7,7   0:13.89 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73264   7116 S  10,2   7,7   0:14.20 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73268   7116 S  11,1   7,7   0:14.54 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73276   7116 S   0,7   7,7   0:14.56 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73276   7116 S   1,0   7,7   0:14.59 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73276   7116 S   2,3   7,7   0:14.66 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73276   7116 S   0,3   7,7   0:14.67 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96740  81076   7888 S  48,9   8,6   0:01.49 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73304   7116 S   5,2   7,7   0:14.83 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96740  81076   7888 S  17,4   8,6   0:02.02 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73304   7116 S   1,6   7,7   0:14.88 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96888  81204   7888 S  24,6   8,6   0:02.77 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73304   7116 S   0,3   7,7   0:14.89 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96888  81204   7888 S  15,8   8,6   0:03.25 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73304   7116 S   0,3   7,7   0:14.90 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96268  80668   7888 S  22,0   8,5   0:03.92 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73304   7116 S   0,7   7,7   0:14.92 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96268  80668   7888 S  19,3   8,5   0:04.51 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   88780  73304   7116 S   3,3   7,7   0:15.02 /usr/bin/perl fhem.pl fhem.cfg
12646 fhem      30  10   96748  80992   7888 S  17,5   8,6   0:05.04 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89044  73520   7116 S   7,6   7,8   0:15.25 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S  13,5   7,8   0:15.66 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   3,9   7,8   0:15.78 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   6,2   7,8   0:15.97 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   8,9   7,8   0:16.24 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   0,3   7,8   0:16.25 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   2,3   7,8   0:16.32 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   1,3   7,8   0:16.36 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0   89176  73688   7116 S   0,7   7,8   0:16.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  115820 100160   7116 R  96,7  10,6   0:19.33 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  151108 135232   7116 R  99,3  14,3   0:22.35 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  180544 164536   7116 R  99,7  17,4   0:25.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  221564 205104   7116 R  99,0  21,7   0:28.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  228032 211704   7116 R 100,0  22,4   0:31.42 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  266840 250512   7116 R 100,0  26,5   0:34.46 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  305780 289320   7116 R  99,7  30,6   0:37.49 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  345320 328856   7116 R 100,0  34,7   0:40.54 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  354424 337112   7116 R  99,3  35,6   0:43.57 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  364192 346880   7116 R 100,0  36,7   0:46.61 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  403528 386216   7116 R  99,7  40,8   0:49.64 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  442864 425552   7116 R 100,0  45,0   0:52.68 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  482200 464888   7116 R 100,0  49,1   0:55.72 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  521536 503960   7116 R  99,3  53,3   0:58.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  560740 543296   7116 R 100,0  57,4   1:01.78 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584352   7116 R 100,0  61,7   1:04.86 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584352   7116 R  99,0  61,7   1:07.92 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  80,4  61,8   1:10.38 /usr/bin/perl fhem.pl fhem.cfg
12706 fhem      20   0  601804 580424   3040 R  12,1  61,3   0:00.37 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   4,2  61,8   1:10.51 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,9  61,8   1:10.63 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:10.65 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:10.67 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:10.71 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:10.71 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:10.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,9  61,8   1:10.86 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   2,6  61,8   1:10.94 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   6,2  61,8   1:11.13 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   8,6  61,8   1:11.39 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:11.40 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:11.42 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:11.44 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:11.47 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:11.49 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:11.51 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:11.53 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:11.56 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  11,8  61,8   1:11.92 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:11.92 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,6  61,8   1:12.09 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:12.12 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:12.13 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:12.14 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:12.16 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:12.19 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:12.21 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:12.21 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   2,6  61,8   1:12.29 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,6  61,8   1:12.34 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:12.35 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:12.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:12.40 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:12.40 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:12.43 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,9  61,8   1:12.61 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:12.61 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   9,2  61,8   1:12.89 /usr/bin/perl fhem.pl fhem.cfg
12756 fhem      20   0  601804 580140   2756 R   8,9  61,3   0:00.27 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,5  61,8   1:13.06 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   4,6  61,8   1:13.20 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,6  61,8   1:13.31 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:13.32 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:13.34 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:13.37 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:13.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:13.42 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,6  61,8   1:13.47 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:13.48 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:13.52 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:13.53 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,9  61,8   1:13.71 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:13.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   2,0  61,8   1:13.80 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:13.82 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:13.83 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:13.83 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:13.87 /usr/bin/perl fhem.pl fhem.cfg
12781 fhem      20   0  601804 580456   3072 S  22,1  61,3   0:00.67 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  11,6  61,8   1:14.22 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:14.25 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:14.29 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:14.32 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,6  61,8   1:14.49 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:14.50 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:14.52 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:14.55 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   6,2  61,8   1:14.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:14.76 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,9  61,8   1:14.94 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:14.97 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:14.99 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   4,3  61,8   1:15.12 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,3  61,8   1:15.22 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,9  61,8   1:15.34 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:15.35 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:15.38 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:15.40 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:15.43 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  13,8  61,8   1:15.85 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:15.88 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 R   9,8  61,8   1:16.18 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  13,8  61,8   1:16.60 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:16.60 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:16.62 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,3  61,8   1:16.72 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:16.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:16.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:16.76 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   5,6  61,8   1:16.93 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:16.94 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:16.97 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:16.98 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:17.00 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:17.00 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   2,6  61,8   1:17.08 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  24,5  61,8   1:17.83 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:17.84 /usr/bin/perl fhem.pl fhem.cfg
12847 fhem      20   0  601804 580140   2756 S   7,8  61,3   0:00.24 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   4,2  61,8   1:17.97 /usr/bin/perl fhem.pl fhem.cfg
12853 fhem      20   0       4      4      0 R   1,3   0,0   0:00.04 [perl]
12618 fhem      20   0  601804 584500   7116 S   4,6  61,8   1:18.11 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:18.15 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,6  61,8   1:18.26 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:18.26 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,3  61,8   1:18.36 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:18.36 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:18.37 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   2,3  61,8   1:18.44 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:18.47 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:18.49 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:18.53 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:18.55 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   4,3  61,8   1:18.68 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:18.72 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:18.74 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:18.75 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:18.78 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:18.81 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   2,0  61,8   1:18.87 /usr/bin/perl fhem.pl fhem.cfg
12878 fhem      20   0  601804 580456   3072 S  23,3  61,3   0:00.71 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  12,1  61,8   1:19.24 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,3  61,8   1:19.34 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:19.36 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:19.36 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  22,3  61,8   1:20.04 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:20.05 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:20.07 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:20.07 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   3,6  61,8   1:20.18 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:20.20 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 R  78,8  61,8   1:22.61 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S  62,6  61,8   1:24.52 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,3  61,8   1:24.56 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:24.58 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,7  61,8   1:24.60 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:24.60 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,0  61,8   1:24.60 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   1,0  61,8   1:24.63 /usr/bin/perl fhem.pl fhem.cfg
12618 fhem      20   0  601804 584500   7116 S   0,3  61,8   1:24.64 /usr/bin/perl fhem.pl fhem.cfg
Ralf9 commented 3 years ago

mit der Optimierung der Start String erzeugung, die ich in meiner 00_SIGNALduino.pm Variante eingebaut habe, hat sich für mich das Problem erledigt. Ich habe damit keine Sprünge nach oben im Speicherverbrauch mehr.

docolli commented 3 years ago

und du bist dir sicher, dass es an der Optimierung liegt und nicht daran, dass dein Array jetzt starti heißt? 😉 Nicht dass es daran liegt, dass der Variablenname start noch irgendwo anders benutzt wird.

Sorry, aber für mich kommt das Problem zu sporadisch, als dass es in einer bei jeder Nachricht regelmäßig aufgerufenen Routine sitzt. Wenn ich FHEM neu starte, wie oft muss Signalduino eine Nachricht korrekt erkennen, bevor es ein device anlegt bzw. readings anzeigt? Ich beobachte, dass es einfach etwas dauert, bis die readings aktuelle Werte haben.

Kann ich in meiner 00_SIGNALduino.pm den Namen des Array "start" ändern, um das mal zu testen? Wo müsste ich das überall machen?

docolli commented 3 years ago

Ich habe das Problem gerade durch das sehr lange start nochmals provoziert. Ich habe im Signalduino verbose=5 gesetzt und die Ausgabe des fhem.log per tail beobachtet.


2021.06.26 18:05:46 5: SignalDuino: Parse_MU, 0. try, regex ((?:4)((?:01|25){65,}(?:0|2)?)) did not match
2021.06.26 18:05:46 5: SignalDuino: Parse_MU, start pattern for MU protocol id 111 -> TS-FT002 not found, aborting
2021.06.26 18:05:47 4: SignalDuino: Read, msg: MU;P0=-156;P1=136;P2=-1052;P3=1241;P4=486;P5=-30148;P6=360;P7=-10688;D=0123232324242424232424242324232424232324232424242324232424232423567;CP=4;R=2;
2021.06.26 18:05:47 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:42|32){43,})) did not match
2021.06.26 18:05:47 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 9 -> weather matches, trying to demodulate
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:42|32){60,}(?:4|3)?)) did not match
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 13.1 -> FLAMINGO FA22RF / FA21RF / LM-101LD not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 21 -> Einhell Garagedoor not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 24 -> Visivo remote not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 26 -> xavax not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 27 -> EFTH-800 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 28 -> IC Ledspot not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 29 -> HT12e not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 30 -> diverse not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 32 -> wireless doorbell not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 36 -> remote not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 37 -> Bresser 7009994 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 38 -> NC-3911 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, for MU protocol id 39, applying filterfunc SIGNALduino_compPattern
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 39 -> X10 Protocol not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 40 -> Romotec  not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 42 -> wireless doorbell not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 44 -> BresserTemeo not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 44.1 -> BresserTemeo not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 45 -> Revolt not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 46 -> SKXxxx, GF0x0x not found, aborting
2021.06.26 18:05:47 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 48 -> TFA Dostmann matches, trying to demodulate
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, 0. try, regex ((?:24)((?:23|24){47,})) did not match
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 49.1 -> GT-9000 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 49.2 -> GT-9000 not found, aborting
2021.06.26 18:05:47 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 50 -> Opus_XT300 matches, trying to demodulate
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:42|32){47,}(?:4|3)?)) did not match
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 54 -> TFA 30.3233.01 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 56 -> AC114-xxB not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 59 -> AK-HD-4 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 62 -> Clarus_Switch not found, aborting
2021.06.26 18:05:47 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 64 -> WH2 matches, trying to demodulate
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:42|32){48,})) did not match
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 66 -> WS7035 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 69 -> Hoermann not found, aborting
2021.06.26 18:05:47 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 71 -> PEARL matches, trying to demodulate
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:42|32){48,})) did not match
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 72 -> Siro shutter not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 76 -> LED XM21 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 79 -> wireless doorbell not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 81 -> SA-434-1 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 83 -> RH787T not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 84 -> IAN 283582 / TV-4848 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 85 -> TFA 30.3222.02 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 86 -> BOSCH | CAME | Novy | Neff | Refsta Topdraft not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 89 -> TFA 30.3221.02 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 91 -> Atlantic security not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 92 -> KRINNER Lumix not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 94 -> Atech not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 97 -> Momento not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 98 -> GEA-028DB not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 99 -> Navaris 44344.04 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 104 -> TR60C-1 not found, aborting
2021.06.26 18:05:47 5: SignalDuino: Parse_MU, start pattern for MU protocol id 110 -> ADE_WS_1907 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 111 -> TS-FT002 not found, aborting
2021.06.26 18:05:51 4: SignalDuino: Read, msg: MU;P0=-110;P1=112;P2=156;P3=-1384;P4=1249;P5=-1034;P6=503;D=01010234545456565656545656565456545656545456545656565456545656545654;CP=6;R=2;
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 8 -> TX3 Protocol matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|45){43,})) did not match
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 9 -> weather matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|45){60,}(?:4|6)?)) did not match
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 13.1 -> FLAMINGO FA22RF / FA21RF / LM-101LD not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 21 -> Einhell Garagedoor not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 24 -> Visivo remote not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 26 -> xavax not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 27 -> EFTH-800 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 28 -> IC Ledspot not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 29 -> HT12e not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 30 -> diverse not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 32 -> wireless doorbell not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 36 -> remote not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 37 -> Bresser 7009994 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 38 -> NC-3911 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, for MU protocol id 39, applying filterfunc SIGNALduino_compPattern
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 39 -> X10 Protocol not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 40 -> Romotec  not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 42 -> wireless doorbell not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 44 -> BresserTemeo not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 44.1 -> BresserTemeo not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 45 -> Revolt not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 46 -> SKXxxx, GF0x0x not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 48 -> TFA Dostmann not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 49.1 -> GT-9000 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 49.2 -> GT-9000 not found, aborting
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 50 -> Opus_XT300 matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|45){47,}(?:6|4)?)) did not match
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 54 -> TFA 30.3233.01 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 56 -> AC114-xxB not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 59 -> AK-HD-4 not found, aborting
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 61 -> FS10 matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|10){30,})) did not match
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 62 -> Clarus_Switch not found, aborting
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 64 -> WH2 matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|45){48,})) did not match
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 66 -> WS7035 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 69 -> Hoermann not found, aborting
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 71 -> PEARL matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|45){48,})) did not match
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 72 -> Siro shutter not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 76 -> LED XM21 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 79 -> wireless doorbell not found, aborting
2021.06.26 18:05:51 4: SignalDuino: Parse_MU, Fingerprint for MU protocol id 80 -> EM1000WZ matches, trying to demodulate
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, 0. try, regex ((?:)((?:65|10){104,})) did not match
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 81 -> SA-434-1 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 83 -> RH787T not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 84 -> IAN 283582 / TV-4848 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 85 -> TFA 30.3222.02 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 86 -> BOSCH | CAME | Novy | Neff | Refsta Topdraft not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 89 -> TFA 30.3221.02 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 91 -> Atlantic security not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 92 -> KRINNER Lumix not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 94 -> Atech not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 97 -> Momento not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 98 -> GEA-028DB not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 99 -> Navaris 44344.04 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 104 -> TR60C-1 not found, aborting
2021.06.26 18:05:51 5: SignalDuino: Parse_MU, start pattern for MU protocol id 110 -> ADE_WS_1907 not found, aborting
2021.06.26 18:07:38 1: Including fhem.cfg
2021.06.26 18:07:40 1: FHEM::Meta::__GetUpdatedata: ERROR: FHEM/00_SIGNALduino.pm belongs to source repository "fhem". Ignoring identical file name from source repository signalduino
2021.06.26 18:07:40 1: FHEM::Meta::__GetUpdatedata: ERROR: FHEM/14_SD_UT.pm belongs to source repository "fhem". Ignoring identical file name from source repository signalduino

Um 18:05:51 ging CPU Last auf 100% und RAM Belegung so nach und nach auf >80%. Die Log Ausgabe stockte bei id 110 (!). Nach kurzer Zeit kam es zum FHEM Neustart.

Ich habe dann zum Testen in 00_SIGNALduino.pm in den Zeilen 2566,2568 und 2570 das start gegen starti ausgetauscht und auch bei Protokoll 111 in der SD_ProtocolData.pm. Kein Erfolg, das Speicherleck war nach kurzer Zeit genauso wieder da.

sidey79 commented 3 years ago

Hast du eventlogging aktiv und ggf. andere Definitionen die auf Events reagieren?

elektron-bbs commented 3 years ago

Viel weiter gekommen bin ich mit dem Problem nicht, aber ich weiß jetzt zumindest, warum es bei mir so schnell zum Blockieren von FHEM führt. Ich empfange zu viele Sensoren, die zu der Protokolldefinition passen. Sobald ich Protokoll 111 aktiviere, geht es los:

2021.06.26 20:18:06 3: sduinoACM: FW_saveWhitelist, 0.1,0.2,0.4,1,2,3,3.1,4,6,7,8,9,10,11,12,13,13.1,13.2,14,15,16,17,17.1,18,20,21,23,24,26,27,32,33,33.1,33.2,35,36,37,38,39,41,43,44,44.1,45,46,47,48,49,49.1,49.2,50,51,53,54,54.1,55,56,57,58,59,60,61,62,64,65,66,67,68,70,71,72,72.1,73,74,74.1,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,91.1,93,94,95,96,97,98,99,103,104,105,109,110,111,112
2021.06.26 20:18:06 3: sduinoACM: getAttrDevelopment, IdList ### Attribute development is in this version ignored ###
2021.06.26 20:18:06 3: sduinoACM: IdList, attr whitelist: 0.1,0.2,0.4,1,2,3,3.1,4,6,7,8,9,10,11,12,13,13.1,13.2,14,15,16,17,17.1,18,20,21,23,24,26,27,32,33,33.1,33.2,35,36,37,38,39,41,43,44,44.1,45,46,47,48,49,49.1,49.2,50,51,53,54,54.1,55,56,57,58,59,60,61,62,64,65,66,67,68,70,71,72,72.1,73,74,74.1,76,77,78,79,80,81,83,84,85,86,87,88,89,90,91,91.1,93,94,95,96,97,98,99,103,104,105,109,110,111,112
2021.06.26 20:18:06 3: sduinoACM: IdList, MS 0.1 0.2 0.4 1 2 3 3.1 4 6 7 13 13.2 14 15 17 20 23 33 33.1 33.2 35 41 49 51 53 54.1 55 65 68 72.1 74.1 87 88 90 91.1 93
2021.06.26 20:18:06 3: sduinoACM: IdList, MU 8 9 13.1 16 17.1 21 24 26 27 32 36 37 38 39 44 44.1 45 46 48 49.1 49.2 50 54 56 59 60 61 62 64 66 67 70 71 72 73 74 76 77 78 79 80 81 83 84 85 86 89 91 94 95 97 98 99 104 105 110 111
2021.06.26 20:18:06 3: sduinoACM: IdList, MC 10 11 12 18 43 47 57 58 96
2021.06.26 20:18:06 3: sduinoACM: IdList, MN 103 109 112
2021.06.26 20:18:33 3: sduinoACM: Parse_MU, timeStart=1624731513.71548, id=111, regex=(?:67456767676767)((?:67|45){64,})
2021.06.26 20:18:33 3: sduinoACM: Parse_MU, MU;P0=-17960;P1=368;P2=-824;P3=878;P4=634;P5=-213;P6=281;P7=-573;D=0123232324545454545454567676745674567674567676767676767674545454545454545676767456767456;CP=6;R=223;
2021.06.26 20:18:33 3: sduinoACM: Parse_MU, timeEnd=1624731513.99584, dauer=0.280359029769897
2021.06.26 20:18:37 3: sduinoACM: Parse_MU, timeStart=1624731517.04936, id=111, regex=(?:17451717171717)((?:17|45){64,})
2021.06.26 20:18:37 3: sduinoACM: Parse_MU, MU;P0=-23216;P1=281;P2=-816;P3=894;P4=652;P5=-211;P7=-557;D=0123232324545454545454517171745174517174517171717171717174545454545454545171717451717451;CP=1;R=224;
2021.06.26 20:18:37 3: sduinoACM: Parse_MU, timeEnd=1624731517.09633, dauer=0.0469679832458496
2021.06.26 20:18:40 3: sduinoACM: Parse_MU, timeStart=1624731520.1637, id=111, regex=(?:17451717171717)((?:17|45){64,})
2021.06.26 20:18:40 3: sduinoACM: Parse_MU, MU;P0=-28344;P1=274;P2=-800;P3=912;P4=656;P5=-206;P7=-563;D=0123232324545454545454517171745174517174517171717171717174545454545454545171717451717451;CP=1;R=223;
2021.06.26 20:18:40 3: sduinoACM: Parse_MU, timeEnd=1624731520.21069, dauer=0.0469839572906494
2021.06.26 20:18:43 3: sduinoACM: Parse_MU, timeStart=1624731523.83451, id=111, regex=(?:16451616161616)((?:16|45){64,})
2021.06.26 20:18:43 3: sduinoACM: Parse_MU, MU;P0=-29184;P1=277;P2=-806;P3=898;P4=653;P5=-208;P6=-569;D=0123232324545454545454516161645164516164516161616161616164545454545454545161616451616451;CP=1;R=223;
2021.06.26 20:18:43 3: sduinoACM: Parse_MU, timeEnd=1624731523.88121, dauer=0.0467009544372559
2021.06.26 20:18:46 3: sduinoACM: Parse_MU, timeStart=1624731526.92883, id=111, regex=(?:16451616161616)((?:16|45){64,})
2021.06.26 20:18:46 3: sduinoACM: Parse_MU, MU;P0=-29152;P1=281;P2=-809;P3=892;P4=655;P5=-206;P6=-563;D=0123232324545454545454516161645164516164516161616161616164545454545454545161616451616451;CP=1;R=225;
2021.06.26 20:18:46 3: sduinoACM: Parse_MU, timeEnd=1624731526.9758, dauer=0.0469701290130615
2021.06.26 20:18:51 3: sduinoACM: Parse_MU, timeStart=1624731531.0346, id=111, regex=(?:07450707070707)((?:07|45){64,})
2021.06.26 20:18:51 3: sduinoACM: Parse_MU, MU;P0=294;P2=-792;P3=918;P4=645;P5=-210;P6=-160;P7=-572;D=023232324545454545454607070745074507074507070707070707074545454545454545070707450707450;CP=0;R=225;
2021.06.26 20:18:51 3: sduinoACM: Parse_MU, timeEnd=1624731531.09527, dauer=0.0606689453125
2021.06.26 20:18:54 3: sduinoACM: Parse_MU, timeStart=1624731534.46399, id=111, regex=(?:16451616161616)((?:16|45){64,})
2021.06.26 20:18:54 3: sduinoACM: Parse_MU, MU;P0=-29160;P1=288;P2=-815;P3=890;P4=651;P5=-205;P6=-564;D=0123232324545454545454516161645164516164516161616161616164545454545454545161616451616451;CP=1;R=223;
2021.06.26 20:18:54 3: sduinoACM: Parse_MU, timeEnd=1624731534.51049, dauer=0.0464920997619629
2021.06.26 20:19:26 3: sduinoACM: Parse_MU, timeStart=1624731566.97082, id=111, regex=(?:67456767676767)((?:67|45){64,})
2021.06.26 20:19:27 3: sduinoACM: Parse_MU, MU;P0=-29160;P1=368;P2=-827;P3=878;P4=643;P5=-214;P6=286;P7=-562;D=0123232324545454545454567676745674567674567676767676767674545454545454545676767456767456;CP=6;R=226;
2021.06.26 20:19:27 3: sduinoACM: Parse_MU, timeEnd=1624731567.31006, dauer=0.339236974716187
2021.06.26 20:19:30 3: sduinoACM: Parse_MU, timeStart=1624731570.30677, id=111, regex=(?:17401717171717)((?:17|40){64,})
2021.06.26 20:19:30 3: sduinoACM: Parse_MU, MU;P0=-192;P1=274;P2=-822;P3=876;P4=640;P7=-567;D=123232324040404040404017171740174017174017171717171717174040404040404040171717401717401;CP=1;R=226;
2021.06.26 20:19:30 3: sduinoACM: Parse_MU, timeEnd=1624731570.35103, dauer=0.0442550182342529
2021.06.26 20:19:31 3: Timer: time difference too large! interval=29, Sekunde=31
2021.06.26 20:19:39 3: sduinoACM: Parse_MU, timeStart=1624731579.02895, id=111, regex=(?:17451717171717)((?:17|45){64,})
2021.06.26 20:19:40 3: sduinoACM: Parse_MU, MU;P0=-9016;P1=283;P2=-811;P3=892;P4=638;P5=-207;P7=-584;D=1232323245454545454545171717451745171745171717171717171745454545454545451717174517174510;CP=1;R=220;
2021.06.26 20:19:40 3: sduinoACM: Parse_MU, timeEnd=1624731580.63256, dauer=1.60360503196716
2021.06.26 20:19:50 1: Timeout for SYSMON_blockingCall reached, terminated process 25294
2021.06.26 20:19:51 3: sduinoACM: Parse_MU, timeStart=1624731591.99757, id=111, regex=(?:12121212121212)((?:12|12){64,})
2021.06.26 20:19:51 3: sduinoACM: Parse_MU, MU;P0=-5160;P1=491;P2=-979;P3=1464;D=01212121212121232123232123212121232121232323232121212123232323232321232123232323212323212121212321212323232123;CP=1;R=212;
2021.06.26 20:19:51 3: sduinoACM: Parse_MU, timeEnd=1624731591.99847, dauer=0.000901937484741211
2021.06.26 20:20:13 3: sduinoACM: Parse_MU, timeStart=1624731613.16228, id=111, regex=(?:67456767676767)((?:67|45){64,})
2021.06.26 20:20:13 3: sduinoACM: Parse_MU, MU;P0=-7528;P1=368;P2=-810;P3=898;P4=648;P5=-211;P6=278;P7=-571;D=0123232324545454545454567676745674567674567676767676767674545454545454545676767456767456;CP=6;R=224;
2021.06.26 20:20:13 3: sduinoACM: Parse_MU, timeEnd=1624731613.42969, dauer=0.267414093017578
2021.06.26 20:20:34 3: sduinoACM: Parse_MU, timeStart=1624731634.26989, id=111, regex=(?:67456767676767)((?:67|45){64,})
2021.06.26 20:20:34 3: sduinoACM: Parse_MU, MU;P0=-29152;P1=376;P2=-814;P3=896;P4=648;P5=-205;P6=289;P7=-579;D=0123232324545454545454567676745674567674567676767676767674545454545454545676767456767456;CP=6;R=225;
2021.06.26 20:20:34 3: sduinoACM: Parse_MU, timeEnd=1624731634.53987, dauer=0.269988059997559
2021.06.26 20:20:55 3: sduinoACM: Parse_MU, timeStart=1624731655.35138, id=111, regex=(?:67456767676767)((?:67|45){64,})
2021.06.26 20:20:55 3: sduinoACM: Parse_MU, MU;P0=-29144;P1=376;P2=-819;P3=886;P4=640;P5=-201;P6=290;P7=-575;D=0123232324545454545454567676745674567674567676767676767674545454545454545676767456767456;CP=6;R=224;
2021.06.26 20:20:55 3: sduinoACM: Parse_MU, timeEnd=1624731655.62457, dauer=0.273194074630737
2021.06.26 20:20:55 3: Timer: time difference too large! interval=5, Sekunde=55

Auffällig ist, das schon der erste Eintrag FHEM für 0.28 Sekunden blockiert. Die zusätzlichen Logausgaben erfolgen direkt vor while ( $rawData =~ m/$regex/g) { und dann direkt nach der Schleife.

docolli commented 3 years ago

@sidey79

Meinst du in FHEM generell, oder nur im tank level device?

Hier die Attribute des device: grafik

Andere devices loggen natürlich auch per event ins DbLog.

Ralf9 commented 3 years ago

Kann ich in meiner 00_SIGNALduino.pm den Namen des Array "start" ändern, um das mal zu testen? Wo müsste ich das überall machen?

Nein, ich habe nicht nur start nach starti umbenannt, wenn es in der Protokollliste ein starti gibt, dann wird bei meiner optimierung der StartString so mit hilfe des starti erzeugt, daß die CPU last geringer wird.

z.B. bei dieser raw Nachricht MU;P0=-21110;P1=484;P2=-971;P3=-488;D=012131212121212131213121213121212131313121313131312121313131313121212121313... wird mit start => [1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], in der sub SIGNALduino_PatternExists in einer Schleife für jeden der 12 Werte unter Berücksichtigung der Toleranzen der entsprechende Patternwert ermittelt. Dies ergibt dann den StartString "131212121212"

Bei meiner Optimierung wird nur zweimal die SIGNALduino_PatternExists mit jeweils nur 2 Werten aufgerufen. Aus one => [1,-2], wird $pstrAr[1] = "12" Aus zero => [1,-1],wird $pstrAr[0] = "13" Damit lässt sich dann einfach mit einer Schleife mit den Indexwerten in starti [0,1, 1,1,1,1] der StartString erzeugen.

Du hast nun mehrere Möglichkeiten: Du kannst warten bis Sidey es gefixt hat. Du kannst die Anzahl der Werte in Start reduzieren. Du kannst in einem Testsystem die dev Version meiner Variante des 00_SIGNALduino.pm installieren.

docolli commented 3 years ago

Ich habe das Debugging für SignalDuino aktiviert und das einmal aufgezeichnet für verkürzten start => [1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 01.1111 und einmal für normalen #start => [1,-2, 1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 101.1111. Bei letzterem kommt es nach erstmaliger erfolgreicher Verarbeitung des 111er Protokolls in NACHFOLGENDEN empfangenen Nachrichten zur hohen CPU/MEM Belastung, vermutlich durch die foreach Schleife über das Array $search bzw. results:

  my @results = ('');

  foreach my $subarray (@pstr)
  {
    @results = map {my $res = $_; map $res.$_, @$subarray } @results;
  }

  foreach my $search (@results)
  {
    Debug "looking for substr $search" if($debug);
    return $search if (index( ${$data}, $search) >= 0);
  }

Hängt die Anzahl der Element der Arrays (und damit der Schleifendurchläufe) exponentiell von der Länge von start ab?

Hier die Debug-Ausgabe für die Verarbeitung von start = 01.1111: Debug_start-01.1111_27.06.2021.txt

Dann mit start = 101.1111: Debug_start-101.1111_27.06.2021.txt

Und hier noch die sofort anschließende Verarbeitung anderer Nachrichten, wobei es dort ab Zeile 4943 bis 191566 zur hohen CPU/MEM Last kommt. Die Nachricht, die das Problem ausgelöst hat, steht in Zeile 2481. 2021.06.27 11:58:52 1: DEBUG>SignalDuino: incoming message: (MU;P0=-2189;P1=391;P2=-4045;P3=-612;P4=-8688;P5=648;P6=-1216;P7=-840;D=012121010121010121013141012121010121212101012101010101012121012101012121210101210101056101710;CP=1;R=230;) Debug_start-101.1111_Probleme_27.06.2021.txt

elektron-bbs commented 3 years ago

Oha, wenn ich das richtig deute, heißt das, das in dem Array @results 186.623 Strings a mindestens 7 Byte liegen - macht 1.306.361 Byte. Keine Ahnung, wie Perl das im Speicher ablegt, kann also auch deutlich mehr sein. Die Suche dauert danach eine gute Minute.

docolli commented 3 years ago

Ja, längere start Sequenzen sind wohl der Todestoß für diesen Algorithmus. Aufgrund der Kombinatorik, die angewendet wird, um die zu suchenden Sequenzen für substr zu erzeugen, explodiert der Speicherbedarf und die CPU Leistung für die Suche förmlich bei jedem "Bit", das man hinzufügt.

sidey79 commented 3 years ago

@elektron-bbs Wie kommst Du darauf, dass derart viele Werte in dem Array liegen?

docolli commented 3 years ago

@sidey79 Es stimmt wohl, dass es soviele Werte sein können 😉

Ich habe eben folgendes DEBUG ergänzt und dann nochmals laufen lassen:

  my @results = ('');

  foreach my $subarray (@pstr)
  {
    @results = map {my $res = $_; map $res.$_, @$subarray } @results;
  }

  my $numelem = scalar(@results);
  Debug "elements in results array: $numelem" if($debug);

  foreach my $search (@results)
  {
    Debug "looking for substr $search" if($debug);
    return $search if (index( ${$data}, $search) >= 0);
  }

  return -1;

Ausgabe (gekürzt) vor einer seeeehr langen Ausgabe von "looking for substr":

2021.06.27 21:11:04 1: DEBUG>SignalDuino: incoming message: (MU;P0=740;P1=-2076;P2=381;P3=-4022;P4=-604;P5=152;P6=-1280;P7=-8692;D=012123232321245621212121232123232427212323212123232326;CP=2;R=228;)

...

2021.06.27 21:11:05 1: DEBUG>Testing against protocol id 111 -> TS-FT002
2021.06.27 21:11:05 1: DEBUG>Searching in patternList: $VAR1 = {
          '4' => '-1.3',
          '7' => '-18.1',
          '6' => '-2.7',
          '1' => '-4.3',
          '3' => '-8.4',
          '5' => '0.3',
          '2' => '0.8',
          '0' => '1.5'
        };

2021.06.27 21:11:05 1: DEBUG>msgStartLst: $VAR1 = [
          1,
          -2,
          1,
          -1,
          1,
          -2,
          1,
          -2,
          1,
          -2,
          1,
          -2,
          1,
          -2
        ];

...

2021.06.27 21:11:06 1: DEBUG>elements in results array: 139968
2021.06.27 21:11:06 1: DEBUG>looking for substr 24242424242424
2021.06.27 21:11:06 1: DEBUG>looking for substr 24242424242426
2021.06.27 21:11:06 1: DEBUG>looking for substr 24242424242404
2021.06.27 21:11:06 1: DEBUG>looking for substr 24242424242406
etc. (139968 Zeilen!)
elektron-bbs commented 3 years ago

Wenn ich den Code richtig deute:

foreach my $search (@results)
  {
    Debug "looking for substr $search" if($debug);
    return $search if (index( ${$data}, $search) >= 0);
  }

wird nach $search in dem Array @results gesucht.

Gegenfrage: Wieso überhaupt eine Suche nach verschiedenen Startsequenzen? Es gibt doch genau nur eine.

sidey79 commented 3 years ago

@elektron-bbs

Die Suche ist nötig um die richtige Kombination zu finden, da die Toleranz da auch Werte zulässt, welche nicht existieren. Um das zu finden, wird die Kombination gesucht.

sidey79 commented 3 years ago

@docolli Danke für das Debuggen. Jetzt bin ich echt baff.

EDIT: Ich habe da einen Ansatz, wie man die Vielzahl an Kombinationen umgehen könnte. Ich muss das aber erst noch genauer durchdenken, wie ich das möglichst effizient umsetze.

sidey79 commented 3 years ago

@docolli

Hi, ich habe den Fix nun fertig. Wenn Du möchtest kannst Du ihn aus #988 ausprobieren. Den Sensor hier ist da im Moment noch mit eingebaut.

docolli commented 3 years ago

@sidey79

Hi, vielen Dank für deine Mühe! Ich habe den Code aus 00_SignalDuino.pm aus deinem branch kopiert und die Protokolldefinition wieder auf die ursprüngliche start-Länge angepasst.

        name            => 'TS-FT002',
        comment         => 'Water tank level monitor with temperature',
        id              => '111',
        knownFreqs      => '433.92',
        one             => [1,-2], # 480,-960
        zero            => [1,-1], # 480,-480
        #start          => [1,-2, 1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2, 1,-1, 1,-1, 1,-1], # Sync 101.1111.1000 (Test)
        start           => [1,-2, 1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 101.1111 (Real)
        #start          => [1,-1, 1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 01.1111
        #start          => [1,-2, 1,-2, 1,-2, 1,-2, 1,-2], # Sync 1.1111 - Test wegen RAM Problemen
        clockabs        => 480,
        format          => 'twostate',
        clientmodule    => 'SD_WS',
        modulematch     => '^W111#',
        preamble        => 'W111#5F', # add sync 0101.1111
        length_min      => '64',
        length_max      => '64',

Kurz danach konnte ich schon den Empfang der ersten Nachricht beobachten. Für 10-15s ging die CPU Last des perl Prozesses auf 100%, Speicherverbrauch blieb gering. Sieht so schon mal sehr gut aus. Ich lasse es jetzt mal bis heute Abend laufen und berichte dann wieder.

docolli commented 3 years ago

Bislang keine Probleme, ich empfange Nachrichten von Protokoll 111 und 110. CPU und RAM Bedarf sind unauffällig.

Hier noch die Sysmon Daten von dieser und letzter Woche. Seit heute morgen 8h ist der Patch drauf: grafik grafik

docolli commented 3 years ago

Noch was wegen den Temperatur-Peaks, die @elektron-bbs mal ganz am Anfang verdächtig gefunden hat ("da kommen fehlerhafte Werte durch" -> https://github.com/RFD-FHEM/RFFHEM/issues/977#issuecomment-860027187). Eben hatte ich im Grafen einen längen Peak, bei dem die Temp von 19 auf 20°C sprunghaft angestiegen ist. grafik

Lustigerweise hatte ich auch auf dem mitgelieferten Display eine Anzeige von 20.0°C, jetzt wieder 19.0°C. Ich vermutet mal das ist ein Bug im Sensor und kein SignalDuino Problem.

elektron-bbs commented 3 years ago

Dann müssen wir uns ja wegen der Peaks keine Gedanken weiter machen :-) In dem Diagramm sieht es so aus, als ob es jeweils genau ein Grad wäre.

docolli commented 3 years ago

Es läuft bei mir immer noch problemlos! Änderung am 06.07. um 08:00h eingepflegt. grafik

Auch die Anzahl der erfolgreich empfangenen Werte hat sich nicht geändert:


Datum Anzahl
2021-07-07 372
2021-07-06 403
2021-07-05 325
2021-07-04 406
2021-07-03 346
2021-07-02 313
2021-07-01 327
2021-06-30 243
docolli commented 3 years ago

Ich habe mir noch weitere TS-FT002 angeschafft. Diese sollte ich ja auch problemlos empfangen können (Ja! Jetzt kommt der Härtetest 😁). Da hätte ich aber noch eine Frage zur korrekten Definition in FHEM.

Der jetzige Sensor wurde automatisch erkannt und so angelegt:

define SD_WS_111_TL SD_WS SD_WS_111_TL

Wenn ich jetzt dann 2 Sensoren habe, dann kommt die Seriennummer, die bei jeden Batteriewechsel neu vergeben wird, ins Spiel. Die Definition lautet ja so:

define <name> SD_WS <code>
<code> is the channel or individual identifier used to identify the sensor.

Meine MSG sieht folgendermaßen aus: W111#5F168840A1A0C40044, d.h. für mich ist die ID die 0x16, somit müsste ich die Definition ändern in

define SD_WS_111_TL SD_WS 0x16

Ist das korrekt? Dann muss ich herausfinden, welche ID der andere Sensor bekommt und diesen auch manuell anlegen? Klar, bei einem Batteriewechel muss ich die ID wieder neu herausfinden.

elektron-bbs commented 3 years ago

Das Define müsste wahrscheinlich so erfolgen:

define SD_WS_111_TL_16 SD_WS SD_WS_111_TL_16

aber besser ist es, wenn du bei deinem SIGNALduino in das Attribut "longids" den Device-Typ "SD_WS_111_TL" einträgst. Dann sollten die Sensoren automatisch mit der ID angelegt werden.

docolli commented 3 years ago

Danke, der zweite Sensor (Heizöltank) läuft! (Der drittte ist leider defekt und zeigt immer als distance "3822" an, den habe ich reklamiert).

grafik

Lustigerweise hat der auch die Temperatur-Peaks. Die sind immer so um x.1°C rum, da hüpft er dann manchmal auf die nächst höhere x.0°C Temperatur.


2021-07-08 21:28:50 SD_WS_111_TL SD_WS temperature: 17 temperature 17 °C
2021-07-08 21:25:50 SD_WS_111_TL SD_WS temperature: 18 temperature 18 °C
2021-07-08 21:16:50 SD_WS_111_TL SD_WS temperature: 17.1 temperature 17.1 °C

2021-07-08 02:30:20 SD_WS_111_TL SD_WS temperature: 17 temperature 17 °C
2021-07-08 02:24:20 SD_WS_111_TL SD_WS temperature: 17 temperature 17 °C
2021-07-08 02:21:20 SD_WS_111_TL SD_WS temperature: 18 temperature 18 °C
2021-07-08 02:15:21 SD_WS_111_TL SD_WS temperature: 18 temperature 18 °C
2021-07-08 02:03:20 SD_WS_111_TL SD_WS temperature: 17.1 temperature 17.1 °C
2021-07-08 02:00:20 SD_WS_111_TL SD_WS temperature: 17.1 temperature 17.1 °C

2021-07-06 15:36:20 SD_WS_111_TL SD_WS temperature: 19.1 temperature 19.1 °C
2021-07-06 15:30:20 SD_WS_111_TL SD_WS temperature: 20 temperature 20 °C
2021-07-06 15:27:20 SD_WS_111_TL SD_WS temperature: 19 temperature 19 °C

2021-07-06 03:39:19 SD_WS_111_TL SD_WS temperature: 16 temperature 16 °C
2021-07-06 03:36:19 SD_WS_111_TL SD_WS temperature: 16 temperature 16 °C
2021-07-06 03:33:20 SD_WS_111_TL SD_WS temperature: 17 temperature 17 °C
2021-07-06 03:30:19 SD_WS_111_TL SD_WS temperature: 16.1 temperature 16.1 °C
2021-07-06 03:27:19 SD_WS_111_TL SD_WS temperature: 16.1 temperature 16.1 °C
elektron-bbs commented 3 years ago

Lädst du mal bitte jeweils ein DMSG vorher, während und nach dem Peak hoch. Vielleicht entdecken wir ja doch noch einen Fehler im Code.

docolli commented 3 years ago
2021-07-09_18:53:37 SD_WS_111_TL_D2 T: 19.1 D: 110
2021-07-09_18:53:37 SD_WS_111_TL_D2 temperature: 19.1
2021-07-09_18:53:37 SD_WS_111_TL_D2 RAWMSG: MU;P0=470;P1=-981;P3=-500;P4=-22532;P6=1252;P7=-3576;D=67010301010101010101030103030103010303030103030303010103030303030301010103030303010101010303030303030103030103030303030303030303010103030303030104010301010101010101030103030103010303030103030303010103030303030301010103030303010101010303030303030103030103;CP=0;R=33;O;
2021-07-09_18:53:37 SD_WS_111_TL_D2 DMSG: W111#5FD2886070F02400C1

2021-07-09_18:56:37 SD_WS_111_TL_D2 T: 20 D: 110
2021-07-09_18:56:37 SD_WS_111_TL_D2 temperature: 20
2021-07-09_18:56:37 SD_WS_111_TL_D2 DMSG: W111#5FD288607010A400A1
2021-07-09_18:56:37 SD_WS_111_TL_D2 RAWMSG: MU;P0=-21598;P1=480;P2=-973;P4=-492;D=01214121212121212121412141412141214141412141414141212141414141414121212141414141414141214141414121412141412141414141414141414141214121414141412101214121212121212121412141412141214141412141414141212141414141414121212141414141414141214141414121412141412141;CP=1;R=33;O;

2021-07-09_19:02:37 SD_WS_111_TL_D2 T: 19.1 D: 110
2021-07-09_19:02:37 SD_WS_111_TL_D2 temperature: 19.1
2021-07-09_19:02:37 SD_WS_111_TL_D2 DMSG: W111#5FD2886070F02400C1
2021-07-09_19:02:37 SD_WS_111_TL_D2 RAWMSG: MU;P0=-22814;P1=1152;P2=-16064;P3=482;P4=-971;P5=-474;D=01234353434343434343435343535343534353535343535353534343535353535353434343535353534343434353535353535343535343535353535353535353534343535353535343034353434343434343435343535343534353535343535353534343535353535353434343535353534343434353535353535343535343;CP=3;R=29;O;