ich muss mich dann auch mal fragend an Euch wenden....
Ich schreibe an einem python script welches via remote script mit der ccu kommuniziert.
Das Absetzen einzelner Zeilen funktioniert soweit, z.B. zum Setzen einer Systemvariable oder zum Starten oder Retriggern eines cuxd Timers.
Alles fein. Aber nun kommt's:
Eine Variable möchte ich lesen und danach deren Value (string) clearen.
Der entsprechende HM-Script Befehl sind aus wie folgt:
Code: Alles auswählen
(dom.GetObject(ID_SYSTEM_VARIABLES).Get("sysvar-dev.cmd")).State(); (dom.GetObject(ID_SYSTEM_VARIABLES).Get("sysvar-dev.cmd")).State('');
Das gleiche mache ich noch mit ein paar anderen Scriptzeilen und eigentlich funzt das sauber.
NUR: das löschen des Variablenwertes (Teil2 des obigen Befehls) funktioniert nicht.
Im Response bekomme ich den ursprünglichen Wert geliefert (erster Teil der Zeile), nur der Wert bleibt in der Variable und wird halt nicht gelöscht.
Wenn ich die gleiche Zeile jedoch im CCU Gui in den Scriptinterpreter paste, dann funktioniert es. Die Sysvar wir gelesen und gelöscht.
Der python code sind in etwa aus wie folgt:
Code: Alles auswählen
hostname="ccu.my.network"
port="8181"
newState=1
headers={}
headers['User-Agent'] = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.27 Safari/537.17"
ccusystemvar="sysvar-dev"
timerVar ="CUxD.CUX2800002:16"
timerDuration = 15
url = 'http://' + hostname + ':' + port + '/test.exe'
regaScriptStatus="dom.GetObject(ID_SYSTEM_VARIABLES).Get(\"" + ccusystemvar + "\").State(\"" + str(newState) + "\");"
regaScriptTimer="dom.GetObject(\"" + timerVar + ".TIMER_SET\").State(\"" + str(15) + "\");"
regaScriptCmd="(dom.GetObject(ID_SYSTEM_VARIABLES).Get(\"" + ccusystemvar + ".cmd\")).State(); dom.GetObject(ID_SYSTEM_VARIABLES).Get(\"" + ccusystemvar + ".cmd\")).State(\"\");"
print("regaScriptStatus: '" + regaScriptStatus + "'")
print("regaScriptTimer: '" + regaScriptTimer + "'")
print("regaScriptCmd: '" + regaScriptCmd + "'")
params = {}
params['setStatus']=regaScriptStatus
params['watchdogTriggered']=regaScriptTimer
params['getCommand']=regaScriptCmd
url = url + "?" + urllib.parse.urlencode(params)
print("Resulting URL: '{}'".format(url))
request = urllib.request.Request(url, headers = headers)
try:
with urllib.request.urlopen(request, timeout=10) as response:
print(response.msg + " <" + str(response.status) + ">")
body = response.read()
character_set = response.headers.get_content_charset()
bodyStr = body.decode(character_set)
print("Body: '" + bodyStr + "'")
root = ET.fromstring(bodyStr)
for child in root:
print(child.tag, child.attrib, child.text)
except urllib.error.URLError as e:
pass
Gruß
Jürgen