Hallo zusammen,
ich suche nach einer Möglichkeit Werte, die ich mittels python Skript aus einer MySQL-Datenbank ausgelesen und z.T. Weiterverarbeitet habe an smarthome zu übergeben (Zum Verständnis: es handelt sich um Stromaufnahme und Wärmeerzeugung). Diese Werte sollten alle 30 Minuten aktualisiert werden (Kürzeres Intervall möglich, In dem Bereich aber wenig sinnvoll).
Ich denke ich muss eine items.conf anlegen die in etwa so aussehen wird:
Wie kann ich aber die Werte aus meinem Auswerteskript nun an die Items binden und aktualisieren? Kann ich das mit einer Logic machen, und wie muss diese aufgebaut sein. Hier noch das Skript zum Auslesen der Datenbank.
Vielen Dank für die Hilfe!
Stefan
ich suche nach einer Möglichkeit Werte, die ich mittels python Skript aus einer MySQL-Datenbank ausgelesen und z.T. Weiterverarbeitet habe an smarthome zu übergeben (Zum Verständnis: es handelt sich um Stromaufnahme und Wärmeerzeugung). Diese Werte sollten alle 30 Minuten aktualisiert werden (Kürzeres Intervall möglich, In dem Bereich aber wenig sinnvoll).
Ich denke ich muss eine items.conf anlegen die in etwa so aussehen wird:
Code:
[Zaehlerstaende]
[[wphtakt]]
name = aktueller Zählerstand WP HT
type = num
[[wpntakt]]
name = aktueller Zählerstand WP NT
type = num
[[wphtbw]]
name = Zählerstand WP HT vor einer Woche
type = num
.
.
.
Code:
#! /usr/bin/python
from datetime import datetime
from time import *
import time
import MySQLdb
#channel id = 3 ist Waermepumpe HT id = 4 Waermepumpe NT
#Variablendefinition
dt = datetime.now()
lt = localtime()
year, month, day = lt[0:3]
dtyearbegin = datetime(year, 1, 1)
utakt = time.mktime(dt.timetuple()) * 1000
utminusweek = utakt - (7 * 86400000)
utminusmonth = utakt - (30 * 86400000)
utminusyear = utakt - (365 * 86400000)
utyearbegin = time.mktime(dtyearbegin.timetuple()) * 1000
UTYearBegin = str(utyearbegin)
UTminusWeek = str(utminusweek)
UTminusMonth = str(utminusmonth)
UTminusYear = str(utminusyear)
UTakt = str(utakt)
print("UTminusYear:" , UTminusYear)
print("UTYearBegin:" , UTYearBegin)
connection = MySQLdb.connect(
host="127.0.0.1",
db="database",
user="user", passwd="passwd"
)
cursor = connection.cursor()
#Stromzaehler WP zu den Zeitpunkten jetzt, vor einer Woche, Vor einem Monat, Jahresbeginn auslesen
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTminusMonth + """ and channel_id = 4 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPNTutminusmonth = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTminusWeek + """ and channel_id = 4 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPNTutminusweek = value
cursor.execute("""SELECT * FROM `data` where `timestamp` < """ + UTakt + """ and channel_id = 4 order by `timestamp` desc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPNTutakt = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTminusYear + """ and channel_id = 4 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPNTutminusyear = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTYearBegin + """ and channel_id = 4 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPNTutyearbegin = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTminusMonth + """ and channel_id = 3 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPHTutminusmonth = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTminusWeek + """ and channel_id = 3 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPHTutminusweek = value
cursor.execute("""SELECT * FROM `data` where `timestamp` < """ + UTakt + """ and channel_id = 3 order by `timestamp` desc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPHTutakt = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTminusYear + """ and channel_id = 3 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPHTutminusyear = value
cursor.execute("""SELECT * FROM `data` where `timestamp` > """ + UTYearBegin + """ and channel_id = 3 order by `timestamp` asc limit 1""")
ergebnis = cursor.fetchone()
id, channel_id, timestamp, value = ergebnis[0:4]
WPHTutyearbegin = value
Vielen Dank für die Hilfe!
Stefan


Kommentar