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.
    • M
      mattenausohz @FelixCrafter83 last edited by mattenausohz

      @felixcrafter83 Darf ich fragen wozu Du noch SmartPlugs brauchst wenn Du doch die "echte" Last live nutzen kannst?

      FelixCrafter83 1 Reply Last reply Reply Quote 0
      • FelixCrafter83
        FelixCrafter83 @mattenausohz last edited by FelixCrafter83

        @mattenausohz ich habe diesen smartplug bei einem Ecoflow gewinnspiel gewonnen.
        ich möchte mit dem etwas rumspielen, also für etwas anderes benutzen und ich habe ja noch kein powerstream.
        Da hast du recht, smart plugs braucht man mit den scripten natürlich nicht mehr, wenn man die leistung am stromzähler abgreift.
        Ich hätte mir sonst keinen gekauft.
        Habe nämlich auch schon ein smartmeter

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

          @felixcrafter83 Siehe den Beitrag weiter oben.
          Wenn man sich die Ecoflow APK (Android App) genauer ansieht wie die Codetechnisch funktioniert fällt zum einen Auf das ein import zu Googles Protobuf drinnen ist.
          Ist aber sehr mühselig etwas herauszufinden.

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

            Ich hab dem Script mal einen eigenen Beitrag spendiert:

            https://forum.iobroker.net/topic/66743/ecoflow-connector-script-zur-dynamischen-leistungsanpassung

            @FelixCrafter83 Die meisten Deiner Daten kenn ich schon und sind im neuen Script verwendet. Was ich nicht kenne wird als State: X_Unknown_X angelegt. Funfact: ich hab auch einen Smartplug gewonnen ;-D hab ich aber noch nicht hier.

            @mattenausohz Die Funktion wurde überarbeitet und sollte jetzt besser laufen.

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

              Ich habe heute etwas rumgetüftelt und habe die Proto files in der App gefunden.
              nur sind die komisch codiert, ich habe dann chatgpt zur hilfe genommen, das mir dann es in klartext ausgegeben hat.
              Jetzt ist die Frage, ob jemand weiß, wie man von der einen darstellung auf die klartext dartstellung kommt:

              Hier mal das, was ich in der App gefunden habe:

               \n\u0016wn511_socket_sys.proto\"\u00ca\u0001\n\brtc_data\u0012\u0011\n\u0004week\u0018\u0001 \u0001(\u0005H\u0000\u0088\u0001\u0001\u0012\u0010\n\u0003sec\u0018\u0002 \u0001(\u0005H\u0001\u0088\u0001\u0001\u0012\u0010\n\u0003min\u0018\u0003 \u0001(\u0005H\u0002\u0088\u0001\u0001\u0012\u0011\n\u0004hour\u0018\u0004 \u0001(\u0005H\u0003\u0088\u0001\u0001\u0012\u0010\n\u0003day\u0018\u0005 \u0001(\u0005H\u0004\u0088\u0001\u0001\u0012\u0012\n\u0005month\u0018\u0006 \u0001(\u0005H\u0005\u0088\u0001\u0001\u0012\u0011\n\u0004year\u0018\u0007 \u0001(\u0005H\u0006\u0088\u0001\u0001B\u0007\n\u0005_weekB\u0006\n\u0004_secB\u0006\n\u0004_minB\u0007\n\u0005_hourB\u0006\n\u0004_dayB\b\n\u0006_monthB\u0007\n\u0005_year\"\u009e\u0001\n\u0013time_range_strategy\u0012\u0011\n\tis_config\u0018\u0001 \u0001(\b\u0012\u0011\n\tis_enable\u0018\u0002 \u0001(\b\u0012\u0011\n\ttime_mode\u0018\u0003 \u0001(\u0005\u0012\u0011\n\ttime_data\u0018\u0004 \u0001(\u0005\u0012\u001d\n\nstart_time\u0018\u0005 \u0001(\u000b2\t.rtc_data\u0012\u001c\n\tstop_time\u0018\u0006 \u0001(\u000b2\t.rtc_data\"\u001f\n\u0010plug_ack_message\u0012\u000b\n\u0003ack\u0018\u0001 \u0001(\r\"\u00a5\u0004\n\u0013plug_heartbeat_pack\u0012\u0015\n\berr_code\u0018\u0001 \u0001(\rH\u0000\u0088\u0001\u0001\u0012\u0016\n\twarn_code\u0018\u0002 \u0001(\rH\u0001\u0088\u0001\u0001\u0012\u0014\n\u0007country\u0018\u0003 \u0001(\rH\u0002\u0088\u0001\u0001\u0012\u0011\n\u0004town\u0018\u0004 \u0001(\rH\u0003\u0088\u0001\u0001\u0012\u0014\n\u0007max_cur\u0018\u0005 \u0001(\u0005H\u0004\u0088\u0001\u0001\u0012\u0011\n\u0004temp\u0018\u0006 \u0001(\u0005H\u0005\u0088\u0001\u0001\u0012\u0011\n\u0004freq\u0018\u0007 \u0001(\u0005H\u0006\u0088\u0001\u0001\u0012\u0014\n\u0007current\u0018\b \u0001(\u0005H\u0007\u0088\u0001\u0001\u0012\u0011\n\u0004volt\u0018\t \u0001(\u0005H\b\u0088\u0001\u0001\u0012\u0012\n\u0005watts\u0018\n \u0001(\u0005H\t\u0088\u0001\u0001\u0012\u0013\n\u0006switch\u0018\u000b \u0001(\bH\n\u0088\u0001\u0001\u0012\u0017\n\nbrightness\u0018\f \u0001(\u0005H\u000b\u0088\u0001\u0001\u0012\u0016\n\tmax_watts\u0018\r \u0001(\u0005H\f\u0088\u0001\u0001\u0012 \n\u0013heartbeat_frequency\u0018\u000e \u0001(\u0005H\r\u0088\u0001\u0001\u0012\u0018\n\u000bmesh_enable\u0018\u000f \u0001(\u0005H\u000e\u0088\u0001\u0001B\u000b\n\t_err_codeB\f\n\n_warn_codeB\n\n\b_countryB\u0007\n\u0005_townB\n\n\b_max_curB\u0007\n\u0005_tempB\u0007\n\u0005_freqB\n\n\b_currentB\u0007\n\u0005_voltB\b\n\u0006_wattsB\t\n\u0007_switchB\r\n\u000b_brightnessB\f\n\n_max_wattsB\u0016\n\u0014_heartbeat_frequencyB\u000e\n\f_mesh_enable\"*\n\u0013plug_switch_message\u0012\u0013\n\u000bplug_switch\u0018\u0001 \u0001(\r\"%\n\u000fbrightness_pack\u0012\u0012\n\nbrightness\u0018\u0001 \u0001(\u0005\"\u001f\n\fmax_cur_pack\u0012\u000f\n\u0007max_cur\u0018\u0001 \u0001(\u0005\"]\n\u0010time_task_config\u0012\u0011\n\ttask_name\u0018\u0001 \u0001(\t\u0012(\n\ntime_range\u0018\u0002 \u0001(\u000b2\u0014.time_range_strategy\u0012\f\n\u0004type\u0018\u0003 \u0001(\u0005\"N\n\u0015time_task_config_post\u0012\r\n\u0005index\u0018\u0001 \u0001(\u0005\u0012&\n\u000btask_config\u0018\u0002 \u0001(\u000b2\u0011.time_task_config\"D\n\tPowerItem\u0012\u0011\n\ttimestamp\u0018\u0001 \u0001(\r\u0012\u0010\n\btimezone\u0018\u0002 \u0001(\u0011\u0012\u0012\n\nplug_power\u0018\u0003 \u0001(\r\"B\n\tPowerPack\u0012\u000f\n\u0007sys_seq\u0018\u0001 \u0001(\r\u0012$\n\u0010sys_power_stream\u0018\u0002 \u0003(\u000b2\n.PowerItem\"\u001f\n\fPowerAckPack\u0012\u000f\n\u0007sys_seq\u0018\u0001 \u0001(\r\"#\n\u000emax_watts_pack\u0012\u0011\n\tmax_watts\u0018\u0001 \u0001(\u0005\"%\n\u000emesh_ctrl_pack\u0012\u0013\n\u000bmesh_enable\u0018\u0001 \u0001(\r\"\u001b\n\bret_pack\u0012\u000f\n\u0007ret_sta\u0018\u0001 \u0001(\bb\u0006proto3
              

              So sieht das dann in klartext aus:
              wn511_socket_sys.proto

              syntax = "proto3";
              
              message rtc_data {
                optional int32 week = 1 [default = 1];
                optional int32 sec = 2 [default = 1];
                optional int32 min = 3 [default = 1];
                optional int32 hour = 4 [default = 1];
                optional int32 day = 5 [default = 1];
                optional int32 month = 6 [default = 1];
                optional int32 year = 7 [default = 1];
              }
              
              message time_range_strategy {
                optional bool is_config = 1;
                optional bool is_enable = 2;
                optional int32 time_mode = 3;
                optional int32 time_data = 4;
                optional rtc_data start_time = 5;
                optional rtc_data stop_time = 6;
              }
              
              message plug_ack_message {
                optional int32 ack = 1;
              }
              
              message plug_heartbeat_pack {
                optional int32 err_code = 1 [default = 1];
                optional int32 warn_code = 2 [default = 1];
                optional int32 country = 3 [default = 1];
                optional int32 town = 4 [default = 1];
                optional int32 max_cur = 5 [default = 1];
                optional int32 temp = 6 [default = 1];
                optional int32 freq = 7 [default = 1];
                optional int32 current = 8 [default = 1];
                optional int32 volt = 9 [default = 1];
                optional int32 watts = 10 [default = 1];
                optional bool switch = 11;
                optional int32 brightness = 12 [default = 1];
                optional int32 max_watts = 13 [default = 1];
                optional int32 heartbeat_frequency = 14 [default = 1];
                optional bool mesh_enable = 15;
              }
              
              message plug_switch_message {
                optional int32 plug_switch = 1;
              }
              
              message brightness_pack {
                optional int32 brightness = 1;
              }
              
              message max_cur_pack {
                optional int32 max_cur = 1;
              }
              
              message time_task_config {
                optional string task_name = 1;
                optional time_range_strategy time_range = 2;
                optional int32 type = 3;
              }
              
              message time_task_config_post {
                optional int32 index = 1;
                optional time_task_config task_config = 2;
              }
              
              message PowerItem {
                optional int64 timestamp = 1;
                optional string timezone = 2;
                optional int32 plug_power = 3;
              }
              
              message PowerPack {
                optional int32 sys_seq = 1;
                repeated PowerItem sys_power_stream = 2;
              }
              
              message PowerAckPack {
                optional int32 sys_seq = 1;
              }
              
              message max_watts_pack {
                optional int32 max_watts = 1;
              }
              
              message mesh_ctrl_pack {
                optional int32 mesh_enable = 1;
              }
              
              message ret_pack {
                optional bool ret_sta = 1;
              }
              
              FelixCrafter83 1 Reply Last reply Reply Quote 1
              • FelixCrafter83
                FelixCrafter83 @FelixCrafter83 last edited by FelixCrafter83

                Ich habe es geschafft alles in Klartext darzustellen hier eine txt Datei:ProtobufsDecoded.txt
                Das müssten alle aus der App sein.
                Mann muss sie sich nur etwas zusammenbasteln.

                1 Reply Last reply Reply Quote 1
                • X
                  xfirf last edited by

                  Ich versuche diese Anleitung hier nachzustellen:
                  https://haus-automatisierung.com/hardware/2023/02/13/ecoflow-river-2-usv-batteriespeicher.htm

                  Wie kommt man denn an die UUID? Irgendwie stehe ich auf dem Schlauch.

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

                    @xfirf sagte in Adapter für Ecoflow Einbindung:

                    Wie kommt man denn an die UUID?

                    Du meinst für die Client-ID? Die kann man sich ausdenken soweit ich mich erinnere. Hauptsache deine userId am Ende stimmt.

                    1 Reply Last reply Reply Quote 0
                    • FelixCrafter83
                      FelixCrafter83 @xfirf last edited by

                      @xfirf ich habe hier mal eine funktion für z.B Node-Red:

                      function uuidv4() {
                          return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
                              var r = Math.random() * 16 | 0,
                                  v = c === 'x' ? r : (r & 0x3 | 0x8);
                              return v.toString(16);
                          });
                      }
                      
                      msg.payload = uuidv4();
                      return msg;
                      
                      1 Reply Last reply Reply Quote 0
                      • X
                        xfirf last edited by

                        Cool. Danke. 🙂

                        Kann ich mit dem Adapter auch einfach nur die Erträge aus dem Powerstream auslesen und im History-Adapter speichern? Ich will nichts steuern sondern nur die Erträge festhalten.

                        1 Reply Last reply Reply Quote 0
                        • Z
                          zariomahn last edited by

                          Hi @all,

                          lese hier fleißig mit und bin begeistert von der Arbeit von @Waly_de 🙂

                          Besitze selbst 2 Delta Pro und das SmartHomePanel, die beiden DP sind über HASS im ioBroker. eingebunden.

                          Nun die Frage die mich brennend interessiert, gibt es eine Möglichkeit mit dem Script von @Waly_de das "SmartHomePanel" auszulesen und im besten Fall auch zu steuern ? Hat das schon jemand geschafft?

                          Danke schon mal im Voraus für ne Antwort, und viele Grüße

                          MZ

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

                            @zariomahn ich würde einfach mal versuchen die Seriennummer im Script einzugeben. Wenn Du Glück hast bekommst du alle Daten. Die meisten Ecoflow Geräte (zumindest die Deltas) arbeiten ohne Protobuf und sind daher leicht auszulesen.
                            Steuern geht dann theoretisch auch.

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

                              @waly_de
                              Hab ich versucht, bekomme aber lauter Fehlermeldungen...🙄

                              Bildschirmfoto 2023-08-03 um 09.27.43.png

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

                                @zariomahn Dir fehlt das Modul protobufjs. Hast Du das als Erweiterung im JavaScript-Adapter eingetragen?

                                Z 1 Reply Last reply Reply Quote 0
                                • Z
                                  zariomahn @haus-automatisierung last edited by

                                  @haus-automatisierung

                                  habe protobufjs im Terminal mit npm install protobufjs installiert.
                                  Muss noch etwas anderes gemacht werden ?

                                  Sorry, bin noch nicht lange mit ioBroker u.s.w. beschäftigt,
                                  komme zwar aus der IT, habe aber immer einen großen Bogen um Programmierung, Skripten u.s.w. gemacht 😉

                                  viele Grüße

                                  Mz

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

                                    @zariomahn sagte in Adapter für Ecoflow Einbindung:

                                    habe protobufjs im Terminal mit npm install protobufjs installiert.

                                    Warum das? Bitte in den Instanz-Einstellungen vom JavaScript-Adapter eintragen. Wenn Du manuell per npm etwas machst, dann machst Du IMMER etwas falsch 🙂

                                    Z 1 Reply Last reply Reply Quote 0
                                    • Z
                                      zariomahn @haus-automatisierung last edited by

                                      @haus-automatisierung

                                      Hallo,

                                      Dacht ich muss, steht in der Beschreibung des Scripts...

                                      OK, habs nun so gemacht, und bekomme keine Fehler mehr 😬

                                      Danke

                                      viele Grüße

                                      MZ

                                      1 Reply Last reply Reply Quote 0
                                      • Z
                                        zariomahn last edited by

                                        Hi,

                                        ich habe ja nur mein SHP eingestellt mit der Seriennummer, da ich kein PowerStream habe um zu sehen was ich auslesen kann.

                                        Bekomme aber beim starten des Skripts diese Fehlermeldung.

                                        2023-08-08 10:10:13.659	error	Script script.js.Tests.Skript_1 is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
                                        
                                        2023-08-08 10:09:00.238	warn	at processTimers (node:internal/timers:502:7)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.238	warn	at listOnTimeout (node:internal/timers:559:17)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.238	warn	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.238	warn	at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.238	warn	at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.238	warn	at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1606:34)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.237	warn	at Object.<anonymous> (script.js.Tests.Skript_1:218:9)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.237	warn	at CheckforReconnect (script.js.Tests.Skript_1:435:16)
                                        
                                        javascript.0
                                        2023-08-08 10:09:00.234	warn	getState "0_userdata.0.ecoflow.app_device_property_SP10ZEW5ZE7xxxx.RAW_HEX" not found (3)
                                        

                                        Was bedeutet das, wo liegt der Fehler?

                                        viele Grüße

                                        MZ

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

                                          @zariomahn Die Warnungen treten schon mal auf, wenn das script das erste mal gestartet wird und die States alle neu anlegen muss. Das sollte sich später legen.

                                          Der Fehler weisst darauf hin, dass du einen oder mehrere Deltas angelegt hast. Vielleicht sendet aber auch Dein SHP Unmengen Daten. Daher setzte mal das Limit in den Einstellungen des Javascriptadapters hoch. 3000-4000 sollte reichen.
                                          Später würde ich vielleicht die Deltas nicht subscriben, wenn Du die Daten nicht dringend brauchst.
                                          Wenn dieser Fehler auftritt, musst du das Skript neu starten.

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

                                            @waly_de sagte in Adapter für Ecoflow Einbindung:

                                            @zariomahn Die Warnungen treten schon mal auf, wenn das script das erste mal gestartet wird und die States alle neu anlegen muss. Das sollte sich später legen.

                                            Der Fehler weisst darauf hin, dass du einen oder mehrere Deltas angelegt hast. Vielleicht sendet aber auch Dein SHP Unmengen Daten. Daher setzte mal das Limit in den Einstellungen des Javascriptadapters hoch. 3000-4000 sollte reichen.
                                            Später würde ich vielleicht die Deltas nicht subscriben, wenn Du die Daten nicht dringend brauchst.
                                            Wenn dieser Fehler auftritt, musst du das Skript neu starten.

                                            Hi, danke für die schnelle Antwort, ich habe eigentlich nur mein SHP eingetragen.

                                            seriennummern: [
                                                    { seriennummer: "SP10ZEW5ZE7T0198", name: "SHP", isPowerStream: true, subscribe: true },
                                                    ],
                                            

                                            das Skript stoppt immer nach ca. 2 min

                                            viele Grüße

                                            MZ

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            904
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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