Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. Adapter für Ecoflow Einbindung

    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

    Adapter für Ecoflow Einbindung

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Freevalley @btrompetter last edited by

      @btrompetter

      Die Frage kann ich Dir leider nicht beantworten. Dein Fehler sieht mir ähnlich aus wie dieser:

      https://forum.iobroker.net/topic/57337/fehler-25-bei-adapter-install-update-mit-npm8

      Vielleicht kannst du etwas davon ableiten...

      B 1 Reply Last reply Reply Quote 0
      • B
        btrompetter @Freevalley last edited by

        @freevalley Danke das hat geholfen, Kennst Du schon den Adapter von HomeAssistant? Der greift direkt auf die Ecoflow im lokalen Netz zu und liest sämtliche Daten aus die man auch in der App sehen kann. Man kann auch sämtliche Schalter damit betätigen. Ist mehr als über die API Schnittstelle.

        Newan F 2 Replies Last reply Reply Quote 0
        • Newan
          Newan @btrompetter last edited by

          @btrompetter Ich habe ihn mir angesehen, aber ich verstehe den python code nicht.
          Gibt es da mehr Infos oder woher stammen die Informationen vom Adapterhersteller zu der API?

          1 Reply Last reply Reply Quote 0
          • F
            Freevalley @btrompetter last edited by

            @btrompetter

            Sorry für die späte Antwort, ich war im Urlaub... Welchen Adapter meinst du genau? Ich finde nur den Adapter "Home-Assistant" zur Verbindung zur Home Assistent Software, dies habe ich nicht im Einsatz.

            1 Reply Last reply Reply Quote 0
            • M
              Maxtor62 @Newan last edited by

              @newan Vielen Dank für Deine Arbeit. Genial

              1 Reply Last reply Reply Quote 0
              • T
                tomtel289 @Newan last edited by

                @newan Hello and thanks for your work.
                I`m trying to use your adapter.
                ECOFLOW send me my appKey and my secretKey for my ECOFLOW in order to use the ECOFLOW API.
                Within the E-Mail from ECOFLOW there are an appKey and a secretKey. Both keys are equal. Is this correct?
                tomtel289

                Newan 1 Reply Last reply Reply Quote 0
                • Newan
                  Newan @tomtel289 last edited by

                  @tomtel289 no api key and secret are differend

                  1 Reply Last reply Reply Quote 0
                  • Netfreak25
                    Netfreak25 last edited by Netfreak25

                    Hallo zusammen,

                    Wollte mal meinen Senf dazugeben 🙂
                    Zu Anfang des Jahres habe ich keinerlei Infos zur API von Ecoflow gefunden. Das stört mich aber meistens nicht, und ich hab mit einer Men-In-The-Middle attacke weitergemacht und mir meine token aus der Android App stibitzt. Gleichzeitig konnte ich mir noch den Traffic der App anschauen und welche API Calls er ausführt.

                    Gesagt getan, lief - das ist halt nichts zum veröffentlichen, da ich die Keys manuell ausgelesen habe und es erneut machen muss wenn sie ablaufen.
                    Bringt ja nichts die Leute scharf zu machen wenn sie es nicht umsetzen können.

                    Nun gut, dann auf einmal lief nichts mehr (Das war zum Zeitpunkt der änderung der API) also wieder MITM und traffic anschauen. Hierbei viel mir auf das die App die Api eigentlich kaum noch nutzt, zumindest nicht um die Werte der Geräte zu erhalten. Ecoflow ist auf MQTT umgestiegen - find ich gut^^ - und sie haben mir auch direkt die Zugangsdaten für den MQTT Server bereitgestellt (Spass - aber im Traffic konnte ich sie finden)

                    Mit MQTT Explorer mal angesehen was dabei so rumkommt und dann direkt eine MQTT Instanz dafür erstellt. Als Rückgabe kommt ein JSON, was ich erstmal auf Objekte übersetzen muss. Die River 2 kam heute und die MQTT Nachrichten kommen leider im 0,5 Sekunden takt (Keine Ahnung wieso EcoFlow das macht, verbraucht ja auch Serverresourcen und Strom am Gerät???)

                    Habe nun da es sehr CPU lastig ist mal erneut geschaut ob die community etwas geschaffen hat zum pullen, und hier bin ich - tolle arbeit ich besorg mir nun via support mal einen API Key & Secret - der Adapter wurde offiziell gefunden und ohne Fehler installiert 😉

                    Hier mal einige links die ich nutzte um daten abzurufen:
                    "https://iot1.ecoflow.com/api/v1/devices/getDeviceData?sn=DAEXXXXXXXXXXXXXXX"
                    "https://iot1.ecoflow.com/api/V1/users/devices"
                    "https://iot1.ecoflow.com/api/v1/users/getInfo"
                    "https://iot1.ecoflow.com/api/v2/devices/getLatestPackInfo?sn=DAEXXXXXXXXXXXXXXX"

                    Und ein paar Konfigurations beispiele:
                    --data-binary "{"cfg":{"curr_mA":4000,"id":71},"sn":"DAEXXXXXXXXXXXXXXX"}" --compressed "https://iot1.ecoflow.com/api/v1/devices/configDevice"

                    --data-binary "{"cfg":{"cmdset":0,"curr_mA":0,"enabled":0,"id":49,"lcd_time":0,"max_chg_soc":100,"max_power":0,"min_dsg_soc":0,"mppt_mode":0,"out_freq":0,"out_voltage":0,"slowChgPower":0,"standby_mins":0,"standby_mode":0,"state":0,"work_mode":0,"xboost":0},"sn":"DAEXXXXXXXXXXXXXXX"}" --compressed "https://iot1.ecoflow.com/api/v1/devices/configDevice"

                    Dann habe ich eben mal in den Traffic geschaut und mal rausgesucht was für https calls es so gibt

                    https://api.ecoflow.com/iot-service/device/upgradeStatus?sn=R6XXXXXXXXXXXXXXX"

                    "https://api.ecoflow.com/iot-service/device/latestPackInfo?supportSelfRD=1&sn=R6XXXXXXXXXXXXXXX"

                    "https://api.ecoflow.com/app/redPointNotify/main"

                    "https://api.ecoflow.com/iot-service/retrieve/sn?page=1&size=20"

                    "https://api.ecoflow.com/iot-service/user/device"

                    "https://api.ecoflow.com/iot-service/user/device"

                    "https://oa.ecoflow.com/api/afterSales.customerOrder.getUnreadCount"

                    "https://api.ecoflow.com/iot-service/version/latest?platform=2&channel=1"

                    "https://api.ecoflow.com/app/sku/queryBySn?SN=R6XXXXXXXXXXXXXXX"

                    "https://api.ecoflow.com/usercenter/inuc/getUserInfo"

                    "https://api.ecoflow.com/usercenter/inuc/getUserInfo"

                    "https://api.ecoflow.com/iot-service/user/config/push"

                    "https://api.ecoflow.com/app/productClass/classTree"

                    "https://api.ecoflow.com/app/productClass/productUsingList"

                    hier gibt es die mqtt benutzerdaten:
                    "https://api.ecoflow.com/iot-auth/app/certification?userId=hierkommtdieuseridhin"

                    Die userId wird nach dem Login übermittelt:
                    "https://api.ecoflow.com/auth/login"

                    E.g:
                    curl -H "Host: api.ecoflow.com" -H "lang: de-de" -H "lang: de-de" -H "platform: android" -H "sysversion: 11" -H "version: 4.1.2.02" -H "phonemodel: SM-X200" -H "content-type: application/json" -H "user-agent: okhttp/3.14.9" --data-binary "{"appVersion":"4.1.2.02","email":"deineemail@aol.com","os":"android","osVersion":"30","password":"DEINPASSWORTINBASE64","scene":"IOT_APP","userType":"ECOFLOW"}" --compressed "https://api.ecoflow.com/auth/login"

                    1 Reply Last reply Reply Quote 2
                    • Newan
                      Newan last edited by

                      Eh wow bin ich gerade was Bude und muss das mal sortieren.
                      Fakt ist das dem Adapter eigentlich aus meiner sicht nur das schalten also post oder put fehlt.
                      Der Support gibt hier leider keine Infos raus. Also wenn du rausfinden könntest wie man schaltet wäre das der Hammer 🤩

                      A 1 Reply Last reply Reply Quote 0
                      • Netfreak25
                        Netfreak25 last edited by

                        Die Schalt Befehle habe ich wie gesagt im MQTT Traffic sehen können.
                        Das AC schalten sah wie folgt aus (In diesem Fall aus schalten - für an war cfgAcEnabled 1):

                        {
                        "id": 1341924884043927800,
                        "version": "1.0",
                        "timestamp": 1670956617,
                        "moduleType": "3",
                        "params": {
                        "inv.cfgAcEnabled": 0,
                        "inv.invOutFreq": 0,
                        "inv.invOutAmp": 0,
                        "inv.invOutVol": 0,
                        "inv.acInVol": 0
                        }
                        }

                        Wobei wahrscheinlich nur "inv.cfgAcEnabled": 0 eine rolle spielt.
                        Ich habe mit dem MQTT Dashboard eben diese Nachricht auch versand aber es ist nichts passiert.
                        Eventuell wird immer nur die Nachricht mit der nächst höheren id beachtet (wahrscheinlich um race conditions vorzubeugen).

                        Für meinen test hatte ich die 13 zu einer 14 gemacht in der id und den timestamp auch massiv erhöht (es hätte so simpel sein können:P )
                        Aber meine Nachricht wurde ignoriert. Warum weiß ich aber noch nicht.

                        Newan 1 Reply Last reply Reply Quote 0
                        • A
                          AngelLuck @Newan last edited by

                          @newan said in Adapter für Ecoflow Einbindung:

                          Fakt ist das dem Adapter eigentlich aus meiner sicht nur das schalten also post oder put fehlt.

                          Möchte mich hier auch mal ein Klinken.
                          Vielen Dank auch für die tolle Arbeit am Adapter.

                          Für mich persönlich wären auch die Temperatur Daten des Akkus von Bedeutung. Da meine Ecoflow bei mir in einem unbeheizten Kämmerchen auf dem Balkon steht und ich diese Woche festellen musste das der Akku bei 3°C nicht mehr lädt obwohl das Solarpanel den ganzen Tag pralle Sonne abbekommen hat.

                          Genauso fände ich es schön wenn man irgendwie das Laden über Steckdose und über das Solarpannel getrennt aufzeichnen könnte. In der App wird das ja ebenfalls getrennt dargestellt.

                          Newan 1 Reply Last reply Reply Quote 0
                          • Newan
                            Newan @AngelLuck last edited by

                            @angelluck Stell den Adapter mal bitte auf Debug. Ich glaube nicht das die gewünschten Daten über die API kommen

                            A 1 Reply Last reply Reply Quote 0
                            • Newan
                              Newan @Netfreak25 last edited by

                              @moritzkuhn Probiere mal ein GET (holen) über Mqtt und mit der ID ein setzen?

                              1 Reply Last reply Reply Quote 0
                              • A
                                AngelLuck @Newan last edited by

                                @newan said in Adapter für Ecoflow Einbindung:

                                @angelluck Stell den Adapter mal bitte auf Debug. Ich glaube nicht das die gewünschten Daten über die API kommen

                                Nein, ich glaube auch nicht das die Daten über die API rein kommen. Dachte eher an den Weg den @MoritzKuhn gegangen ist. In der Handy App sind die Temperaturdaten ja Verfügbar.

                                Netfreak25 1 Reply Last reply Reply Quote 0
                                • Netfreak25
                                  Netfreak25 @AngelLuck last edited by Netfreak25

                                  @AngelLuck

                                  8dcdcb44-d2f9-444e-af02-1da28f7bb5d4-image.png
                                  bei mqtt gibt es einige temperaturen die übermittelt werden

                                  005209a8-c1db-4320-95c3-5ca5b1768b39-image.png
                                  es gibt wattsInSum

                                  f73beb48-c0f5-421d-be74-682b007c2a5a-image.png
                                  den MPPT Eingang

                                  f1351a50-518d-4a6e-9fc8-4fff6fea37a4-image.png
                                  DC Eingang

                                  d492c69d-cee8-4d37-9c49-15b832d2cc55-image.png
                                  AC Eingang

                                  Mir wurde heute gesagt das die Anfrage zum API-Access weitergegeben wurde. Anscheinend erhöhte Nachfrage aktuell

                                  1 Reply Last reply Reply Quote 2
                                  • A
                                    AngelLuck last edited by

                                    @moritzkuhn Wow das sind ja mehr Daten als ich dachte und du hast sie auch schon im ioBroker wenn ich das so richtig sehe.

                                    Leider habe ich nicht ganz im Detail verstanden wie du darauf zugreifst. Über MQTT ist klar. Allerdings bekomme bei deinen ganzen Links meistens nur die Meldung das ich nicht authorisiert bin.
                                    Vielleicht könntest du das Vorgenehen etwas genauer ausführen?

                                    Netfreak25 1 Reply Last reply Reply Quote 0
                                    • Netfreak25
                                      Netfreak25 @AngelLuck last edited by Netfreak25

                                      @angelluck aktuell würde ich sagen fehlen dir die zugangsdaten zum mqtt server, welche ich per men in the middle aus dem app traffic habe.
                                      ich schaue mal ob ich den login und das abrufen der mqtt daten als skript umgesetzt bekomme

                                      achso: und die links oben sind keine aktuellen api links. so hat es zur zeit vor der api funktioniert. ich dachte nur ihr mit api zugriff könntet damit eventuell was anfangen um eure links zu konstruieren

                                      Netfreak25 1 Reply Last reply Reply Quote 0
                                      • Netfreak25
                                        Netfreak25 @Netfreak25 last edited by

                                        @moritzkuhn

                                        @moritzkuhn said in Adapter für Ecoflow Einbindung:

                                        @angelluck aktuell würde ich sagen fehlen dir die zugangsdaten zum mqtt server, welche ich per men in the middle aus dem app traffic habe.
                                        ich schaue mal ob ich den login und das abrufen der mqtt daten als skript umgesetzt bekomme

                                        achso: und die links oben sind keine aktuellen api links. so hat es zur zeit vor der api funktioniert. ich dachte nur ihr mit api zugriff könntet damit eventuell was anfangen um eure links zu konstruieren

                                        Quick und Dirty:

                                        Mit App Benutzerdaten einloggen, dann bekommt man die MQTT Daten zurück

                                        https://raw.githubusercontent.com/Netfreak25/EcoFlow_MQTT_Creds/main/ecoflow_mqtt_creds.sh

                                        Netfreak25 1 Reply Last reply Reply Quote 0
                                        • Netfreak25
                                          Netfreak25 @Netfreak25 last edited by Netfreak25

                                          e6c33e6f-fd5e-4f7d-abac-d0226cde413d-image.png

                                          function (cname, cvalue)

                                          var objectName = cname;
                                          var MyString = cvalue;
                                          
                                          if ( !existsState(objectName )) {
                                          createState(objectName,MyString,{name: " ",  type: 'string', role: 'value'}, function () {}); 
                                          } else {
                                          setState(objectName,"" + MyString);
                                          }
                                          

                                          Blockly zum import:
                                          https://raw.githubusercontent.com/Netfreak25/EcoFlow_MQTT_Creds/main/Blockly

                                          JavaScript zum import:
                                          https://raw.githubusercontent.com/Netfreak25/EcoFlow_MQTT_Creds/main/Javascript

                                          • MQTT Adapter muss angepasst werden (ist bei mir halt mqtt.5. )
                                          • Zielpfad kann angepasst werden (e.g. 0_userdata.0.EcoFlow.MQTT.DeineSerial. )
                                          • Seriennummer muss angepasst werden

                                          Ich habe für jedes meiner Ecoflow Geräte ein eigenes Skript. Klappt mit Delta Max / River 2 / Smart Generator Dual.
                                          Zusatzakkus werden über das Hauptgerät übermittelt

                                          Für MQTT reicht eine einzelne Instanz, man muss aber jedes Device explizit abfragen. Wildcard # ist im MQTT Server von ecoflow inaktiv.
                                          /app/property/device/DEINESERIENNUMMER

                                          Edit:
                                          Wenn man im Code vor dem schreiben der Werte nochmal prüft ob sich diese verändert haben, und nur änderungen schreibt ist es nicht so cpu lastig
                                          e.g.
                                          f8df1fb8-7b92-47ac-99bf-416d6a4e370b-image.png

                                          1 Reply Last reply Reply Quote 0
                                          • Netfreak25
                                            Netfreak25 last edited by Netfreak25

                                            Und weil heute Weihnachten ist 😉

                                            AC Enable/Disable

                                            Published nach:
                                            /app/UserID/Seriennummer/thing/property/set

                                            Die UserID bekommt man auch von meinem mqqt credentials skript.

                                            {
                                              "from": "Android",
                                              "id": "1",
                                              "moduleType": 0,
                                              "operateType": "TCP",
                                              "params": {
                                                "id": 66,
                                                "enabled": 1
                                              },
                                              "version": "1.0"
                                            }
                                            

                                            Für disable ne 0 statt der 1 bei enable
                                            "enabled": 0

                                            Zum Sniffen einfach dieses Topic subscriben und dann den traffic beobachten
                                            Die id in params steht für AC. Das habe ich per try and error / traffic sniffen herausbekommen

                                            Es gibt zudem noch /app/UserID/Seriennummer/thing/property/get

                                            Wen es fasziniert:
                                            Android App dekompilieren (Mit jadex) - um die neuen Pfade zu bekommen für das ansteuern (leider mit unbekannten variablen)
                                            PiHole/MQTT Server - um den DNS umzubiegen das sich die App mit dem eigenen Server verbindet (hier hat man den Pfad mit eingefüllter variable gesehen -> mqtt server im debug modus, man muss nur vorher die user für die app anlegen)
                                            Charles Proxy - um den ssl traffic mitlesen zu können (generell praktisch wenn es keine api gibt)

                                            id 81 = 12V DC
                                            id 34 = USB

                                            Für xboost:
                                            "params": {
                                            "xboost": 1,
                                            "id": 66
                                            }
                                            wiedermal 1 oder 0

                                            Wechselstrom Ladegeschwindigkeit:
                                            "params": {
                                            "slowChgPower": 2000,
                                            "id": 69
                                            }

                                            Entlade/Ladezustand:
                                            "params": {
                                            "maxChgSoc": 100,
                                            "id": 49
                                            }
                                            "params": {
                                            "id": 51,
                                            "minDsgSoc": 30
                                            }

                                            Generator:
                                            "params": {
                                            "closeOilSoc": 80,
                                            "id": 53
                                            }
                                            "params": {
                                            "openOilSoc": 27,
                                            "id": 52
                                            }

                                            Autoeingang:
                                            "params": {
                                            "currMa": 8000,
                                            "id": 71
                                            }

                                            Standby:
                                            "params": {
                                            "id": 33,
                                            "standByMode": 30
                                            }

                                            Wechselstrom Zeitüberschreitung:
                                            "params": {
                                            "standByMins": 1440,
                                            "id": 153
                                            }

                                            AC immer eingeschaltet:
                                            "params": {
                                            "id": 84,
                                            "enabled": 1
                                            }

                                            Der vollständigkeit halber Bildschirmtimeout:
                                            "params": {
                                            "lcdTime": 300,
                                            "id": 39
                                            }

                                            A haus-automatisierung 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            426
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            42
                                            212
                                            45475
                                            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