Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Netfreak25

    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

    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 8
    • Best 2
    • Groups 1

    Netfreak25

    @Netfreak25

    4
    Reputation
    24
    Profile views
    8
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Netfreak25 Follow
    Starter

    Best posts made by Netfreak25

    • RE: Adapter für Ecoflow Einbindung

      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"

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Adapter für Ecoflow Einbindung

      @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

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25

    Latest posts made by Netfreak25

    • RE: Adapter für Ecoflow Einbindung

      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
      }

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Adapter für Ecoflow Einbindung

      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

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Adapter für Ecoflow Einbindung

      @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

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: 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

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Adapter für Ecoflow Einbindung

      @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

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Adapter für Ecoflow Einbindung

      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.

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Adapter für Ecoflow Einbindung

      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"

      posted in Einbindung von Geräten
      Netfreak25
      Netfreak25
    • RE: Telegram - Inline Keyboard - gelöst

      @ruhigundrelaxed:

      Lösung gefunden. Trotzdem danke.

      on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){
      var stateval = getState('telegram.0.communicate.request').val;
      var benutzer = stateval.substring(1,stateval.indexOf("]"));     
      var command  = stateval.substring(stateval.indexOf("]")+1,stateval.length);   
          sendTo('telegram.0', {
              user: benutzer,
              answerCallbackQuery: {
                  text: command,
                  showAlert: false // Optional parameter
              }
         });
      });
      
      

      Gefunden hier:

      viewtopic.php?t=6515 `

      Top! Vielen Dank soweit!

      Das hat bei mir immer einen Fehler geschmissen wenn der Bot normale Nachrichten bekommen hat 😕

      Meine Lösung hierfür ist dem callback_data ein "muster" voran zu hängen, welches sozusagen den Button definiert.

      Falls jenes "Muster" nun gefunden wird, wird das answerCallbackQuery gesendet.

      In meinem Fall habe ich als pattern/muster "key_" genutzt

      Der folgende Code bestätigt nun stupide jede Button dessen callback_data mit "key_" beginnt.

      Falls eine Nachricht nun mit dem Text "key_" beginnt, wird auch eine Antwort gesendet, und dann kommt der Fehler halt doch noch :geek:

      on({id: "telegram.0.communicate.request", change: 'any'}, function(obj){
      var stateval = getState('telegram.0.communicate.request').val;
      var benutzer = stateval.substring(1,stateval.indexOf("]"));     
      var command  = stateval.substring(stateval.indexOf("]")+1,stateval.length);
      
      var checkval = command.indexOf('key_') + 1;
      
      if (checkval == 1) {
          sendTo('telegram.0', {
              user: benutzer,
              answerCallbackQuery: {
                  showAlert: false // Optional parameter
              }
         });
      
      };
      
      });
      
      

      Geht vielleicht auch cleverer das ganze aber ich bin nun d'accord

      posted in Skripten / Logik
      Netfreak25
      Netfreak25
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo