Wasserstandsmelder Script Frage

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Wasserstandsmelder Script Frage

Beitrag von Moonrider » 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.
Unbenannt.JPG
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.
Zuletzt geändert von Roland M. am 12.02.2020, 12:29, insgesamt 1-mal geändert.
Grund: Thema verschoben
So long

Marcus

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Wasserstandsmelder Script Frage

Beitrag von Bratmaxe » 04.02.2020, 14:14

Hallo Marcus,

so wie es aussieht bist du nicht abgeneigt etwas zu basteln, daher schau dir doch mal diese Projekte hier an:
https://github.com/TomMajor/SmartHome/t ... B-SEN-LJet
https://github.com/jp112sdl/HB-UNI-Sen-DIST-US
https://github.com/jp112sdl/HB-UNI-Sen-LEV-US

Was das Skript angeht:
wie viel Liter können denn im Behälter drin sein.
Eine Anzeige von 0-100 (z.B. %) dürfte der TEMPERATURE Datenpunkt sicher schaffen.
Aber ob der auch Werte von 1000 oder sogar 10000 anzeigen kann, das könnte zu Problemen führen.

Wenn du im Dreisatz rechnest, dann gehst du davon aus, das der Sensor Linear ansteigt, das weiß ich leider nicht, lässt sich aber durch Testen sicher ausfinden.
Gruß Carsten

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wasserstandsmelder Script Frage

Beitrag von Moonrider » 04.02.2020, 14:50

Stimmt, ich bin dvon ausgegangen, dass es linear ansteigt. Muss ich dann ausprobieren. Ich kann ja auch eine Tabelle anlegen, aber dann müsste ich diese irgendwie in das script einbinden. Max. passen in die beiden IBC Tanks 2000 Liter.
So long

Marcus

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wasserstandsmelder Script Frage

Beitrag von Moonrider » 04.02.2020, 15:06

Danke, diese Projekte kenn ich. Der Leveljet ist zu teuer, aber sicher gut. Die anderen Versionen würden mich reizen, wenn ich wüsste, wie man das mit den Arduinos macht. Vom Aufbau ist es klar, aber von der Programmierung hab ich keinen Dunst und leider nicht die Zeit mich einzuarbeiten.
Wenn du jemanden weißt der das macht, gerne.
So long

Marcus

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Wasserstandsmelder Script Frage

Beitrag von Bratmaxe » 05.02.2020, 08:00

Das Beschreiben vom ATMEGA328P mit Arduino IDE ist wirklich nicht schwer und auch schnell erledigt. Aber wie viel Zeit du hast, weißt du sicher besser :wink:
In einem Forum habe ich gesehen, das dein Sensor wohl lineare Werte ausgeben soll, demnach sollte das mit dem Dreisatz klappen.

zu deine Ursprünglichen Fragen:
1.

Code: Alles auswählen

var Tempinvolt = dom.GetObject("Tempinvolt"); = die Variable Tempinvolt wird eingelesen. 
Ja und Nein. du erhälst zwar so die Variable (evtl. aber auch ein Programm oder ein anderes Objekt, wenn es denselben Namen hat), aber nicht den Wert der Variable dafür musst du dann noch "Tempinvolt.Value()" verwenden. Oder direkt so:

Code: Alles auswählen

var Tempinvolt = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Tempinvolt").Value();
2.

Code: Alles auswählen

real Tempinvolt = temp_input * 0,32 ; = Eugens VAriable wird umgerechnet.(Faktor ist noch fiktiv)
Ja hier wird gerechnet, wobei ich nicht weiss, woher die Variable "temp_input" kommt???
3.

Code: Alles auswählen

dom.GetObject("Ausgabe_Liter") = der berechnete Wert wird in die Variable Ausgabe_Liter geschrieben, die ich dann zur Anzeige verwenden kann.
nein hier holst du dir das Objekt/Ausgabe_Liter, das kann die gewünschte Variable sein, aber auch ein Programm oder was anderes.
Um die Variable zu schreiben musst du folgendes verwenden:

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Ausgabe_Liter").State(Tempinvolt);

Edit: Auf der Seite Asksinpp.de ist alles genau beschrieben:
https://asksinpp.de/Grundlagen/02_software.html
Gruß Carsten

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wasserstandsmelder Script Frage

Beitrag von Moonrider » 05.02.2020, 08:29

Esrt mal danke für die Info, ich werde mich weiter belesen.
So long

Marcus

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wasserstandsmelder Script Frage

Beitrag von Moonrider » 05.02.2020, 10:00

Also, ich habe mich entschlossen, diese Version
https://github.com/jp112sdl/HB-UNI-Sen-DIST-US entschieden. Allerdings ist mir nicht klar, wie die VErbindung zur CCU geschieht. Kann ich das Ganze dann anlernen ? Wenn ja, wie. Vielleicht weiß jemand Rat.
So long

Marcus

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Wasserstandsmelder Script Frage

Beitrag von Bratmaxe » 05.02.2020, 10:10

Du benötigst das Device Addon:
https://github.com/jp112sdl/JP-HB-Devic ... s/tag/2.20

danach kannst du den Aktor (und alle anderen von AsksinPP) wie gewohnt über die WEBUI anlernen (z.B: über die Seriennummer).
Gruß Carsten

Benutzeravatar
Moonrider
Beiträge: 66
Registriert: 25.08.2017, 13:17

Re: Wasserstandsmelder Script Frage

Beitrag von Moonrider » 12.02.2020, 09:08

Soweit habe ich es verstanden und mir die nötigen Teile besorgt. Allerdings habe ich noch Fragen zu den Libarys.


#include <EnableInterrupt.h> habe ich mir runtergeladen...läuft
#include <AskSinPP.h> habe ich mir runtergeladen...läuft
#include <LowPower.h> habe ich mir runtergeladen...läuft

#include <Register.h> finde ich im Netz nur einen Code auf Github von pa-pa. Weiß nicht, was ich damit anfangen soll.
#include <MultiChannelDevice.h> dazu finde ich gar nix, oder weiß nicht, ob das das Richtige ist

Vielleicht kann mir da bitte jemand für etwas Klarheit sorgen.

Danke
So long

Marcus

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Wasserstandsmelder Script Frage

Beitrag von Bratmaxe » 12.02.2020, 09:18

Das sind teile von AskSinPP

https://github.com/jp112sdl/AskSinPP
Gruß Carsten

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“