Per Skript Systemvariable Typ Werteliste ändern

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Adrian-01
Beiträge: 26
Registriert: 01.09.2016, 21:28

Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Adrian-01 » 08.12.2017, 22:18

Guten Abend,

Ich habe mich mal etwas an das Skripten gewagt, nun möchte ich mir von einem HVL Device einen Wert in eine Systemvariable schreiben lassen.
Dazu habe ich folgendes Skript gebaut:

var RBPower = dom.GetObject("HVL.R_368b1cf:19.POWERSTATE").Value();
dom.GetObject("R_Badezimmer:Power").State(RBPower);

Das klappt an sich schon perfekt, die Systemvariable vom Typ "Zeichenkette" lässt sich so wunderbar befüllen, ich hätte jedoch gerne den Typ "Werteliste" ändere ich das einfach so um wird in der Systemvariable ganz egal welcher Zustand das HVL Device hat immer nur der erste Wert in der Liste ausgegeben.

Kann mir jemand sagen was ich hier Falsch mache? Muss ich im Skript noch die Möglichen Zustände berücksichtigen ?

Vielen dank schonmal für die Hilfe.


Gruß,

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Cash » 08.12.2017, 22:47

Klar. Wertelisten werden als Zahl gesetzt. Der erste Eintrag ist dabei 0, der zweite 1 usw...

Siehst Du auch wenn Du den aktuellen Wert der Werteliste mit Value abfragst...

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Cash » 08.12.2017, 22:50

Noch was heisst Deine Systemvariable wirklich R_Badezimmer:Powe? Ich bin mir unsicher aber ich glaube lt. Doku ist ein Doppelpunkt nicht erlaubt? Kann aber sein das ich mich jetzt mit Scriptvariablen vertue...

Adrian-01
Beiträge: 26
Registriert: 01.09.2016, 21:28

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Adrian-01 » 08.12.2017, 23:11

Ja, das ist mir klar aber was muss ich tun das ich den wert auf einen in der Werteliste bekannten setzen kann, also nicht nur auf den ersten?

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von anli » 09.12.2017, 08:50

Welche Werte wurden denn in die Zeichenkette geschrieben? Eventuell macht der Variablentyp einen Unterschied: es kann sein, dass rbpower ein String ist, die Werteliste aber einen int erwartet. Dann musst du den Wert einmal in int konvertieren.
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Adrian-01
Beiträge: 26
Registriert: 01.09.2016, 21:28

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Adrian-01 » 09.12.2017, 09:15

Hey,

Ich habe folgendes in der Werteliste:

ACTIVE;MANUAL_STANDBY

Vielen Dank für die Hilfe.


Gruß,

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Cash » 09.12.2017, 11:52

Wie es geht hatte ich doch geschrieben. Hier ein Beispiel:

Code: Alles auswählen

! Heizprogramm ermitteln
! 0 = normaler Tag
! 1 = Feier- oder Urlaubstag
! 2 = eine Person zu Hause
! im else-Teil keine Abfrage auf != 0 damit wenn das Programm 2 eingestellt ist, dieses nicht automatisch überschrieben wird
if((Feiertag) || (Urlaubstag)){if(dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Heizprogramm").Value() != 1){dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Heizprogramm").State(1);}}
else {if(dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Heizprogramm").Value() == 1){dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Heizprogramm").State(0);}}
Meine Systemvariable heißt Heizprogramm. Die Werteliste: normer Tag, Feier oder Urlaubstag und eine Person zu Hause.

Entscheidet ist das .State(0) damit wird die Systemvariable auf normaer Tag gesetzt. Ich nutze hier schon die bessere Schreibweise mit dom.GetObejct(ID_SYSTEM_VARIABLES).Get...

Adrian-01
Beiträge: 26
Registriert: 01.09.2016, 21:28

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von Adrian-01 » 09.12.2017, 16:50

Sorry wie gesagt, relativ Neuland.

Ich kapier hier leider immer noch nicht wie ich die werteliste dann quasi befüllen soll.
Ich bekomme von dem HVL gerät den Status Active und Manual_Standby und diesen möchte ich in deine werteliste schreiben bzw. In eine systemvariable so das ich dann beim verwenden dieser Variable in einem Programm im Dropdown-Menü die Option habe Active oder eben Manual_Standby anzuwählen.

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von anli » 09.12.2017, 16:53

Die Werte trägst Du direkt in der WebUI selbst ein (geht auch über Skript, aber das macht glaube ich hier keinen Sinn). Systemvariable -> bearbeiten. Unter Wertebezeichnung einfach deine möglichen Werte mit Semikolon getrennt einfügen.
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

Benutzeravatar
klana
Beiträge: 1099
Registriert: 08.02.2015, 08:37
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 66 Mal
Danksagung erhalten: 27 Mal

Re: Per Skript Systemvariable Typ Werteliste ändern

Beitrag von klana » 09.12.2017, 17:07

Hallo Adrian-01,

schau doch mal hier....

https://www.blogging-it.com/code-snippe ... cript.html

das hat mir auch schon geholfen.

Gruß
Klana
Gruß Klana
Es ist nett, wichtig zu sein. Aber es ist wichtiger, nett zu sein.

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“