Systemvariable für Funktion auslesen

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

neystyle
Beiträge: 77
Registriert: 21.10.2016, 12:35
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Systemvariable für Funktion auslesen

Beitrag von neystyle » 18.05.2019, 14:50

Hallo,

ich würde gerne eine Systemvariable aus der CCU3 auslesen um sie in einer Funktion
zu benutzen. Wie lautet die Syntax dazu.

Ich möchte keine Extra node zum auslesen sondern den Wert per Scriptbefehl erhalten.

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Systemvariable für Funktion auslesen

Beitrag von hobbyquaker » 18.05.2019, 23:22

Dazu muss im ccu-connection Node das Speichern aller Zustände im Context aktiviert werden:
Bildschirmfoto 2019-05-18 um 23.18.00.png
Bildschirmfoto 2019-05-18 um 23.18.00.png (15.35 KiB) 5646 mal betrachtet
Dann kannst Du in einem Function Node mit

Code: Alles auswählen

global.get('ccu-localhost.sysvar.Anwesenheit.value')
auf z.B. den Inhalte der CCU-Variable "Anwesenheit" zugreifen.

Wie die Werte der CCU im Context organisiert sind kannst Du Dir in der Sidebar rechts mit dem Context-Browser anschauen.

Alternativ könntest Du aber auch ein CCU Sysvar Node nehmen und mit einem Change Node dahinter das selbst in den Context schreiben.

hmpos365
Beiträge: 56
Registriert: 07.02.2018, 13:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: 06686 Lützen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Systemvariable für Funktion auslesen

Beitrag von hmpos365 » 30.09.2019, 14:33

Hallo,
ich habe ein ähnliches Problem, bei dem ich zwar keine Variable, aber einen Datenpunkt eine Gerätes in der function-node direkt auslesen möchte.

Die gezeigte Variante mit der Variable 'Anwesenheit' funktioniert bei mir zwar, wenn ich aber einen Datenpunkt, wie bspw. bei einem Rollladenaktor, in der gleichen Weise verwende, erhalte ich keinen Wert zurück.

Code: Alles auswählen

context.set("l",global.get('ccu-localhost.values.BidCos-RF.PEQ2262334:1.LEVEL.value'));
VG
Hubert

RaspberryMatic z.Zt in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1
Weiterhin
RaspberryMatic als OVA unter VMware in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1

HenningK
Beiträge: 210
Registriert: 22.09.2012, 20:56
Hat sich bedankt: 5 Mal
Danksagung erhalten: 11 Mal

Re: Systemvariable für Funktion auslesen

Beitrag von HenningK » 30.09.2019, 20:11

Man kann auch eine globale NodeRED variable definiere und diese bei Änderung der CCU Variable aktualisieren.
Aus einer Function/Template/etc kann dann einfach auf die NodeRED variable zugegriffen werden.

Ich halte mittlerweile (fast) alle Daten in NodeRED Variablen.

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Systemvariable für Funktion auslesen

Beitrag von hobbyquaker » 30.09.2019, 20:18

hmpos365 hat geschrieben:
30.09.2019, 14:33
Die gezeigte Variante mit der Variable 'Anwesenheit' funktioniert bei mir zwar, wenn ich aber einen Datenpunkt, wie bspw. bei einem Rollladenaktor, in der gleichen Weise verwende, erhalte ich keinen Wert zurück.

Code: Alles auswählen

context.set("l",global.get('ccu-localhost.values.BidCos-RF.PEQ2262334:1.LEVEL.value'));
Ich vermute das liegt an den Punkten im Datenpunktnamen. Versuche mal so:

Code: Alles auswählen

global.get('ccu-localhost.values')['BidCos-RF.PEQ2262334:1.LEVEL'].value

hmpos365
Beiträge: 56
Registriert: 07.02.2018, 13:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: 06686 Lützen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Systemvariable für Funktion auslesen

Beitrag von hmpos365 » 01.10.2019, 07:46

Vielen Dank für die Hilfe. So funktioniert es jetzt!
Ich hatte schon die Vermutung, dass es an den Punkten bzw. Doppelpunkt in der Objektbezeichnung von Kanal und Datenpunkt handeln würde und habe x Varianten versucht. Aber die Vorgeschlagene hatte ich so nicht auf dem Plan.
VG
Hubert

RaspberryMatic z.Zt in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1
Weiterhin
RaspberryMatic als OVA unter VMware in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1

hmpos365
Beiträge: 56
Registriert: 07.02.2018, 13:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: 06686 Lützen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Systemvariable für Funktion auslesen

Beitrag von hmpos365 » 01.10.2019, 08:59

Ergänzende Frage:

Gibt es auch eine Möglichkeit, auf den Status von Geräten direkt und ohne Umweg über die in der ccu-connection-node gespeicherten Werte zuzugreifen?
Der Hintergrund ist die Zeitfrage, da die Aktualisierung in der ccu-connection-node vermutlich auch nur in Intervallen geschieht und das Problem dabei ist, ob der gerade abgefragte Wert noch der aktuelle ist.
VG
Hubert

RaspberryMatic z.Zt in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1
Weiterhin
RaspberryMatic als OVA unter VMware in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Systemvariable für Funktion auslesen

Beitrag von hobbyquaker » 01.10.2019, 17:41

Die Werte erhält der ccu-connection Node von den Schnittstellenprozessen per Push, d.h. sie sind immer aktuell. Ausnahme sind hier nur die Systemvariablen da die Rega keinen Push Mechanismus bietet, möglicher Workaround siehe https://github.com/rdmtc/RedMatic/wiki/ ... -poll-node

Ich selbst nutze den direkten Zugriff auf die Werte via Context übrigens gar nicht, arbeite immer mit dem "RPC Event" oder dem "Value" Node oder wenn ich abseits von Events auf die Werte zugreifen will mit dem "Get Value" Node (der eigentlich nichts anderes ist als ein komfortableres Frontend für den Zugriff auf den Context).

hmpos365
Beiträge: 56
Registriert: 07.02.2018, 13:03
System: Alternative CCU (auf Basis OCCU)
Wohnort: 06686 Lützen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Systemvariable für Funktion auslesen

Beitrag von hmpos365 » 01.10.2019, 23:11

Das mit dem "Value" bzw. "Get Value" node verstehe ich schon. Womit ich im Augenblick nichts anfangen kann ist der "RPC Event".
Wie kann man darüber oder damit auf Datenpunkte der Geräüte zugreifen?
VG
Hubert

RaspberryMatic z.Zt in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1
Weiterhin
RaspberryMatic als OVA unter VMware in Version 3.73.9.20231130 mit
RedMatic Version 7.2.1

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: Systemvariable für Funktion auslesen

Beitrag von hobbyquaker » 02.10.2019, 00:52

Der RPC Event Node greift nicht gezielt auf Datenpunkte zu. Er gibt die von den Schnittstellenprozessen eingehenden Datenpunkt-Events aus. Diese können über die Filter auf ein oder mehrere Datenpunkte eingeschränkt werden, eingehende Events werden dann nur ausgegeben wenn alle gesetzten Filter passen. So kannst Du z.B. sagen Du willst nur Events von Kanälen im Gewerk Heizung die den Datenpunkt ACTUAL_TEMPERATURE betreffen.

Antworten

Zurück zu „RedMatic“