Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)

Begonnen von DS_Starter, 19 Mai 2016, 22:52:13

Vorheriges Thema - Nächstes Thema

DS_Starter

#1005
Hi Erik,

ja mir ist auch nichts besseres eingefallen, ich werde die zusätzliche Option mal einbauen und zum Test stellen.

ZitatIdealerweise gäbe es eine Funktion, die einen Wert direkt in ein anderes Reading schreibt - also den Umweg über das Notify aus dem Wiki spart.
Was soll ich sagen ... die Anforderung gab es schon mal und steht auf meiner ToDo ... Habs aber immer wieder nach hinten geschoben  ::)  Jetzt bekommt das Feature wieder etwas Rückenwind.

Grüße,
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

DoubleD

Zitat von: DS_Starter am 17 März 2020, 11:35:44
HI,
Nein, braucht SQLite ohnehin nicht.

Diese Logs sind irreführend und ich hatte sie in der aktuellen Version eliminiert.
Update DbRep bitte mal (aktuell auf 8.32.4-s21429/2020-03-15). Dann sollte das passen.

LG,
Heiko

Funktioniert! Danke!

DoubleD

Zitat von: DS_Starter am 17 März 2020, 16:48:53

Ich könnte mit vorstellen zusätzlich zu der Option writeToDB eine weitere Option  writeToDBSingle (z.B.) anzubieten die generell nur einen Point schreibt.
Überlege aber grad noch ob sich evtl. schon mit den jetzt eingebauten Mitteln dieses Verhalten erreichen lässt ...

Wäre super!

DoubleD

Zitat von: ritter_runkel am 17 März 2020, 19:30:56

Idealerweise gäbe es eine Funktion, die einen Wert direkt in ein anderes Reading schreibt - also den Umweg über das Notify aus dem Wiki spart.
Für mich würde das Sinn machen ;-)


+1 Wäre eine große Hilfe

DS_Starter

Hallo miteinander,

ich habe einiges abgearbeitet und eine neue Version zum Test bereitgestellt.
Neu ist:

* das Kommando reduceLog kann man zur schnellen, dynamischen Nutzung nun auch mit Zeitoptionen (Tagen) aufrufen, z.B.
   set <Name> reduceLog 100:200 average=day EXCLUDE=device1:reading1,device2:reading2

   Die Syntax ist genauso wie bei DbLog und es werden bei Verwendung der Optionen evtl gesetzte Attribute übersteuert.
   Man kann dort nur Tage angeben (keine Wochen etc.), sonst wäre es einfach zu komplex.

* Für averageValue und sumValue gibt es nun die Aufrufoption writeToDBSingle. Mit dieser Option wird nur ein
   Berechnungswert pro Periode in die DB weggeschrieben anstatt zwei mit writeToDB.

Für alle diese Funktionen habe ich die Commandref überarbeitet. Nach dem Download des Moduls einfach mit

help dbrep

anzeigen.

Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:


"wget -qO ./FHEM/93_DbRep.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/93_DbRep.pm"


Würde mich über eure Testergebnisse freuen. Die weiteren Wünsche schaue ich mir auch noch an.

Grüße,
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

ritter_runkel

Hallo Heiko,
Corona machte vermutlich möglich - vielen Dank für die Funktion "writeToDBSingle"

Hab es gerade mal getestet - sieht gut aus.

Beste Grüße aus Leipzig.
Erik
FHEM auf Raspberry Pi 2B
2x eService 1WireHu, 7x DS1820, 2x Multisensoren Wiregate AMS 2.11 für Temperatur DS1820, relativer Luftfeuchte HIH4031, zwei IO-Ports DS2438, Analog-Eingang 0-10 V (bzw. 0-20 mA) DS2413
FritzDECT; HUE; 5xFibaro RollerShutter, Rauchmelder

DS_Starter

#1011
Moin Erik,

ZitatCorona machte vermutlich möglich - vielen Dank für die Funktion "writeToDBSingle"
Wenn ich ehrlich bin, habe ich gerade jetzt mehr Stress als sonst. Es müssen in der Situation Wege gefunden und organisiert werden um den Betrieb stabil zu halten, sodass der Kunde (fast) nichts merkt. Ich arbeite an den Modulen meist bis (sehr) spät Abends um etwas zu bauen und zu testen.

Schön, dass es funktioniert.  :)
Die anderen requesteten Punkte schaue ich mir auch noch an und melde mich wieder ...

Grüße,
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

Moin.
Vielen Dank für den tollen Einsatz.

Habt Ihr bereits etwas als Muster für einen Kostal Plenticore WR? Bevor ich alles nochmal konfiguriere.
Ich versuche gerade Reports von den SMA Mustern zu adaptieren, nur bin ich noch nicht so weit die readings passend zu zu ordnen. Ich vermute der Plenticore hat nicht 1 zu 1 die selben Werte.

Gesendet von meinem SM-G930F mit Tapatalk

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

Hallo Christian,

bin mir etwas unsicher ob deine Anfrage hier nicht untergeht.
Würde an deine Stelle in     FHEM - Anwendungen »   Solaranlagen  was platzieren und ggf. hierher verlinken.

Grüße,
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

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

flummy1978

Hallöchen,

Zitat von: DS_Starter am 18 März 2020, 22:01:55
Hallo miteinander,

ich habe einiges abgearbeitet und eine neue Version zum Test bereitgestellt.
Neu ist:

Alter Schwede 😳 Schneller als die Polizei erlaubt..... Schon jetzt einmal vielen herzlichen Dank dafür.

Wenn ich heute Abend dazu komme, werde ich einiges testen und berichten. Wenn nicht heute Abend dann spätestens in den nächsten 2-3 Tagen  :)

Grüße
Andreas

Danke!!

ch.eick

Schneller als wie der Schall :-)

Ich habe mir da mal SQL ueberlegt und frage mich nun wohin damit

Ich habe bei den Devices event_on_change eingestellt, wodurch die Values jetzt natuerlich nicht alle zur selben Zeit erscheinen.
Mit der folgenden Abfrage bekommt man die aktuellsten Readings, egal wann sie geloggt wurden.

SET @device = 'Heizung';
SELECT t1.TIMESTAMP,t1.DEVICE,t1.READING,t1.VALUE
  FROM history t1
  INNER JOIN
   (select max(TIMESTAMP) AS TIMESTAMP,DEVICE,READING
      from history
      where DEVICE    = @device and
            TIMESTAMP > NOW() - INTERVAL 1 DAY
      group by READING) x
  ON x.TIMESTAMP = t1.TIMESTAMP AND
     x.DEVICE    = t1.DEVICE    AND
     x.READING   = t1.READING;

z.B.
MySQL [fhem]> SET @device = 'Heizung';
Query OK, 0 rows affected (0.001 sec)

MySQL [fhem]> SELECT t1.TIMESTAMP,t1.DEVICE,t1.READING,t1.VALUE
    ->   FROM history t1
    ->   INNER JOIN
    ->    (select max(TIMESTAMP) AS TIMESTAMP,DEVICE,READING
    ->       from history
    ->       where DEVICE    = @device and
    ->             TIMESTAMP > NOW() - INTERVAL 1 DAY
    ->       group by READING) x
    ->   ON x.TIMESTAMP = t1.TIMESTAMP AND
    ->      x.DEVICE    = t1.DEVICE    AND
    ->      x.READING   = t1.READING;
+---------------------+---------+---------------------------+-------------------+
| TIMESTAMP           | DEVICE  | READING                   | VALUE             |
+---------------------+---------+---------------------------+-------------------+
| 2020-03-19 19:21:15 | Heizung | ambientTemperature        | 12.4              |
| 2020-03-19 19:16:15 | Heizung | averageAmbientTemperature | 11.5              |
| 2020-03-19 06:56:14 | Heizung | counterHeatQHeating       | 6978.9            |
| 2020-03-19 12:01:14 | Heizung | counterHeatQPool          | 992.8             |
| 2020-03-19 12:01:14 | Heizung | counterHeatQTotal         | 12897.0           |
| 2020-03-19 11:56:14 | Heizung | flowDispersion            | 10.4              |
| 2020-03-19 19:21:15 | Heizung | flowTemperature           | 24.5              |
| 2020-03-19 19:16:15 | Heizung | heatingBufferTemperature  | 27.1              |
| 2020-03-19 19:06:15 | Heizung | heatingSystemCircPump     | off               |
| 2020-03-19 19:21:15 | Heizung | heatSourceIN              | 16.5              |
| 2020-03-19 12:01:14 | Heizung | heatSourceMotor           | off               |
| 2020-03-19 18:36:15 | Heizung | hotWaterCircPumpExtern    | off               |
| 2020-03-19 19:01:15 | Heizung | hotWaterTemperature       | 59.4              |
| 2020-03-19 12:21:14 | Heizung | hotWaterTemperatureTarget | 50.0              |
| 2020-03-19 12:06:14 | Heizung | opStateHeatPump1          | Wärmepumpe steht  |
| 2020-03-19 19:21:15 | Heizung | opStateHeatPump2          | seit 07:23:21     |
| 2020-03-19 12:06:14 | Heizung | opStateHeatPump3          | Keine Anforderung |
| 2020-03-19 14:01:15 | Heizung | opStateHotWater           | Temp. OK          |
| 2020-03-19 19:16:15 | Heizung | returnTemperature         | 27.1              |
| 2020-03-19 19:06:15 | Heizung | returnTemperatureExtern   | 28.7              |
| 2020-03-19 19:01:15 | Heizung | returnTemperatureHeating  | 27.4              |
| 2020-03-19 19:16:15 | Heizung | returnTemperatureTarget   | 24.1              |
| 2020-03-19 12:21:14 | Heizung | SWTin_PV-Eigenverbrauch   | 0                 |
+---------------------+---------+---------------------------+-------------------+
23 rows in set (0.132 sec)



MySQL [fhem]> SET @device = 'PV_Anlage_1';
Query OK, 0 rows affected (0.001 sec)

MySQL [fhem]> SELECT t1.TIMESTAMP,t1.DEVICE,t1.READING,t1.VALUE
    ->   FROM history t1
    ->   INNER JOIN
    ->    (select max(TIMESTAMP) AS TIMESTAMP,DEVICE,READING
    ->       from history
    ->       where DEVICE    = @device and
    ->             TIMESTAMP > NOW() - INTERVAL 1 DAY
    ->       group by READING) x
    ->   ON x.TIMESTAMP = t1.TIMESTAMP AND
    ->      x.DEVICE    = t1.DEVICE    AND
    ->      x.READING   = t1.READING;
+---------------------+-------------+-------------------------------------------------------+------------+
| TIMESTAMP           | DEVICE      | READING                                               | VALUE      |
+---------------------+-------------+-------------------------------------------------------+------------+
| 2020-03-19 19:26:20 | PV_Anlage_1 | Actual_battery_charge_-minus_or_discharge_-plus_Power | 401        |
| 2020-03-19 19:15:21 | PV_Anlage_1 | Actual_battery_charge_usable_Power                    | 7347       |
| 2020-03-19 19:15:21 | PV_Anlage_1 | Act_state_of_charge                                   | 92.00      |
| 2020-03-19 19:25:22 | PV_Anlage_1 | Battery_temperature                                   | 24.10      |
| 2020-03-19 19:26:16 | PV_Anlage_1 | Daily_yield                                           | 36913.14   |
| 2020-03-19 19:26:14 | PV_Anlage_1 | Home_own_consumption_from_battery                     | 367.83     |
| 2020-03-19 19:26:18 | PV_Anlage_1 | Home_own_consumption_from_grid                        | 3.00       |
| 2020-03-19 19:26:15 | PV_Anlage_1 | Home_own_consumption_from_PV                          | 0.17       |
| 2020-03-19 00:02:15 | PV_Anlage_1 | Inverter_state                                        | 6          |
| 2020-03-19 19:26:20 | PV_Anlage_1 | Monthly_yield                                         | 385511.69  |
| 2020-03-19 19:26:14 | PV_Anlage_1 | Power_DC1                                             | -0.12      |
| 2020-03-19 19:21:17 | PV_Anlage_1 | Power_DC2                                             | -0.11      |
| 2020-03-19 19:26:20 | PV_Anlage_1 | Power_DC_Sum                                          | -0.23      |
| 2020-03-19 19:26:20 | PV_Anlage_1 | Total_DC_Power                                        | 401.50     |
| 2020-03-19 19:26:20 | PV_Anlage_1 | Total_DC_Power_Max                                    | 400.6228   |
| 2020-03-19 19:00:22 | PV_Anlage_1 | Total_PV_Power_reserve                                | 0          |
| 2020-03-19 19:26:13 | PV_Anlage_1 | Total_yield                                           | 1400978.38 |
| 2020-03-19 19:26:20 | PV_Anlage_1 | Voltage_DC1                                           | 18.83      |
| 2020-03-19 19:26:22 | PV_Anlage_1 | Voltage_DC2                                           | 9.61       |
| 2020-03-19 19:26:18 | PV_Anlage_1 | Yearly_yield                                          | 952188.25  |
+---------------------+-------------+-------------------------------------------------------+------------+
26 rows in set (0.214 sec)


Viel Spass beim Testen
   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

Hallo Christian,

ZitatIch habe mir da mal SQL ueberlegt und frage mich nun wohin damit
Naja, es gibt doch im DbRep das "set ... sqlSpecial".
Dort könnte es unterbringen. Ich müsste es nur etwas anpassen dass es auch für SQLite und PostgreSQL funktioniert.
Mal schauen, ich probiere und melde mich ...

cool Sache  8)

Grüße,
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

Manchmal kann ich auch was

Gesendet von meinem SM-G930F mit Tapatalk

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

#1019
Hallo miteinander

zwei Dinge habe ich jetzt noch hinzugefügt

* das Kommando delEntries kann nun ebenfalls mit Zeitoptionen (Tagen) dynamisch aufgerufen werden, z.B.
   set <Name> delEntries 100:200

   Eventuell gesetzte time.*-Attribute werden damit übersteuert

* der Spezial SQL von Christian ist eingebaut. Aufruf mit

   set <name> sqlSpecial recentReadingsOfDevice

   Mit dem Attr sqlResultFormat kann man das Ausgabe Format festlegen. Mit "table" ergibt sich eine Tabelle wie im Anhang.
   Das Device wird wie üblich über das Attr device festgelegt. Muss in diesem Fall aber ein konkretes Device sein, kein TYPE= o.ä.
   Für MySQL und SQLite läuft es schon. Postgre muss ich noch machen.
   PostgreSQL läuft ebenfalls.
   Die Comref muss ich noch anpassen.


Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:

"wget -qO ./FHEM/93_DbRep.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/93_DbRep.pm"

Probierts mal aus....

Grüße,
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