ich versuche einen Parametersatz eines HM-CC-RT-DN mittels eines Scriptes auszulesen, in eine Varable zu schreiben und diese dann in einem Befehl im OS direct auszuführen (Aufruf mittels CUxD). Meine piVCCU3 läuft aktuelle auf einem Raspberry Pi 3b und ich nutze den Scriptdeveloper von Black. Nochfolgend mein Code, welcher auch mit einem Testdatensatz (aktuell auskommentiert) funktioniert, um während der Entwicklung den Duty Cycle nicht zu sehr zu strapazieren.
Nun zu meinem eigentlichen Problem: Mit dem Testsatz läuft alles problemlos durch. Jedoch nicht mit dem ausgelesenen Parametersatz. Um Fehler beim Zusammensetzen des Befehls auszuschließen habe ich den Befehl kopiert, mich per ssh auf dem Raspberry, nicht der piVCCU, eingelogt und dort erfolgreich ausgeführt.
Im nächsten Schritt habe ich mich per ssh auf der piVCCU eingelogt und das Spiel dort wiederholt. Dabei ist mir dann aufgefallen, dass nur eine bestimmte Anzahl an Zeichen übernommen werden (18703 zu 1022 Zeichen).
Gibt es hier eine Beschränkung? Ich hatte erst 32 Bit vs 64 Bit Architektur in Verdacht, aber dies wieder verworfen, da ich auf der 64 Bit Systemarchitektur unterwegs bin.
Hat jemand eine Idee ob es eine Lösung zu meinem Problem gibt, oder ob ich für mein Vorhaben einen anderen Weg suchen muss oder dieses grundsätzlich begraben muss? Ich möchte anhand der aktuellen Zeit, den nächsten Schaltzeitpunkt auslesen und den Sollwert dahingehen anpassen. ("Gute Nacht-Programm" aufgrund unregelmäßiger Zeiten ins Bett zu gehen)
Code: Alles auswählen
string stdErr=""; string stdOut="";
object oDEVICE= dom.GetObject (ID_DEVICES).Get ("Heizung Wohnzimmer");
object oIFace= dom.GetObject (oDEVICE.Interface () );
string sWeekday="";
string sBefehlECHO="";
string sParam="";
string sResult="";
sParam = xmlrpc.GetParamset (oIFace, oDEVICE.Address () , "MASTER");
!sParam="<member><name>ENDTIME_MONDAY_5</name><value><i4>1440</i4></value></member><member><name>ENDTIME_MONDAY_6</name><value><i4>1440</i4></value></member><member><name>ENDTIME_MONDAY_7</name><value><i4>1440</i4></value></member>";
time tLocal = system.Date("%H:%M");
integer iMinElapsed = (system.Date("%H").ToInteger()*60) + system.Date("%M").ToInteger();
!sWeekday="MONDAY";
sWeekday=system.Date("%A").ToUpper();
sBefehlECHO="echo '" # sParam # "'| sed -r 's/<\/member>/<\/member>\/\\n/g' | sed -rn 's/.*<member><name>ENDTIME_" # sWeekday # "_([0-9]{1,2})<\/name><value><i4>([0-9]{1,4})<\/i4><\/value><\/member>.*/Time:\2 Entry:\1/pg'";
!echo "$Teststring" | sed -r 's/<\/member>/<\/member>\/\n/g' | sed -rn 's/.*<member><name>ENDTIME_MONDAY_([0-9]{1,2})<\/name><value><i4>([0-9]{1,4})<\/i4><\/value><\/member>.*/Time:\2 Entry:\1/pg'
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State(sBefehlECHO);
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
sResult = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
WriteLine(sResult);Code: Alles auswählen
piVCCU version: 3.83.6-95
OS: Debian GNU/Linux 12 (bookworm)
Kernel: 6.12.47+rpt-rpi-v8 aarch64
Kernel modules: Available
Raw UART dev: Available
Rasp.Pi UART: Assigned to GPIO pins
HMRF Hardware: RPI-RF-MOD
Connected via: GPIO@3f201000.serial (/dev/raw-uart)
Board serial: XXXXXXXXXXX
Radio MAC: 0xFF0117
HMIP Hardware: RPI-RF-MOD
Connected via: GPIO@3f201000.serial (/dev/raw-uart)
SGTIN: XXXXXXXXXXXXXX
Radio MAC: 0xBE523B
State: RUNNING
PID: 1574
IP: 192.XXX.XXX.XXX
Link: vethpivccu
TX bytes: 73.74 MiB
RX bytes: 138.79 MiB
Total bytes: 212.53 MiBWährend ich diesen Post schreibe, kommt mir die Idee, das ich, zumindest für die Nachtabsenkung, die ECO-Temperatur nehmen könnte.6.12.47+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux
Nichts desto trotz wäre ich an einer Lösung / Ursache für das obige rein interessehalber interessiert.
Vielen Dank
Krischanb