[GELÖST] Systemvariablen im Script

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Antworten
dieterdorn
Beiträge: 100
Registriert: 07.05.2017, 19:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: nähe Münster

[GELÖST] Systemvariablen im Script

Beitrag von dieterdorn » 15.05.2017, 21:23

Hallo,

ich habe beim Versuch, die Scripte von der CCu2 nach Raspberrymatic zu übernehmen festgestellt, dass sich die Methoden unterschiedlich verhalten. Beispiel:

var sysvar;
sysvar=dom.GetObject("Test");
WriteLine(sysvar.Value());

sysvar.Value(0);
WriteLine(sysvar.Value());

"Test" ist eine boolsche Variable.
Auf der CCU ist alles ok (Ausgabe ist true o. false), auf dem Raspberry nicht (ist 0 und wird nicht geändert)!

Mache ich etwas falsch oder übersehe ich etwas, da dieses Thema hier nicht zu finden ist?

In beiden Systemen ist jeweils der aktuellste Stand eingespielt.

Übrigens - Vielen Dank an alle hier im Forum! Ohne die User hier hätte ich vieles nicht so umsetzen können!
CCU2 seit 2014 (Echtbetrieb mit ca.73 Geräten)
Raspi seit 2017 (Testbetrieb mit 5 Geräten)
CCU2 im Büro, Uptime 324 Tage
Raspi seit 30.10.2017 (Echtbetrieb mit mehr als 78 Geräten, 140 Programme, 18 Scripte), längste Uptime 184 Tage
Raspi seit 30.10.2017 (Testbetrieb mit als 5 Geräten und Backup-System)
Einige Homematic IP-Geräte sowohl im Echt- als auch Testbetrieb
CuxD, E-Mail, CuxD Highcharts
CCU-Historian seit dem 09.04.2019

dieterdorn
Beiträge: 100
Registriert: 07.05.2017, 19:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: nähe Münster

Re: Systemvariablen im Script

Beitrag von dieterdorn » 22.05.2017, 15:45

dieterdorn hat geschrieben:Hallo,

ich habe beim Versuch, die Scripte von der CCu2 nach Raspberrymatic zu übernehmen festgestellt, dass sich die Methoden unterschiedlich verhalten. Beispiel:

var sysvar;
sysvar=dom.GetObject("Test");
WriteLine(sysvar.Value());

sysvar.Value(0);
WriteLine(sysvar.Value());

"Test" ist eine boolsche Variable.
Auf der CCU ist alles ok (Ausgabe ist true o. false), auf dem Raspberry nicht (ist 0 und wird nicht geändert)!

Mache ich etwas falsch oder übersehe ich etwas, da dieses Thema hier nicht zu finden ist?

In beiden Systemen ist jeweils der aktuellste Stand eingespielt.

Übrigens - Vielen Dank an alle hier im Forum! Ohne die User hier hätte ich vieles nicht so umsetzen können!

Hallo,

ich kann mir nicht vorstellen, dass keiner von denen, die auf Raspberry umgestiegen sind, keine Scripte mit Systemvariablen verwenden. Da aber keine Beiträge zu dem Thema gepostet werden, gehe ich mal davon aus, dass ich irgendetwas falsch mache oder zu blöd bin.
Kann mir denn wenigstens jemand sagen, dass das Setzem (Verändern) von Systemvariablen in Scripten unter Raspberrymatic definitiv funktioniert? Denn solange ich das nicht hinbekomme, kann ich nicht von der CCU2 weg und umstellen. Es wäre also schon wichtig, darüber etwas zu erfahren.

Vielen Dank im Voraus!

Gruß
CCU2 seit 2014 (Echtbetrieb mit ca.73 Geräten)
Raspi seit 2017 (Testbetrieb mit 5 Geräten)
CCU2 im Büro, Uptime 324 Tage
Raspi seit 30.10.2017 (Echtbetrieb mit mehr als 78 Geräten, 140 Programme, 18 Scripte), längste Uptime 184 Tage
Raspi seit 30.10.2017 (Testbetrieb mit als 5 Geräten und Backup-System)
Einige Homematic IP-Geräte sowohl im Echt- als auch Testbetrieb
CuxD, E-Mail, CuxD Highcharts
CCU-Historian seit dem 09.04.2019

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Systemvariablen im Script

Beitrag von nicolas-eric » 22.05.2017, 16:12

Tru/FAlse SysVar frage ich so ab, das funktioniert super:

Code: Alles auswählen

var xxx = dom.GetObject('KameraFLAlarm').State();
WriteLine(xxx);
Und setzen tu ich die wenn gewollt mit:

Code: Alles auswählen

dom.GetObject('KameraFLAlarm').State(true);

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Systemvariablen im Script

Beitrag von blackhole » 22.05.2017, 18:56

nicolas-eric hat geschrieben:... frage ich so ab ... :

Code: Alles auswählen

... .State() ...
Du solltest dir angewöhnen Abfragen möglichst mittels .Value() durchzuführen, auch wenn das bei Systemvariablen eine eher untergeordnete Rolle spielt.
Spätestens bei Zustandsabfragen von HM-Devices/Datenpunkten werden es dir jedoch der DC, die Batterielebensdauer, die Geldbörse und die Umwelt danken.

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Systemvariablen im Script

Beitrag von nicolas-eric » 22.05.2017, 19:02

Da mache ich es natürlich auch über Value.

Benutzeravatar
blackhole
Beiträge: 3730
Registriert: 21.07.2015, 14:03
System: CCU
Hat sich bedankt: 184 Mal
Danksagung erhalten: 587 Mal

Re: Systemvariablen im Script

Beitrag von blackhole » 22.05.2017, 19:06

Leute die das hier nur abgucken und auf andere Dinge übertragen (funktioniert ja super) machen das sicherlich nicht.
Daher besser den sauberen Weg veröffentlichen.

Wirklich super wird es erst dann, wenn man neben Value() noch die zugehörige Methode Get() benutzt.

dieterdorn
Beiträge: 100
Registriert: 07.05.2017, 19:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: nähe Münster

Re: Systemvariablen im Script

Beitrag von dieterdorn » 23.05.2017, 20:45

nicolas-eric hat geschrieben:Tru/FAlse SysVar frage ich so ab, das funktioniert super:

Code: Alles auswählen

var xxx = dom.GetObject('KameraFLAlarm').State();
WriteLine(xxx);
Und setzen tu ich die wenn gewollt mit:

Code: Alles auswählen

dom.GetObject('KameraFLAlarm').State(true);
Vielen Dank für die Antwort!
Aber genau das klappt bei mit nicht mit Raspberry, mit der CCU2 habe ich keine Probleme. Ich kann das Beispiel kopieren und auf der CCU2 geht's, aber nicht auf dem Raspi!
Ich habe übrigen eine Zählvariabler (integer) - mit der habe ich auch keine Probleme, ich drucke den Wert (.Value()) und kann ihn verändern (mit .State(x)) und alles ist so, wie es sein soll, auch auf dem Raspi.

Mein Beispiel in der ersten Anfrage ist nicht ganz vollständig, denn ich ändere einen Bool-Wert natürlich mit .State(true) oder .State(false)! Aber der Wert ändert sich eben nicht, und WriteLine ergibt nichts oder eine "0", auch wenn der Wert True ist.

Code: Alles auswählen

var xxx = dom.GetObject('Test');
WriteLine(xxx.Value());
WriteLine("xxx"+xxx.State(true));
WriteLine(xxx.Value());
Ausgabe:

Code: Alles auswählen

0
xxx
0
Ist das ein generelles Problem im Umgang mit boolsdchen Variablen unter dem Raspi?

Vielleicht hat ja jemand eine Idee, was da falsch läuft (oder ich falsch mache).

Vielen Dank!
CCU2 seit 2014 (Echtbetrieb mit ca.73 Geräten)
Raspi seit 2017 (Testbetrieb mit 5 Geräten)
CCU2 im Büro, Uptime 324 Tage
Raspi seit 30.10.2017 (Echtbetrieb mit mehr als 78 Geräten, 140 Programme, 18 Scripte), längste Uptime 184 Tage
Raspi seit 30.10.2017 (Testbetrieb mit als 5 Geräten und Backup-System)
Einige Homematic IP-Geräte sowohl im Echt- als auch Testbetrieb
CuxD, E-Mail, CuxD Highcharts
CCU-Historian seit dem 09.04.2019

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: Systemvariablen im Script

Beitrag von jmaus » 24.05.2017, 09:04

dieterdorn hat geschrieben:[...]
Mein Beispiel in der ersten Anfrage ist nicht ganz vollständig, denn ich ändere einen Bool-Wert natürlich mit .State(true) oder .State(false)! Aber der Wert ändert sich eben nicht, und WriteLine ergibt nichts oder eine "0", auch wenn der Wert True ist.

Code: Alles auswählen

var xxx = dom.GetObject('Test');
WriteLine(xxx.Value());
WriteLine("xxx"+xxx.State(true));
WriteLine(xxx.Value());
Ausgabe:

Code: Alles auswählen

0
xxx
0
Ist das ein generelles Problem im Umgang mit boolsdchen Variablen unter dem Raspi?

Vielleicht hat ja jemand eine Idee, was da falsch läuft (oder ich falsch mache).
Also bei mir funktioniert dein Beispiel:

Code: Alles auswählen

var xxx = dom.GetObject('Test');
WriteLine(xxx.Value());
WriteLine("xxx" # xxx.State(false));
WriteLine(xxx.Value());
Ausgabe:

Code: Alles auswählen

false
xxxtrue
false
Bist du dir sicher das "Test" wirklich eine Logikvariable ist und keine Integervariable? Denn bei mir gibt er wie du sehen kannst "true" und "false" zurück. Des Weiteren musst du überprüfen ob du nicht ein gerät mit namen "Test" oder ein anderes Objekt hast denn es kann sein das du nicht die Systemvariable mit GetObject("Test") zurück bekommst sondern eben was anderes. Verwende mal einen eineindeutigeren Namen. Und dann als letztes noch der Hinweis das du nicht mit "+" Strings zusammen setzen solltest sondern mit "#" deshalb gibt er bei dir in der "xxx" Zeile auch dahinter keinen Wert zurück.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

dieterdorn
Beiträge: 100
Registriert: 07.05.2017, 19:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: nähe Münster

Re: [GELÖST] Systemvariablen im Script

Beitrag von dieterdorn » 28.05.2017, 21:18

Vielen Dank an alle, die sich mit meinem Problem auseinander gesetzt haben. Es hat mich echt zur Verzweifelung getrieben. Aber nachdem ich hier den Eindruck gewonnen habe, dass es KEIN prinzipielles Problem mit dem Raspberry ist (Gott sei Dank!).
Also habe ich das gemacht, was man denn so tut in hoffnungslosen Fällen: man fängt bei Null an, sprich: alles neu aufgesetzt und siehe da, alles geht so, wie es soll!
Ich fände ja ein etwas fehlertoleranteres System (Rega defekt?) oder zumindest eine Reparaturmöglichkeit ganz gut, denn mein Echtsystem hat ja laut diversen Gesprächen auf dem Usertreffen auch eine beschädigte Rega.
Und irgendwie scheine ich mit meinen diversen und planlosen Versuchen und Tests irgendwas zerschossen zu haben - sollte eigentlich nicht sein, aber...

Nochmals Vielen Dank, denn die Info, dass es eigentlich laufen müsste, hilft dann eben auch viel ;-))
CCU2 seit 2014 (Echtbetrieb mit ca.73 Geräten)
Raspi seit 2017 (Testbetrieb mit 5 Geräten)
CCU2 im Büro, Uptime 324 Tage
Raspi seit 30.10.2017 (Echtbetrieb mit mehr als 78 Geräten, 140 Programme, 18 Scripte), längste Uptime 184 Tage
Raspi seit 30.10.2017 (Testbetrieb mit als 5 Geräten und Backup-System)
Einige Homematic IP-Geräte sowohl im Echt- als auch Testbetrieb
CuxD, E-Mail, CuxD Highcharts
CCU-Historian seit dem 09.04.2019

Antworten

Zurück zu „RaspberryMatic“