Wochenprofile per Skript ändern

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

RockReaver
Beiträge: 4
Registriert: 15.02.2017, 21:46

Wochenprofile per Skript ändern

Beitrag von RockReaver » 15.02.2017, 21:59

Hallo,

nachdem ich mehere Stunden in dem sehr informativen Forum gelesen habe, habe ich mich doch entschlossen zu meinen Problemen ein neues Thema zu erstellen.

Ich habe vor meine Wochenprogramme der Thermostate per Skript zu verändern.

Meine Grundeinstellung:
CCU2
Zusatzsoftware: XML-AIP, CUx-Daemon, Homegear

Ich habe folgendes Skript:

Code: Alles auswählen

#!/bin/tclsh
#
# Aufruf für ein putParamset (z.B. via system.Exec)
# =================================================
#
# tclsh setparam <addresse> <item> <datentyp> <wert>
# z.B.
# tclsh setparam GEQ004711:2 MODE_TEMPERATUR_REGULATOR int 2
#
load tclrpc.so
set item [lindex $argv 1]
set datatype [lindex $argv 2]
set val [lindex $argv 3]
set cmd "{$item {$datatype $val}}"
xmlrpc http://127.0.0.1:2001/ putParamset [list string [lindex $argv 0]] [list string "MASTER"] [list struct $cmd]
als Datei setparam.tlc in den Ordner usr/local abgelegt.

Dann habe ich ein Programm erstellt welches bei änderung der SV Wochenprogramm (1,2,3) folgendes Skript ausführt:

Code: Alles auswählen

! Wochenprogramm aus SV (Typ: Werteliste) einlesen
var wp = dom.GetObject("Wochenprogramm").Value();
wp = wp.ToString();

string addr = dom.GetObject("Gerätename").Address();
string cmd = "tclsh /usr/local/setparam.tcl LEQ0994297 WEEK_PROGRAM_POINTER int "#wp;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cmd);
Leider wird bei mir das Wochenprogramm nicht verändert.

Was habe ich vergessen oder nicht richtig umgesetzt?

Ich habe die Informationen von folgenden Seiten:
http://homematic-forum.de/forum/viewtop ... 570#p34570
http://homematic-forum.de/forum/viewtop ... 01#p156275

Ich hoffe ihr könnte mir helfen.

Gruß

Benutzeravatar
robbi77
Beiträge: 7943
Registriert: 19.01.2011, 19:15
Wohnort: Landau

Re: Wochenprofile per Skript ändern

Beitrag von robbi77 » 15.02.2017, 22:03

Thread Nr1 ist für die alten WTs.


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf

twoxx
Beiträge: 239
Registriert: 16.03.2015, 18:57

Re: Wochenprofile per Skript ändern

Beitrag von twoxx » 15.02.2017, 22:35

Hallo!

Zusätzlich noch folgende Info:

- das TCL-Script muß auf Setparam.tcl lauten, nicht auf Setparam.tlc
- das-TCL-Script muß im Ordner auch mit den entsprechenden Rechten ausgestatten worden sein. (per "CHMOD").
- die Wochenprogramme haben im Script nicht die Nr. 1,2,3 sondern 0,1,2
CCU3 mit 420 Systemvariablen, 440 Programmen, 121 Geräten

RockReaver
Beiträge: 4
Registriert: 15.02.2017, 21:46

Re: Wochenprofile per Skript ändern

Beitrag von RockReaver » 15.02.2017, 22:54

Hallo Danke für die Antworten.

Das mit der Endung war nur ein versehen.
Die Wochenprogramme wurden von mit in 0,1,2 verändert.

Wie funktioniert das mit den Rechte vergeben?

alchy
Beiträge: 8068
Registriert: 24.02.2011, 01:34

Re: Wochenprofile per Skript ändern

Beitrag von alchy » 16.02.2017, 00:37

twoxx hat geschrieben: die Wochenprogramme haben im Script nicht die Nr. 1,2,3 sondern 0,1,2
Das ist korrekt, deshalb auch unten selber rechnen, was statt der bei mir als Beispiel vorhandenen 2 benutzt wird. :lol:

Jedoch ist der Umweg über ein TCL Script unnötig geworden. :shock:
Geht auch ganz einfach per HM-Script (Dank BadenPower, denke ich.)

Code: Alles auswählen

object obj = devices.Get("Thermostat-Geräte-Name");
xmlrpc.PutParamset (obj.Interface(), obj.Address(), "MASTER", "WEEK_PROGRAM_POINTER", "2");
Alchy

.................... 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.

BadenPower

Re: Wochenprofile per Skript ändern

Beitrag von BadenPower » 16.02.2017, 10:30

alchy hat geschrieben:Jedoch ist der Umweg über ein TCL Script unnötig geworden. :shock:
Geht auch ganz einfach per HM-Script (Dank BadenPower, denke ich.)

Code: Alles auswählen

object obj = devices.Get("Thermostat-Geräte-Name");
xmlrpc.PutParamset (obj.Interface(), obj.Address(), "MASTER", "WEEK_PROGRAM_POINTER", "2");
Der einfache Befehl hat auch den Vorteil, dass man nicht überlegen muss, ob ein Funkgerät. oder das virtuelle Gruppengerät gesteuert werden soll.
Und ja, die Technik stammt von mir.

Das vom TE verlinkte TCL-Beispiel ist nur für Funk. Wollte man ein virtuelles Gerät damit steuern, dann würde man noch ein anderes TCL-Skript benötigen, oder eines, welches universeller ist, also alle Parameter und auch komplette Parametersets setzen kann und das egal, welchem Interface sie unterliegen:

Code: Alles auswählen

#!/bin/tclsh
#
# xmlrpc_putParamset.tcl
# www.homematic-forum.de by BadenPower
#
# Übergibt die Werte eines Parameterset oder einzelnen Parameter an ein Parameterset eines logischen Gerätes (Device/Channel)
#
# Parameter:
#   $argv 0:  [string] Interface-Url
#   $argv 1:  [string] Adresse des logischen Geräts
#   $argv 2:  [string] Bezeichnung des Paramsets
#   $argv 3:  [string] Parameterset = true / einzelner Parameter = false 
#   $argv 4:  [string] Bezeichnung des Parameters oder komplette Parameterset-Struktur
#   $argv 5:  [string] Datentyp 
#   $argv 6:  [string] Wert
#
# Rückgabewert: 
#
# Beispielaufrufe:
#    einzelner Parameter
#      system.Exec("tclsh /usr/local/xmlrpc_putParamset.tcl interfaceUrl INT0000001 MASTER false BUTTON_LOCK bool 1",&stdout,&stderr);  
#    Parameterset
#      system.Exec("tclsh /usr/local/xmlrpc_putParamset.tcl interfaceUrl INT0000001 MASTER true '{BUTTON_LOCK {bool 1}} {GLOBAL_BUTTON_LOCK {bool 1}}'",&stdout,&stderr);
#

load tclrpc.so
set interfaceUrl [lindex $argv 0]
set address [lindex $argv 1]
set paramset [lindex $argv 2]
set singleParam [lindex $argv 3]

if {"false" == $singleParam} then {
  set paramKey [lindex $argv 4]
  set valueType [lindex $argv 5]
  set value [lindex $argv 6]
  set params "{$paramKey {$valueType $value}}"
} else {
  set params [lindex $argv 4]
}

set retval [xmlrpc $interfaceUrl putParamset [list string $address] [list string $paramset] [list struct $params] ]
puts $retval
.

RockReaver
Beiträge: 4
Registriert: 15.02.2017, 21:46

Re: Wochenprofile per Skript ändern

Beitrag von RockReaver » 16.02.2017, 23:13

Halli Hallo,

perfekt Danke für das Skript. Das habe ich leider durch die Suche nicht gefunden.
Bei den Thermostaten klappt das Skript bei mir. Nur leider nicht bei den vituellen. Wenn ich das Thermostat einer Grupppe verändere, ändert sich leider nicht die Einstellung der Gruppe.

Was muss ich angeben, dass ich das oben genannte Skitp bei den virtuellen Geräten funktioniert. Leider klappt es nicht, wenn ich nur den Namen des Gerätes angebe.

Danke BadenPower.

Gruß

BadenPower

Re: Wochenprofile per Skript ändern

Beitrag von BadenPower » 17.02.2017, 09:26

RockReaver hat geschrieben:perfekt Danke für das Skript.
Von welchem Skript reden wir jetzt eigentlich?

Vom der Ansteuerung via TCL, oder vom direkten RegaSkript-Befehl ohne TCL?

Wenn Du nur einen Parameter schalten möchtest, dann ist die reine RegaSkript-Variante zu bevorzugen.
.

RockReaver
Beiträge: 4
Registriert: 15.02.2017, 21:46

Re: Wochenprofile per Skript ändern

Beitrag von RockReaver » 17.02.2017, 18:33

Vielen Dank für eure Hilfe.

Funktioniert alles.

WernerSch
Beiträge: 50
Registriert: 23.01.2018, 09:12

Re: Wochenprofile per Skript ändern

Beitrag von WernerSch » 23.01.2018, 09:17

Hallo

hoffe das liest noch jemand :-) Also ich bin da auch dabei und will auf dem Weg die Entkalkungsfahrt um einen Tag immer verschieben, weil die als Ärger macht, wie bei anderen auch.
Also das "xmlrpc.PutParamset ........" funktioniert bei mir nicht. Hat das jemand zum laufen gebracht?

Gruß
Werner

Antworten

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