Systemvariable lesen/schreiben

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

TeneKlima
Beiträge: 8
Registriert: 27.08.2013, 14:04

Systemvariable lesen/schreiben

Beitrag von TeneKlima » 16.01.2022, 18:14

Hi,
laut Script-Doku kann man das Objekt Systemvariable mit mehreren Methoden schreiben und lesen.

Ich habe das mal für eine boolsche Variable mit den Methoden State und Variable getestet.

Alle 4 Varianten führen zu dem Ergebnis true oder false
bis auf Schreiben mit State / Lesen mit Variable.
Jetzt lautet das Ergebnis 1 oder 0.

Was steckt dahinter?
Zuletzt geändert von Roland M. am 31.01.2022, 10:47, insgesamt 1-mal geändert.
Grund: Thema verschoben

MichaelN
Beiträge: 9534
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 692 Mal
Danksagung erhalten: 1604 Mal

Re: Systemvariable lesen/schreiben

Beitrag von MichaelN » 31.01.2022, 08:42

Man könnte mehr dazu sagen, wenn Du etwas konkreter geworden wärst.
So kann ich nur auf die offizielle EQ3-Doku verweisen und auf meine Tips in der Signatur.
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 +++

Matsch
Beiträge: 5345
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 113 Mal
Danksagung erhalten: 722 Mal

Re: Systemvariable lesen/schreiben

Beitrag von Matsch » 31.01.2022, 11:19

Mach es doch einfach so, wie die Doku es sagt: Allgemeingültig Schreiben mit .State(x) und Lesen mit .Value().
Dann siehst du auch auf den ersten Blick, ob du schreibst oder liest.

State() zum Lesen ist auch möglich (mit angeblicher Werteaktualisierung), aber ich habe darin noch nie einen Vorteil gesehen.

Das Schreiben auf eine SV ist auch mit .Variable(x) möglich, aber ein solcher Schreibzugriff läßt sich im Gegensatz zu .State(x) nicht protokollieren.
Wahrscheinlich kann niemand sagen, wozu diese Methode mal gedacht war, eigentlich ist sie überflüssig. Die o.g. genügen allen Anforderungen.
Analog das Lesen mit .Variable(). Achtung! Gibt den Wert immer als Zeichenkette zurück!

Torr_Samaho_2
Beiträge: 4
Registriert: 16.02.2022, 19:19
System: CCU

Re: Systemvariable lesen/schreiben

Beitrag von Torr_Samaho_2 » 16.02.2022, 19:32

Hallo.
Ich versuche laut Doku in einem Script eine Systemvariable des "open Weather"-Scriptes zu lesen. Leider wird immer Null angezeigt.
Zum prüfen frage ich im Testscript das Vorhandensein der Variable ab.
Die Variable ist vorhanden und hat einen Wert. Siehe Anghang.
Das Test-Abfrage-Script prüft das Vorhanden sein der Variable und sagt, es gibt sie nicht???

Ich bin ratlos. Die Variable ist im Openweather-Script und deswegen wollte ich sie nicht ändern.

Wo liegt mein Fehler?
Dateianhänge
Systemvariable_definiert.jpg
Variabler ist definiert
Systemvariable_Status.jpg
Variablenstatus mit Wert
Systemvariable_Status.jpg (21.38 KiB) 517 mal betrachtet
Systemvariable_Scriptabfrage-vorhanden.jpg
Abfrage-Test-Script

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

Re: Systemvariable lesen/schreiben

Beitrag von Black » 16.02.2022, 20:47

isVar() prüft das Vorhandensein einer SCRTPTVARIABLEN in der entsprechenden Ablaufebene.

es prüft nicht auf eine Systemvariable.

Systemvariablen gehen so:

Code: Alles auswählen

string sysvarName= "ichBinDerSysVarName";
object oID=dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarName);
if (oID) {WriteLine ("Gibt es");} else {WriteLine ("Gibts Nicht");}
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

schlichi
Beiträge: 385
Registriert: 26.08.2016, 19:26
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erding
Hat sich bedankt: 60 Mal
Danksagung erhalten: 26 Mal

Re: Systemvariable lesen/schreiben

Beitrag von schlichi » 16.02.2022, 21:29

Hallo,
gerne auch mit meiner aktuellen WindSpeed

Code: Alles auswählen

string sysvarName= "W-ETSE - Windgeschwindigkeit";
object oID=dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarName).Value();
if (oID) {WriteLine ("Gibt es");} else {WriteLine ("Gibts Nicht");}
WriteLine(oID # ' km/h');
Gruß
schlichi
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender) :roll:

Torr_Samaho_2
Beiträge: 4
Registriert: 16.02.2022, 19:19
System: CCU

Re: Systemvariable lesen/schreiben

Beitrag von Torr_Samaho_2 » 17.02.2022, 11:23

Danke.
Jetzt klappt es.
Doofe Frage: Wo findet man diesen speziellen Aufbau von dom.GetObject mit ID_SYSTEM_VARIABLES?? Ich finde nur eine Doku mit
var var1=dom.GetObject("Variablenname").

MichaelN
Beiträge: 9534
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 692 Mal
Danksagung erhalten: 1604 Mal

Re: Systemvariable lesen/schreiben

Beitrag von MichaelN » 17.02.2022, 11:36

Torr_Samaho_2 hat geschrieben:
17.02.2022, 11:23
Wo findet man diesen speziellen Aufbau von dom.GetObject mit ID_SYSTEM_VARIABLES?
Hier im Forum
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 +++

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

Re: Systemvariable lesen/schreiben

Beitrag von Black » 17.02.2022, 11:38

Ist hier im Forum eigentlich als "good practive" immer empfohlen und wohl auch meistens so umgesetzt.
Hat den Vorteil, dass du , sollte einmal eine Systemvariable und z.B. ein Programm mal zufällig gleich heissen, mit dem vollqualifizierten Zugriff über ID_SYSTEM_VARIABLES immer die Systemvariable erwischst, ohne das du da einen Zufallsfaktor drin hast.

Gute Editoren erlauben dir direkt die Auswahl der passenden Objekte wie z.B. Systemvariablen und generieren den nötigen vollqualifizierten Zugriff automatisch.

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

schlichi
Beiträge: 385
Registriert: 26.08.2016, 19:26
System: Alternative CCU (auf Basis OCCU)
Wohnort: Erding
Hat sich bedankt: 60 Mal
Danksagung erhalten: 26 Mal

Re: Systemvariable lesen/schreiben

Beitrag von schlichi » 17.02.2022, 11:56

Hallo,
.. gerne.
... verwende einfach mal die Suchfunktion, oben rechts, mit " dom.GetObject(ID_SYSTEM_VARIABLES) ";
... ergänze den Suchbegriff mit " Alchy "; ! Alchy deshalb, weil er der "Scriptmeister" :wink: ist .
... du erhälst als Ergebnis, 218 Seiten; :)
... es liegt nun an Dir dich etwas einzulesen; :wink:
... auf der 2. Seite findest Du den hinweisenden Beitrag;
... und hier (Im Themenbereich Script) die Dokumentation HomeMatic Skript Teil 2 Objektmodell V1.2

... sollte das "Deine" Doku sein, habe ich den Beitrag für die kommenden "Anfänger" geschrieben. :)

Gruß
schlichi

Während ich schrieb, haben bereits MichaelN und Black geantwortet.
Zuletzt geändert von schlichi am 18.02.2022, 09:28, insgesamt 1-mal geändert.
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender) :roll:

Antworten

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