Vergleich zweier Systemvariablen -> Fehler im Skript?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

tomdler
Beiträge: 22
Registriert: 10.11.2018, 15:14
System: CCU
Wohnort: HILDEN
Hat sich bedankt: 8 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von tomdler » 14.06.2020, 12:54

Super, Danke jetzt funktioniert's
--------------------------------------------
270 Kanäle und 1319 Datenpunkte in 37 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-SLO, 1x HmIP-FSM16, 3x HM-MOD-Re-8, 1x HmIP-STHO, 1x HmIP-STE2-PCB, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 2x HmIP-SRH, 4x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-eTRV-2, 4x HMIP-PS, 1x HmIP-MOD-OC8, 1x HmIP-RCV-50, 1x HmIP-BS2, 1x HmIP-BDT, 1x HmIP-PDT, 1x HmIP-WRC6, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

Benutzeravatar
Black
Beiträge: 5469
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von Black » 14.06.2020, 14:37

MichaelN hat geschrieben:
14.06.2020, 12:26
(...)BTW: @Black hat es einen besonderen Grund, warum dein SDV (und Du auch) so großzügig Leerzeichen in die Befehle einstreust? Es scheint den Parser ja nicht zu stören, kenne das nur von anderen Programmiersprachen anders.
Macht der Gewohnheit, ich schreib auf allen Programmiersprachen gerne mit leerzeichen, wenns den parser oder den compiler nicht stört. einzig bei tcl hab ich mir angewöhnt vorsichtig zu sein.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

tomdler
Beiträge: 22
Registriert: 10.11.2018, 15:14
System: CCU
Wohnort: HILDEN
Hat sich bedankt: 8 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von tomdler » 16.06.2020, 22:28

Habe mich nochmal damit beschäftig, lese jetzt die Daten direkt aus.
hier das Skript:

Code: Alles auswählen

var Temp = dom.GetObject("Aussentemperatur");
real Aus1 = dom.GetObject("BidCos-RF.QEQ....:1.TEMPERATURE");
real Aus2 = dom.GetObject("HmIP-RF.000...:1.ACTUAL_TEMPERATURE").State();

Temp.State(Aus1.Value().Min(Aus2.Value()));
Fachmännisch ist es bestimmt nicht, aber es funktioniert.
--------------------------------------------
270 Kanäle und 1319 Datenpunkte in 37 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-SLO, 1x HmIP-FSM16, 3x HM-MOD-Re-8, 1x HmIP-STHO, 1x HmIP-STE2-PCB, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 2x HmIP-SRH, 4x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-eTRV-2, 4x HMIP-PS, 1x HmIP-MOD-OC8, 1x HmIP-RCV-50, 1x HmIP-BS2, 1x HmIP-BDT, 1x HmIP-PDT, 1x HmIP-WRC6, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von alchy » 18.06.2020, 20:05

tomdler hat geschrieben:
16.06.2020, 22:28
Fachmännisch ist es bestimmt nicht, aber es funktioniert.
Es funktioniert ist aber nur die halbe Wahrheit. :roll: und fast immer der Anfang vom Ende.
Ich würde mal vermuten, das das Script so trotzdem einen ScriptRuntimeError im >> Fehlerprotokoll << wirft.
Und das ist das Wenigste, was du dir anschauen solltest, wenn du dich am Scripten versuchst.

Warum benutzt du denn nicht die Vorlage so wie sie dir gepostet wurde? Einfach nur die beiden Datenpunktnamen eingetragen, sollte die Version dann wenigstens fehlerfrei durchlaufen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

tomdler
Beiträge: 22
Registriert: 10.11.2018, 15:14
System: CCU
Wohnort: HILDEN
Hat sich bedankt: 8 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von tomdler » 18.06.2020, 22:36

Da ich die Wert sowieso auslesen muss, um sie dann im dritten Programm zu vergleich fand ich den Weg geschickter.
Alt 3 Variable und 3 Programme zu neu eine Variable und ein Programm
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: called Program ID = 1711 'Aussentemperatur' with valNew = '18.300000' ; oidTrigger = 6642 [SetState():iseDOMPrg.cpp:478]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: DP_VALUE_CHECK_UPDATE is set, trigger dp exists [CheckCondition2Data():iseCondition.cpp:504]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: DP_VALUE_CHECK_UPDATE is set, condition = 1 [CheckCondition2Data():iseCondition.cpp:510]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: type = DP_LESS, condition valL = 18.300000 valR1 = 56.000000 [Evaluate():iseCondition.cpp:331]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: sc = 0, CONDITION_TRIGGER_TRUE is set. [Evaluate():iseCondition.cpp:1121]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: sc = 0, condition result = 1 [Evaluate():iseCondition.cpp:1123]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: c = 0, CONDITION_TRIGGER_TRUE is set. [Evaluate():iseRule.cpp:232]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: c = 0, condition result = 1 [Evaluate():iseRule.cpp:235]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: Rule evaluated state is TRUE by Program ID = 1711 'Aussentemperatur'; Destination ID = 1920 [SetState():iseDOMPrg.cpp:501]
Jun 18 22:26:20 ccu2 local0.info ReGaHss: Info: Program ID = 1711 'Aussentemperatur', rule's trigger flags = 6 [SetState():iseDOMPrg.cpp:515]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: execute Program ID = 1711 'Aussentemperatur'; Destination ID = 1920 [Execute():iseDOMPrg.cpp:611]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: start execute Destination within the trigger delay 0 [Execute():iseDOMPrg.cpp:615]
Jun 18 22:26:20 ccu2 local0.info ReGaHss: Info: added script element id= 1920; time= 0 [Add():iseRTScheduler.cpp:341]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: ExecuteDestination succeeded from Program ID = 1711 'Aussentemperatur' with valNew = '18.300000' [Execute():iseDOMPrg.cpp:625]
Jun 18 22:26:20 ccu2 local0.debug ReGaHss: Verbose: wait max timeout = 240000 [ThreadFunction():iseRTEvent.cpp:69]
Das konnte ich im Fehlerprotokoll finden ich hoffe das hilft sehe aber keine Error.

Wenn es eine bessere Lösung ohne Umweg gibt, würde ich mich über Hilfe freuen.
--------------------------------------------
270 Kanäle und 1319 Datenpunkte in 37 Geräten:
3x HM-Sec-RHS, 3x HM-CC-RT-DN, 1x HmIP-SLO, 1x HmIP-FSM16, 3x HM-MOD-Re-8, 1x HmIP-STHO, 1x HmIP-STE2-PCB, 1x HM-WDS30-OT2-SM-2, 2x HM-Sec-SCo, 2x HmIP-SRH, 4x HM-RC-19, 1x HM-RC-Dis-H-x-EU, 1x HM-Sen-EP, 1x HM-PB-6-WM55, 1x HmIP-eTRV-2, 4x HMIP-PS, 1x HmIP-MOD-OC8, 1x HmIP-RCV-50, 1x HmIP-BS2, 1x HmIP-BDT, 1x HmIP-PDT, 1x HmIP-WRC6, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

Haihappen85
Beiträge: 73
Registriert: 21.01.2021, 10:14
System: CCU
Hat sich bedankt: 6 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von Haihappen85 » 07.07.2021, 20:04

Ist zwar ein alter Post.
Jedoch behandelt der genau mein Problem. Ich hab jedoch recht wenig Erfahrung mit Skripten.

Mein Code sieht so aus:
Variable: Abs.Feuchte_Aussen ist vom Typ Zahl und der Wert kommt aus einem anderen Programm
Variable: Abs.Feuchte_Keller ist vom Typ Zahl und der Wert kommt aus einem anderen Programm
Variable: wird nur in dem Skript geschrieben und soll 0 oder 1 haben. kann aber auch Wahr oder nicht wahr sein. DAs wäre egal.
Will mit der Variable in einem weiteren Programm dann arbeiten.

Code: Alles auswählen

! Werte einlesen

object lueften= dom.GetObject("Lüften");
object Aussen = dom.GetObject("Abs.Feuchte_Aussen");
object Innen= dom.GetObject("Abs.Feuchte_Keller");

! Vergleichen

if (Aussen.Value() >= Innen.Value()) 
{ 
   lueften.State(1); 
} 
else 
{ 
   lueften.State(0);
}


WriteLine(lueften);
WriteLine(Aussen);
WriteLine(Innen)
Kann mir bitte jemand helfen? Leider schaffe ich es nicht mal mir anzeigen zu lassen was raus geschrieben wird. :-)
----------------------------------------------------------------------------
Vielen Dank
Viele Grüße
Steve
----------------------------------------------------------------------------

MichaelN
Beiträge: 9638
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von MichaelN » 07.07.2021, 20:23

Ganz am Ende fehlt dir ein ;
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

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

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von Baxxy » 07.07.2021, 20:28

Haihappen85 hat geschrieben:
07.07.2021, 20:04
Kann mir bitte jemand helfen?
teste mal...

Code: Alles auswählen

! Werte einlesen
object lueften= dom.GetObject("Lüften");
object Aussen = dom.GetObject("Abs.Feuchte_Aussen");
object Innen = dom.GetObject("Abs.Feuchte_Keller");

WriteLine(Aussen.Value());
WriteLine(Innen.Value());

! Vergleichen

if (Aussen.Value() >= Innen.Value())
{
   lueften.State(1); WriteLine("lueften Wert: 1");
}
else
{
   lueften.State(0); WriteLine("lueften Wert: 0");
}

Haihappen85
Beiträge: 73
Registriert: 21.01.2021, 10:14
System: CCU
Hat sich bedankt: 6 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von Haihappen85 » 07.07.2021, 20:45

hm also jetzt wird etwas in die Lüften Variable geschrieben.
Aber irgendwie ist das nicht plausible.

Abs.Feuchte_Aussen=11.95
Abs.Feuchte_Keller=9.70

Somit müsste der Wert gleich 1 sein.

Es kommt aber irgendwie 0 raus. :-/
----------------------------------------------------------------------------
Vielen Dank
Viele Grüße
Steve
----------------------------------------------------------------------------

MichaelN
Beiträge: 9638
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Vergleich zweier Systemvariablen -> Fehler im Skript?

Beitrag von MichaelN » 07.07.2021, 20:52

Werden da vielleicht Strings miteinander verglichen?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

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