Hallo!
Wie kann ich in FHEM aus den Readings eines (Kombi-)Sensors den Luftdruck von Ortshöhe auf die normierte Seehöhe umrechnen und wieder im Reading überschreibend speichern? Ziel soll dann ein DbLog / FileLog sein.
In den Readings des Sensors gibt es "pressure" und im STATE ein "P: xxxx".
Hier bin ich totaler Anfänger in FHEM und weiß keinen Rat.
Danke.
Gruß,
--connaisseur
1. Formel finden.
2. Formel in perl formulieren.
3. in einem userReading abbilden.
4. Das userReading loggen
Hallo connaisseur,
ist schon lange her auch für meinen 1Wire Multisensor mit Hilfe meiner Tochter
daher nur Brockenhaft schau mal
https://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel
oder
p(h_0) = p(h_1)*exp( (h_1 - h_0)/h_s) mit h_s = Skalenhöhe (liegt bei
ca. 7,8 bzw. 8,4 km im erdnahen Bereich)
(ist identisch zu p(h_1) = p(h_0)*exp( - (h_1 - h_0)/hs) )
Höhe hier in km mit h_0 untere Höhe (z.B. Meereshöhe = 0km)
und h_1 die Höhe vom Ort in km
Beispiel: 1019×e^(0,0586÷8,4) = 1026,133591812
Zu guter Letzt mein userReading für FHEM mit Luftdruck am Ende
Der 1 Wire Multisensor ist von tm3d.de und gibt auch Formel und freundliche Unterstützung mit.
Temperatur:A.* {(ReadingsVal("Wettersensor","A",0)-2.5674)*128 },
Feuchte:B.* { ReadingsVal("Wettersensor","B",0)*128.55}, Luftdruck:D.* {
(ReadingsVal("Wettersensor","D",0)*400)*1.007000581}
Gruß
Hans-Jürgen
Zitat von: herrmannj am 12 Dezember 2017, 16:54:27
1. Formel finden.
2. Formel in perl formulieren.
3. in einem userReading abbilden.
4. Das userReading loggen
Das war eine gute Arbeitsanleitung.
Gelöst wurde es durch DuckDuckGo:
http://www.kriwanek.de/index.php/de/arduino/sensoren/431-luftdrucksensor-bmp085 (http://www.kriwanek.de/index.php/de/arduino/sensoren/431-luftdrucksensor-bmp085)
https://www.arduinoforum.de/arduino-Thread-Luftdruck-Formel (https://www.arduinoforum.de/arduino-Thread-Luftdruck-Formel)
Höhe für meinen Standort sind 539 m.
Damit komme ich dann mit ein bißchen Rechnen zu diesem userReadings für meinen Sensor:
attr OS_Arbeitszimmer userReadings pressure_sealevel:pressure.* none { floor(ReadingsVal("OS_Arbeitszimmer","pressure",0)/.93476);; }
Hilfe zur Selbsthilfe, wie ich es mag.
Danke!
Ich würde gern dieses alte Thema nochmals aufwären wollen und folgendes zur Diskussion stellen...
Ich habe den Code aus dem letzen Post mal angepasst und hoffe das ist so richtig:
attr Luftdaten userReadings pressure_sealevel:pressure.* none { floor(ReadingsVal("Luftdaten","pressure",0)/.983);; },
Was mache ich nun damit? Ich habe ein Attribut erstellt aber nichts passiert. Es soll in der DB geloggt werden um es in Grafana zu visualisieren. Ist da noch mehr zu tun?
VG Patrick