Seite 3 von 5

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 09.12.2023, 16:08
von Baxxy
Henke hat geschrieben:
09.12.2023, 11:38
Das Programm stimmt nicht.
Sollte doch aber unrelevant sein, oder?
Da alle Datenpunkte eines Kanals eh "gleichzeitig" aktualisiert werden ist diese Doppelung aus Temperatur/Luftfeuchte m.E. auch unsinnig.
Zumindest auf meinem Testsystem (STHD im Programm streng nach Vorlage) rennt das Script dadurch immer 2x hintereinander durch.

Hier die Ausgabe ins Log umgeleitet und ein paar Nachkommastellen sichtbar gemacht. :wink:

Code: Alles auswählen

Dec  9 15:59:17 RM-Test-Pi3Bplus-27 user.debug BX-Debug: TP: 13.5 °C / AF: 11.43 g/m³
Dec  9 15:59:18 RM-Test-Pi3Bplus-27 user.debug BX-Debug: TP: 13.5 °C / AF: 11.43 g/m³

Dec  9 16:01:43 RM-Test-Pi3Bplus-27 user.debug BX-Debug: TP: 13.5 °C / AF: 11.43 g/m³
Dec  9 16:01:44 RM-Test-Pi3Bplus-27 user.debug BX-Debug: TP: 13.2 °C / AF: 11.23 g/m³

Dec  9 16:06:56 RM-Test-Pi3Bplus-27 user.debug BX-Debug: TP: 13.5 °C / AF: 11.41 g/m³
Dec  9 16:06:56 RM-Test-Pi3Bplus-27 user.debug BX-Debug: TP: 13.2 °C / AF: 11.21 g/m³

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 09.12.2023, 16:26
von Henke
Dann finde seinen Fehler und wenn du gleich dabei bist, verbessere das Script.
Ich hatte mich mit Absicht nicht auf Besonderheiten von Homematic Geräten festgelegt.

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 09.12.2023, 16:36
von Baxxy
Das Script ist doch gut und funktional, da muss ich nix verbessern.
Nur das gezeigte Programmbeispiel könnte verbessert werden nach dem Schema:
Temperatur Gerät A
ODER
Temperatur Gerät B
ODER
Temperatur Gerät C

Die rel.Luftfeuchte holst du doch eh im Script.

Woher der Fehler von @Blocky_89 kommt kann ich erstmal nicht erkennen.
Hier lief's auf Anhieb mit IP und HM Geräten.

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 09.12.2023, 18:44
von schlichi
Hallo Zusammen,
Woher der Fehler von @Blocky_89 kommt kann ich erstmal nicht erkennen.
Hier lief's auf Anhieb mit IP und HM Geräten.
... habs getestet, bei mir funktioniert das Script ebenfalls nicht. Den für den Test relevanten Ausschnitt, beiliegend:

Testumgebung
CCU2
HmIP-STH (Sensor, Loggia)
srcId = 1260
Sensor, Loggia :1
HmIP-RF.xx:1.ACTUAL_TEMPERATURE Wert: 2.500000
HmIP-RF.xx:1.HUMIDITY Wert: 95

Code: Alles auswählen

boolean debug = true;
!src für mich zum Testen 1524 Aussen Temp 14100 WW
integer srcId = 1260;
if (srcId > 0) {
    object oSrc = dom.GetObject(srcId);
WriteLine("Name: " #oSrc);
    if ( !oSrc ) { quit; };
    object oCh = channels.Get(oSrc.Channel());
WriteLine("Channel: "#oCh);
}
else { quit; }
if (!oCh || (oSrc.Type() != OT_HSSDP)) 
{
    quit;
}
WriteLine("Zeile-1");
object oDP = oCh.DPByHssDP(oSrc.HssType());
WriteLine("Zeile-2");

if ( debug ) {
	WriteLine("run Kanal: "#oCh.ChnNumber()#", DP: \""#oSrc.HssType()#"\", Wert: "# "$val$");
	WriteLine(oDP.Name() # " " # oDP.TypeName() # "-" # oDP.ValueName() # "-" # oDP.ID());
}
Ergebnis

Code: Alles auswählen

Hallo Welt!
Name: Sensor, Loggia
Zeile-1
...die Fehleranalyse überlasse ich den Profis :wink:

Gruß
schlichi

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 10.12.2023, 13:42
von Baxxy
schlichi hat geschrieben:
09.12.2023, 18:44
Fehleranalyse
Du hast für deinen Test die ID eines Gerätes, und nicht wie erforderlich die ID vom einem Temperatur oder Luftfeuchte Datenpunkt genommen.
Das wird im Script zu spät abgefangen, kann aber im Echtbetrieb nicht vorkommen bzw. nur wenn jemand Systemvariablen anstatt Geräte-Datenpunkte als Trigger verwendet.

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 10.12.2023, 15:04
von [sprotte80]
Hi
schlichi hat geschrieben:
09.12.2023, 18:44
Testumgebung
CCU2
Das script is ja auch nich CCU2 tauglich.
Muss nen ScriptRunTime-Error im Log stehn
Sagt auch der Dubugger vom HM-CodetEditor von den HM-Internal.

Thomas

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 10.12.2023, 15:18
von Baxxy
Was mag denn die CCU2 da nicht?

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 10.12.2023, 16:10
von Tyfys
die (meine) CCU2 mag dies nicht :

Code: Alles auswählen

real feuchte = dp.Value().ToFloat();
Ich denke, weil der Wert ist quasi schon real.
Sollte auch ohne diese Statements laufen, ausser die Werte wären als Zeichenkette definiert.

Also so :

Code: Alles auswählen

real feuchte = dp.Value();

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 10.12.2023, 16:16
von Baxxy
Das kann die CCU2 nicht?
Feuchte kommt i.d.R. als Integer aus dem DP.
Für die Berechnungen ist aber Real "besser".

Aufteilen in 2 Zeilen?

Code: Alles auswählen

real feuchte = dp.Value();
feuchte = feuchte.ToFloat();

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Verfasst: 10.12.2023, 17:00
von Tyfys
nee

.ToFloat() ist das Problem, wenn es sich schon um integer/real handelt.

Trick 17 ist auf meiner CCU2 :

Code: Alles auswählen

real feuchte = 0.000 + dp.Value();