NEWS
Ändern einer Variable innerhalb einer config.json
-
Hallo ihr,
es gehört bestimmt zu den Programmer Basics, aber ich habe es bisher nicht benötigt.
Ich möchte dass eine Variable in einer lokalen config.json Datei durch ein iobroker Skript (gerne Blockly) verändert wird.
Die config.json liegt auf meinem Pi im Homeverzeichnis.
Inhaltlich ist sie noch recht leer und sieht aktuell bloß so aus:
{ "variable": "Stefan" }
Wenn jemand nach Hause kommt, soll der entsprechende Name in die Variable gesetzt werden.
Diese wird dann von einem Python Skript abgerufen und auf einem Matrix LED Panel angezeigt.Ich fang gerade erst damit an Skripte zu erstellen, die außerhalb vom iobroker ausgeführt werden sollen.
Bisher klappt auch alles. Nur jetzt brauch ich das erste mal eine externe Variable die vom iobroker gesetzt wird.Bedanke mich schon einmal bei euch.
-
@alyxabyss Mit NodeRed könnte ich dir helfen, mit Blockly und JS nicht - da ich nicht weiß wie man da Dateien bearbeitet. Du musst aber in jedem Fall dem user iobroker - Zugriff auf das Homeverzeichnis des pi geben und der Datei geben. Das geht am Besten in dem Du diesem user in die Gruppe pi aufnimmst und in der Datei die Rechte anpasst, dass Gruppenmitglieder schreiben können.
-
NodeRed wäre auch okay. Will ja kein großes Skript draus machen.
Mir reicht es wenn es ganz unkompliziert lediglich die Variable schreibt und mehr nicht.Am besten erstelle ich einen neuen Datenpunkt wo dann immer der entsprechende Name rein gesetzt wird und das skript bei ändern dann die config.json lediglich abändert.
Das mit den rechten sollte kein Problem sein. Das bekomm ich hin.
-
@alyxabyss Gut ich mach dann mal einen Flow.
-
@mickym Super lieb
-
So du musst halt noch die Rechte anpassen im Moment wird in das Homeverzeichnis des iobrokers geschreiben:
und natürlich den Pfad zu Deinem Datenpunkt anpassen.
-
@mickym vielen dank. ich setz mich später wenn ich ruhe hab mal dran. Gebe dann feedback
-
@alyxabyss Ok - habs gerade noch im Homevz. des pi gecheckt - du must nur msg.filename wie folgt abändern:
Für die Rechte.
Füge den Benutzer iobroker in die Gruppe pi hinzu:
sudo usermod -aG pi iobroker
Du musst dann in jedem Fall die Maschine durchstarten.
Wenn Du nicht willst, dass der user iobroker weitere Dateien anlegen kann. Dann leg mit dem user pi die Datei config.json an und lass die Gruppe darauf schreiben:
chmod g+w config.json
pi@mwhome:~ $ chmod g+w config.json pi@mwhome:~ $ cat config.json {"variable":"Stefan"} pi@mwhome:~ $ cat config.json {"variable":"mickym"} pi@mwhome:~ $ ls -la config.json -rw-rw-r-- 1 pi pi 22 31. Mär 20:01 config.json
-
@mickym Danke es funktioniert. Ist zwar nicht die eleganteste Methode weil ich nur für diesen kleinen Flow nun NodeRed installieren musste. Aber es erfüllt ihren Zweck.
-
@alyxabyss Na ja vielleicht kann Dir ja noch jemand anders helfen, wenn Du dich mit diesem tollen Tool nicht weiter beschäftigen möchtest.
Ich glaub du kannst irgendeine Filesystem Bibliothek nutzen und dann kannst ja Blockly nutzen.
-
@alyxabyss sagte in Ändern einer Variable innerhalb einer config.json:
NodeRed wäre auch okay. Will ja kein großes Skript draus machen.
Mir reicht es wenn es ganz unkompliziert lediglich die Variable schreibt und mehr nicht.Am besten erstelle ich einen neuen Datenpunkt wo dann immer der entsprechende Name rein gesetzt wird und das skript bei ändern dann die config.json lediglich abändert.
Das mit den rechten sollte kein Problem sein. Das bekomm ich hin.
Da hattest Du ja geschrieben, dass NodeRed OK wäre, sonst hätte ich den Flow ja nicht gemacht.
-
@alyxabyss
Wenn Dir Blockly lieber ist, könntest Du im Blockly eine kleine JS-Funktion hinterlegen.
Per JS sollte es kein Problem sein, in eine Datei zu schreiben.Schau mal hier - vielleicht hilft das weiter:
https://forum.iobroker.net/topic/1586/gelöst-daten-eine-temperatursensors-in-eione-txt-datei-schreiben/3 -
@mickym ist ja auch okay. Macht ja was es soll. Damit komme ich erstmal klar. Und vielleicht nehm ich das ja auch zum Anlass mich mit NodeRed mal mehr zu beschäftigen. Es sieht ja interessant aus.