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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter für Ecoflow Einbindung

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      chka @SvanSvan last edited by chka

      Kann es sein das wieder keine Daten reinkommen? Per Mqtt

      edit irgendwas im java bereich hat sich aufgehängt

      B 1 Reply Last reply Reply Quote 0
      • B
        bombastikde @chka last edited by

        @chka Irgendetwas hat EcoFlow wieder gemacht! 😞 Die Wlan Verbindung der EcoFlow wird immer wieder unterbrochen - Ich wechsle jetzt jeden Tag die "client IDs"
        Ist aber wirklich nervig!
        Wie sieht es bei den anderen aus?
        Kann man die Client ID dem Adapter in einem Script übergeben?

        C S 2 Replies Last reply Reply Quote 0
        • C
          chka @bombastikde last edited by

          @bombastikde warum ändern trag deine ein und gut ist mit dem verlinkten script geht dies wunderbar: https://forum.iobroker.net/topic/54929/adapter-für-ecoflow-einbindung/104?_=1680704720100

          1 Reply Last reply Reply Quote 0
          • S
            SvanSvan @bombastikde last edited by SvanSvan

            @bombastikde
            Was willst du von der Verbindung unter dem Konto des Programms, das nicht für langfristiges Arbeiten ausgelegt ist. Eine Verbindung unter dem Konto des Geräts selbst ist das, was Sie verwenden müssen. nur er ist dafür ausgelegt und hat Vorrang. Wenn dies verstanden wird, werden die Leute vielleicht daran interessiert sein, wie man es macht. (nicht einfach, aber möglich)

            1 Reply Last reply Reply Quote 0
            • F
              Frense last edited by

              Moin zusammen,

              Habe gestern meine River 2 Pro in Betrieb genommen. Leider scheint das ChgPauseFlag nicht zu funktionieren. Die River lädt weiter mit 20-30W. Hat jemand eine Idee bzw. Das gleiche Verhalten?

              Grüße Frense

              F 1 Reply Last reply Reply Quote 0
              • F
                firebowl @Frense last edited by

                @frense Weiß jetzt nicht ob die River 2 Pro das kann aber meine Delta 2 kann es beispielsweise nicht. Sie ignoriert das Pause Flag und ich kann die minimale Ladeleistung nicht unter glaub 200W stellen.

                W 1 Reply Last reply Reply Quote 0
                • W
                  Waly_de @firebowl last edited by

                  Ist ja still geworden hier ...

                  ich hab seit kurzem einen PowerStream im Einsatz.
                  Da lässt sich auch etwas per MQTT von "mqtt-e.ecoflow.com" abfragen.
                  Allerdings kommt kein JSON mehr zurück, sondern irgendwelche unlesbaren Binärdaten gefolgt von der Seriennummer.

                  Sieht etwa so aus:

                  7 �� �� ��5 (@HPX���HWXXXXXXXXXXXXXXX
                  

                  Oder ohne die Seriennummer als Byte-Sequenz:

                  b'\xf8\x8c\xda\xe3\xa9\x9a\xe4\xaf\xa4\x77\xfa\xa7\x8f\xfd\xf1T\x8f\xfa\xb9T\xe1T\xfe\xfa\xd9\xb8I\x05I\x01R\x1eR\x18R\x15\x1e\x1e\x00R\x01\xdd\x01\x1c\x06I'
                  

                  Ich schaffe es nicht daraus etwas brauchbares zu extrahieren. Ist einer von Euch weiter?

                  Viele Grüße
                  Markus

                  haus-automatisierung VespaGaming 2 Replies Last reply Reply Quote 0
                  • haus-automatisierung
                    haus-automatisierung Developer Most Active @Waly_de last edited by

                    @waly_de Ach guck, ein weiterer Versuch vom Hersteller die Schnittstelle möglichst intransparent zu gestalten 😞 Super nervig.

                    1 Reply Last reply Reply Quote 0
                    • VespaGaming
                      VespaGaming @Waly_de last edited by

                      @waly_de Gibt es die Möglichkeit den PowerStream zu steuern bzw. beim Konfigurieren in der App die Daten über MQTT abzugreifen wie bei den Powerstations?

                      W 1 Reply Last reply Reply Quote 0
                      • W
                        Waly_de @VespaGaming last edited by

                        @vespagaming …sieht nicht so aus. Zwar kommen Daten über den MQTT Server, aber eben verschlüsselt. Solange es niemand schafft die Daten zu entschlüsseln wird das nicht funktionieren. Wirklich schade, denn die Logik von EcoFlow lässt noch sehr zu wünschen übrig. Das hätte man über die API sehr schön selbst ausgleichen können.

                        haus-automatisierung 1 Reply Last reply Reply Quote 0
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @Waly_de last edited by

                          @waly_de Naja Du könntest ja zB einmal irgendetwas anschalten und dann wieder ausschalten und den Payload vergleichen. Kommt immer das gleiche und es unterscheidet sich nur ein Bit, kann man damit ja auch arbeiten.

                          W 1 Reply Last reply Reply Quote 0
                          • W
                            Waly_de @haus-automatisierung last edited by

                            @haus-automatisierung Ich habe das gemacht. Ich möchte vor allem den Leistungsbedarf am AC steuern können. Also habe ich mit dem MQTT Adapter

                            /app/<USERID>/<SERIENNUMMER>/thing/property/set
                            

                            bestellt und den Wert mit der App geändert. Da die Antworten dann so aussehen:

                            � 5 (8@H�PXp�������ios�HWXXXXXXXXXXXXX
                            

                            habe ich den Inhalt mal in Hexwerte konvertiert und verglichen. Das sah dann so aus: (Letzte Werte wegen Seriennummer entfernt, waren aber immer gleich…)

                            0a3d0a0308fd-1d-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-1e-10201835200128013803401448fd015003580170-    3b-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-1f-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-1d-10201835200128013803401448fd015003580170-  fdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-07-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0e-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0b-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-07-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0b-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0b-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0b-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0a-10201835200128013803401448fd015003580170-fd20  -fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            0a3d0a0308fd-0b-10201835200128013803401448fd015003580170-fd20  -fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX
                            

                            Die sich ändernden Werte habe ich mal mit - getrennt. Das scheinen die verschiedenen Leistungsdaten zu sein, die ich eingestellt habe. Gleiche Watt-Zahl gibt auch immer den gleichen Wert… Was sich hinten manchmal ändert, weiß ich nicht.
                            Schreibe ich diese Daten zurück (setState) tut sich aber nichts. Beim Delta Max kann ich so prima Dinge steuern. Der ist natürlich auch nicht verschlüsselt.

                            Jetzt ist das Feld beim MQTT Adapter aber auch als String definiert und vielleicht geht da einiges kaputt beim Hin und Her konvertieren.
                            Konvertiert habe ich so:

                              var buffer = Buffer.from(obj.state.val,'binary');
                              var v150w =  buffer.toString("hex")
                              log("buffer Daten als HEX:" + v150w)
                              log("Daten Pur:" + obj.state.val)
                            

                            und zurück:

                            var buffer2 = Buffer.from(v150w,'hex');
                            log("Setze diesen Wert:" + buffer2.toString() )
                            

                            Es wäre toll, wenn sich mal jemand mit Ahnung das ansehen würde. Vielleicht mal mit dem anderen MQTT wie Mosquitto, der gleich mit Buffer-Objekten umgehen kann.

                            Mein Ziel ist es, den AC-Leistungsbedarf dynamisch an den tatsächlichen Verbrauch anzupassen (Echtzeit) und den Rest der Sonnenpower in die Batterie zu senden bzw. nur so viel aus der Batterie zu ziehen, wie gerade gebraucht wird.

                            LG
                            Markus

                            VespaGaming 1 Reply Last reply Reply Quote 0
                            • VespaGaming
                              VespaGaming @Waly_de last edited by

                              @waly_de said in Adapter für Ecoflow Einbindung:

                              0a3d0a0308fd-1d-10201835200128013803401448fd015003580170-fdfdfd-fd05fd0113fd0101fd0103696f73fd0110485XXXXXXXXXXXXXXXXXXXXXXXXXX

                              Kannst du herleiten was du jeweils für Werte an den Powerstream übergeben hast zu

                              xNodKane W 3 Replies Last reply Reply Quote 0
                              • xNodKane
                                xNodKane @VespaGaming last edited by

                                @vespagaming @Waly_de
                                Ich bin mir nicht ganz sicher evtl. komm ich noch dahinter.
                                Jedoch wenn man die .java Dateien der Ecoflow .apk sich ansieht könnte das Protbuf sein.

                                "import com.google.protobuf.CodedInputStream;"
                                625beb3a-9bf9-4508-9ed7-05a44086cef7-image.png

                                hmm...

                                W 1 Reply Last reply Reply Quote 0
                                • W
                                  Waly_de @VespaGaming last edited by

                                  @vespagaming

                                  ja, ich hab immer nur den Wert für "Leistungsbedarf am AC Ausgang" geändert.
                                  Hier mal frische Daten, mit den entsprechenden Wattangaben die ich eingestellt habe:

                                  100w: 0a3d0a0308fd-07-10201835200128013803401448fd015003580170fdfd7b06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  200w: 0a3d0a0308fd-0f-10201835200128013803401448fd015003580170  73bb06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  250w: 0a3d0a0308fd-13-10201835200128013803401448fd015003580170fdfdfb06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  350w: 0a3d0a0308fd-1b-10201835200128013803401448fd015003580170fdfd3b06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  400w: 0a3d0a0308fd-1f-10201835200128013803401448fd015003580170fdfd7b06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  550w: 0a3d0a0308fd-2a-10201835200128013803401448fd015003580170fdfdfb06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  600w: 0a3d0a0308fd-2e-10201835200128013803401448fd015003580170  5c3b06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                  
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • W
                                    Waly_de @xNodKane last edited by

                                    @xnodkane
                                    hmm das ist interessant!

                                    Braucht man dazu nicht eine .proto Datei oder sowas?

                                    Wüsste auch nicht wie ich die Daten aus dem Stringfeld im MQTT-Client in ein gültiges Format bringen soll.
                                    Ich glaub es braucht hier ein Uint8Array...

                                    Ich hab wenig Ahnung von Protbuf 😕

                                    xNodKane 1 Reply Last reply Reply Quote 0
                                    • W
                                      Waly_de @VespaGaming last edited by

                                      @vespagaming

                                      interessant auch, wenn ich andere Dinge verstelle ist die Nachricht fast identisch und es ändern sich wieder nur die gleichen Stellen:

                                      Beleuchtung
                                      30%   0a3d0a0308fd 02 10201835200128013803401448fd015003580170 fdfdfdfd 06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                      50%   0a3d0a0308fd 03 10201835200128013803401448fd015003580170   fdfdbc 06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                      20%   0a3d0a0308fd 01 10201835200128013803401448fd015003580170   fdfd7c 06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                      Entladezustand
                                      7%    0a3c0a0208 07   10201835200128013803401448fd015002580170     6efd 06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                      9%    0a3c0a0208 09   10201835200128013803401448fd015002580170   fdfdfd 06fd0113fd0101fd0103696f73fd0110485735315a4f4834 XXXXXXXXXXXXXXXX
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • xNodKane
                                        xNodKane @Waly_de last edited by xNodKane

                                        @waly_de
                                        Ich konnte bisher nicht viel entschlüssel, jedoch mit etwas ausprobieren bin ich schon mal soweit.
                                        Dies betrifft die Einstellungen der PowerStream.
                                        Habe die Website: https://protobuf-decoder.netlify.app/ benutzt um HEX in ein Proto umzuwandeln.
                                        Nun kann ich die Klasse auslesen und erhalte z.B.
                                        {{ "item": [ { "meta": { "value": 1 }, "function": 130, "timestamp": 905534, "serialNumber": "HW51XXXXXXXXXX" } ] }}

                                        function ist die Funktion, z.B. "Leistungsbedarf am AC..." die man einstellt.
                                        value ist der Wert der Einstellung

                                        message PowerItem {
                                          Meta meta = 1;
                                          int32 function = 9;
                                          uint32 timestamp = 14;
                                          string serialNumber = 25;
                                        }
                                        
                                        message PowerMessage {
                                          PowerItem item = 1;
                                        }
                                        
                                        message Meta {
                                          int32 value = 1;
                                        }
                                        
                                        W 1 Reply Last reply Reply Quote 1
                                        • W
                                          Waly_de @xNodKane last edited by

                                          @xnodkane wow .. das ist großartig. Hast du meine Daten verwendet? Ich bekomme damit nämlich nichts sinnvolles bei https://protobuf-decoder.netlify.app/ angezeigt.

                                          xNodKane 1 Reply Last reply Reply Quote 0
                                          • xNodKane
                                            xNodKane @Waly_de last edited by xNodKane

                                            @waly_de
                                            Habe meine eigenen Daten genommen, da man alle hex stellen benötigt um etwas lesen zu können.
                                            Das empfangene ByteArray in HEX umwandeln und als string ausgeben ohne Sonderzeichen (zusammenhängende kette).

                                            Danach in die App werfen und nun versuchen zu interpretieren was da für eine Proto Datei das sein könnte.
                                            Nun muss man die proto als Klasse erstellen und das auf die Klasse "mergen".
                                            Nutze dafür halt .NET mit MQTTnet und Google.Protobuf.
                                            In der message steht dann der lesbare string.

                                            var payload = e.ApplicationMessage.PayloadSegment.ToArray();
                                                var inputStream = new CodedInputStream(payload);
                                                PowerMessage message = new();
                                                message.MergeFrom(inputStream);
                                            

                                            Wie oben gezeigt habe ich manche Felder schon identifizieren können.

                                            7eca80da-71ee-409e-a5c4-0464ce778fb7-image.png

                                            Habe noch weiter herumprobiert und habe mir auch die .java Dateien der .apk angesehen um zu schlussfolgern wie die Daten zusammenhängen.

                                             C4231d.m10767h().mo33598m(this.f29190c, Common.Send_Header_Msg.newBuilder().addMsg(Common.Header.newBuilder().setSrc(32).setDest(53).setSeq(291).setNeedAck(1).setCmdFunc(20).setCmdId(129).setDeviceSn(this.f29190c).setDataLen(build8.toByteString().size()).setPdata(build8.toByteString()).build()).build().toByteArray());
                                            

                                            Hier die neuste .proto

                                            syntax = "proto3";
                                            
                                            message PowerItem {
                                              optional Meta meta = 1;
                                              uint32 src = 2;
                                              uint32 dest = 3;
                                              uint32 cmdFunc = 8;
                                              CmdFunction cmdId = 9;
                                              uint32 unknown = 10;
                                              uint32 needAck = 11;
                                              uint64 timestamp = 14;
                                              string serialNumber = 25;
                                            }
                                            
                                            message PowerMessage {
                                              PowerItem item = 1;
                                            }
                                            
                                            message Meta {
                                              int32 value = 1;
                                            }
                                            
                                            enum CmdFunction {
                                            	Unknown = 0;
                                            	PermanentWattsPack = 129;
                                            	SupplyPriorityPack = 130;
                                            }
                                            
                                            1 Reply Last reply Reply Quote 2
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            984
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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