[gelöst] unerwartete Ergebnisse bei DBrep diffvalue

Begonnen von Nighthawk, 04 Dezember 2022, 20:25:51

Vorheriges Thema - Nächstes Thema

Nighthawk

Hallo Heiko,

danke dafür, hab ich eingespielt und die ersten Tests gemacht, soweit sieht es ganz gut aus. Morgen werde ich noch etwas intensiver testen, bei dem Stromzählerwerten (OBIS) hatte ich seltsame Ergebnisse gehabt, das muss ich mir nochmal genauer anschauen.

ch.eick

Hallo Heiko,
sorry, dass es etwas gedauert hat.

Ich habe es dann jetzt mal im original Oracle MySQL Docker Container getestet und der Syntax funktioniert einwandfrei.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.28    |
+-----------+
mysql> set @V:= 0, @diff:= 0, @diffTotal:= 0, @RB:= 1;
Query OK, 0 rows affected (0.00 sec)

mysql> select @V, @diff, @diffTotal, @RB;
+------+-------+------------+------+
| @V   | @diff | @diffTotal | @RB  |
+------+-------+------------+------+
|    0 |     0 |          0 |    1 |
+------+-------+------------+------+


mysql>
  SELECT TIMESTAMP,
       VALUE,
       if(VALUE-@V < 0 OR @RB = 1 , @diff:= 0, @diff:= VALUE-@V ) as DIFF,
   @V:= VALUE as VALUEBEFORE,
   @RB:= '0' as RBIT
  FROM history
  WHERE ( DEVICE = 'WR_0_KSEM' )
    AND ( READING = 'Active_energy+' )
AND TIMESTAMP >= '2022-11-29'
AND TIMESTAMP < '2022-11-30'
  ORDER BY TIMESTAMP;

+---------------------+-------+------+-------------+------+
| TIMESTAMP           | VALUE | DIFF | VALUEBEFORE | RBIT |
+---------------------+-------+------+-------------+------+
| 2022-11-29 00:29:54 | 7770  |    0 | 7770        | 0    |
| 2022-11-29 04:35:55 | 7771  |    1 | 7771        | 0    |
| 2022-11-29 08:27:56 | 7772  |    1 | 7772        | 0    |
<snip>
| 2022-11-29 19:26:11 | 7786  |    1 | 7786        | 0    |
| 2022-11-29 22:50:11 | 7787  |    1 | 7787        | 0    |
+---------------------+-------+------+-------------+------+

mysql>
  SELECT sum(DIFF)
  FROM (
    SELECT TIMESTAMP,
           VALUE,
           if(VALUE-@V < 0 OR @RB = 1 , @diff:= 0, @diff:= VALUE-@V ) as DIFF,
       @V:= VALUE as VALUEBEFORE,
       @RB:= '0' as RBIT
    FROM history
    WHERE ( DEVICE = 'WR_0_KSEM' )
      AND ( READING = 'Active_energy+' )
  AND TIMESTAMP >= '2022-11-29'
  AND TIMESTAMP < '2022-11-30'
    ORDER BY TIMESTAMP
  ) SUM ;
+-----------+
| sum(DIFF) |
+-----------+
|        17 |
+-----------+


Falls Du noch weitere Tests haben möchtest, dann melde Dich einfach.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

DS_Starter

Danke Christian,

das bestätigt eigentlich meine weiter oben geäußerte Vermutung.
Die Syntax läuft ja schon jahrelang einwandfrei, wird aber wohl bei den neueren MariaDB Releases nicht mehr so unterstützt wie
es scheint.
Wie dem auch sein, ich habe jetzt den Standardcode für diffValue auch für MariaDB drin und das passt auch.

Aber interessant ist es trotzdem ...

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

ch.eick

Zitat von: DS_Starter am 07 Dezember 2022, 09:48:41
Die Syntax läuft ja schon jahrelang einwandfrei, wird aber wohl bei den neueren MariaDB Releases nicht mehr so unterstützt wie
es scheint.
Wie dem auch sein, ich habe jetzt den Standardcode für diffValue auch für MariaDB drin und das passt auch.

Aber interessant ist es trotzdem ...
Hallo Heiko,
ich mag es ja, wenn man das Original direkt verwenden kann :-)
Im Oracle MySQL sind berits diverse weitere Konfigurationen im laufe der Jahre geändert worden, die die Sicherheit erhöhen sollen.
So gehen die Versionen dann immer weiter auseinander und es gibt natürlich auch zeitliche Verzögerungen, bis das alles nachgezogen
worden ist.
Da der Container jedoch nur für 64 Bit bereitgestellt wird ist es natürlich eine grundlegende Entscheidung, wenn man es auf einem RPI
oder ähnichem System laufen lassen möchte. Bei mir läuft es nun seit ca. 2 Jahren stabil auf einem RPI 4 mit 64 Bit OS unter Docker. Das
hat mir bereits sehr viel Zeit gespart und ich kann es nur empfehlen.

VG    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Nighthawk

Hallo Heiko,

auch von meiner Seite die positive Rückmeldung, läuft soweit ohne Probleme.

Die von mir angesprochenen Auffälligkeiten liegen an dem DB Inhalt, irgendwie sind in der DB "Wackelige" Daten enthalten, da muss ich wohl mal aufräumen..

Danke nochmal und Gruß
Alex

DS_Starter

Ist eingecheckt und morgen früh im Update.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter