Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. InfluxDB auslesen (Enpal)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    InfluxDB auslesen (Enpal)

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

      Enpal, oh nein 😉
      Bei den Preisen, macht man da je Gewinn ?

      Zu deiner Frage, da ist doch sicherlich ein Wechselrichter verbaut.
      Eigentlich hat jeder eine Netzwerkschnittstelle, zumindest mein Deye und der neue Huawai Sun2000 der bald kommt 😉

      Damit kannst du quasi live lokal die Daten auslesen.

      Variante 2, wäre ein Shelly 3EM, der hat Stromzangen die um die 3 Phasen des Wechselrichters gehen, und dann den Strom über die 3 Phasen auslesen.. Vorteil der Wert ist live, Nachteil 100 Euro. Wechselrichter Variante kostet nix, ist aber in der Regel nicht live. Bei meinem Deye nur alle 5 Min.

      K 1 Reply Last reply Reply Quote 0
      • B
        berndsolar13 last edited by

        das github ding oben hat doch eine Lokale IP Adresse, also muss doch irgendwas verbaut sein, was die Daten speichert. Es gibt ja auch diese Victron Dinger, die quasi ein Raspi mit Victron BS sind. Haben die dir irgendwas smartes noch verbaut ?

        1 Reply Last reply Reply Quote 0
        • Marc Berg
          Marc Berg Most Active @ktsalti last edited by

          @ktsalti sagte in InfluxDB auslesen (Enpal):

          Welche Möglichkeit gibt es eine "fremde" InfluxDB anzuzapfen um die Daten in iobroker zu verwenden?

          Ich habe den Link nur überflogen, ist es so, dass du im Moment die Daten mit NodeRed von der Website ausliest und das jetzt durch eine lokale Lösung ersetzen möchtest? Läuft die Influxdb lokal?
          Wenn du sowieso schon Node Red im Einsatz hast, könntest du die Influx-Nodes verwenden, um die DB abzufragen und die Werte nach ioBroker zu schieben.
          Nachteil der Lösung wird aber bleiben, dass du die Werte nicht in Echtzeit siehst, sondern in regelmäßigen Abständen abfragst. Ich könnte mir vorstellen, dass da keine zu kurzen Intervalle zulässig sind.

          1 Reply Last reply Reply Quote 0
          • K
            ktsalti @berndsolar13 last edited by

            Hi,

            @berndsolar13
            Bezüglich Enpal - der Preis war im Mittefeld und mittlerweile biete Sie die Anlagen als "Kauf auf raten" anstatt der Miete an. Das war für uns schon sehr attraktiv. Außerdem war die Anlage in 7 Wochen auf dem Dach und im Netz.

            Der Wechselrichter ist im Netzwerk und eine eine Stromzange wurde auch verbaut. Diese Daten sehe ich auch über Enpal-App 😕 oder auch die Lokale Website welche ich aktuell über NodeRed abfrage.

            @Marc-Berg
            Ja, die Influxdb läuft lokal in meinen Netzwerk auf der "Enpal-Box". Node Red habe ich auch erst seit 14 Tagen im Einsatz und fuchse mich langsam rein. Danke für den Hinweis mit den Influx-Nodes. Ich werde mich mal in der Richtung einlesen
            Cool wäre natürlich ein fertiger Adapter 🙂

            Viele Grüße
            Marcus

            Marc Berg B 2 Replies Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active @ktsalti last edited by Marc Berg

              @ktsalti sagte in InfluxDB auslesen (Enpal):

              Danke für den Hinweis mit den Influx-Nodes. Ich werde mich mal in der Richtung einlesen

              Im einfachsten Fall reicht so ein Mini-Flow für einen Wert.

              ce2f273f-9592-4350-827b-62e8bec2b4cd-grafik.png

              [
                  {
                      "id": "218054e9c754e634",
                      "type": "influxdb in",
                      "z": "b5b89fec99d9c702",
                      "influxdb": "4d3e21e6d3a637e2",
                      "name": "Abfrage",
                      "query": "from(bucket: \"iobroker\")\n  |> range(start: -1d)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"meinMeasurement\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> last()",
                      "rawOutput": false,
                      "precision": "",
                      "retentionPolicy": "",
                      "org": "home",
                      "x": 280,
                      "y": 200,
                      "wires": [
                          [
                              "fe6e269f2728a0d2"
                          ]
                      ]
                  },
                  {
                      "id": "a73071c713e247d8",
                      "type": "inject",
                      "z": "b5b89fec99d9c702",
                      "name": "start ->",
                      "props": [
                          {
                              "p": "payload"
                          },
                          {
                              "p": "topic",
                              "vt": "str"
                          }
                      ],
                      "repeat": "",
                      "crontab": "",
                      "once": false,
                      "onceDelay": 0.1,
                      "topic": "",
                      "payload": "",
                      "payloadType": "date",
                      "x": 150,
                      "y": 200,
                      "wires": [
                          [
                              "218054e9c754e634"
                          ]
                      ]
                  },
                  {
                      "id": "df157695c51645d4",
                      "type": "ioBroker out",
                      "z": "b5b89fec99d9c702",
                      "name": "-> to ioB",
                      "topic": "0_userdata.0.example_state",
                      "ack": "true",
                      "autoCreate": "false",
                      "stateName": "",
                      "role": "",
                      "payloadType": "",
                      "readonly": "",
                      "stateUnit": "",
                      "stateMin": "",
                      "stateMax": "",
                      "x": 620,
                      "y": 200,
                      "wires": []
                  },
                  {
                      "id": "fe6e269f2728a0d2",
                      "type": "change",
                      "z": "b5b89fec99d9c702",
                      "name": "Value extrahieren",
                      "rules": [
                          {
                              "t": "set",
                              "p": "payload",
                              "pt": "msg",
                              "to": "payload._value",
                              "tot": "jsonata"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 450,
                      "y": 200,
                      "wires": [
                          [
                              "df157695c51645d4"
                          ]
                      ]
                  },
                  {
                      "id": "4d3e21e6d3a637e2",
                      "type": "influxdb",
                      "hostname": "127.0.0.1",
                      "port": "8086",
                      "protocol": "http",
                      "database": "database",
                      "name": "influx2",
                      "usetls": false,
                      "tls": "",
                      "influxdbVersion": "2.0",
                      "url": "http://influxdb2:8086",
                      "rejectUnauthorized": false
                  }
              ]
              

              Wenn es mehr Werte werden, könnte man diesen Duplizieren oder alternativ mit einer globaleren Abfrage und ein wenig Aufbereitungslogik arbeiten.

              Cool wäre natürlich ein fertiger Adapter

              Den wirst du programmieren müssen ...

              K 2 Replies Last reply Reply Quote 0
              • B
                berndsolar13 @ktsalti last edited by berndsolar13

                @ktsalti sagte in InfluxDB auslesen (Enpal):

                Der Wechselrichter ist im Netzwerk und eine eine Stromzange wurde auch verbaut.

                wenn du den Wechselrichter kennst, brauchst ja nur drauf schauen, und deren IP Adresse hast, siehst du ja in der Fritzbox, dann hast du doch "normal" alles was du brauchst.

                Jetzt musst du nur noch schauen, ob es dafür einen Adapter gibt, oder eine andere Lösung.
                Als erstes würde ich die IP Adresse des Wechselrichters aufrufen.
                Falls Enpal das Standard Passwort nicht geändert hat, solltest du so lokal die Daten abfragen können. Denn irgendwie kommen die ja von deinem Gerät auch zum Enpal Server.

                Also Wechselrichter + IP raus finden, und aufrufen, und dann nach einer Möglichkeit suchen, die Daten in den Iobroker zu bekommen. Lokal ist immer besser, wie der Umweg über die Cloud..

                1 Reply Last reply Reply Quote 0
                • K
                  ktsalti @Marc Berg last edited by

                  @marc-berg

                  Vielen Dank!
                  Ich werde es so probieren und wenn alles auch klappt den Eintrag duplizieren. So ist es ja auch bei der aktuellen Abfrage der internen Website. Find es halt nur besser, wenn ich die DB abfrage anstatt eine Website auszulesen. Brauch dafür nur mal ein paar ruhige Stunden ohne Frau im Haus.

                  @berndsolar13
                  Die DB ist lokal im Netzwerk und ich gehe nicht über die Cloud. Da ich in der DB noch mehr Daten habe (Akku, Wallbox, Wechselrichter, Stromverbrauch) möchte ich gar nicht weiter versuchen direkt auf die Wallbox zu gehen. Außerdem hat Enpal auch das Passwort geändert 😑
                  Trotzdem Danke für die Idee - manchmal sieht man ja den Wald vor lauter Bäumen nicht 😉

                  1 Reply Last reply Reply Quote 0
                  • K
                    ktsalti @Marc Berg last edited by

                    @marc-berg

                    Vielen Dank nochmal - hat ne ganze Weile gedauert eh ich dahinter gestiegen bin, aber es hat jetzt geklappt!
                    Ich habe die ersten 2x Werte aus der influxdb in iobroker und der Rest ist nurnoch Fleißarbeit. Ich muss nur mal sehen, welche Werte ich wirklich brauche, bzw. wie sie in der DB heißen 🙂

                    C 1 Reply Last reply Reply Quote 0
                    • C
                      Conector777 @ktsalti last edited by

                      @ktsalti hey erstmal ich bin auf deinen Post gestoßen und bin auch vor dem selben Problem, kannst du mir evtl. Sagen wie man die influxdb anspricht über ioBroker?

                      Über eine kleine Hilfestellung wäre ich echt dankbar 😉

                      K K 2 Replies Last reply Reply Quote 0
                      • K
                        ktsalti @Conector777 last edited by

                        @conector777

                        Ich habe mein Node-Red-Script einmal exportiert. Schau mal ob du damit klar kommst.
                        Bin da selber kein Profi - aber es funktioniert 🙂

                        flows (2).json

                        1 Reply Last reply Reply Quote 0
                        • C
                          Conector777 last edited by

                          Vielen Dank

                          Werde wahrscheinlich auch die Erweiterung für node installieren müssen oder? Da er bei mir den influx Befehl nicht kennt🙈🙈

                          Aber ich denke ich komme klar damit ansonsten Frage ich noch ein paar Mal doof 🙈🙈

                          Vielen dank

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            ktsalti @Conector777 last edited by

                            @conector777
                            Ja, ich glaub die haben ich damals auch installiert.
                            Wenn man das nur einmal macht und jetzt läuft es einfach so, vergisst man das es wieder 😁

                            1 Reply Last reply Reply Quote 0
                            • K
                              kdtcat @Conector777 last edited by

                              @conector777 Falls Du noch nicht weiter bist, hätte ich noch ein paar Tipps. Ich war jetzt erfolgreich beim Zugriff auf die Influxdb in der Enpal Box.
                              Als erstes habe ich den Influxdb Adapter installiert und für den Zugriff auf Enpal konfiguriert. Alle notwendigen Parameter findet man auf der Webseite Seiner Enpal Box.
                              Als nächstes habe ich ein Javascript mit Blockly gebastelt, um gezielt einzelne Werte zu holen und diese als Iobroker Objekt abzulegen(userdata.0). Dieses Script läuft z.B. alle 3 Minuten und schreibt immer den aktuellen Wert ins Objekt.

                              var result, test1, test2;
                              
                              
                              schedule("*/3 * * * *", async () => {
                                result = 'Anfang';
                                sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Energy.Battery.Charge.Level")', async (result) => {
                                  test1 = (await jsonataExpression(result,'*[0]._value '));
                                });
                                setStateDelayed('0_userdata.0.Enpal.BatteryLevel', Math.round(test1 * 100) / 100, true, parseInt(((0) || '').toString(), 10), false);
                                result = !''.length;
                                sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Power.Consumption.Total")', async (result) => {
                                  test2 = (await jsonataExpression(result,'*[0]._value '));
                                });
                                console.info("influxdb.0: " + "");
                                setStateDelayed('0_userdata.0.Enpal.PowerConsumptionTotal', test2, true, parseInt(((0) || '').toString(), 10), false);
                              });
                              
                              

                              Um jetzt noch eine anständige Historie zu erhalten, habe ich ein zweites Script gemacht, welches einen Trigger auf Wertänderung des Objekts setzt und bei Änderung das Ganze in eine beliebige Historien Anwendung übernimmt. In meinem Fall eine CCU.

                              on({ id: [].concat(['0_userdata.0.Enpal.BatteryLevel']), change: 'ne' }, async (obj) => {
                                let value = obj.state.val;
                                let oldValue = obj.oldState.val;
                                setStateDelayed('hm-rega.0.13211', getState('0_userdata.0.Enpal.BatteryLevel').val, false, parseInt(((0) || '').toString(), 10), false);
                              });
                              

                              Happy Coding.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              531
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              5
                              14
                              2975
                              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