Hauptmenü

Bodenfeuchte berechnen

Begonnen von Haus-Andi, 12 April 2020, 15:31:02

Vorheriges Thema - Nächstes Thema

Haus-Andi

Hallo zusammen

Ich habe aus den vielen Einträgen im Forum, Wicki, etc.. schlicht den Überblick verloren und stehe etwas neben der Spur. Ich möchte mit 2 Bodenfeuchtesensoren VH400 (Vegetronix) an 2 verschiedenen Orten im Garten den Bewässerungsbedarf ermitteln.

Ich habe mir mit einem Arduino Uno R3 und einem WZ5100 Shield ein MQTT-Client gebaut, der mir die gemessene Spannung in mV via MQTT ins fhem übermittelt. Im fhem ziehe ich nun mittels "readingsProxy" den Wert aus dem MQTT Device in ein eigenes Device.

define SolarSensoren MQTT_DEVICE
setuuid SolarSensoren 5e91dc89-f33f-fbd2-07ee-952b2e09dccb7155
attr SolarSensoren userattr subscribeReading_bodenfeuchte1 subscribeReading_bodenfeuchte2
attr SolarSensoren DbLogExclude .*
attr SolarSensoren IODev Mosquitto
attr SolarSensoren room 99_MQTT
attr SolarSensoren subscribeReading_bodenfeuchte1 /solar/bodenfeuchte1
attr SolarSensoren subscribeReading_bodenfeuchte2 /solar/bodenfeuchte2

define BF_Tomaten readingsProxy SolarSensoren:bodenfeuchte2
setuuid BF_Tomaten 5e92ff20-f33f-fbd2-ac99-4fda5bfe2d7c8807
attr BF_Tomaten DbLogExclude .*
attr BF_Tomaten room 20_Garten
attr BF_Tomaten userReadings BF_Tomate {sprintf("%.3f",(ReadingsVal("BF_Tomaten","state",0))/1000)." "}


Soweit so gut, nun möchte ich aber mit der Formel aus dem Wicki:
https://wiki.fhem.de/wiki/1-Wire_Feuchtemessung#Volumetrische_Feuchte_des_Bodens

das ganze zu einem vergleichbaren Wert bringen. Wie bekomme ich diese Formel nun in das userReadings?.

Leider bin ich als Handwerker eben nicht so geschickt bei Software.

PS: ich weiss man könnte das ganze ja auch direkt im Arduino berechnen, dazu habe ich einfach 2 Probleme:
1. weiss ich auch da nicht, wie ich die Formel implementieren soll und
2. muss mein Arduino noch etliche andere Dinge machen, so das ich bedenken habe, das ich alles drauf kriege.




Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

amenomade

Ein 2. userReadings mit der formel definieren.

attr BF_Tomaten userReadings BF_Tomate {sprintf("%.3f",(ReadingsVal("BF_Tomaten","state",0))/1000)." "}, BF_irgendwas { my $v = ReadingsVal("BF_Tomaten", "BF_Tomate",0);; return (11.6552 * $v**4 + 7.10835 * $v**2 - 0.569557) / ($v**2 + 1) }
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Haus-Andi

Hallo amenomade

Vielen Dank für deine schnelle Hilfe. So funktioniert es, es gibt mindestens ein Wert aus der sich mit mehr Wasser vergrössert und beim rausziehen aus der Erde gegen 0 geht.

Ich merke, dass ich das mit der Formelbildung und dem "my $v" immer noch nicht begriffen habe. Ich merke wieder einmal, dass ich eben doch Handwerker bin und das wohl auch bleiben werde. Solche Abstrakten Formeln begreife ich eher selten, da bin ich sehr dankbar, das es Leute gibt, die das können.

Nochmals vielen Dank und noch einen schönen Montag

Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire