Fehlerprüfung für ein simples Script

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
hlwerschner
Beiträge: 40
Registriert: 14.09.2015, 15:34

Fehlerprüfung für ein simples Script

Beitrag von hlwerschner » 25.01.2016, 11:30

Ich glaub, ich muss blind sein, denn ich kann die Fehlermeldung nicht nachvollziehen...
Ich schreib in der CCU (WebUI) ein neues Programm im integrieten Script Editor.

Es hat 5 Zeilen (einschliesslich der Leerzeile, die aber auch weg sein kann):

Code: Alles auswählen

var StromJahresSummen  = dom.GetObject("StromJahresSummen");
string sjsValue = StromJahresSummen.Value();

var GasJahresSummen  = dom.GetObject("GasJahresSummen");
string gjsValue = GasJahresSummen.Value();  
Ich bekomme bei FehlerPrüfung die Meldung
Error 1 at row 5 col 35 near ^.Value();

Parse following code failed:
var StromJahresSummen = dom.GetObject("StromJahresSummen");
string sjsValue = StromJahresSummen.Value();

var GasJahresSummen = dom.GetObject("GasJahresSummen");
string gjsValue = GasJahresSummen.Value();

Vertausche ich die zwei Zeilen von Strom... mit Gas.. , dann wird der Fehler für "row 2" angezeigt.

Ich habe die Variablen verkürzt , also

Code: Alles auswählen

var gjs  = dom.GetObject("GasJahresSummen");
string gjsValue = gjs.Value();  
...dann gibts
Error 1 at row 2 col 23 near ^.Value();

Parse following code failed:
var gjs = dom.GetObject("GasJahresSummen");
string gjsValue = gjs.Value();

Was stimmt nicht mit den 2 Zeilen????? Btw: die angesprochenen Variable existieren alle als SystemVariablen , Type "string".
Zuletzt geändert von alchy am 25.01.2016, 15:15, insgesamt 2-mal geändert.
Grund: bitte Code Tags benutzen

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

Re: Fehlerprüfung für ein simples Script

Beitrag von alchy » 25.01.2016, 15:13

>> H I E R << bitte.

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.

HenningK
Beiträge: 210
Registriert: 22.09.2012, 20:56
Hat sich bedankt: 5 Mal
Danksagung erhalten: 11 Mal

Re: Fehlerprüfung für ein simples Script

Beitrag von HenningK » 25.01.2016, 23:39

Bei mir mit CCU2 2.17.4 läuft das skript ohne Fehlermeldung. Ich habe die Variablen vorher erzeugt und nur die Namensgebung geändert.
Deine Skriptpassage ist ganz unten.

Ab und zu habe ich auch ein nicht nachvollziehbares Verhalten des Interpreters. Dann installiere ich einfach die aktuelle CCU2 Version wieder drüber und es geht.

Hier ist der Code:

Code: Alles auswählen

string  s_Name;
object  o_Obj; 
s_Name = "StromJahresSummen";
o_Obj  = dom.GetObject(s_Name);
if (!o_Obj){   
    object o_Objects = dom.GetObject(ID_SYSTEM_VARIABLES);
    o_Obj = dom.CreateObject(OT_VARDP);
    o_Objects.Add(o_Obj.ID());
    o_Obj.Name(s_Name);   
    o_Obj.ValueType(ivtString);
    o_Obj.ValueSubType(istChar8859);
    o_Obj.DPInfo("Varialbe für Strom");
    o_Obj.ValueUnit("");
    o_Obj.State("Strom xxxx");
    o_Obj.Internal(false);
    o_Obj.Visible(true);
    dom.RTUpdate(false);
}
s_Name = "GasJahresSummen";
o_Obj  = dom.GetObject(s_Name);
if (!o_Obj){   
    object o_Objects = dom.GetObject(ID_SYSTEM_VARIABLES);
    o_Obj = dom.CreateObject(OT_VARDP);
    o_Objects.Add(o_Obj.ID());
    o_Obj.Name(s_Name);   
    o_Obj.ValueType(ivtString);
    o_Obj.ValueSubType(istChar8859);
    o_Obj.DPInfo("Variable für Gas");
    o_Obj.ValueUnit("");
    o_Obj.State("Gas yyyy");
    o_Obj.Internal(false);
    o_Obj.Visible(true);
    dom.RTUpdate(false);
}
var v_sjs  = dom.GetObject("StromJahresSummen");
string s_sjsValue = v_sjs.Value();
var v_gjs  = dom.GetObject("GasJahresSummen");
string s_gjsValue = v_gjs.Value();  
WriteLine("SUCCESS " + s_gjsValue );

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“