Wasserstandsmelder Script Frage
Verfasst: 04.02.2020, 13:39
Hallo Gemeinde,
ich habe folgendes vor. Ich möchte den Wasserstand meiner Zisterne mit folgenden Geräten Messen und über den von Eugen umgebauten Temperatursensor ( viewtopic.php?f=31&t=15192 ) an meine CCU weiterleiten.
Hardware : zur Messung wollte ich einen Drucksensor und einen Messwandler verwenden. Der Grund warum ich nicht den kapazitiven Messer von Homatic verwende ist, da ich nur eine Wassertiefe von 1 m max habe (IBC Tank) ist dieser in den unteren Werten sehr ungenau. Ich habe 2 IBC Behälter, die durch einen Ausgleichsschlauch verbunden sind. Also sollte , wenn ich mich nicht täusche, es ausreichen, wenn ich den Sensor in den Tank auf den Boden lege. Da Eugen einen Temperatursensor zum Analog Eingang umgewandelt hat, der den Spannungsbereich 0-10 V (oder andere) verarbeitet und der sensor nur eine Stromstärke ausgibt, möchte ich diesen Messwandler verwenden.
Frage : seht ihr hier irgend ein Problem ?
Script :
Eugen liefert ja dankenswerter Weise ein Script mit dazu. Nun muss ich eigentlich nur die Variable, welche in Volt angegeben ist in Liter umrechnen.
Und genau hier ist mein Problem. Leider bin ich nicht der grosse Scriptschreiber, aber ich versuche es.
=============================================================================================
Eugens Script :
!Berechnung der Systemvariablen temp_input
!aus analoger Eingangsspannung am Funk-Temperatur-Sensor
!Eingangsspannung 0 bis +10V mit Re = (1,5+1)kOhm, Rv = (3,9+4,7)kOhm
!real m = -0.15;
!real n = 11.56;
!Eingangsspannung 0 bis +3V mit Re = (6,8+1)kOhm, Rv = (1,8+0,82)kOhm
real m = -0.05;
real n = 3.49;
!Eingangsspannung 0 bis +5V mit Re = (3,3+0,22)kOhm, Rv = (3,3+1)kOhm
!real m = -0.08;
!real n = 5.84;
!Eingangsspannung -5 bis +5V mit Re = (4,7+3,9)kOhm, Rv = (15)kOhm
!real m = -0.16;
!real n = 6.38;
!Eingangsspannung -10V bis +10V mit Re = (5,6+1)kOhm, Rv = (15+15)kOhm
!real m = -0.31;
!real n = 13.19;
real T = dom.GetObject("BidCos-RF.IEQ0405570:1.TEMPERATURE").Value();
real temp_inp = n+ T * m;
dom.GetObject("temp_input").State(temp_inp);
=======================================================================================================
Wenn ich nun eine weitere Variable erstelle (Tempinvolt Typ : Zahl / Einheit Liter ) und diese dann mit einem Faktor den ich im Dreisatz ermittle aus den gemessenen Werten multipliziere, sollte doch der Wert in Liter verwendbar sein, oder ?
Geht daas so ?
=========================================================
real T = dom.GetObject("BidCos-RF.IEQ0405570:1.TEMPERATURE").Value();
real temp_inp = n+ T * m;
dom.GetObject("temp_input").State(temp_inp);
var Tempinvolt = dom.GetObject("Tempinvolt");
real Tempinvolt = temp_input * 0,32 ;
dom.GetObject("Ausgabe_Liter")
=====================================================
Für mich zum Verständnis :
var Tempinvolt = dom.GetObject("Tempinvolt"); = die Variable Tempinvolt wird eingelesen.
real Tempinvolt = temp_input * 0,32 ; = Eugens VAriable wird umgerechnet.(Faktor ist noch fiktiv)
dom.GetObject("Ausgabe_Liter") = der berechnete Wert wird in die Variable Ausgabe_Liter geschrieben, die ich dann zur Anzeige verwenden kann.
Ich bin für jede Kritik und Anregung dankbar.
ich habe folgendes vor. Ich möchte den Wasserstand meiner Zisterne mit folgenden Geräten Messen und über den von Eugen umgebauten Temperatursensor ( viewtopic.php?f=31&t=15192 ) an meine CCU weiterleiten.
Hardware : zur Messung wollte ich einen Drucksensor und einen Messwandler verwenden. Der Grund warum ich nicht den kapazitiven Messer von Homatic verwende ist, da ich nur eine Wassertiefe von 1 m max habe (IBC Tank) ist dieser in den unteren Werten sehr ungenau. Ich habe 2 IBC Behälter, die durch einen Ausgleichsschlauch verbunden sind. Also sollte , wenn ich mich nicht täusche, es ausreichen, wenn ich den Sensor in den Tank auf den Boden lege. Da Eugen einen Temperatursensor zum Analog Eingang umgewandelt hat, der den Spannungsbereich 0-10 V (oder andere) verarbeitet und der sensor nur eine Stromstärke ausgibt, möchte ich diesen Messwandler verwenden.
Frage : seht ihr hier irgend ein Problem ?
Script :
Eugen liefert ja dankenswerter Weise ein Script mit dazu. Nun muss ich eigentlich nur die Variable, welche in Volt angegeben ist in Liter umrechnen.
Und genau hier ist mein Problem. Leider bin ich nicht der grosse Scriptschreiber, aber ich versuche es.
=============================================================================================
Eugens Script :
!Berechnung der Systemvariablen temp_input
!aus analoger Eingangsspannung am Funk-Temperatur-Sensor
!Eingangsspannung 0 bis +10V mit Re = (1,5+1)kOhm, Rv = (3,9+4,7)kOhm
!real m = -0.15;
!real n = 11.56;
!Eingangsspannung 0 bis +3V mit Re = (6,8+1)kOhm, Rv = (1,8+0,82)kOhm
real m = -0.05;
real n = 3.49;
!Eingangsspannung 0 bis +5V mit Re = (3,3+0,22)kOhm, Rv = (3,3+1)kOhm
!real m = -0.08;
!real n = 5.84;
!Eingangsspannung -5 bis +5V mit Re = (4,7+3,9)kOhm, Rv = (15)kOhm
!real m = -0.16;
!real n = 6.38;
!Eingangsspannung -10V bis +10V mit Re = (5,6+1)kOhm, Rv = (15+15)kOhm
!real m = -0.31;
!real n = 13.19;
real T = dom.GetObject("BidCos-RF.IEQ0405570:1.TEMPERATURE").Value();
real temp_inp = n+ T * m;
dom.GetObject("temp_input").State(temp_inp);
=======================================================================================================
Wenn ich nun eine weitere Variable erstelle (Tempinvolt Typ : Zahl / Einheit Liter ) und diese dann mit einem Faktor den ich im Dreisatz ermittle aus den gemessenen Werten multipliziere, sollte doch der Wert in Liter verwendbar sein, oder ?
Geht daas so ?
=========================================================
real T = dom.GetObject("BidCos-RF.IEQ0405570:1.TEMPERATURE").Value();
real temp_inp = n+ T * m;
dom.GetObject("temp_input").State(temp_inp);
var Tempinvolt = dom.GetObject("Tempinvolt");
real Tempinvolt = temp_input * 0,32 ;
dom.GetObject("Ausgabe_Liter")
=====================================================
Für mich zum Verständnis :
var Tempinvolt = dom.GetObject("Tempinvolt"); = die Variable Tempinvolt wird eingelesen.
real Tempinvolt = temp_input * 0,32 ; = Eugens VAriable wird umgerechnet.(Faktor ist noch fiktiv)
dom.GetObject("Ausgabe_Liter") = der berechnete Wert wird in die Variable Ausgabe_Liter geschrieben, die ich dann zur Anzeige verwenden kann.
Ich bin für jede Kritik und Anregung dankbar.