Scripte laufen nicht ganz rund

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Scripte laufen nicht ganz rund

Beitrag von Dome_2001 » 30.11.2021, 19:24

Hallo zusammen,

sorry das ich wieder zum Thema Scripte wieder nerven muss.

Ich habe mir folgendes Script erstellt:

Code: Alles auswählen

var Status_Monitor = "nix";

! Monitor 

dom.GetObject("CUxD.CUX2801012:1.CMD_SETS").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -f http://192.168.0.85/api/hier seht  ebbes/lights/3");

dom.GetObject("CUxD.CUX2801012:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801012:1.CMD_RETS").State();
! WriteLine("Variable v" # v);
 
string findthis = "{\"state\":{\"on\":true";
if ( v.Find(findthis) >= 0 )
{
   dom.GetObject("CUxD.CUX2801012:1.CMD_EXEC").State("/bin/tclsh /usr/local/addons/hue/ol_on.tcl");
  Status_Monitor = "An";
  dom.GetObject("Office_Programme_loggen_1").State(dom.GetObject("$this$").Name() #" wurde am "#system.Date("%d.%m. %H:%M Uhr") #" ausgefuehrt");
}

string findthis2 = "{\"state\":{\"on\":false";
if ( v.Find(findthis2) >= 0 )
{
  dom.GetObject("CUxD.CUX2801012:1.CMD_EXEC").State("/bin/tclsh /usr/local/addons/hue/ol_off.tcl");
  Status_Monitor = "Aus";
  dom.GetObject("Office_Programme_loggen_1").State(dom.GetObject("$this$").Name() #" wurde am "#system.Date("%d.%m. %H:%M Uhr") #" ausgefuehrt");
}

WriteLine("Office Monitor: " # Status_Monitor);
dom.GetObject("Office_Monitor").State(Status_Monitor);

dom.GetObject("Office_Programme_loggen_1").State(dom.GetObject("$this$").Name() #" wurde am "#system.Date("%d.%m. %H:%M Uhr") #" ausgefuehrt");
Mein Problem ist, das er nun die Systemvariablen Office_Monitor und Office_Programme_loggen_1 nicht befüllt bzw. aktualisiert. Ich sehe aber über Programm, dass das Programm aber wie gewünscht ausgeführt wird.

Wenn ich das Script über "Ausführen" also im Script Editor ausführe dann setzt das Programm die Systemvariable Office_Monitor aber nicht die andere. Aber über das CUxD Timer Event macht er beides nicht.

Interessant ist, dass ich die eine andere Systemvariable Office_Programme_loggen mit der gleichen Logik wie Office_Programme_loggen_1 befülle und dort klappt es.

Was mache ich falsch?

Danke schon mal im voraus.

Grüße

Sven
Zuletzt geändert von Roland M. am 30.11.2021, 19:46, insgesamt 1-mal geändert.
Grund: Thema verschoben
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

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

Re: Scripte laufen nicht ganz rund

Beitrag von Baxxy » 30.11.2021, 19:42

Kannst du mal für Tests eine Ausgabe von...

Code: Alles auswählen

var v
... posten?

Grüße, Baxxy

Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Re: Scripte laufen nicht ganz rund

Beitrag von Dome_2001 » 30.11.2021, 19:46

Baxxy hat geschrieben:
30.11.2021, 19:42
Kannst du mal für Tests eine Ausgabe von...

Code: Alles auswählen

var v
... posten?

Grüße, Baxxy
Hi, mache ich gerne

Code: Alles auswählen

v= {"state":{"on":false,"alert":"select","mode":"homeautomation","reachable":true},"swupdate":{"state":"notupdatable","lastinstall":"2021-10-25T14:00:13"},"type":"On/Off plug-in unit","name":"Monitor","modelid":"SP 220","manufacturername":"innr","productname":"On/Off plug","capabilities":{"certified":false,"control":{},"streaming":{"renderer":false,"proxy":false}},"config":{"archetype":"plug","function":"functional","direction":"omnidirectional"},"uniqueid":"XX:XX:XX:ff:fe:e9:34:f9-01","swversion":"2.3"}
Zuletzt geändert von Dome_2001 am 30.11.2021, 19:47, insgesamt 2-mal geändert.
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

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

Re: Scripte laufen nicht ganz rund

Beitrag von MichaelN » 30.11.2021, 19:46

Wieso setzt du Office_Programme_loggen_1 erst in einer if Bedingung und später nochmal bedingungslos?
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 +++

Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Re: Scripte laufen nicht ganz rund

Beitrag von Dome_2001 » 30.11.2021, 19:51

MichaelN hat geschrieben:
30.11.2021, 19:46
Wieso setzt du Office_Programme_loggen_1 erst in einer if Bedingung und später nochmal bedingungslos?
Hi,

weil das noch Reste vom Test sind ob die Stelle falsch ist in der ich es eingebunden habe. Ursprünglich wollte ich es nur ganz zum Schluß einmal setzten.

Das mag das Script gar nicht

Code: Alles auswählen

dom.GetObject("Office_Programme_loggen_1").State(dom.GetObject("$this$").Name() #" wurde am "#system.Date("%d.%m. %H:%M Uhr") #" ausgefuehrt");
Sobald ich das an eine andere Stelle kopiere bin ich der Meinung bricht das Script ab.

Genauer gesagt, das klappt nicht

Code: Alles auswählen

Zeitstempel_Name = dom.GetObject("$this$").Name();
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

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

Re: Scripte laufen nicht ganz rund

Beitrag von Baxxy » 30.11.2021, 20:26

Hmm, läuft hier sauber durch.
Dome_2001 hat geschrieben:
30.11.2021, 19:51
Genauer gesagt, das klappt nicht

Code: Alles auswählen

Zeitstempel_Name = dom.GetObject("$this$").Name();
Das funktioniert m.E. nicht im Script testen. Direkt durchs Programm getriggert sollte das aber gehen.
Oder mit dem SDV, da kann man "$this$" auch angeben.

Lass es doch mal weg.

Grüße, Baxxy

Dome_2001
Beiträge: 319
Registriert: 01.07.2014, 10:18
Hat sich bedankt: 5 Mal

Re: Scripte laufen nicht ganz rund

Beitrag von Dome_2001 » 02.12.2021, 22:23

So, konnte heute etwas weiter machen. Ich lasse das $this$ nun weg. Die Scripte laufen nun.

Allerdings mein CUXD Timerevent zickt noch rum ...
Zu fixen Zeitpunkten klappt alles. Eventuell stelle ich es so mal um.

Da muss ich noch tiefer forschen warum
--------------------------------------------
138 Kanäle in 55 Geräten und 111 CUxD-Kanäle in 7 CUxD-Geräten
--------------------------------------------

Antworten

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