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.
    • K
      ktsalti last edited by

      Hallo,

      ich habe eine Solaranlage von Enpal und aktuell greife ich die Daten über Node Red von der internen Website ab (Siehe Link).
      Ich habe jetzt von Enpal den lesenden Zugriff auf die InfluxDB erhalten.

      Wie kann ich die Daten allerdings in iobroker verwenden? Ich habe es mit dem influxdb-Adapter versucht. Aber dieser ist anscheinend nur zum schreiben gedacht?!

      Für homeassistant habe ich etwas gefunden: https://github.com/gickowtf/enpal-homeassistant

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

      Danke vorab!

      Marc Berg 1 Reply Last reply Reply Quote 0
      • 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

                                612
                                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