Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
Baxxy
Beiträge: 10850
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2230 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Baxxy » 09.12.2023, 16:08

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³

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Henke » 09.12.2023, 16:26

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.

Benutzeravatar
Baxxy
Beiträge: 10850
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2230 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Baxxy » 09.12.2023, 16:36

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.

schlichi
Beiträge: 395
Registriert: 26.08.2016, 19:26
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erding
Hat sich bedankt: 61 Mal
Danksagung erhalten: 29 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von schlichi » 09.12.2023, 18:44

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
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender) :roll:

Benutzeravatar
Baxxy
Beiträge: 10850
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2230 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Baxxy » 10.12.2023, 13:42

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.

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von [sprotte80] » 10.12.2023, 15:04

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
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.


Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Tyfys » 10.12.2023, 16:10

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();
Gruß
Harry

Benutzeravatar
Baxxy
Beiträge: 10850
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2230 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Baxxy » 10.12.2023, 16:16

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();

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Script Taupunkt und Abs.Luftfeuchte in Systemvariable schreiben

Beitrag von Tyfys » 10.12.2023, 17:00

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();
Gruß
Harry

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“