Die "beste Option" hier was funktionierendes zu bekommen ist m.E. den Funktionsaufruf beim Setzen des Urlaubsmodus über die WebUI zu replizieren.
Gefunden habe ich in der webui.js z.B. folgendes:
Code: Alles auswählen
partyModeDialog = new PartyModeDialog(translateKey("partyModeDialogTitle"), htmlContent, oPartyValues,function(result) {
var self = event.data.that;
var iface = self.iface,
chAddress = self.chAddress;
if (result == 1) {
conInfo("SET PARTYMODE");
var oPartyMode = self.formatPartyMode(this.getPartyModeObject());
var partyTimeStart =
oPartyMode.startYear + "_" + oPartyMode.startMonth + "_" + oPartyMode.startDay + " " + oPartyMode.startHour + ":" + oPartyMode.startMin,
partyTimeEnd =
oPartyMode.stopYear + "_" + oPartyMode.stopMonth + "_" + oPartyMode.stopDay + " " + oPartyMode.stopHour + ":" + oPartyMode.stopMin;
homematic("Interface.putParamset",{'interface': iface, 'address' : chAddress, 'paramsetKey' : 'VALUES', 'set':
[
{name:'SET_POINT_MODE', type: 'int', value: "2"},
{name:'SET_POINT_TEMPERATURE', type: 'double', value: oPartyMode.temp},
{name:'PARTY_TIME_START', type: 'string', value: partyTimeStart},
{name:'PARTY_TIME_END', type: 'string', value: partyTimeEnd}
]
});
Also habe ich das mal mit Hilfe von Black's SDV "nachgebaut".
Sieht dann so aus...
Code: Alles auswählen
!- PutParamset Zuweisung vom SDV V4.08.01A LCL für Gerät: HmIP-STHD
string stdErr=""; string stdOut=""; string TCL="";
TCL= TCL # " {SET_POINT_MODE {i4 2}}";
TCL= TCL # " {SET_POINT_TEMPERATURE {double 12.50}}";
TCL= TCL # " {PARTY_TIME_START {2021_11_09 18:00}}";
TCL= TCL # " {PARTY_TIME_END {2021_11_09 19:15}}";
object oCHANNEL= dom.GetObject (ID_CHANNELS).Get ("HmIP-STHD Dev2_514:1 - Bedienung");
object oIFace= dom.GetObject (oCHANNEL.Interface () );
string sTCL= ^puts [xmlrpc ^ #oIFace.InterfaceUrl()# ^/ putParamset [list string \"^#oCHANNEL.Address()#^\"] [list string \"VALUES\"] [list struct \"^#TCL#^\"]]^;
system.Exec ("/bin/sh -c 'echo \"load tclrpc.so; " # sTCL # "\" |tclsh'",&stdOut,&stdErr);