Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Anker Adapter

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Anker Adapter

Scheduled Pinned Locked Moved Entwicklung
401 Posts 58 Posters 98.4k Views 54 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E excalibur270

    @aherby Hier hänge ich jetzt auch. Habe im IOBroker bei meinem Mqtt jetzt den Ordner Solix drinnen. Aber leider steht da nur alive. keine weiteren Datenpunkte.
    Und sobald ich Putty schließe ist der Dienst auch beendet und Alive geht auf false

    Thomas BraunT Online
    Thomas BraunT Online
    Thomas Braun
    Most Active
    wrote on last edited by
    #32

    @excalibur270 sagte in Anker Adapter:

    Hier hänge ich jetzt auch.

    Mit dem docker?
    Ich mach das über einen service, natürlich ohne docker dann.

    Linux-Werkzeugkasten:
    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
    NodeJS Fixer Skript:
    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

    E 1 Reply Last reply
    0
    • Thomas BraunT Thomas Braun

      @excalibur270 sagte in Anker Adapter:

      Hier hänge ich jetzt auch.

      Mit dem docker?
      Ich mach das über einen service, natürlich ohne docker dann.

      E Offline
      E Offline
      excalibur270
      wrote on last edited by
      #33

      @thomas-braun nein ich habe die local Methode genommen. Wie gesagt. Solix taucht auf aber nur mit dem Status alive.
      Habe es mit eingeladenem Account und dem Hauptaccount von Anker versucht. Oder muss wie beim PSA noch ein Script laufen? Da bin ich bei meiner Suche nirgends drauf gestoßen.

      Thomas BraunT 1 Reply Last reply
      0
      • E excalibur270

        @thomas-braun nein ich habe die local Methode genommen. Wie gesagt. Solix taucht auf aber nur mit dem Status alive.
        Habe es mit eingeladenem Account und dem Hauptaccount von Anker versucht. Oder muss wie beim PSA noch ein Script laufen? Da bin ich bei meiner Suche nirgends drauf gestoßen.

        Thomas BraunT Online
        Thomas BraunT Online
        Thomas Braun
        Most Active
        wrote on last edited by Thomas Braun
        #34

        @excalibur270

        Wie sieht dein startup-Skript und die .service-Datei aus?
        Bei mir:

        echad@chet:~ $ cat /usr/lib/systemd/system/solix2mqtt.service
        [Unit]
        Description=Pushing Anker Solix data to mosquitto
        After=mosquitto.service
        Before=iobroker.service
        
        [Service]
        User=iobroker
        Group=iobroker
        ExecStart=/usr/local/bin/solix2mqtt/solix2mqtt.sh
        Type=simple
        # Restart=always
        
        
        [Install]
        WantedBy=multi-user.target
        #RequiredBy=network.target
        

        und

        echad@chet:~ $ cat /usr/local/bin/solix2mqtt/solix2mqtt.sh
        #!/bin/bash
        rm /usr/local/bin/solix2mqtt/auth.data;
        cd /usr/local/bin/solix2mqtt;
        S2M_USER="anker-app-user" S2M_PASSWORD="dessen_pw" S2M_COUNTRY=DE S2M_MQTT_URI=mqtt://host:1883 S2M_MQTT_USERNAME="iobroker" S2M_MQTT_PASSWORD="passwort" S2M_MQTT_CLIENT_ID="solix2mqtt" S2M_MQTT_TOPIC=solix S2M_VERBOSE=false npm run start
        

        Linux-Werkzeugkasten:
        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
        NodeJS Fixer Skript:
        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

        E 2 Replies Last reply
        0
        • Thomas BraunT Thomas Braun

          @excalibur270

          Wie sieht dein startup-Skript und die .service-Datei aus?
          Bei mir:

          echad@chet:~ $ cat /usr/lib/systemd/system/solix2mqtt.service
          [Unit]
          Description=Pushing Anker Solix data to mosquitto
          After=mosquitto.service
          Before=iobroker.service
          
          [Service]
          User=iobroker
          Group=iobroker
          ExecStart=/usr/local/bin/solix2mqtt/solix2mqtt.sh
          Type=simple
          # Restart=always
          
          
          [Install]
          WantedBy=multi-user.target
          #RequiredBy=network.target
          

          und

          echad@chet:~ $ cat /usr/local/bin/solix2mqtt/solix2mqtt.sh
          #!/bin/bash
          rm /usr/local/bin/solix2mqtt/auth.data;
          cd /usr/local/bin/solix2mqtt;
          S2M_USER="anker-app-user" S2M_PASSWORD="dessen_pw" S2M_COUNTRY=DE S2M_MQTT_URI=mqtt://host:1883 S2M_MQTT_USERNAME="iobroker" S2M_MQTT_PASSWORD="passwort" S2M_MQTT_CLIENT_ID="solix2mqtt" S2M_MQTT_TOPIC=solix S2M_VERBOSE=false npm run start
          
          E Offline
          E Offline
          excalibur270
          wrote on last edited by
          #35

          @thomas-braun Hey. Ich hab das nach der readme bei github gemacht. Das sieht iwie alles anders aus. ich denke ich werde das projekt auf eis legen. Dahingehend sind die kenntnisse nicht ausreichend.

          Thomas BraunT 1 Reply Last reply
          0
          • mickymM Online
            mickymM Online
            mickym
            Most Active
            wrote on last edited by
            #36

            Wieder mal eine blöde Frage - ich nutze zwar dieses Teil nicht. Aber der Service redet mqtt - da brauche ich keinen Adapter. Ich werde das wohl nie verstehen.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            Thomas BraunT 1 Reply Last reply
            0
            • E excalibur270

              @thomas-braun Hey. Ich hab das nach der readme bei github gemacht. Das sieht iwie alles anders aus. ich denke ich werde das projekt auf eis legen. Dahingehend sind die kenntnisse nicht ausreichend.

              Thomas BraunT Online
              Thomas BraunT Online
              Thomas Braun
              Most Active
              wrote on last edited by
              #37

              @excalibur270 sagte in Anker Adapter:

              Hey. Ich hab das nach der readme bei github gemacht.

              Das ist ja auch richtig. Ist mein Weg auch. Aber damit das dann auch mit dem System gestartet wird muss man das noch an sein System anpassen. Deswegen lege ich das dann als Service an, der dann über systemd gestartet wird. Das überlebt dann auch ein Logout des Users.

              Linux-Werkzeugkasten:
              https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
              NodeJS Fixer Skript:
              https://forum.iobroker.net/topic/68035/iob-node-fix-skript
              iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

              1 Reply Last reply
              0
              • mickymM mickym

                Wieder mal eine blöde Frage - ich nutze zwar dieses Teil nicht. Aber der Service redet mqtt - da brauche ich keinen Adapter. Ich werde das wohl nie verstehen.

                Thomas BraunT Online
                Thomas BraunT Online
                Thomas Braun
                Most Active
                wrote on last edited by
                #38

                @mickym
                Richtig, ist mqtt. Aber die Einrichtung ist etwas fummelig. Ich hab da auch länger für gebraucht, bis das richtig lief. Bei einem Adapter könntest du die Konfiguration halt über Eingabefelder führen. Und auch der Start wäre einfacher, wenn sich das in den ioBroker einfügen würde.

                Linux-Werkzeugkasten:
                https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                NodeJS Fixer Skript:
                https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                mickymM 1 Reply Last reply
                0
                • Thomas BraunT Thomas Braun

                  @mickym
                  Richtig, ist mqtt. Aber die Einrichtung ist etwas fummelig. Ich hab da auch länger für gebraucht, bis das richtig lief. Bei einem Adapter könntest du die Konfiguration halt über Eingabefelder führen. Und auch der Start wäre einfacher, wenn sich das in den ioBroker einfügen würde.

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  wrote on last edited by mickym
                  #39

                  @thomas-braun sagte in Anker Adapter:

                  @mickym
                  Richtig, ist mqtt. Aber die Einrichtung ist etwas fummelig. Ich hab da auch länger für gebraucht, bis das richtig lief. Bei einem Adapter könntest du die Konfiguration halt über Eingabefelder führen. Und auch der Start wäre einfacher, wenn sich das in den ioBroker einfügen würde.

                  na dafür bist du jedesmal davon abhängig, dass der Adapter alles so interpretiert, wie das Original und eine zusätzliche Fehlerquelle. Davon halte ich genauso viel, wie du von einer GUI auf dem Server.
                  Zudem muss ja der Service trotzdem laufen- ist ja wie bei zigbee2mqtt und allen anderen in meinen Augen überflüssigen Adaptern, für Geräte, die mqtt sprechen.(ausser den mqtt Adaptern selbst natürlich)

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  Thomas BraunT 1 Reply Last reply
                  0
                  • mickymM mickym

                    @thomas-braun sagte in Anker Adapter:

                    @mickym
                    Richtig, ist mqtt. Aber die Einrichtung ist etwas fummelig. Ich hab da auch länger für gebraucht, bis das richtig lief. Bei einem Adapter könntest du die Konfiguration halt über Eingabefelder führen. Und auch der Start wäre einfacher, wenn sich das in den ioBroker einfügen würde.

                    na dafür bist du jedesmal davon abhängig, dass der Adapter alles so interpretiert, wie das Original und eine zusätzliche Fehlerquelle. Davon halte ich genauso viel, wie du von einer GUI auf dem Server.
                    Zudem muss ja der Service trotzdem laufen- ist ja wie bei zigbee2mqtt und allen anderen in meinen Augen überflüssigen Adaptern, für Geräte, die mqtt sprechen.(ausser den mqtt Adaptern selbst natürlich)

                    Thomas BraunT Online
                    Thomas BraunT Online
                    Thomas Braun
                    Most Active
                    wrote on last edited by Thomas Braun
                    #40

                    @mickym

                    Ja, das ist der Nachteil von vorgeformten GUI- Lösungen. Du kannst nur das machen, was der Ersteller des GUI/des Adapters auch zugänglich macht.
                    Und eine zusätzliche Fehlerquelle und zusätzlicher Overhead ist es eigentlich auch, vollkommen korrekt.

                    Ist halt (tw. auch nur vermeintlich) einfacher zu bedienen/einzurichten.

                    Linux-Werkzeugkasten:
                    https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                    NodeJS Fixer Skript:
                    https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                    iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                    1 Reply Last reply
                    1
                    • Thomas BraunT Thomas Braun

                      @excalibur270

                      Wie sieht dein startup-Skript und die .service-Datei aus?
                      Bei mir:

                      echad@chet:~ $ cat /usr/lib/systemd/system/solix2mqtt.service
                      [Unit]
                      Description=Pushing Anker Solix data to mosquitto
                      After=mosquitto.service
                      Before=iobroker.service
                      
                      [Service]
                      User=iobroker
                      Group=iobroker
                      ExecStart=/usr/local/bin/solix2mqtt/solix2mqtt.sh
                      Type=simple
                      # Restart=always
                      
                      
                      [Install]
                      WantedBy=multi-user.target
                      #RequiredBy=network.target
                      

                      und

                      echad@chet:~ $ cat /usr/local/bin/solix2mqtt/solix2mqtt.sh
                      #!/bin/bash
                      rm /usr/local/bin/solix2mqtt/auth.data;
                      cd /usr/local/bin/solix2mqtt;
                      S2M_USER="anker-app-user" S2M_PASSWORD="dessen_pw" S2M_COUNTRY=DE S2M_MQTT_URI=mqtt://host:1883 S2M_MQTT_USERNAME="iobroker" S2M_MQTT_PASSWORD="passwort" S2M_MQTT_CLIENT_ID="solix2mqtt" S2M_MQTT_TOPIC=solix S2M_VERBOSE=false npm run start
                      
                      E Offline
                      E Offline
                      excalibur270
                      wrote on last edited by
                      #41

                      @thomas-braun hey. ich habe das jetzt mal so nachgebaut auf mein System bezogen. Nachher mal ausprobieren obs dann läuft. Wo laufen die werte dann auf?

                      Thomas BraunT 1 Reply Last reply
                      0
                      • E excalibur270

                        @thomas-braun hey. ich habe das jetzt mal so nachgebaut auf mein System bezogen. Nachher mal ausprobieren obs dann läuft. Wo laufen die werte dann auf?

                        Thomas BraunT Online
                        Thomas BraunT Online
                        Thomas Braun
                        Most Active
                        wrote on last edited by
                        #42

                        @excalibur270 sagte in Anker Adapter:

                        Wo laufen die werte dann auf?

                        Auf deinem mqtt-Broker. Musst du dann dort abholen, ich verwende dazu den mqtt-Adapter. Die Werte schleife ich dann noch durch ein Skript, das mir die Einzelwerte in entsprechende Datenpunkte legt.

                        Linux-Werkzeugkasten:
                        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                        NodeJS Fixer Skript:
                        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                        E 2 Replies Last reply
                        0
                        • Thomas BraunT Thomas Braun

                          @excalibur270 sagte in Anker Adapter:

                          Wo laufen die werte dann auf?

                          Auf deinem mqtt-Broker. Musst du dann dort abholen, ich verwende dazu den mqtt-Adapter. Die Werte schleife ich dann noch durch ein Skript, das mir die Einzelwerte in entsprechende Datenpunkte legt.

                          E Offline
                          E Offline
                          excalibur270
                          wrote on last edited by excalibur270
                          #43

                          Das kam jetzt bei mir. Alles gemacht. Mosqitto intalliert und eingerichtet. Die Skripte auf meinen Pi angepasst. Ich lass das glaube ich lieber sein. Dafür fehlt der Sachverstand.

                          > solix2mqtt@1.0.0 start
                          > node ./bin/app.js
                          
                          node:internal/modules/cjs/loader:1143
                            throw err;
                            ^
                          
                          Error: Cannot find module '/home/pi/solix2mqtt/bin/app.js'
                              at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
                              at Module._load (node:internal/modules/cjs/loader:981:27)
                              at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_ma                                                                             in:128:12)
                              at node:internal/main/run_main_module:28:49 {
                            code: 'MODULE_NOT_FOUND',
                            requireStack: []
                          
                          
                          1 Reply Last reply
                          0
                          • Thomas BraunT Thomas Braun

                            @excalibur270 sagte in Anker Adapter:

                            Wo laufen die werte dann auf?

                            Auf deinem mqtt-Broker. Musst du dann dort abholen, ich verwende dazu den mqtt-Adapter. Die Werte schleife ich dann noch durch ein Skript, das mir die Einzelwerte in entsprechende Datenpunkte legt.

                            E Offline
                            E Offline
                            excalibur270
                            wrote on last edited by excalibur270
                            #44

                            @thomas-braun Jetzt kommt was an. Als Json.
                            Magst beim Script dafür einmal helfen. Also nochmal?

                            Thomas BraunT mickymM 2 Replies Last reply
                            0
                            • E excalibur270

                              @thomas-braun Jetzt kommt was an. Als Json.
                              Magst beim Script dafür einmal helfen. Also nochmal?

                              Thomas BraunT Online
                              Thomas BraunT Online
                              Thomas Braun
                              Most Active
                              wrote on last edited by
                              #45

                              @excalibur270

                              Sieht so aus:

                              // where the mqtt messages arrive
                              
                              const mqttDatenpunktObjectId = 'mqtt.0.solix.site.NAMESETZEN.scenInfo';
                              
                              // where the states should appear
                              
                              const userDataFolder = '0_userdata.0.solix';
                              
                               
                              
                              // ############## end user config
                              
                               
                              
                              // receive
                              
                              on(mqttDatenpunktObjectId, (obj) => {
                              
                                const jsonString = obj.state.val;
                              
                                const jsonData = JSON.parse(jsonString);
                              
                               
                              
                                function createObjectsRecursively(parent, data) {
                              
                                  for (const key in data) {
                              
                                    const obj = data[key];
                              
                                    const stateName = `${parent}.${key}`;
                              
                                   
                              
                                    if (typeof obj === 'object') {
                              
                                      createObjectsRecursively(stateName, obj);
                              
                                    } else {
                              
                                     let value = obj;  
                              
                               
                              
                                      // Check if the state already exists. If it does, just update the value.
                              
                                      // If it does not exist create the states.
                              
                                      if (!existsState(stateName)) {
                              
                                        // If the state does not exist, create it and set the value
                              
                                        createState(stateName, value, {
                              
                                          name: key,
                              
                                          type: typeof value,
                              
                                          role: "value",
                              
                                          read: true,
                              
                                          write: true
                              
                                        });
                              
                                        log(`Created state ${stateName}`);
                              
                                        
                              
                                      } else {
                              
                                        setState(stateName, value, true);
                              
                                      }
                              
                                    }
                              
                                  }
                              
                                }
                              
                                 createObjectsRecursively(userDataFolder, jsonData);
                              
                              });
                              

                              Linux-Werkzeugkasten:
                              https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                              NodeJS Fixer Skript:
                              https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                              iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                              E 2 Replies Last reply
                              0
                              • E excalibur270

                                @thomas-braun Jetzt kommt was an. Als Json.
                                Magst beim Script dafür einmal helfen. Also nochmal?

                                mickymM Online
                                mickymM Online
                                mickym
                                Most Active
                                wrote on last edited by mickym
                                #46

                                @excalibur270 Als Alternative kannst Dir meinen NodeRed Flow anschauen, der legt Dir alle Datenpunkte automatisch an - egal ob Objekt, JSON, Array oder sonst was.

                                https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

                                Wenn Du aber lieber programmieren willst bzw. Codefragmente nutzen willst, dann nimm halt das Javascript.

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                E 1 Reply Last reply
                                0
                                • Thomas BraunT Thomas Braun

                                  @excalibur270

                                  Sieht so aus:

                                  // where the mqtt messages arrive
                                  
                                  const mqttDatenpunktObjectId = 'mqtt.0.solix.site.NAMESETZEN.scenInfo';
                                  
                                  // where the states should appear
                                  
                                  const userDataFolder = '0_userdata.0.solix';
                                  
                                   
                                  
                                  // ############## end user config
                                  
                                   
                                  
                                  // receive
                                  
                                  on(mqttDatenpunktObjectId, (obj) => {
                                  
                                    const jsonString = obj.state.val;
                                  
                                    const jsonData = JSON.parse(jsonString);
                                  
                                   
                                  
                                    function createObjectsRecursively(parent, data) {
                                  
                                      for (const key in data) {
                                  
                                        const obj = data[key];
                                  
                                        const stateName = `${parent}.${key}`;
                                  
                                       
                                  
                                        if (typeof obj === 'object') {
                                  
                                          createObjectsRecursively(stateName, obj);
                                  
                                        } else {
                                  
                                         let value = obj;  
                                  
                                   
                                  
                                          // Check if the state already exists. If it does, just update the value.
                                  
                                          // If it does not exist create the states.
                                  
                                          if (!existsState(stateName)) {
                                  
                                            // If the state does not exist, create it and set the value
                                  
                                            createState(stateName, value, {
                                  
                                              name: key,
                                  
                                              type: typeof value,
                                  
                                              role: "value",
                                  
                                              read: true,
                                  
                                              write: true
                                  
                                            });
                                  
                                            log(`Created state ${stateName}`);
                                  
                                            
                                  
                                          } else {
                                  
                                            setState(stateName, value, true);
                                  
                                          }
                                  
                                        }
                                  
                                      }
                                  
                                    }
                                  
                                     createObjectsRecursively(userDataFolder, jsonData);
                                  
                                  });
                                  
                                  E Offline
                                  E Offline
                                  excalibur270
                                  wrote on last edited by
                                  #47

                                  @thomas-braun Daaaaaaaaaaaaaaaaaaaankeschön

                                  1 Reply Last reply
                                  0
                                  • mickymM mickym

                                    @excalibur270 Als Alternative kannst Dir meinen NodeRed Flow anschauen, der legt Dir alle Datenpunkte automatisch an - egal ob Objekt, JSON, Array oder sonst was.

                                    https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

                                    Wenn Du aber lieber programmieren willst bzw. Codefragmente nutzen willst, dann nimm halt das Javascript.

                                    E Offline
                                    E Offline
                                    excalibur270
                                    wrote on last edited by
                                    #48

                                    @mickym Hey. Ja,das hatte ich auch schon gefunden.

                                    1 Reply Last reply
                                    0
                                    • Thomas BraunT Thomas Braun

                                      @excalibur270

                                      Sieht so aus:

                                      // where the mqtt messages arrive
                                      
                                      const mqttDatenpunktObjectId = 'mqtt.0.solix.site.NAMESETZEN.scenInfo';
                                      
                                      // where the states should appear
                                      
                                      const userDataFolder = '0_userdata.0.solix';
                                      
                                       
                                      
                                      // ############## end user config
                                      
                                       
                                      
                                      // receive
                                      
                                      on(mqttDatenpunktObjectId, (obj) => {
                                      
                                        const jsonString = obj.state.val;
                                      
                                        const jsonData = JSON.parse(jsonString);
                                      
                                       
                                      
                                        function createObjectsRecursively(parent, data) {
                                      
                                          for (const key in data) {
                                      
                                            const obj = data[key];
                                      
                                            const stateName = `${parent}.${key}`;
                                      
                                           
                                      
                                            if (typeof obj === 'object') {
                                      
                                              createObjectsRecursively(stateName, obj);
                                      
                                            } else {
                                      
                                             let value = obj;  
                                      
                                       
                                      
                                              // Check if the state already exists. If it does, just update the value.
                                      
                                              // If it does not exist create the states.
                                      
                                              if (!existsState(stateName)) {
                                      
                                                // If the state does not exist, create it and set the value
                                      
                                                createState(stateName, value, {
                                      
                                                  name: key,
                                      
                                                  type: typeof value,
                                      
                                                  role: "value",
                                      
                                                  read: true,
                                      
                                                  write: true
                                      
                                                });
                                      
                                                log(`Created state ${stateName}`);
                                      
                                                
                                      
                                              } else {
                                      
                                                setState(stateName, value, true);
                                      
                                              }
                                      
                                            }
                                      
                                          }
                                      
                                        }
                                      
                                         createObjectsRecursively(userDataFolder, jsonData);
                                      
                                      });
                                      
                                      E Offline
                                      E Offline
                                      excalibur270
                                      wrote on last edited by
                                      #49

                                      @thomas-braun Und jetzt wieder das. Was ist da falsch?

                                      Error: Cannot find module '/home/pi/solix2mqtt/bin/app.js'
                                          at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
                                          at Module._load (node:internal/modules/cjs/loader:981:27)
                                          at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
                                          at node:internal/main/run_main_module:28:49 {
                                        code: 'MODULE_NOT_FOUND',
                                        requireStack: []
                                      
                                      
                                      Thomas BraunT 1 Reply Last reply
                                      0
                                      • E excalibur270

                                        @thomas-braun Und jetzt wieder das. Was ist da falsch?

                                        Error: Cannot find module '/home/pi/solix2mqtt/bin/app.js'
                                            at Module._resolveFilename (node:internal/modules/cjs/loader:1140:15)
                                            at Module._load (node:internal/modules/cjs/loader:981:27)
                                            at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)
                                            at node:internal/main/run_main_module:28:49 {
                                          code: 'MODULE_NOT_FOUND',
                                          requireStack: []
                                        
                                        
                                        Thomas BraunT Online
                                        Thomas BraunT Online
                                        Thomas Braun
                                        Most Active
                                        wrote on last edited by
                                        #50

                                        @excalibur270 sagte in Anker Adapter:

                                        Und jetzt wieder das. Was ist da falsch?

                                        Wann wird die Meldung ausgelöst? Und ich würde solix2mqtt auch nicht in einem /home-Verzeichnis installieren, sondern in /usr/local/bin

                                        Auf meiner Kiste:

                                        echad@chet:~ $ ls -la /usr/local/bin/solix2mqtt/bin/app.js 
                                        -rw-r--r-- 1 iobroker iobroker 2949 Oct 21  2023 /usr/local/bin/solix2mqtt/bin/app.js
                                        echad@chet:~ $
                                        

                                        Linux-Werkzeugkasten:
                                        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                        NodeJS Fixer Skript:
                                        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                        E 1 Reply Last reply
                                        0
                                        • Thomas BraunT Thomas Braun

                                          @excalibur270 sagte in Anker Adapter:

                                          Und jetzt wieder das. Was ist da falsch?

                                          Wann wird die Meldung ausgelöst? Und ich würde solix2mqtt auch nicht in einem /home-Verzeichnis installieren, sondern in /usr/local/bin

                                          Auf meiner Kiste:

                                          echad@chet:~ $ ls -la /usr/local/bin/solix2mqtt/bin/app.js 
                                          -rw-r--r-- 1 iobroker iobroker 2949 Oct 21  2023 /usr/local/bin/solix2mqtt/bin/app.js
                                          echad@chet:~ $
                                          
                                          E Offline
                                          E Offline
                                          excalibur270
                                          wrote on last edited by
                                          #51

                                          @thomas-braun Der Akku vom Laptop war leer und die Konsole wurde geschlossen. Es wurde nichts mehr im IoBroker aktualisiert von der Solix. Also habe ich die Startdatei wieder eingegeben. Danach kam das.
                                          Ist gekürzt wegen der Userdaten

                                          echad@chet:~ $ cat /home/pi/solix2mqtt/solix2mqtt.sh
                                          #!/bin/bash
                                          rm /home/pi/solix2mqtt/auth.data;
                                          cd /home/pi/solix2mqtt;
                                          S2M_USER=
                                          
                                          Thomas BraunT 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          650

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe