Seite 1 von 3

0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 01:57
von Sanguis
Hallo zusammen

Ich hänge grade fest und komme nicht weiter
Ich habe im Garten ein IO Schnittstellenmodul verbaut und an den Analogeingängen Bodenfeuchtesensoren angeschlossen.
Sensoren arbeiten, im Web UI sehe ich unter Geräten auch die anliegende Spannung ... soweit so gut.

Nun möchte ich diese Spannung auslesen, umrechnen und das ganze dann in eine Systemvariable mit 0-100% schreiben.

Dazu nutze ich folgendes Script:

tmin = 0.0;
tmax = 100.0;

! Wert 0...10 V einlesen
u = dom.GetObject("Garten Bodenfeuchte Hecke").DPByHssDP("VALUE").Value();
! berechnen
t = tmin + (tmax - tmin) * u / 1000;
! T in SV schreiben
dom.GetObject("Bodenfeuchte Hecke").State(t);


Egal was ich mache ... die Systemvariable bleibt auf 0 stehen ... auch wenn ich das ganze in "Script testen" ausprobiere ... selbst wenn ich nur:

u = dom.GetObject("Garten Bodenfeuchte Hecke").DPByHssDP("VALUE").Value();
dom.GetObject("Bodenfeuchte Hecke").State(t);

in "Script testen" eingebe bleibt die Systemvariable immer noch auf 0

Programmname, Sensorname und Name der Systemvariable kommen nicht mehrfach vor, das habe ich geprüft.

Habe keinen Plan warum die Variable auf 0 bleibt, hoffe jemand hat einen Tip für mich

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 06:55
von Tyfys
Skriptvariablen müssen deklariert werden.
zB als var / integer / real / string.
am Besten natürlich mit dem richtigen Typ.

probier das im Testfenster:

Code: Alles auswählen

var u = dom.GetObject("Garten Bodenfeuchte Hecke").DPByHssDP("VALUE").Value();
WriteLine(u);
WriteLine(u.Type());
dom.GetObject("Bodenfeuchte Hecke").State(u);

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 11:33
von Sanguis
Es kommt weder eine Ausgabe im Testfenster noch eine Änderung der Systemvariable

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:17
von Sanguis
Hier ist das komplette Script das eigentlich laufen soll ... ich hatte das immer kleiner gemacht zum Testen:
! 0-10 V in % für SV (Typ: Zahl) umrechnen
real tmin; ! Bodenfeuchte in % bei 0 V
real tmax; ! Bodenfeuchte in % bei 10 V
real t; ! TemperaturBodenfeuchte in %
real u; ! Wert vom 0-10-V-Eingang

! Kennlinie
tmin = 0.0;
tmax = 100.0;

! Wert 0...10 V einlesen
u = dom.GetObject("Garten Bodenfeuchte Hecke").DPByHssDP("VALUE").Value();
! Feuchte berechnen
t = tmin + (tmax - tmin) * u / 1000;
! Temperatur in SV schreiben
dom.GetObject("Bodenfeuchte Hecke").State(t);
Die Variablen und Eingangsnamen habe ich mehrfach geprüft
Das Web Ui Programm heisst "Garten Feuchte Hecke" es sollten also nirgendwo Namensüberschneidungen auftauchen
Der Eingang "Garten Bodenfeuchte Hecke" misst im Moment 1,48 V
Aber die Variable "Bodenfeuchte Hecke" bleibt stur auf 0

Egal ob ich das im Script Testfenster ausführe oder über dieses UI Programm
Screenshot 2024-02-18 121633.jpg

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:29
von Tyfys
Mir fällt grad auf, dass der Datenpunkt mit VALUE angegeben ist.
Stimmt der denn ?
In den Dokus gibt es den nur insgesamt 1 mal.
Meist wird sowas in STATE dargestellt.


Das gar nichts bei dem Mini-Skript ausgegeben wird, deutet daraufhin, dass der Datenpunkt VALUE nicht / nicht in dem Kanal vorhanden ist.
Ist denn der Kanalname richtig ?
Und um welches HM / HmIP -Gerät handelt es sich ?

PS: Skripts immer in Code-Tags posten ( </> )

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:32
von robbi77
Was berechnest du da überhaupt?

tmin + (tmax - tmin) * u / 1000 = ?

tmin = 0
tmax = 100

Da ist tmax - tmin immer 100 … warum jedesmal mit berechnen?

tmin + 100 ergibt dann auch immer 100 …

100 * u / 1000 = ? Würde dann eher passen … würde zwar das gleiche rauskommen, aber ohne vorherige Rechnerei.

Wenn ich mir das nochmal durchlese, die Formel stimmt ja gar nicht.

10V = 100%
5V = ?

5 * 100 / 10 = 50%
Also u * 100 / 10 = Feuchte in %

Oder übersehe ich was??

PS:
War da nich auch was das im Script von hinten nach vorne gerechnet wird?

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:44
von Homematicbeginner
Hallo,

evtl. hilft dir dieser Beitrag weiter
viewtopic.php?f=31&t=12216&p=100567&hil ... or#p100567

Ich hatte meine Bodenfeuchtesensoren auch mal über Skript ausgewertet, habe aber relativ schnell auf CUXD Transform Device umgestellt da die Rohwerte doch oftmal sehr schwanken und auch nicht sonderlich linear sind.

Gruß

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:54
von Sanguis
habe selbst gemerkt das die Formel einen kleinen Fehler hatte:

t = tmin + (tmax - tmin) * (u / 10);

sollte es ein ... Kopierfehler

Messbereichsanfang +(Messbereich)*(Wert / Messbereich

Rechenbeispiel bei 0-100 %

T=0+(100-0)*(1,48/10)

Da sollten dann 14,8 % rauskommen .... aber es bleibt bei sturen 0 %

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:57
von Sanguis
Kanalname stimmt definitiv, ich habe alles um Schreibfehler zu vermeiden noch mal per Copy&Paste ins Script gebracht

Ich habe das grundsätzliche Script hier aus dem Forum und nur angepasst ... daher der Rechenfehler

Re: 0-10 V Eingang auslesen und umrechnen

Verfasst: 18.02.2024, 12:57
von Xel66
Du weißt aber schon, dass die Scriptlogik von rechts nach links rechnet? Und der (erste) rechte Wert bestimmt den Zahlentyp. Und Komma gibt es auch nicht, sondern Punkt ist der Dezimaltrenner.

Gruß Xel66