Autor Thema: Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)  (Gelesen 97325 mal)

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #870 am: 10 Februar 2019, 16:34:56 »
Hi Thowe,

Zitat
sogar sonntags am Gerät?! :)
Naja, gerade so mieses Wetter. Will heute aber noch ins Kino  ;)

Für die sqlCmd-Familie hab ich es umgesetzt und nach contrib geladen:

https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter  (Downloadbutton benutzen)

Wie üblich restart oder reload nach dem Download.
Schaue mir das für sumValue und maxValue auch noch an ...

LG,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #871 am: 10 Februar 2019, 17:10:07 »
Für sumValue, maxValue, minValue und diffValue ist es nun auch umgesetzt und nach contrib geladen.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline Thowe

  • New Member
  • *
  • Beiträge: 19
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #872 am: 10 Februar 2019, 17:23:12 »
Hallo Heiko,

perfekt, mit V8.13.0  funktioniert executeAfterProc für alle umgesetzten Befehle, vielen Dank!!
Führt dbrep vor dem executeAfterProc noch ein commit aus, so dass eine DB-Änderung für den nachfolgenden Befehl immer wirksam ist?

Viele Grüße,
Thowe

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #873 am: 10 Februar 2019, 17:37:37 »
So und jetzt ist es noch für averageValue umgesetzt.  :)

Zitat
Führt dbrep vor dem executeAfterProc noch ein commit aus, so dass eine DB-Änderung für den nachfolgenden Befehl immer wirksam ist?
Im Prinzip ja, implizit durch die finish/disconnect Befehle im Hintergrund wenn die session beendet wird.

EDIT: den zweiten Satz habe ich gelöscht, war Unfug  ;)

LG,
Heiko
« Letzte Änderung: 10 Februar 2019, 17:39:44 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #874 am: 10 Februar 2019, 17:48:38 »
Habe nachgeschaut und gesehen dass ich sogar ein commit explizit drin habe sofern kein Autocommit wirksam ist.
Also mit Sicherheit "Ja".
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline ptr201711

  • New Member
  • *
  • Beiträge: 5
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #875 am: 11 Februar 2019, 16:00:14 »
Hallo,habe das Modul im Einsatz. Funktioniert auch.

Ich greife damit auf eine Nicht-FHEM-Datenbank zu z.B. mit "sqlCmd select summe from heizung.protokoll order by datum desc limit 1".

Es kommen auch richtige Werte zurück (in diesem Fall einer), der auch im Modul unter dem Reading SqlResultRow_1 angezeigt wird. Leider habe ich auf dieses Reading keinen Zugriff. Die Sequenz 'ReadingsVal("sql_conn","SqlResultRow_1","155")' gibt mir immer nur den Ersatzwert (155) zurück. "sql_conn" ist der Name meines Devices, das Reading hat den korrekten Wert 925.

Wenn ich den Wert nach FHEM logge steht in der Mysql-Datenbank folgendes:
2019-02-11 15:54:23 | sql_conn         | SqlResultRow_1         | 925       

Dies ist korrekt.                       |

Der Sinn dahinter ist folgender: Ich erfasse den Tanklevel meiner Öltanks von Hand und trage diese in eine von FHEM unabhängige Datenbank ein. Ich lese den letzten eingetragenen Wert zurück, was auch korrekt funktioniert. Nur leider lässt sich das Reading des DbRep devices nicht über FHEM greifen. Ich möchte dieses gern in einem Floorplan anzeigen.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #876 am: 11 Februar 2019, 16:19:30 »
Hallo Peter,

Auf die Ergebnisreadings von DbRep zuzugreifen ist nicht so ohne weiteres wie bei anderen FHEM-Devices möglich. Der Grund ist die asynchrone Arbeitsweise.
Wenn unmittelbar nach Absetzen eines DbRep-Befehls versucht wird auf SqlResultRow_1 zuzugreifen, dann existiert es noch nicht, da es erst nach Vorliegen des Ergebnisses aus einem Parallelprozess erzeugt wird.

Vorschlag für eine Lösungsvariante ist, dass du dir einen Dummy erzeugst und den in deinem Floorplan zur Anzeige einbindest. In diesem Dummy kannst du dir ein Reading über ein Notify setzen. Diese Möglichkeit ist im Wiki hier beschrieben:

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Werte_mittels_Event_.C3.BCbetragen

Es gibt auch noch die Variante über die userExitFn (Attribut im DbRep). Sie bietet maximale Flexibiliät und Möglichkeiten, ist aber mit etwas Programmierung verbunden. Die prinzipielle Funktionseise und wie man sie nutzen kann ist hier an einem Beispiel gezeigt:

https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#Abarbeitung_einer_sequentiellen_Befehlskette_mittels_non-blocking_sqlCmd-Kommandos

LG,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ptr201711

  • New Member
  • *
  • Beiträge: 5
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #877 am: 11 Februar 2019, 17:25:36 »
Danke für die Hilfe mit notify bekomme ich das hin. Wahrscheinlich muss aber doch auf die Utils gehen für die endgültige Lösung. :)

Offline maci

  • Full Member
  • ***
  • Beiträge: 470
  • ... und sie leben doch!
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #878 am: 11 Februar 2019, 18:23:54 »
Hallo,

Ich benutze derzeit noch die normale (blocking) Variante der Abfrage und Befüllung des Dummys.
Diese  möchte ich jetzt zeitnah in die nonblocking Variante umbauen.

Was ich aber derzeit noch suche, ist: Wie kann ich mehrere Werte eines Devices aus dem DBLog in eine Dummydevice packen.
Ich habe ein Thermostat-Device (Netatmo) das beinhaltet die akt. Temperatur, die Solltemperatur und das aktuelle laufende Programm.
Nun möchte ich aber die Infos per DbRep auch in meiner anderen Fhem Instanz haben.
Raspberry Pi3, UniPi Vers. 1.1 mit Raspberry Pi2, Netatmo Wetterstation + Regenmesser, Netatmo Thermostat, 1x ESP8266 1wire WLAN Bridge, HMLan, 2x HMLANGateway, Homematic, 2x owserver,

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #879 am: 11 Februar 2019, 18:34:50 »
Hallo maci,

Zitat
Wie kann ich mehrere Werte eines Devices aus dem DBLog in eine Dummydevice packen.
Ich habe ein Thermostat-Device (Netatmo) das beinhaltet die akt. Temperatur, die Solltemperatur und das aktuelle laufende Programm.
Nun möchte ich aber die Infos per DbRep auch in meiner anderen Fhem Instanz haben.

Ich muss zugeben, die Aufgabenstellung nicht wirklich verstanden zu haben. Ich versuche es mal mit meinen Worten.
Du hast ein Thermostat-Device (Netatmo), das beinhaltet die akt. Temperatur, die Solltemperatur und das aktuelle laufende Programm als Readings. Diese Readings werden in eine Datenbank geloggt.
Jetzt möchtest du diese Readings bzw. deren Werte mit DbRep aus der DB lesen und in ein Dummydevice packen.
Das Ganze soll auf einer anderen FHEM Instanz passieren.

Habe ich das so richtig wiedergegeben ?

Grüße
Heiko
« Letzte Änderung: 11 Februar 2019, 18:40:36 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline maci

  • Full Member
  • ***
  • Beiträge: 470
  • ... und sie leben doch!
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #880 am: 11 Februar 2019, 19:28:11 »
Hallo maci,

Ich muss zugeben, die Aufgabenstellung nicht wirklich verstanden zu haben. Ich versuche es mal mit meinen Worten.
Du hast ein Thermostat-Device (Netatmo), das beinhaltet die akt. Temperatur, die Solltemperatur und das aktuelle laufende Programm als Readings. Diese Readings werden in eine Datenbank geloggt.
Jetzt möchtest du diese Readings bzw. deren Werte mit DbRep aus der DB lesen und in ein Dummydevice packen.
Das Ganze soll auf einer anderen FHEM Instanz passieren.

Habe ich das so richtig wiedergegeben ?


Grüße
Heiko

Hallo Heiko,

Ja das ist so richtig wiedergegeben.
Das Auslesen erfolgt in einer andern Fhem Instanz.

Gruß Georg
Raspberry Pi3, UniPi Vers. 1.1 mit Raspberry Pi2, Netatmo Wetterstation + Regenmesser, Netatmo Thermostat, 1x ESP8266 1wire WLAN Bridge, HMLan, 2x HMLANGateway, Homematic, 2x owserver,

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #881 am: 11 Februar 2019, 20:29:20 »
Hallo Georg,

Ok, das ist eigentlich auch nicht so schwer.
Auf der anderen FHEM-Instanz definierst du dir ein DbLog-Device welches nichts loggt. Z.B.

 define LogDB1 DbLog ./db.conf aaaaa:bbbbb

Das dient nur zur Herstellung der Verbindung. Nun erstellst du auf der anderen FHEM Instanz noch ein DbRep Device mit der Angabe von LogDB1.
Nun kannst du mit dem DbRep auf der anderen FHEM-Instanz alle Werte aus der Quelldatenbank lesen.

Die erstellten Readings kannst du wieder auf einen Dummy schreiben wie im Wiki beschrieben oder über die bereits erwähnte userExitFn.

Was denkst du ?

LG,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 3319
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #882 am: 12 Februar 2019, 14:21:44 »
Hallo Heiko,

mal eine kleine Frage am Rande,
werden bei set XXX sqlCmd xxxdie Attribute "timestamp_begin" und "timestamp_end" berücksichtigt?

danke & Grüße
Frank

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4160
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #883 am: 12 Februar 2019, 14:50:25 »
Hi Frank,

ja, aber du musst dafür Platzhalter in deinem SQL verwenden. Ich glaube so -> §timestamp_begin§. Schau aber besser mal in die Commandref.

Lg
Heiko
« Letzte Änderung: 12 Februar 2019, 22:19:32 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, SMAPortal, Watches
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline maci

  • Full Member
  • ***
  • Beiträge: 470
  • ... und sie leben doch!
Antw:Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)
« Antwort #884 am: 12 Februar 2019, 20:33:37 »
Hallo Heiko,

Alles erledigt und es funktioniert alles. Weiters habe ich alles auf nonblocking umgebaut.

Danke!

Gruß
Georg
Raspberry Pi3, UniPi Vers. 1.1 mit Raspberry Pi2, Netatmo Wetterstation + Regenmesser, Netatmo Thermostat, 1x ESP8266 1wire WLAN Bridge, HMLan, 2x HMLANGateway, Homematic, 2x owserver,
Gefällt mir Gefällt mir x 1 Liste anzeigen