Hallo Zusammen,
für was so ein Brückentag doch gut ist ;-) schon oft hatte ich damit Angefangen nach Lösungsansätzen zu schauen, welche mir die absolute Luftfeuchte berechnen, so das ich in einem weiteren Schritt, den Keller belüften kann.
Wenn ich keinen Denkfehler drin hab, dann müsste ich heute das Thema gelöst bekommen haben und möchte a) das Ergebnis hier gerne auch anderen zur Verfügung stellen sowie b) mir von klugen Köpfen sagen lassen, das es richtig ist oder ich doch noch einen groben Schnitzer gemacht habe.
An dieser Stelle auch vielen herzlichen Dank an Martin Kompf, ohne dessen Hilfe (https://www.kompf.de/weather/vent.html) ich mit Sicherheit nicht so einfach zum Ziel gekommen wäre, da Python doch in vielerlei Hinsicht noch eine Fremdsprache für mich ist.
Aktuell berechne ich für Keller, Schlafzimmer und Küche, sowie für Draußen die absolute Luftfeuchte in je einer eigenen Logik und visualisiere mir dies dann in einem Grafana Dashboard.
Anbei mal ein Code Beispiel:
Wie man sieht, hole ich mir die Werte aus einer SQL Datenbank, welche von SmartHome mit dem DatabasePlugin befüllt wird. Eigentlich hätte ich dies gerne anders gemacht, da die aktuellen Werte ja in einem SmartHomeNG Item liegen. Aber das wollte bei mir nicht funktionieren. Wenn ich statt der Datenbankabfrage die Variablen mit den Items bestücken wollte, so wurde der Wert nicht berechnet, scheint wohl am Format zu liegen, wie diese die Daten vom ITEM bekommen:
Fehler aus dem Log dazu:
Vielleicht hat ja jemand einen Tipp für mich, ohne das SQL Statement wäre der Code an sich schon schöner.
Und in Grafana sieht dies dann nun so aus:
Grafana.PNG
So dies mal in aller kürze, würde mich über eure Rückmeldungen freuen.
Viele Grüße
Jannis
für was so ein Brückentag doch gut ist ;-) schon oft hatte ich damit Angefangen nach Lösungsansätzen zu schauen, welche mir die absolute Luftfeuchte berechnen, so das ich in einem weiteren Schritt, den Keller belüften kann.
Wenn ich keinen Denkfehler drin hab, dann müsste ich heute das Thema gelöst bekommen haben und möchte a) das Ergebnis hier gerne auch anderen zur Verfügung stellen sowie b) mir von klugen Köpfen sagen lassen, das es richtig ist oder ich doch noch einen groben Schnitzer gemacht habe.
An dieser Stelle auch vielen herzlichen Dank an Martin Kompf, ohne dessen Hilfe (https://www.kompf.de/weather/vent.html) ich mit Sicherheit nicht so einfach zum Ziel gekommen wäre, da Python doch in vielerlei Hinsicht noch eine Fremdsprache für mich ist.
Aktuell berechne ich für Keller, Schlafzimmer und Küche, sowie für Draußen die absolute Luftfeuchte in je einer eigenen Logik und visualisiere mir dies dann in einem Grafana Dashboard.
Anbei mal ein Code Beispiel:
Code:
import os import math import time import mysql.connector # Read last temperature and humidity form MariaDB # connect to MariaDB mySQL database db = mysql.connector.connect(host='XXX.XXX.XXX.XXX', port='XXXX', user='DATENBANKUSER', password='GEHEIMESKENNWORT', db='DATENBANK',) #temperature sleeping_room cursor = db.cursor() cursor.execute("SELECT val_num, time FROM item WHERE id LIKE'6'") for entry in cursor.fetchall(): t, tz, =(entry[0], entry[1]) #humidity sleeping_room cursor.execute("SELECT val_num, time FROM item WHERE id LIKE'7'") for entry in cursor.fetchall(): rh, rhz, =(entry[0], entry[1]) # Compute saturated water vapor pressure in hPa # Param t - temperature in °C a = 6.112 b = 17.67 c = 243.5 svp = a * math.exp((b*t)/(c+t)) # Compute actual water vapor pressure in hPa # Param rh - relative humidity in % # Param t - temperature in °C vp = rh/100 * svp # Compute the absolute humidity in g/m³ # Param rh - relative humidity in % # Param t - temperature in °C mw = 18.016 # kg/kmol (Molekulargewicht des Wasserdampfes) rs = 8314.3 # J/(kmol*K) (universelle Gaskonstante) ah = 10**5 * mw/rs * vp/(t + 273.15) #transfer value AH to an SmartHomeNG Item sh.Sensoren.Aussen.Absolute_Luftfeuchte(ah)
Code:
t = sh.Sensoren.Aussen.Nord.Temperatur rh = sh.Sensoren.Aussen.Nord.Luftfeuchte
Code:
2019-05-31 13:19:29 CEST ERROR scheduler logics.Absolute_Luftfeuchte_Aussen Logic: logics.Absolute_Luftfeuchte_Aussen, File: /usr/local/smarthome/logics/abs_luftfeuchte_aussen.py, Line: 15, Method: <module>, Exception: unsupported operand type(s) for *: 'float' and 'Item' -- (scheduler.py:_task:507) Traceback (most recent call last): File "/usr/local/smarthome/lib/scheduler.py", line 493, in _task exec(obj.bytecode) File "/usr/local/smarthome/logics/abs_luftfeuchte_aussen.py", line 15, in <module> svp = a * math.exp((b*t)/(c+t)) TypeError: unsupported operand type(s) for *: 'float' and 'Item'
Und in Grafana sieht dies dann nun so aus:
Grafana.PNG
So dies mal in aller kürze, würde mich über eure Rückmeldungen freuen.
Viele Grüße
Jannis
Kommentar