0-10 V Eingang auslesen und umrechnen
Moderator: Co-Administratoren
-
- Beiträge: 48
- Registriert: 12.11.2022, 20:56
- System: CCU
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 1 Mal
0-10 V Eingang auslesen und umrechnen
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
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
-
- Beiträge: 566
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 130 Mal
Re: 0-10 V Eingang auslesen und umrechnen
Skriptvariablen müssen deklariert werden.
zB als var / integer / real / string.
am Besten natürlich mit dem richtigen Typ.
probier das im Testfenster:
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);
Gruß
Harry
Harry
-
- Beiträge: 48
- Registriert: 12.11.2022, 20:56
- System: CCU
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 1 Mal
Re: 0-10 V Eingang auslesen und umrechnen
Hier ist das komplette Script das eigentlich laufen soll ... ich hatte das immer kleiner gemacht zum Testen:
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
Die Variablen und Eingangsnamen habe ich mehrfach geprüft! 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);
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
-
- Beiträge: 566
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 130 Mal
Re: 0-10 V Eingang auslesen und umrechnen
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 ( </> )
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 ( </> )
Gruß
Harry
Harry
- robbi77
- Beiträge: 13877
- Registriert: 19.01.2011, 19:15
- System: CCU
- Wohnort: Landau
- Hat sich bedankt: 182 Mal
- Danksagung erhalten: 744 Mal
Re: 0-10 V Eingang auslesen und umrechnen
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?
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?
-
- Beiträge: 374
- Registriert: 13.07.2013, 10:46
- Wohnort: Rheinhessen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 5 Mal
Re: 0-10 V Eingang auslesen und umrechnen
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ß
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ß
Homematicbeginner
-
- Beiträge: 48
- Registriert: 12.11.2022, 20:56
- System: CCU
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 1 Mal
Re: 0-10 V Eingang auslesen und umrechnen
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 %
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 %
-
- Beiträge: 48
- Registriert: 12.11.2022, 20:56
- System: CCU
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 1 Mal
Re: 0-10 V Eingang auslesen und umrechnen
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
Ich habe das grundsätzliche Script hier aus dem Forum und nur angepasst ... daher der Rechenfehler
-
- Beiträge: 14220
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 593 Mal
- Danksagung erhalten: 1510 Mal
Re: 0-10 V Eingang auslesen und umrechnen
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
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch