Hauptmenü

Daten aus MySQL lesen

Begonnen von budda85, 04 November 2015, 07:52:24

Vorheriges Thema - Nächstes Thema

budda85

Guten Morgen zusammen,

gibt es die Möglichkeit mit FHEM Daten aus einer MySQL Datenbank zu lesen?
Ich habe einen Raspberry mit dem Airpi Modul als Wetterstation. Diese Daten werden in eine MySQL Datenbank geschrieben.
Nun würde ich die Daten gerne in FHEM verwenden, nur weiß ich nicht ob und wie man das machen könnte.

Mit DbLog schreibe ich bereits mit Fhem meine ausgelesen Werte der PV-Anlage in die Datenbank, und kann damit auch Plots erzeugen.
Aber wenn ich das richtig verstehe ist bei DbLog die Struktur ja zwingend vorgeschrieben, sodass das nicht passen wird mit meiner jetzigen Datenbank.

Gruß
Jan

Wzut

Die Frage taucht hier in diversen Unterforen immer wieder mal auf :)
Kurze Antwort : Nein es gibt kein fhem Modul um Werte aus "fremden" DBs direkt einzulesen.
Längere Antwort : Ich hatte das Problem vor einiger Zeit auch einmal. Gelöst hatte ich es mit einem externen Programm (Sprache egal) das zyklisch (cron Job) die Werte aus der DB gelesen und in einen fhem Dummy geschrieben hat. 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

budda85

Ja das reicht mir schon mal. Dann sehe ich mir das mal an.
Könntest du mir noch ein Stichwort sagen oder Tip geben wie ich außerhalb von Fhem was in einen Dummy schreiben kann?

Danke

Wzut

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

budda85

Jetzt bräuchte ich noch einmal kurz Hilfe.
Ich habe mir ein Phyton-Scribt zusammen gestellt was mir jetzt meine Datendank ausließt.
Aber ich bekomme es nicht hin, die Werte in die Readings eines Dummys zu schreiben

#!/usr/bin/python2.7.3

import mysql.connector
from mysql.connector import errorcode

# Zugangsdaten für MySQL
config = {
  'user': 'user',
  'password': 'pass',
  'host': '192.168.0.25',
  'database': 'wetter',
  'raise_on_warnings': True,
}

# Verbindung aufbauen
try:
  connection = mysql.connector.connect(**config)
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)

#Datensätze auslesen
cursor = connection.cursor()
#cursor.execute("SELECT * from obs")
cursor.execute("SELECT * FROM obs ORDER BY id DESC LIMIT 0,1")
result = cursor.fetchall()
cursor.close()
#print (result)

for data in result:
    id = str(data[0])
    station = data[1].decode(encoding='UTF-8')
    date = str(data[2])
    tempDHT = str(data[3])
    pres = str(data[4])
    humi = str(data[5])
    light = str(data[6])
    nitro = str(data[7])
    carbon = str(data[8])
    vol = str(data[9])
    wind = str(data[10])
    tmpBMP = str(data[11])
    print ("ID: " + id)
    print ("Station: " + station)
    print ("Date: " + date)
    print ("Temperatur: " + tempDHT)
    print ("Luftdruck: " + pres)
    print ("rel Feuchtigkeit: " + humi)
    print ("Helligkeit: " + light)
    print ("Stickstoffdioxid: " + nitro)
    print ("Koghlenstoffmonoxid: " + carbon)
    print ("Lautstärke: " + vol)
    print ("Windrichtung: " + wind)
connection.close()


Ich habe zum Beispiel
/opt/fhem/fhem.pl 7072 "setreading Wetterstation tempDHT $tempDHT"
ausprobiert aber das geht nicht. Der Dummy Wetterstation ist natürlich angelegt.
Hat vielleicht jemand einen Tip?

Gerd

Also ich löse das so das ich mir ein PHP gemacht habe das ich mit HTTPMOD abfrage.

budda85

Habe es hinbekommen.


import os, sys
os.system('perl /opt/fhem/fhem.pl 7072 "setreading Wetterstation ID '+id+' "')


das hat funktioniert.

KOAL

Zitat von: budda85 am 06 November 2015, 16:25:29
Habe es hinbekommen.


import os, sys
os.system('perl /opt/fhem/fhem.pl 7072 "setreading Wetterstation ID '+id+' "')


das hat funktioniert.



Auch wenn das Thema schon alt ist, das funktioniert 1A!
DANKE!!

LG
KOAL
1X DEBAIN 11 ESXI VM, Openvpn-Server, FHEM, DHCP, HM-LAN W, USB-Enocean, Smartvisu V3.X
1X UBUNU 20.X LTS ESXI VM, AUTO-SERVER, Openvpn-Backup Server
1X UBUNU 20.X LTS ESXI VM, MAILSERVER, CLOUD
1X Lockerstor 4, NAS + APC CS650
1X WIN-10 ESXI VM, BLUEIRIS CAM Server

amenomade

Wäre performanter mit nc, oder direkt mit pytons telnet, statt fhem.pl aufzurufen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus