Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ändern einer Variable innerhalb einer config.json

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Ändern einer Variable innerhalb einer config.json

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      AlyxAbyss last edited by

      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. 🙂

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @AlyxAbyss last edited by

        @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.

        A 1 Reply Last reply Reply Quote 1
        • A
          AlyxAbyss @mickym last edited by

          @mickym

          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.

          mickym 2 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @AlyxAbyss last edited by

            @alyxabyss Gut ich mach dann mal einen Flow. 😉

            A 1 Reply Last reply Reply Quote 1
            • A
              AlyxAbyss @mickym last edited by

              @mickym Super lieb 🙂

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @AlyxAbyss last edited by mickym

                @alyxabyss

                7113f680-414e-44fa-9364-9fb99eacd7ac-image.png

                So du musst halt noch die Rechte anpassen im Moment wird in das Homeverzeichnis des iobrokers geschreiben:

                [
                   {
                       "id": "456c94dd812b77f5",
                       "type": "ioBroker in",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "topic": "0_userdata.0.Test.person",
                       "payloadType": "value",
                       "onlyack": "",
                       "func": "all",
                       "gap": "",
                       "fireOnStart": "false",
                       "outFormat": "MQTT",
                       "x": 290,
                       "y": 3240,
                       "wires": [
                           [
                               "8fac7d97c23c1503"
                           ]
                       ]
                   },
                   {
                       "id": "7989ccc21f2dad1d",
                       "type": "file",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "filename": "filename",
                       "filenameType": "msg",
                       "appendNewline": true,
                       "createDir": false,
                       "overwriteFile": "true",
                       "encoding": "none",
                       "x": 1100,
                       "y": 3240,
                       "wires": [
                           []
                       ]
                   },
                   {
                       "id": "e6a8e0016d890542",
                       "type": "json",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "property": "payload",
                       "action": "",
                       "pretty": false,
                       "x": 730,
                       "y": 3240,
                       "wires": [
                           [
                               "84e0b3d256456e8b"
                           ]
                       ]
                   },
                   {
                       "id": "84e0b3d256456e8b",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "filename",
                               "pt": "msg",
                               "to": "/home/iobroker/config.json",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 910,
                       "y": 3240,
                       "wires": [
                           [
                               "7989ccc21f2dad1d"
                           ]
                       ]
                   },
                   {
                       "id": "8fac7d97c23c1503",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "rules": [
                           {
                               "t": "move",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.variable",
                               "tot": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 540,
                       "y": 3240,
                       "wires": [
                           [
                               "e6a8e0016d890542"
                           ]
                       ]
                   }
                ]
                

                und natürlich den Pfad zu Deinem Datenpunkt anpassen.

                dba428cc-c83f-4135-b5b5-1bfb7df09ce9-image.png
                8a15f518-67a6-44a0-bf17-d22f5da1dd39-image.png

                A 1 Reply Last reply Reply Quote 0
                • A
                  AlyxAbyss @mickym last edited by

                  @mickym vielen dank. ich setz mich später wenn ich ruhe hab mal dran. Gebe dann feedback 🙂

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @AlyxAbyss last edited by

                    @alyxabyss Ok - habs gerade noch im Homevz. des pi gecheckt - du must nur msg.filename wie folgt abändern:

                    fef8ac74-91d2-4a34-bf36-3a2173c64542-image.png

                    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
                    
                    A 1 Reply Last reply Reply Quote 0
                    • A
                      AlyxAbyss @mickym last edited by AlyxAbyss

                      @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.

                      mickym Codierknecht 2 Replies Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @AlyxAbyss last edited by mickym

                        @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.

                        1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @AlyxAbyss last edited by

                          @alyxabyss sagte in Ändern einer Variable innerhalb einer config.json:

                          @mickym

                          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.

                          A 1 Reply Last reply Reply Quote 1
                          • Codierknecht
                            Codierknecht Developer Most Active @AlyxAbyss last edited by

                            @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

                            1 Reply Last reply Reply Quote 1
                            • A
                              AlyxAbyss @mickym last edited by

                              @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.

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              802
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              549
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo