Systemvariable lesen/schreiben
Moderator: Co-Administratoren
Systemvariable lesen/schreiben
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?
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
Grund: Thema verschoben
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Systemvariable lesen/schreiben
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.
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 +++
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 +++
-
- Beiträge: 5452
- Registriert: 30.05.2019, 11:37
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Chemnitz
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 741 Mal
Re: Systemvariable lesen/schreiben
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!
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!
-
- Beiträge: 4
- Registriert: 16.02.2022, 19:19
- System: CCU
Re: Systemvariable lesen/schreiben
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?
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
-
- Variablenstatus mit Wert
- Systemvariable_Status.jpg (21.38 KiB) 559 mal betrachtet
- Black
- Beiträge: 5483
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Systemvariable lesen/schreiben
isVar() prüft das Vorhandensein einer SCRTPTVARIABLEN in der entsprechenden Ablaufebene.
es prüft nicht auf eine Systemvariable.
Systemvariablen gehen so:
Black
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");}
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
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
-
- Beiträge: 395
- Registriert: 26.08.2016, 19:26
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Erding
- Hat sich bedankt: 61 Mal
- Danksagung erhalten: 29 Mal
Re: Systemvariable lesen/schreiben
Hallo,
gerne auch mit meiner aktuellen WindSpeed
Gruß
schlichi
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');
schlichi
... inzwischen autodidakter, fortgeschrittener Anfänger mit bestandener Einstiegsprüfung für den Expertenmodus Teil 3 (erfahrener Anwender)
-
- Beiträge: 4
- Registriert: 16.02.2022, 19:19
- System: CCU
Re: Systemvariable lesen/schreiben
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").
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").
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Systemvariable lesen/schreiben
Hier im ForumTorr_Samaho_2 hat geschrieben: ↑17.02.2022, 11:23Wo findet man diesen speziellen Aufbau von dom.GetObject mit ID_SYSTEM_VARIABLES?
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 +++
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 +++
- Black
- Beiträge: 5483
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Systemvariable lesen/schreiben
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
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
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
-
- Beiträge: 395
- Registriert: 26.08.2016, 19:26
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Erding
- Hat sich bedankt: 61 Mal
- Danksagung erhalten: 29 Mal
Re: Systemvariable lesen/schreiben
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" ist .
... du erhälst als Ergebnis, 218 Seiten;
... es liegt nun an Dir dich etwas einzulesen;
... 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.
.. 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" ist .
... du erhälst als Ergebnis, 218 Seiten;
... es liegt nun an Dir dich etwas einzulesen;
... 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)