Integration von Klimalogg (Datenbank auf anderem Raspberry)

Begonnen von Syrex-o, 05 Januar 2017, 20:07:29

Vorheriges Thema - Nächstes Thema

Syrex-o

Hey, da ich meinen Raspberry schon mit 2 webservern belaste habe ich WEEWX ausgelagert auf einen anderen Pi.
Nun möchte ich aber auf die Datenbank zugreifen und sie auswerten. @lion hat schonmal ein Modul dafür geschrieben. Allerdings nur für den server (WEEWX) der auf dem Pi mit Fhem läuf. Daher war es mein Ansatz das Modul so zu bearbeiten, dass man auch von anderen Servern die Datenbank abholen kann. Einfach gesagt sieht mein umgebastelter Teil im Script nur so aus:sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "SQLite";
my $host = "http://192.168.178.48/var/www/html/weewx/kl/";
my $database = "weewx-kl.sdb";
my $username = "";
my $password = "";
my $dsn = "DBI:$driver:database=$database";
my $dbh = DBI->connect($dsn, $username, $password, { RaiseError => 1 }) or die $DBI::errstr;


Mein log hat immer den Fehler geschrieben, dass etwas in der letzen Zeile von dem hier geposteten nicht stimmt.
Jetzt bin ich soweit, dass es einen neuen Fehler ausspuckt: PERL WARNING: DBD::SQLite::db prepare failed: no such table: archive at ./FHEM/99_KLW.pm line 58, <$fh> line 16.
DBD::SQLite::db prepare failed: no such table: archive at ./FHEM/99_KLW.pm line 58, <$fh> line 16.

Da bin ich völlig überfragt  :-\
zeile 58 ist:my $sth = $dbh->prepare( $stmt );

Anbei poste ich mal das komplette Modul in den Anhang.
Fhem stürzt jedesmal ab, wenn ich die Config speichere mit: define <name> KLW KLIMALOGGPRO

Vielleicht hat ja jemand von euch Rat.  ;D

Grüße

pejonp

#1
Hallo,

mit DBlog und MySQL können die Daten auf einem anderen Server (NAS,Raspberry..) ausgelagert werden. Bei mir loggen ein Bannana Pi und ein RaspBerry Pi auf einen Odroid auf dem die MySQL-Db läuft. Auf diese Daten kann man dann auch für die Diagrammerstellung zugreifen.

Jörg

PS: Hast du einmal Versucht mit dem HTTPMod Modul auf die Daten zuzugreifen ?
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Syrex-o

Danke erstmal dafür.
Mit httpmod kann ich die Daten abholen jedoch habe ich ein Problem mit dem Batterie Status
Wie ich das regex formulieren soll.
Der Batteriestatus wird zwar angezeigt aber nicht in das reading geschrieben. Daher wollte ich es mit dem Modul einfacher machen.

Grüße

Gesendet von meinem HTC One M8 mit Tapatalk


pejonp

Hallo,
Kannst du vielleicht mal die Ausgabe Posten. Ich schaue es mir mal an
Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Syrex-o

@pejonp
Welche Ausgabe meinst du?
Im ersten Post habe ich den Auszug aus dem Log mit gepostet.

Grüße

Tedious

mal als Frage in den Raum geworfen - wenn du schon die DB auslagerst, wieso stellst Du im Zuge dessen nicht gleich auf MySQL um?
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Syrex-o

Zitatmal als Frage in den Raum geworfen - wenn du schon die DB auslagerst, wieso stellst Du im Zuge dessen nicht gleich auf MySQL um?

In Wahrheit lagere ich ja eigentlich meine Datenbank gar nicht aus. Der Wetterserver "WEEWX" läuft einfach auf einem anderen Pi und erstellt da auch die Datenbank. Ich will einfach nur an diese Datenbank rankommen und sie auswerten, nicht über HTTPMOD.

Grüße

P.S. Die Datenbank wird als ".sdb" gespeichert.

pejonp

Hallo,
Vielleicht reden wir aneinander vorbei. Möchtest du die daten einer Msql-dB auf einem anderen Server abfragen ? Oder möchtest du die html-Wetterdaten auslesen und eine SQL dB schreiben.
HTML-Daten kann man sehr gut mit dem httpmod-Modul aufbereiten und per dblog in eine DB schreiben .
Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Syrex-o

ZitatVielleicht reden wir aneinander vorbei. Möchtest du die daten einer Msql-dB auf einem anderen Server abfragen ? Oder möchtest du die html-Wetterdaten auslesen und eine SQL dB schreiben.

Ich möchte die Daten gerne von einer Datenbank abholen. Sie werden auf dem anderen Pi in einer sdb bespeichert und ich würde sie gern per Modul abfragen und in ein Reading schreiben.
Prinzipiell spricht nichts gegen HTTPMOD aber ich bekomme den Batteriestatus nicht übermittelt und wollte mich auch mal an dem Modul versuchen.
Im Moment ist es ja nur ein walkaround und ich würde lieber ein Modul benutzen.

Grüße

pejonp

Hi,
Bei Sqlite kannst du leider nicht extern zugreifen, dafür benötigst du eine MySQL oder postgress DB.
Pejonp
LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Syrex-o

ZitatBei Sqlite kannst du leider nicht extern zugreifen, dafür benötigst du eine MySQL oder postgress DB

Ich hab mal das Modul umgestellt auf Mysql. Der Treiber sollte ja auch mit .sdb umgehen können.
Kann es leider gerade noch nicht testen. Wäre das denn richtig vom Prinzip:sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "mysql";
my $host = "http://192.168.178.48/var/www/html/weewx/kl/";
my $database = "weewx-kl.sdb";
my $username = "";
my $password = "";
my $dsn = "DBI:$driver:database=$database";
my $dbh = DBI->connect("$dsn;host=$host", "$username", "$password", { RaiseError => 1 }) or die $DBI::errstr;


Grüße

pejonp

Hallo Syrex-o,

ich denke am einfachsten ist es, du stellst die DB auf MySQL um. Für WEEWX gibt es auch eine Anleitung dazu (http://www.weewx.com/docs/usersguide.htm#configuring_mysql).
Dann kommst du auch von anderen Servern/Anwendungen über SQL-Abfragen an die Daten.
Als Anlage mal so ein Script um eine SQL-DB abzufragen. Zum testen frage ich die Log-Datenbank von FHEM ab (DBlog.pm https://wiki.fhem.de/wiki/DbLog )
Ich hoffe ich habe dich jetzt nicht ganz durcheinander gebracht.

pejonp

LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

Syrex-o

Hallo pejonp,

vielen Dank für deine Hilfe. Ich werde mir die Doku mal angucken und dann bald versuchen alles umzustellen um das möglich zu machen.
Werde dann berichten was sich ergeben hat und gegebenenfalls ob noch etwas unklar ist.

Grüße