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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    InfluxDB auslesen (Enpal)

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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

                        792
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

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