CCU3-Script - Alle HKT auf Urlaubsmodus

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von Baxxy » 09.11.2021, 18:53

Liest man mal "queer Beet" im Web zum Thema findet man auch keine funktionierende Lösung sondern stößt eher auf die gleichen Probleme.
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}
            ]
          });
Sieht mir so aus als würden alle 4 Parameter mittels putParamset an das Gerät übergeben.
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);
... und scheint tatsächlich zu funktionieren.
STHD_Party_Mode_per_Script.JPG

Benutzeravatar
Black
Beiträge: 5470
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von Black » 09.11.2021, 19:07

Gute Lösung.

das führt zu einem Übertragen "in einem Rutsch" und braucht nicht 4 Einzelübertragungen. Das VALUES hast du auch drin.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von Baxxy » 09.11.2021, 19:26

Black hat geschrieben:
09.11.2021, 19:07
Übertragen "in einem Rutsch"
Alles andere hat irgendwie nie korrekt funktioniert.
Black hat geschrieben:
09.11.2021, 19:07
VALUES
Hatte erstmal die "Homematic IP Legacy API (XML-RPC-Schnittstelle)" - Dokumentation durchgearbeitet. Da war das "VALUES" schnell klar. Nur das set Array habe ich nicht hinbekommen. Zum Glück fiel mir dann ein das der SDV sowas ja locker aus dem Ärmel schüttelt. :mrgreen:

Grüße, Baxxy

yakamoneye21
Beiträge: 8
Registriert: 07.11.2021, 22:08
System: CCU
Hat sich bedankt: 1 Mal

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von yakamoneye21 » 10.11.2021, 20:45

Baxxy hat geschrieben:
09.11.2021, 18:53
Sieht mir so aus als würden alle 4 Parameter mittels putParamset an das Gerät übergeben.
Also habe ich das mal mit Hilfe von Black's SDV "nachgebaut".
Unglaublich, das funktioniert tatsächlich. Es kommen genau die Werte an, die man einträgt, und nicht das 1999-Kauderwelsch, das kommt, wenn man es nacheinander überträgt...

Vielen vielen Dank, diesen Script-Schnippsel werde ich so in mein Programm übernehmen. Dann kann ich endlich von meiner AIO Creator Fernbedienung aus den Urlaubsmodus setzen.
Aktuelles System:
CCU3
7x eTRV-2
6x SWDO
2x STH

yakamoneye21
Beiträge: 8
Registriert: 07.11.2021, 22:08
System: CCU
Hat sich bedankt: 1 Mal

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von yakamoneye21 » 12.11.2021, 19:06

Ich habe mich zu früh gefreut...

Das Script an sich funktioniert. Aber nur solange, wie ich es im "Test-Fenster" laufen lassen. Möchte ich es jetzt in einem Programm speichern, wurde es einfach nicht übernommen. Ich habe dann Zeile für Zeile rein kopiert und gespeichert. Es stellt sich raus: sobald ich ein "Caret" (neues Wort, gestern gelernt - dieses Zeichen: ^) schreibe, speichert er einfach nicht.

Ich habe jetzt versucht zu verstehen, was genau das Caret in der einen Zeile zu bedeuten hat. Ich würde sagen es ersetzt Hochkommata und fasst einen String zusammen bzw. trennt String von Variablen. Kann mir das vielleicht noch jemand erklären? Müsste ein String nicht immer von Hochkommata begrenzt sein (bin beruflich in anderen Scriptsprachen unterwegs, würde mich aber nicht als "Programmierer" bezeichnen...)?

Ich habe jetzt schon verschiedenes versucht, habe versucht die Zeichen irgendwie zu ersetzten, aber dann reagiert das Script gar nicht mehr. Wie kann ich so ein Script in der CCU in ein Programm einbauen? Irgendwelche Lösungen?

Danke nochmals in die Runde vorab für jeden hilfreichen Vorschlag!
Aktuelles System:
CCU3
7x eTRV-2
6x SWDO
2x STH

Benutzeravatar
Black
Beiträge: 5470
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von Black » 12.11.2021, 19:10

yakamoneye21 hat geschrieben:
12.11.2021, 19:06
(...)Danke nochmals in die Runde vorab für jeden hilfreichen Vorschlag!
joa, da war was, die original ccu3 hatte da so ein kleines problem mit scripten, die das ^enthalten.

du hast da folgende Lösungsmöglichkeiten:

a:) CCU3 patchen
b:) Raspberrymatic nutzen (hat in aktuellen Versionen das Problem nicht mehr)
c:) einen externen Editor bzw Entwicklungsumgebung nutzen, ein entsprechend guter Editor hat kein Problem damit, sowohl Scripte zum Editieren aus der CCU zu ziehen als auch diese wieder zurückzuschreiben.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Tyfys
Beiträge: 544
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 123 Mal

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von Tyfys » 12.11.2021, 19:23

Zu dem Caret Problem hatte ich eine Idee.

Vielleicht probierst du dies mal aus
Gruß
Harry

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

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von MichaelN » 12.11.2021, 19:32

Es sollte doch gehen, wenn du das ^ durch ein ' ersetzt.
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 +++

yakamoneye21
Beiträge: 8
Registriert: 07.11.2021, 22:08
System: CCU
Hat sich bedankt: 1 Mal

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von yakamoneye21 » 12.11.2021, 19:38

Tyfys hat geschrieben:
12.11.2021, 19:23
Zu dem Caret Problem hatte ich eine Idee.

Vielleicht probierst du dies mal aus
Danke schonmal für den Link. Das hatte ich gestern Abend schon gefunden, und so umgesetzt: aus

Code: Alles auswählen

string sTCL= ^puts [xmlrpc ^ #oIFace.InterfaceUrl()# ^/ putParamset [list string \"^#oCHANNEL.Address()#^\"] [list string \"VALUES\"] [list struct \"^#TCL#^\"]]^;
habe ich das gemacht:

Code: Alles auswählen

string caret =  dom.GetObject("Caret").Value();
string sTCL= caret#puts [xmlrpc #caret #oIFace.InterfaceUrl()# caret#/ putParamset [list string \"#caret#oCHANNEL.Address()#caret#\"] [list string \"VALUES\"] [list struct \"#caret#TCL#caret#\"]]#caret;
So funktioniert es aber leider nicht, das Script lässt sich zwar jetzt speichern, tut aber nichts mehr.
Aktuelles System:
CCU3
7x eTRV-2
6x SWDO
2x STH

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

Re: CCU3-Script - Alle HKT auf Urlaubsmodus

Beitrag von MichaelN » 12.11.2021, 19:46

Mit dem Trick kann man das Caret nur innerhalb eines string ersetzen, aber nicht um ihn zu begrenzen.

Deshalb der Rat mit dem Hochkomma.
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 +++

Antworten

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