Ich möchte globale Variablen aus Node Red auf dem letzten Stand auch nach einen Neustart wieder zur Verfügung haben.
Ich denke das geht über eine persitente Speicherung, kann aber nicht finden wie das geht.
Kann mir da jemand helfen ???
Ich möchte globale Variablen aus Node Red auf dem letzten Stand auch nach einen Neustart wieder zur Verfügung haben.
Ich denke das geht über eine persitente Speicherung, kann aber nicht finden wie das geht.
Kann mir da jemand helfen ???
Leider nicht ganz so einfach(mit Bordmitteln)
English :
https://nodered.org/docs/user-guide/context
https://nodered.org/docs/api/context/store/localfilesystem
Settings:
sudo nano ~/.node-red/settings.js
Beispiel:
flow.set(“testamat”, wert ,“file”);
var wert = flow.get(“testamat”, “file”) || 0 ;
Du musst in der settings.js
(NR Konfigurationsdatei) eintragen:
contextStorage: {
default: {
module: "localfilesystem"
}
},
Quelle: Node Red – Context-Variablen über Neustart behalten - SmartHome yourself
Aber nur wenn man keine SD-Karten benutzt.(Schreibzugriffe)
Guter Einwand , aber auch dafür gibt es eine Lösung:
In der besagten settings.js
folgene Einträge machen:
contextStorage: {
default : { module: "memory" },
Dateisystem: { module: "localfilesystem"}
},
Nun kann selbst entschieden werden, ob die Werte im Dateisystem, oder im Speicher abgelegt werden. Der Standard ist in diesem Fall der flüchtige Speicher.
flow.set("wert", "Wert im Speicher gespeichert");
flow.set("wert", "Wert im Dateisystem gespeichert", "Dateisystem");
Quelle: A guide to understanding 'Persistent Context' - General - Node-RED Forum
Wenn ich das hier lese, wären Helfer in HA glaube die einfachere Lösung
Warum??? Der einmalige Eintrag in der settings.js
ist nicht aufwendiger als das Anlegen eines Helfers in HA. Danach ist das Speichern und Lesen von Variablen in NR eher weniger aufwendig, als das dann alternativ notwendige Anlegen eines Helfers in HA für jede Variable. Aber natürlich ist es ja jedem selbst überlassen, welchen Weg er bestreiten möchte.
Ich habe eine in Home Assistant eingebetten NODE RED Installation und
über Samba Share Zugriff und finde dort
\addon_configs\a0d7b954_nodered\settings.js
funktioniert es damit ???
Zudem habe ich gefunden das es eine Funktion persistent-global-context gibt, die man nachinstallieren kann:
jedoch kann ich keine Anwendungsbeispiele dazu finden.
Hat das jemand schon mal verwendet ?
Was willst du damit erreichen? Wenn du einen global context auf “localfilesystem” hast wird der ja schon geschrieben. Diese Node ist scheinbar dafür gedacht dass du den context im Speicher hälst und dann alle x Minuten schreibst. Wäre für SD-Karten vorteilhaft. Aber wie oft willst du Werte speichern?
Mein System läuft auf einer SSD am Raspi 5.
Ich habe 3 globale Variable für eine Jalousiesteuerung die aus Home Assistant gesteuert wird und möchte, das die nach einem Neustart des Systems ( HA mit Node Red ) erhalten bleiben. Die Idee war das mit dem Ändern der Werte im HA die Variablen in Node Red geändert werden ( in einem Change Node ) und gleichzeitig in einer Datei gespeichert werden und nach einem Neustart wieder zur Verfügung stehen. Es soll nur Anlassbezogen bei einer Wertänderung gespeichert werden und nicht regelmäßig.
Warum das in HA nicht durch die Integration selbst beibehalten wird ist hier OT aber wundert mich erstmal.
Wie das Speichern möglich ist wurde dir schon gesagt, Helfer in HA selbst, in eine Datei mit entsprechenden Node, oder dem globalen Context im localfilesystem. Ich nutze das dritte selbst.
Context musst du in der Config aktivieren. Lesen/Schreiben kannst du dann entweder mit Funktionen machen oder z. B. mit
node-red-contrib-context-set-get (node) - Node-RED
Context selbst ist in der NR Doku erklärt, Link wurde auch oben schon geteilt.
Working with context : Node-RED
Am besten einfach mal testen, sollte dann selbsterklärend sein, alles Andere ist hier Spekulation und trägt nicht zur Klärung bei.
Ich habe das jetzt über die Settings.js eingestellt und die globalen Variablen bleiben nach dem Neustart erhalten.
Vielen Dank für die Hilfe!!!