NodeRED: per Editor unlöschbaren Node entfernen

Neulich hatte ich einen Node, den ich im Web-Editor nicht mehr entfernen konnte. Sobald ich ihn konfiguriert oder gelöscht hatte, konnte ich nicht mehr deployen – der Deploy-Button blieb aktiv. Da half nur ein Reload des Editors im Browser, um wieder auf den Vorzustand zu gehen und deployen zu können.

Vermutliche Ursache

Den Node hatte ich aus einem Beispiel im Internet importiert. Der Node benötigte einen Konfigurations-Node, der jedoch bei mir nicht (mehr) vorhanden war.

Lösung

Ich hatte ein paar weitere Lösungsmöglichkeiten aus dem Web im Webeditor von NodeRED probiert:

  • Löschen aller anderen Nodes aus dem Flow, so dass er der einzige war und dann Löschen des Flows. Das war leider nicht von Erfolg gekrönt
  • Wenn man den Node exportiert, so sieht man im JSON die erwarteten Verknüpfungen. Da diese mit einer automatisch vergebenen ID kommen, kann man diese leider nicht einfach anlegen, obwohl der Name gleich ist.

Da ich RedMatic einsetze, befinden sich die Flows auf der CCU* in der Datei /usr/local/addons/redmatic/var/flows.json. Also musste ich den Node nur aus dieser Datei entfernen. Folgende Schritte habe ich dazu ausgeführt:

  1. Backup: Führe ein Backup Deiner CCU*-Konfiguration über die Systemsteuerung durch (siehe auch RedMatic-Backup).
  2. ssh aktivieren: Falls du den SSH-Zugang zu deiner CCU* bereits eingerichtet hast, kannst du diesen Punkt überspringen. In der CCU-Systemsteuerung deiner RaspberryMatic ist im Punkt „Sicherheit“ die Sektion „SSH“ zu finden. Diese muss für die folgenden Schritte konfiguriert sein. Verwende für das Passwort wieder dein Passwort-Tool, um ein sicheres Passwort zu generieren und es dort abzuspeichern.
  1. NodeRED stoppen: Dazu gehst du in die Systemsteuerung deiner CCU und dort auf das Addon „RedMatic“.
NodeRED stoppen
  1. zu bearbeitende Datei holen: In der aktuellen Version von RedMatic gibt es In der Datei, die die Flows enthält, vermutlich aus Platzgründen, keine Zeilenumbrüche mehr. Man kann die Datei zwar auch vor Ort im vi editieren, besser bearbeitet es sich jedoch mit einem Editor, der JSON besser darstellen kann. Dazu holt man sich die Datei per scp, alternativ auch per WinSCP auf seinen Rechner.
# ohne aktivierte "Projekte"
scp <ccu-Name/IP-Adresse>/usr/local/addons/redmatic/var/flows.json ~/Downloads

# mit aktivierten "Projekten"
scp <ccu-Name/IP-Adresse>/usr/local/addons/redmatic/var/projects/flows.json ~/Downloads
  1. Bearbeiten der Datei: Ich nutze unter Linux den Editor „Visual Studio Code“ von Microsoft, mit dem man die JSON-Datei formatieren kann, so das sie hübsch aussieht. Sichere Dir am Besten die Datei, bevor Du sie bearbeitest.
VisualStudioCode
formatierte Flows

  1. Löschen des Flows: Nun suchst du den defekten Flow anhand seines Namens und löscht die komplette Sektion zwischen der öffnenden geschweiften Klammer{“ und der zugehörigen schließenden geschweiften Klammer sowie dem nachfolgenden Komma „},„. Im Beispiel lösche ich so ein inject-Node.
Löschen eines Nodes
  1. Zurückspeichern: Als vorletzten Schritt speicherst Du die Datei wieder an ihren Ursprungsort zurück.
# ohne aktivierte "Projekte"
scp ~/Downloads/flows.json <ccu-Name/IP-Adresse>/usr/local/addons/redmatic/var/

# mit aktivierten "Projekten"
scp ~/Downloads/flows.json <ccu-Name/IP-Adresse>/usr/local/addons/redmatic/var/projects/
  1. Start von RedMatic: Nach dem Starten des Addons RedMatic über die CCU-Systemsteuerung werden Änderungen durch NodeRed erkannt. Diese kannst du dann „Zusammenführen“. Der Node sollte nun verschwunden sein.

Updates

  • 24.09.2021: Aktualisierung der Vorgehensweise – die flows.json enthält keine Zeilenumbrüche mehr

Sag mir deine Meinung! (Kommentar-Regeln)

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.