Systemvariable per Email

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 07.09.2017, 11:48

Hallo, ich sehe das mir hier geholfen werden soll ...;-) => DANKE
leider jedoch verstehe ich das so noch nicht.

Wenn ich den Regensensor direkt abfrage ... funktioniert es.
var v4 = dom.GetObject("BidCos-RF.KEQ0xxxx154:1.STATE").Value();
Wie jedoch muss dann eine Systemvariable abgefragt werden.

Danke, Bernd

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Systemvariable per Email

Beitrag von Xel66 » 07.09.2017, 11:57

Was mir noch auffält, Du hast sowohl das Gerät als auch die Systemvariable gleich benannt. Gerade bei der Verarbeitung durch Scripte kann dieses merkwürdige Effekte haben, da der gleiche Name auf verschiedene Ziele verweist.

Für die Abfrage von Sensoren und Aktoren wäre Value auch die richtige Syntax, denn bei State wird das Gerät neu abgefragt. Das kann gerade bei Funkkomponenten, die ihre Datentelegramme nur per Broadcast aussenden, zu Problemen führen. Value ist immer der der CCU letzte bekannte Zustand (welches je der Zustand ist, der das Programm getriggert hat - also identisch sein sollte). Die Abfrage von State kann Dein Funkaufkommen erhöhen und zu Lasten des Duty Cycle gehen. Systemvariablen können aber per State abgefragt werden. Das aber nur am Rande.
BJS hat geschrieben:Wie jedoch muss dann eine Systemvariable abgefragt werden.
Über ihren von anderen Bezeichnungen verschiedenen Namen (siehe oben).

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

BadenPower

Re: Systemvariable per Email

Beitrag von BadenPower » 07.09.2017, 12:34

Xel66 hat geschrieben:Was mir noch auffält, Du hast sowohl das Gerät als auch die Systemvariable gleich benannt. Gerade bei der Verarbeitung durch Scripte kann dieses merkwürdige Effekte haben, da der gleiche Name auf verschiedene Ziele verweist.
Steht schon auf der vorherigen Seite. :mrgreen:
.

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 07.09.2017, 12:45

Upsss…. Das war schon einmal der richtiger Hinweis = DANKE

Variable umbenannt in SV-Regensonsor …. Angepasst und schon gibt es die Werte „false“ und „true“ in der Mail.

Wobei es egal zu sein scheint ob man value oder state nimmt.…
var v4 = dom.GetObject('SV-Regensensor').Value(); oder var v4 = dom.GetObject('SV-Regensensor').State();

Jetzt wäre noch interessant, ob man die in der Variablen benannten Wertebezeichnungen (REGEN bzw, NÄSSE - TROCKEN) in die Mail schreiben kann.
Ich probiere hier mal ein wenig rum …. Bernd

PS: BadenPower =>
Danke auch Dir … jedoch habe ich das was Du geschrieben hast nicht umsetzen bzw. greifen können, da ich es leider nicht verstanden habe.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Systemvariable per Email

Beitrag von alchy » 07.09.2017, 14:21

[ERKLÄRBÄRMODUS]

Kein Objekt (Systemvariable, Programm, Gerät, Kanal.....) darf heissen wie ein anderes ! es sei denn man umgeht diesen Bug in dem man bei der Abfrage gezielter nachfragt.

BadenPower meint, das was hier mehrfach immer wieder Thema ist.

Code: Alles auswählen

var v4 = dom.GetObject("Regensensor").Value();
versucht den Wert des Objektes Regensensor auszulesen. Hat man mehrere Objekte mit selben Namen, kann (und wird :mrgreen: es) schief gehen.

Nimmt man dagegen:

Code: Alles auswählen

var v4 =  dom.GetObject(ID_SYSTEM_VARIABLES).Get("Regensensor").Value(); 
wird direkt die Systemvariable Regensensor gesucht und dadurch auch im Falle einer mehrfachen Verwendung desselben Namen das richtige Objekt ausgelesen.
Warum? Da es keine 2 Systemvariablen mit Namen Regensensor geben kann (theoretisch zumindest), denn wenn du versuchst eine 2. Systemvariable als Regensensor anzulegen, wird eine 1 angehangen.
Da hat der Hersteller mal aufgepasst, ansonsten aber nicht. [EDIT] ansonsten nicht konsequent genug oder allumfänglich aufgepasst.[/EDIT]



[/ERKLÄRBÄRMODUS]


Du kannst es entweder so machen:

Code: Alles auswählen

load tclrega.so
array set values [rega_script { 

if ( dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Regensonsor").Value() ) { 
var v4 = "Regen"; }else { var v4 = "kein Regen"; }

} ]

set v4 $values(v4)
aber es sollte auch

Code: Alles auswählen

load tclrega.so
array set values [rega_script { 

var v4 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Regensensor")).ValueName(); 

} ]

set v4 $values(v4)
funktionieren bei einer Logikvariablen.

Alchy
Zuletzt geändert von alchy am 07.09.2017, 20:32, insgesamt 1-mal geändert.
Grund: strike & [EDIT]

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

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

Re: Systemvariable per Email

Beitrag von blackhole » 07.09.2017, 14:33

alchy hat geschrieben:Da es keine 2 Systemvariablen mit Namen Regensensor geben kann (theoretisch zumindest), denn wenn du versuchst eine 2. Systemvariable als Regensensor anzulegen, wird eine 1 angehangen.
Da hat der Hersteller mal aufgepasst, ansonsten aber nicht.
Bei Programmnamen ist das doch auch so, oder? Da wird bei Namensgleichheit auch automatisch eine "1" angehangen.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Systemvariable per Email

Beitrag von alchy » 07.09.2017, 14:41

Ja, klar und wo ist die Frage?
Hab ich etwas anderes Geschrieben?

Aber es wird eben nicht verhindert, wenn ich z.B. eine Systemvariable Alchy habe, das ich ein Programm Namens Alchy anlege, oder ein Gerät Names Alchy, Gewerk, Favorit ..... usw.
Sonst müsste man sich ja auch keine Gedanken darum machen.
Und genau das ist eben für mich ein Bug, hab ich auch schon zig mal geschrieben.

Alchy

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

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

Re: Systemvariable per Email

Beitrag von blackhole » 07.09.2017, 14:51

alchy hat geschrieben:Ja, klar und wo ist die Frage?
Hab ich etwas anderes Geschrieben? ...
Ich antworte dir später, wenn die Lage etwas entspannter ist.

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 07.09.2017, 18:17

Hallo …. (aus allem anderen heraushaltend …)

Danke …. Nun habe ich jedenfalls was dazugelernt und funktionieren tut es auch, wie folgt.

Code: Alles auswählen

load tclrega.so
array set values [rega_script { 
var v4 = (dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV-Regensensor")).ValueName(); 
} ]
set v4 $values(v4)
Ich beende (für mich) jetzt einmal diese Frage und bedanke mich in aller Form ;-) für Eure Geduld.
Bernd

ReaSys
Beiträge: 32
Registriert: 27.10.2017, 15:10
Hat sich bedankt: 1 Mal

Re: Systemvariable per Email

Beitrag von ReaSys » 20.01.2018, 18:59

Hallo Ihr Lieben,

mit viel Interesse habe ich diesen Thread gelesen. Denn ich stehe vor einer ähnlichen Aufgabenstellung. Also ich habe einige Systemvariablen angelegt um z.B. die CPU Temperatur, die Uptime usw. auszulesen. Jetzt würde ich a. gerne noch den Batteriestatus usw. meiner s.usv sauber auf der Startseite angezeigt bekommen @BJS ich habe gesehen das bei Dir da Batteriestatus O.K. steht. Wie hast Du das angestellt?

Und b. möchte ich mir dann diese Systemvariablen in gewissen Zeitintervallen / oder bei bestimmten Änderungen per Email schicken. Könnt Ihr mir hier helfen? Der sollte ich zu dem Thema lieber einen neuen Thread öffnen?

Vielen Dank im Voraus
&
Viele Grüße
ReaSys

Antworten

Zurück zu „HomeMatic allgemein“