GROHE SENSE GUARD

Begonnen von Heuberg, 08 Dezember 2017, 19:15:15

Vorheriges Thema - Nächstes Thema

McShire

Hallo JOEK3R,

Hier die Werte zum PLot ohne mypostFN

get FileLog_Unter_Wasseruhr CURRENT INT 2021-11-23_00:00:00 2021-11-23_23:59:59 5:Unter_Wasseruhr.MeasurementTemperature\x3a:: 5:Unter_Wasseruhr.MeasurementHumidity\x3a::

2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16.2
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.8
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16.2
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.8
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:07 16
2021-11-23_20:10:07 15.9
2021-11-23_20:10:07 15.9
2021-11-23_20:10:07 15.9
#5:Unter_Wasseruhr.MeasurementTemperature\x3a::
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 61
2021-11-23_20:09:42 62
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 60
2021-11-23_20:09:42 60
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 61
2021-11-23_20:10:06 62
2021-11-23_20:10:06 61
2021-11-23_20:10:06 61
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 61
2021-11-23_20:10:06 61
2021-11-23_20:10:06 61
2021-11-23_20:10:07 61
2021-11-23_20:10:07 61
2021-11-23_20:10:07 60
2021-11-23_20:10:07 60
#5:Unter_Wasseruhr.MeasurementHumidity\x3a::




in der Anlage der Plot ohne mypostFn

McShire

#121
Hallo JOEK3R,
ich habe mal was probiert.

Plotfile:

# Created by FHEM/98_SVG.pm, 2021-11-23 20:40:34
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "Humidity"
set y2label "Temperature"
set yrange [0:100]
set y2range [10:30]

#logProxy FileLog:FileLog_Unter_Wasseruhr:5:Unter_Wasseruhr.MeasurementTemperature\x3a::
#logProxy FileLog:FileLog_Unter_Wasseruhr:5:Unter_Wasseruhr.MeasurementHumidity\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with points,\
     "<IN>" using 1:2 axes x1y1 title 'Humidity' ls l1 lw 1 with points


list vom SVG-Device:

Internals:
   DEF        lp_unter_Wasseruhr:SVG_FileLog_Unter_Wasseruhr_1:CURRENT
   FUUID      618818f5-f33f-f21b-d483-ff6c81b9a1d9bec3
   GPLOTFILE  SVG_FileLog_Unter_Wasseruhr_1
   LOGDEVICE  lp_unter_Wasseruhr
   LOGFILE    CURRENT
   NAME       SVG_FileLog_Unter_Wasseruhr_1
   NR         918
   STATE      initialized
   TYPE       SVG
Attributes:
   room       GroheOndusSmart


Die optionale Angabe [,<options>] => postFn='<myPostFn>' habe ich dabei weggelassen.
Wenn man jetzt hier postFN = 'PF_Grohe_Sense' einfügt, wo müsste denn dann diese Funktion stehen?
Ich nehme an $devspec ist die Zeilennummer  (im o.a Fall 1 oder 2, und $data ist dann Referenz und zeigt auf das Daten-Array, das in meinem obigen Beispiel angeführt ist)
In der Funktion müssen dann im Array  die Zeitstempel durch die Meßzeitpunkte ersetzt werden.
Soweit meine Überlegung. Ist das ganz falsch?

Viele Grüße
Werner

McShire

Im Wiki scheint mir ein Fehler zu sein.
das Schlüsselwort #logProxy in den Zeilen muss durch den Namen des Proxy devices ersetzt werden.
Hier das gplot file

# Created by FHEM/98_SVG.pm, 2021-11-23 23:53:50
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid ytics
set ylabel "Humidity"
set y2label "Temperature"
set yrange [0:100]
set y2range [10:30]

#lp_unter_Wasseruhr FileLog:FileLog_Unter_Wasseruhr:5:Unter_Wasseruhr.MeasurementTemperature\x3a::
#lp_unter_Wasseruhr FileLog:FileLog_Unter_Wasseruhr:5:Unter_Wasseruhr.MeasurementHumidity\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with points,\
     "<IN>" using 1:2 axes x1y1 title 'Humidity' ls l1 lw 1 with points


und hier das Ergebnis nach der Bearbeitung, die Wertepaare sind dann sicher der Input für die PostFn Funktion.

get lp_unter_Wasseruhr CURRENT INT 2021-11-23_00:00:00 2021-11-23_23:59:59 FileLog:FileLog_Unter_Wasseruhr:5:Unter_Wasseruhr.MeasurementTemperature\x3a:: FileLog:FileLog_Unter_Wasseruhr:5:Unter_Wasseruhr.MeasurementHumidity\x3a::

2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16.2
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.8
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 16
2021-11-23_20:09:42 16
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:09:42 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16.2
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.8
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 15.9
2021-11-23_20:10:06 16
2021-11-23_20:10:07 16
2021-11-23_20:10:07 15.9
2021-11-23_20:10:07 15.9
2021-11-23_20:10:07 15.9
#5:Unter_Wasseruhr.MeasurementTemperature\x3a::
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 61
2021-11-23_20:09:42 62
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 62
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 61
2021-11-23_20:09:42 60
2021-11-23_20:09:42 60
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 61
2021-11-23_20:10:06 62
2021-11-23_20:10:06 61
2021-11-23_20:10:06 61
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 62
2021-11-23_20:10:06 61
2021-11-23_20:10:06 61
2021-11-23_20:10:06 61
2021-11-23_20:10:07 61
2021-11-23_20:10:07 61
2021-11-23_20:10:07 60
2021-11-23_20:10:07 60
#5:Unter_Wasseruhr.MeasurementHumidity\x3a::



Viel Grüße
Werner

J0EK3R

Moin Werner  :)

Du hast ja viel ausprobiert und bist dabei ziemlich weit gekommen!  :D

Genau so - mit dem *Dazwischenschalten* eines LogProxys - wollte ich eigentlich das Triple aus

<ZeitstempelReading><ZeitstempelMessung><WertMessung> in einer postFn in <ZeitstempelMessung><WertMessung>

auflösen und an den Plot weitergeben.

Ich bin ungefähr auf dem selben Stand wie Du...
...und stehe vor dem nächsten *Berg*  ::)

Das große Problem ist nun, dass entweder FileLog oder LogProxy *vor* dem Aufruf von postFn versucht, den Eintrag aus der Log-Datei in einen Zahlenwert zu parsen statt den Rohwert-String an postFn durchzureichen.

Das scheitert wohl am Zeitstempel-String bzw. ich schaffe es nicht, beides - also <ZeitstempelMessung><WertMessung> - in die postFn zur Weiterverarbeitung zu bekommen.

Momentan ist <ZeitstempelMessung> und <WertMessung> durch ein Leerzeichen getrennt.
Ich denke FileLog splittet die Log-Einträge an den Leerzeichen.
(Man kann ja im gplot-File angeben, aus der wievielten Spalte eines Log-Eintrags der Wert genommen wird; der Zeitstempel wird ja immer aus der ersten genommen).

Ich könnte auch irgendein anderes Zeichen verwenden, damit <ZeitstempelMessung><WertMessung> als Rohwert, also als zusammenhängender string, an postFn durchgereicht wird...?
Das scheitert momentan wohl wieder am Parsen in einen Zahlenwert...  :-\

Man kann das ja auch gut alles ausprobieren, wenn man im PlotEditor "show preprocessed input" anklickt, dann wird ja eine Tabelle mit den verarbeiteten Werten angezeigt, aus denen dann der Plot generiert wird.

Ändert man beispielsweise den Spaltenwert in Deinem Beispiel von "MeasurementTemperature" von 5 <WertMessung> auf 4 <ZeitstempelMessung> erwartet *man* die Zeitstempel; aber es kommt nix mehr an (weil vermutlich nicht in einen Zahlenwert geparst werden kann).


#lp_unter_Wasseruhr FileLog:FileLog_Unter_Wasseruhr:4:Unter_Wasseruhr.MeasurementTemperature\x3a::


Die postFn kann beispielsweise in 99_myUtils.pm stehen.
Hier ein Beispiel: https://forum.fhem.de/index.php/topic,46451.msg993121.html#msg993121

Sollte die Geschichte jemals funktionieren, würde ich sie mit in das Grohe-Modul packen.

McShire

Hallo JOEK3R,
wo werden in Deinem Modul die Werte von Grohe eingelesen und wo ins Logfile geschrieben?
Ich würde gerne mal was probieren.
Viele Grüße
Werner

J0EK3R

Moin Werner,

hier:

74_GroheOndusSmartDevice.pm:

Funktion

##################################
# GroheOndusSmartDevice_Sense_GetData( $hash, $callbackSuccess, $callbackFail )
sub GroheOndusSmartDevice_Sense_GetData($;$$)


ab Zeile 2798:

          foreach my $currentData ( @{ $decode_json->{data}->{measurement} } )
          {
            # is this the correct dataset?
            if ( defined( $currentData->{timestamp} )
              and defined( $currentData->{humidity} )
              and defined( $currentData->{temperature} ) )
            {
              my $currentDataTimestamp   = $currentData->{timestamp};
              my $currentDataHumidity    = $currentData->{humidity};
              my $currentDataTemperature = $currentData->{temperature};
             
              if($currentDataTimestamp gt $lastProcessedMeasurementTimestamp)
              {
                my $dataTimestamp_s = time_str2num($currentDataTimestamp);
               
                readingsBeginUpdate($hash);

                readingsBulkUpdateIfChanged( $hash, "MeasurementDataTimestamp", $currentDataTimestamp )
                  if ( defined($currentDataTimestamp) );
                readingsBulkUpdateIfChanged( $hash, "MeasurementHumidity", $dataTimestamp_s . " " . $currentDataHumidity )
                  if ( defined($currentDataHumidity) );
                readingsBulkUpdateIfChanged( $hash, "MeasurementTemperature", $dataTimestamp_s . " " . $currentDataTemperature )
                  if ( defined($currentDataTemperature) );

                readingsEndUpdate( $hash, 1 );
              }
             
              # is timestamp newer?
              if ( not defined($dataTimestamp) or
                $currentDataTimestamp gt $dataTimestamp )
              {
                $dataTimestamp   = $currentDataTimestamp;
                $dataHumidity    = $currentDataHumidity;
                $dataTemperature = $currentDataTemperature;
              }
            }
            $loopCounter++;
          }

          if ( defined($dataTimestamp) )
          {
            # save last TimeStamp in store
            $hash->{helper}{lastProcessedMeasurementTimestamp} = $dataTimestamp;
            my $setKeyError = setKeyValue("MeasurementDataTimestamp", $dataTimestamp);
            if(defined($setKeyError))
            {
              Log3($name, 3, "GroheOndusSmartDevice_Sense_GetData($name) - setKeyValue error: " . $setKeyError);
            }
            else
            {
              Log3($name, 5, "GroheOndusSmartDevice_Sense_GetData($name) - setKeyValue: $dataTimestamp");
            }

            $hash->{STATISTICDATALOOPCOUNTER} = $loopCounter;

            my $dataTimestamp_s = time_str2num($dataTimestamp);

            readingsBeginUpdate($hash);

            readingsBulkUpdateIfChanged( $hash, "LastDataTimestamp", $dataTimestamp );
            readingsBulkUpdateIfChanged( $hash, "MeasurementDataTimestamp", $dataTimestamp );
         
            if ( defined($dataHumidity) )
            {
              readingsBulkUpdateIfChanged( $hash, "LastHumidity", $dataHumidity );
              readingsBulkUpdateIfChanged( $hash, "MeasurementHumidity", $dataTimestamp_s . " " . $dataHumidity );
            }
         
            if ( defined($dataTemperature) )
            {
              readingsBulkUpdateIfChanged( $hash, "LastTemperature", $dataTemperature );
              readingsBulkUpdateIfChanged( $hash, "MeasurementTemperature", $dataTimestamp_s . " " . $dataTemperature );
            }

            readingsEndUpdate( $hash, 1 );
          }



McShire

Ich bin dann mal ein paar Tage  weg.
Melde mich dann wieder.
Viele Grüße
Werner

J0EK3R

Alles klar.
Ich bleib dran...

McShire

Ich bin heute abend noch da,
wie bringe ich denn das SmartDevice dazu, das nochmal wiederholt die gesamten Daten ausgibt.
im Moment macht er nur dieses:

2021-11-24_19:11:02 Unter_Wasseruhr bridge login cleared
2021-11-24_19:11:02 Unter_Wasseruhr bridge logging in
2021-11-24_19:11:15 Unter_Wasseruhr bridge logged in
2021-11-24_19:11:17 Unter_Wasseruhr connected over bridge to cloud
2021-11-24_19:11:17 Unter_Wasseruhr ApplianceTDT: 2021-11-24T04:11:15.000+01:00
2021-11-24_19:11:19 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T05:11:28.000+01:00
2021-11-24_19:11:19 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T05:11:28.000+01:00 61
2021-11-24_19:11:19 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T05:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T06:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T06:11:28.000+01:00 60
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T06:11:28.000+01:00 15.9
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T07:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T07:11:28.000+01:00 60
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T07:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T08:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T08:11:28.000+01:00 60
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T08:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T09:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T09:11:28.000+01:00 60
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T09:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T10:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T10:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T10:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T11:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T11:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T11:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T12:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T12:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T12:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T13:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T13:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T13:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T14:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T14:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T14:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T15:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T15:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T15:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T16:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T16:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T16:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T17:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T17:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T17:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T18:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T18:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T18:11:28.000+01:00 15.6
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T19:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T19:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T19:11:28.000+01:00 15.6
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T20:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T20:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T20:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T21:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T21:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T21:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T22:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T22:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T22:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T23:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-23T23:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-23T23:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T00:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-24T00:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-24T00:11:28.000+01:00 15.6
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T01:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-24T01:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-24T01:11:28.000+01:00 15.7
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T02:11:28.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-24T02:11:28.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-24T02:11:28.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T04:11:13.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementHumidity: 2021-11-24T04:11:13.000+01:00 61
2021-11-24_19:11:20 Unter_Wasseruhr MeasurementTemperature: 2021-11-24T04:11:13.000+01:00 15.8
2021-11-24_19:11:20 Unter_Wasseruhr LastDataTimestamp: 2021-11-24T04:11:13.000+01:00
2021-11-24_19:11:20 Unter_Wasseruhr LastHumidity: 61
2021-11-24_19:11:20 Unter_Wasseruhr LastTemperature: 15.8
2021-11-24_19:13:08 Unter_Wasseruhr bridge login cleared
2021-11-24_19:13:08 Unter_Wasseruhr bridge logging in
2021-11-24_19:13:20 Unter_Wasseruhr bridge logged in
2021-11-24_19:13:21 Unter_Wasseruhr connected over bridge to cloud
2021-11-24_19:19:50 Unter_Wasseruhr bridge login cleared
2021-11-24_19:19:50 Unter_Wasseruhr bridge logging in
2021-11-24_19:20:04 Unter_Wasseruhr bridge logged in
2021-11-24_19:20:05 Unter_Wasseruhr connected over bridge to cloud
2021-11-24_19:25:59 Unter_Wasseruhr bridge login cleared
2021-11-24_19:25:59 Unter_Wasseruhr bridge logging in
2021-11-24_19:26:12 Unter_Wasseruhr bridge logged in
2021-11-24_19:26:13 Unter_Wasseruhr connected over bridge to cloud
2021-11-24_19:28:47 Unter_Wasseruhr bridge login cleared
2021-11-24_19:28:47 Unter_Wasseruhr bridge logging in
2021-11-24_19:29:01 Unter_Wasseruhr bridge logged in
2021-11-24_19:29:02 Unter_Wasseruhr connected over bridge to cloud


Ich würde gern etwas bei der Übertragung ausprobieren.

Viele Grüße
Werner

McShire

geklärt, hatte nur einen Fehler in der Moduländerung

McShire

#130
Hallo JOEK3R,

im Device-Modul in Zeile 2813
readingsBulkUpdateIfChanged( $hash, "MeasurementHumidity", $currentDataTimestamp . " " . $currentDataHumidity )
ist doch $currentDataTimestamp ein String.
Wenn ich diesen durch einen anderen String ersetze oder auch die Zeile nur doppele, gibt es einen Syntax Error und die Module werden nicht angelegt.
Durch einen anderen String bleibt doch die Struktur erhalten, warum dann Syntax Error? Wird der Zeitstempel noch weiter ausgewertet?
Gibt es eine Möglichkeit, dort etwas anderes einzusetzen als den Zeitstempel? oder die Zeile nur beim Schreiben in das Logfile zu verändern.
Ich könnte mir vorstellen, wenn ich dort
time_str2num(substring($currentDataTimestamp,0,19) einsetze erhalte ich die Zeit in Sekunden. Dann lasse ich das Leerzeichen weg oder fülle es mit 0
dann müsste doch im Logfile im String eine Zahl als Wert auftauchen. Dieser Wert wird dann ja zur Bearbeitung an logProxy übergeben.
Leider gibt es nur einen Syntax Error.
Wenn es funktioniert, dann mit PostFn die Zeile umgewandelt, Sekunden zurück in Zeitstempel als linke Postion,
Leerzeichen, Device, Leerzeichen, Readingname, Leerzeichen, den aktuellen Zeitstempel, Leerzeichen, Messwert, ergibt eine plotfähige lp-Datei.
Siehst Du eine Möglichkeit, den Ausgabestring in das Logfile zu ändern?
Viele Grüße
Werner

J0EK3R

Hallo Werner,

gerade seh ich, dass ich in meinem vorherigen Code-Beispiel genau das gepostet habe, was Du machen möchtest: den Zeitstempel-String in einen Sekundenwert zu wandeln.


my $dataTimestamp_s = time_str2num($currentDataTimestamp);
               
readingsBeginUpdate($hash);

readingsBulkUpdateIfChanged( $hash, "MeasurementDataTimestamp", $currentDataTimestamp )
  if ( defined($currentDataTimestamp) );

readingsBulkUpdateIfChanged( $hash, "MeasurementHumidity", $dataTimestamp_s . " " . $currentDataHumidity )
  if ( defined($currentDataHumidity) );

readingsBulkUpdateIfChanged( $hash, "MeasurementTemperature", $dataTimestamp_s . " " . $currentDataTemperature )
  if ( defined($currentDataTemperature) );

readingsEndUpdate( $hash, 1 );


ZitatWenn es funktioniert, dann mit PostFn die Zeile umgewandelt, Sekunden zurück in Zeitstempel als linke Postion,
Leerzeichen, Device, Leerzeichen, Readingname, Leerzeichen, den aktuellen Zeitstempel, Leerzeichen, Messwert, ergibt eine plotfähige lp-Datei.

Die postFn-Funktion - so meine ich - will an erster Stelle eines Point-Triples sowieso keinen Zeitstempel-String, sondern eine Sekunden-Wert  8)

Wenn wir also den Zeitstempel plus den Wert der Messung in die postFn bringen würden, wären wir wohl am Ziel.

Ich glaube inzwischen, dass das Format mit <Zeitstempel-String><Leerzeichen><Wert> als Wert der readings - so wie es aktuell gemacht wird, ein Holzweg ist.
Der Zeitstempel in Sekunden ist wohl zielführender...

ZitatSiehst Du eine Möglichkeit, den Ausgabestring in das Logfile zu ändern?

Nein. Das FileLog (und auch dbLog) schreibt ja bei Änderung/Event des readings dessen Wert plus Zeitstempel weg. Man hat nur den Inhalt des readings selbst in der Hand, nicht den Zeitstempel.

Beste Grüße
JOEK3R

McShire

#132
Hallo JOEK3R,

in Deinem Post müssen noch die Leerzeichen raus, damit Filelog die Zahl an LogProxy weiter reicht.
Das Ergebnis sieht dann so aus:

2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163766948815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T14:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163767308861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163767308815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T15:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163767668861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163767668815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T16:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163768028861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163768028815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T17:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163768388861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163768388815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T18:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163768748861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163768748815.6
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T19:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163769108861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163769108815.6
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T20:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163769468861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163769468815.8
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T21:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163769828861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163769828815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T22:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163770188861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163770188815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-23T23:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163770548861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163770548815.8
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T00:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163770908861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163770908815.6
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T01:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163771268861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163771268815.7
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T02:11:28.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163771628861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163771628815.8
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementDataTimestamp: 2021-11-24T04:11:13.000+01:00
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163772347361
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163772347315.8
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 2021-11-24T04:11:13.000+01:00 61
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 2021-11-24T04:11:13.000+01:00 15.8


Dort kann dann die postprocessing Funktion die Zeilen
zum Beispiel:
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementHumidity: 163769828861
2021-11-24_22:03:51 Unter_Wasseruhr MeasurementTemperature: 163769828815.7

nach Vorbereitung durch Filelog

get lp_unter_Wasseruhr CURRENT INT 2021-11-24_00:00:00 2021-11-24_23:59:59 FileLog:FileLog_Unter_Wasseruhr:4:Unter_Wasseruhr.MeasurementTemperature\x3a:: FileLog:FileLog_Unter_Wasseruhr:4:Unter_Wasseruhr.MeasurementHumidity\x3a::


2021-11-24_22:03:51 163762632215.9
2021-11-24_22:03:51 163762992215.9
2021-11-24_22:03:51 163763708815.9
2021-11-24_22:03:51 163764068815.8
2021-11-24_22:03:51 163764428815.9
2021-11-24_22:03:51 163764788815.8
2021-11-24_22:03:51 163765148815.8
2021-11-24_22:03:51 163765508815.8
2021-11-24_22:03:51 163765868815.8
2021-11-24_22:03:51 163766228815.8
2021-11-24_22:03:51 163766588815.7
2021-11-24_22:03:51 163766948815.7
2021-11-24_22:03:51 163767308815.7
2021-11-24_22:03:51 163767668815.7
2021-11-24_22:03:51 163768028815.7
2021-11-24_22:03:51 163768388815.7
2021-11-24_22:03:51 163768748815.6
2021-11-24_22:03:51 163769108815.6
2021-11-24_22:03:51 163769468815.8
2021-11-24_22:03:51 163769828815.7
2021-11-24_22:03:51 163770188815.7
2021-11-24_22:03:51 163770548815.8
2021-11-24_22:03:51 163770908815.6
2021-11-24_22:03:51 163771268815.7
2021-11-24_22:03:51 163771628815.8
2021-11-24_22:03:51 163772347315.8
#4:Unter_Wasseruhr.MeasurementTemperature\x3a::
2021-11-24_22:03:51 163762272261
2021-11-24_22:03:51 163762632261
2021-11-24_22:03:51 163762992260
2021-11-24_22:03:51 163763708860
2021-11-24_22:03:51 163764068861
2021-11-24_22:03:51 163764428860
2021-11-24_22:03:51 163764788860
2021-11-24_22:03:51 163765148860
2021-11-24_22:03:51 163765508860
2021-11-24_22:03:51 163765868861
2021-11-24_22:03:51 163766228861
2021-11-24_22:03:51 163766588861
2021-11-24_22:03:51 163766948861
2021-11-24_22:03:51 163767308861
2021-11-24_22:03:51 163767668861
2021-11-24_22:03:51 163768028861
2021-11-24_22:03:51 163768388861
2021-11-24_22:03:51 163768748861
2021-11-24_22:03:51 163769108861
2021-11-24_22:03:51 163769468861
2021-11-24_22:03:51 163769828861
2021-11-24_22:03:51 163770188861
2021-11-24_22:03:51 163770548861
2021-11-24_22:03:51 163770908861
2021-11-24_22:03:51 163771268861
2021-11-24_22:03:51 163771628861
2021-11-24_22:03:51 163772347361
#4:Unter_Wasseruhr.MeasurementHumidity\x3a::




entsprechend umbauen in
1637698288 61
1637698288 15.7

oder in
2021-11-23T21:11:28.000+01:00 61
2021-11-23T21:11:28.000+01:00 15.7

und in das lp-file eintragen.
Wenn humidity immer 2 stelig ist und Temperatur immer 4 Zeichen hat (einschl. DeziPunkt) ist die Trennung nicht schwer.
Das Ergebnis wird sicher der perfekte Plot.
Ich bin dann mal weg

Viele Grüße
Werner


McShire

Hallo JOEK3R,
ich habe unterwegs mal ein bißchen mit dem Laptop probiert.
Das Ergebnis im Logfile

2021.11.25 20:03:12 4: GroheOndusSmartDevice_Set(Unter_Wasseruhr): cmd= ?
2021.11.25 20:03:15 1: FileLog:FileLog_Unter_Wasseruhr,postFn='pF_GroheSense':4:Unter_Wasseruhr.MeasurementTemperature\x3a::
2021.11.25 20:03:15 1: ARRAY
2021.11.25 20:03:15 1: 512
2021.11.25 20:03:15 1: ARRAY
2021.11.25 20:03:15 1: 1637807510
2021.11.25 20:03:15 1: 1637807510
2021.11.25 20:03:15 1: 163770908815.6
2021.11.25 20:03:15 1: 2021-11-25_03:31:50
2021.11.25 20:03:15 1: PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at fhem.pl line 1007.
2021.11.25 20:03:15 1:

163770908815.6  ist Messzeit und 15.6 Temperatur

mit dieser sub:

#### postFN Funktion für GroheSense Plots #######################
# Aufruf in 74_GroheOndusSmartDevice.pm
# myPostFn($devspec,$data)  $devspec = Zeile aus gplot-file, $data = array mit Datenpunkten

sub pF_GroheSense
{ my $devspec = $_[0];                       #Zeile im gplotfile
  my $data    = $_[1];                           #Referenz auf Array mit Triple Datenpunkte (Timestemp Zahl, Wert, Timestemp String
  my @data_array = @$data;             #Array mit Datenpunkten
  my $max_index = $#data_array;      #max Anzahl Datenpunkte
  my $dpk = $data_array[0];                  #1.Datenpunkt im Array
  my @dz = @$dpk;

Log3 ("pFGroheSense", 1, $devspec);
Log3 ("pFGroheSense", 1, ref($data));
Log3 ("pFGroheSense", 1, $max_index);
Log3 ("pFGroheSense", 1, ref($dpk));
Log3 ("pFGroheSense", 1, $dz[0]);
for( $a = 0; $a < 5; $a = $a + 1 ) {
      Log3 ("pFGroheSense", 1, $dz[$a]);
}

return ($devspec,$data);

}



Ich wollte nur mal schauen, was in der Funktion an Eingangsparametern ankommt.

Viele Grüße
Werner

J0EK3R

Guten Abend Werner,

leider bin ich heut zu nix gekommen...
Zumindest zum Thema Grohe.  ;)

Inzwischen bin ich am Überlegen, einfach selbst in ein eigenes Log-File zu schreiben - dann müsste man den ganzen *Pfusch* nicht machen.

Man könnte das eigene Log-File dann wohl über ein readonly FileLog-Device für den Plot zugänglich zu machen.

Was meinst Du?

Beste Grüße
JOEK3R