FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: budda85 am 04 November 2015, 07:52:24

Titel: Daten aus MySQL lesen
Beitrag von: budda85 am 04 November 2015, 07:52:24
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
Titel: Antw:Daten aus MySQL lesen
Beitrag von: Wzut am 04 November 2015, 09:41:27
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. 
Titel: Antw:Daten aus MySQL lesen
Beitrag von: budda85 am 04 November 2015, 10:52:13
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
Titel: Antw:Daten aus MySQL lesen
Beitrag von: Wzut am 04 November 2015, 11:25:31
Bsp :
http://forum.fhem.de/index.php/topic,35260.msg276672.html#msg276672
Titel: Antw:Daten aus MySQL lesen
Beitrag von: budda85 am 06 November 2015, 14:34:24
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?
Titel: Antw:Daten aus MySQL lesen
Beitrag von: Gerd am 06 November 2015, 15:25:16
Also ich löse das so das ich mir ein PHP gemacht habe das ich mit HTTPMOD abfrage.
Titel: Antw:Daten aus MySQL lesen
Beitrag 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.
Titel: Antw:Daten aus MySQL lesen
Beitrag von: KOAL am 29 November 2019, 00:44:10
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
Titel: Antw:Daten aus MySQL lesen
Beitrag von: amenomade am 29 November 2019, 00:54:24
Wäre performanter mit nc, oder direkt mit pytons telnet, statt fhem.pl aufzurufen.