DBLog Werte auslesen für readingsGroup

Begonnen von chris0204, 15 April 2017, 16:54:02

Vorheriges Thema - Nächstes Thema

chris0204

Hallo liebe FHEM-Freunde,

ich habe eine MySQL-DB, in der ich mein Stromverbrauch ablege (siehe Anlagen) und mir in FHEM plotten lasse. Über eine "readingsGroup" wollte ich mir die Werte zusätzlich anzeigen lassen.

Dazu habe ich eine readingsgroup erstellt: "define Stromverbrauch readingsGroup DBLogging"
Im DBLogging habe ich ein userreading erstellt mit folgendem Inhalt: "Aktuell { ReadingsVal("Stromzaehler","VerbrauchAktuell",0);; }" 
Damit möchte ich den letzten  "Value"-Wert aus der DB auslesen, wo das Reading "VerbrauchAktuell" heißt.

In der readingsgroup erscheinen alle Readings von DBLogging. Allerdings steht bei "Aktuell" nur eine 0.  :(

Wo liegt mein Fehler?

Wenn euch Infos fehlen, dann meldet euch einfach.
Vielen Dank im Voraus!

Christian

Thorsten Pferdekaemper

Hi,
was ist denn DBLogging für ein Device? Am besten schickst Du mal ein "list" davon.
Möglicherweise ist Dein Problem, dass userReading nur "triggert", wenn sich etwas im selben Device ändert. D.h. wenn sich in DBLogging nichts tut, dann wird das Coding zum Reading Aktuell nie ausgeführt. Möglicherweise brauchst Du ein notify auf Stromzaehler:VerbrauchAktuell, das selbiges nach DBLogging:Aktuell schreibt.
Das ist aber alles ein bisschen durch die Kristallkugel, da ich den Zusammenhang mit der Datenbank nicht verstehe.
Gruß,
   Thorsten
FUIP

chris0204

Vielen Dank für die schnelle Antwort und deine Mühen.

Ich denke, dass "DbLogging" durch "DBLogging_Reopen" aufgerufen wird. Das sollte eigentlich passen?

Thorsten Pferdekaemper

Hi,
existiert denn Stromzaehler als Device in FHEM oder schreibst Du irgendwie anders in die DB?
Gruß,
   Thorsten
FUIP

chris0204

#4
Ich habe am Pi den "1wire-USB-Master" angeschlossen. Der schreibt die gezählten Impulse der S0-Schnittstelle in eine Datei. Über ein Shell-Skript, das alle 5 min aufgerufen wird, lese ich den Wert aus der Datei und mit SQL "Insert Into history ..." schreibe ich den Wert in die DB.

Über die readingsGroup "Stromverbrauch" wollte ich die Werte aus der DB auslesen und in FHEM anzeigen lassen. 

Viele Grüße

Christian

Edit:
Sorry, ich hatte deine Frage falsch gelesen. Das Device "Stromzaehler" existiert nicht wirklich.

Thorsten Pferdekaemper

Zitat von: chris0204 am 16 April 2017, 10:19:43Sorry, ich hatte deine Frage falsch gelesen. Das Device "Stromzaehler" existiert nicht wirklich.
Dann kannst Du auch keine Werte mit ReadingsVal lesen. Wie man aus der DB Werte liest weiß ich allerdings nicht. Warum bindest Du Deinen 1-Wire-Kram nicht richtig in FHEM ein?
Gruß,
   Thorsten
FUIP

chris0204

Der Hersteller des "1wire-USB-Masters" hat eine Anleitung (http://www.sms-guard.org/downloads/1wire-USB-Master-fhem.pdf), wie man die Werte des Zählers in FHEM einbindet. Und das war quasi der selbe Aufbau, wie ich ihn jetzt realisiert habe, nur das ich in eine DB schreibe statt in ein Logfile.

Trotzdem vielen Dank für deine Hilfe.

Hat sonst jemand eine Idee, wie ich mein Problem lösen könnte?  :)

Thorsten Pferdekaemper

Zitat von: chris0204 am 16 April 2017, 10:55:37
Der Hersteller des "1wire-USB-Masters" hat eine Anleitung (http://www.sms-guard.org/downloads/1wire-USB-Master-fhem.pdf), wie man die Werte des Zählers in FHEM einbindet.
Ich habe das mal kurz überflogen. Naja... Direktes Schreiben in FileLogs und Editieren der fhem.cfg. Meiner Meinung nach sind das zwei no-gos. (Mal von den ganzen Tippfehlern abgesehen.)
Gruß,
   Thorsten
FUIP

Wzut

Zitat von: chris0204 am 16 April 2017, 10:55:37
Hat sonst jemand eine Idee, wie ich mein Problem lösen könnte?  :)
für das SMS Guard Teil hatte ich mal ein FHEM Modul geschrieben : https://forum.fhem.de/index.php/topic,28447.0.html
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

chris0204

ZitatDirektes Schreiben in FileLogs und Editieren der fhem.cfg. Meiner Meinung nach sind das zwei no-gos. (Mal von den ganzen Tippfehlern abgesehen.)

Da hast du recht. ;D

Zitatfür das SMS Guard Teil hatte ich mal ein FHEM Modul geschrieben

Ich bin in Sachen FHEM noch blutiger Anfänger. Wie binde ich das Modul ein? Den Quellcode in den FHEM-Pfad kopieren und dann über "Define <name> BUSMASTER .." das Modul einbinden?  ::)
Kannst du vielleicht in 1-2 Sätzen erklären, was das Modul macht und wofür es ein Master und Slave Programm gibt?  ;)

Danke!

Wzut

#10
ja die beiden Module dahin kopieren wo auch die anderen Module sind , üblicherweise /opt/fhem/FHEM
Danach FHEM neu starten sonst werden im nächsten Schritt die Dinger nicht gefunden.
Wie es definiert wird habe ich doch hier -> https://forum.fhem.de/index.php/topic,28447.msg215143.html#msg215143 auch geschrieben.
define meinModul USBMASTER /dev/ttyUSB0@38400
wobei /dev/ttyUSB0 der Devicepfad des USB Moduls ist , checke das bei dir. Ebenso ob du ein neues Modul hast das mit der Baudrate von 38400 arbeitet oder eines eventuell ein altes mit 115200 Baud.
Das 14_USBSLAVE  wird nur benötigt wenn am 1W Bus DS1820 Temperatur Sensoren angeschlossen sind.
Verwendest du nur die beiden Zählereinigänge finden sich die beiden Zähler in den Readings A und B
In dem oben verlinkten Fred findet sich auf Seite 3 oben noch eine überarbeitete Version, die aber nicht von mir ist.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

stromer-12

Zitat von: chris0204 am 16 April 2017, 10:55:37
Der Hersteller des "1wire-USB-Masters" hat eine Anleitung (http://www.sms-guard.org/downloads/1wire-USB-Master-fhem.pdf), wie man die Werte des Zählers in FHEM einbindet. Und das war quasi der selbe Aufbau, wie ich ihn jetzt realisiert habe, nur das ich in eine DB schreibe statt in ein Logfile.

Trotzdem vielen Dank für deine Hilfe.

Hat sonst jemand eine Idee, wie ich mein Problem lösen könnte?  :)

schon mal mit laut commandref:
get <name> ReadingsVal       <device> <reading> <default>

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

chris0204

@Wzut
Danke für deine ausführliche Erklärung und dass du dir die Mühe gemacht hast solch ein Modul zu schreiben. Es ist eingebunden und ich bastel daran jetzt weiter.  :)

@stromer-12
Danke für den Tipp, aber ich werde mit dem Modul von Wzut weiterarbeiten. ;)