Navigation

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

    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

    R
    • Profile
    • Following 0
    • Followers 0
    • Topics 10
    • Posts 43
    • Best 1
    • Groups 1

    Ralf 8

    @Ralf 8

    Starter

    1
    Reputation
    10
    Profile views
    43
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Ralf 8 Follow
    Starter

    Best posts made by Ralf 8

    • Verbindung mit neuer Ecoflow Api

      Hallo,

      hat jemand Erfahrungen, wie man sich in Javascript mit der neuen Ecoflow-Api verbinden kann?

      Die Dokumentation zeigt wie es per https funktioniert:
      https://developer-eu.ecoflow.com/us/document/introduction

      Ist es möglich das auch mit Javascript umzusetzen?

      Um die Stromabgabe der Powerstream abzufragen, müsste man wahrscheinlich diesen String:

      params.quotas=20_1.permanentWatts&sn=meineseriennr&accessKey=meinaccesskey&nonce=123456&timestamp=1725201337126
      

      verschlüsseln und mit Curl senden.

      Hier ein Teil der Original-Doku (siehe Link oben)

      Step 1: request parameters must be sorted by ASCII value and concatenated with characters =, &
      E.g. str=param1=value1&param2=value2
      Step 2: if the type is nested, expand and splice according to the method of step 1.
      Step 3: concatenate accessKey, nonce, timestamp
      E.g. str=param1=value1&param2=value2&accessKey=***&nonce=...&timestamp=...
      Step 4: encrypt
      E.g. byte[] signBytes = HMAC-SHA256(str, secretKey)
      Step 5: convert byte[] to hexadecimal string. String sign = bytesToHexString(signBytes)
      E.g. sign=85776ede686fe4783eac48135b0b1748ba2d7e9bb7791b826dc942fc29d4ada8
      Step 6: add accessKey, nonce, timestamp, sign to HTTP header
      Step 7: get request data according to Content-Type header
      Step8: verify that the steps to generate the signature are correct

      // request
      curl -X GET https://api-e.ecoflow.com/iot-open/sign/device/list \
      -H 'accessKey:OCHzRuj6NLF7o43***' \
      -H 'timestamp:1681796503289' \
      -H 'nonce:234762' \
      -H 'sign:f560c3e31d96ad31e4567939f9b3dca7b2c454ca7003f60***'
      
      // response
      {
          "code":"0",
          "message":"Success",
          "data":[
              {
                  "sn":"DCABZ****",
                  "online":1
              }
          ]
      }
      
      posted in JavaScript
      R
      Ralf 8

    Latest posts made by Ralf 8

    • Erstes oder letztes Datenpunkt-Objekt im Verzeichnis

      Hallo,

      da ich heute lange gesucht habe, um den ersten und letzten Datenpunkt eines Verzeichnisses zu finden, ohne seine Bezeichnung zu kennen, poste ich hier meine Lösung.

      Vielleicht hat jemand dasselbe Problem und kann sie brauchen.

      In meinem Verzeichnis '0_userdata.0.zaehlerstand.2025' gibt es unbekannt vielen Datenpunkte mit Stromzählerstand-Werten.
      Um den ersten oder letzten Wert zu lesen, kann man die Datenpunkte wie ein Array durchsuchen, ohne die Bezeichnung kennen zu müssen.

      Das erste Element ist einfach [0]

      var first_id = $('0_userdata.0.zaehlerstand.2025.*')[0];
      getState(first_id).val;   // Wert lesen
      

      Das letzte Element kann über die Anzahl der Datenpunkte gefunden werden.
      Da Arrays nullbasiert sind, ist die Anzahl length -1

      var anzahl = $('0_userdata.0.zaehlerstand.2025.*').length -1;
      var last_index = $('0_userdata.0.zaehlerstand.2025.*')[anzahl];
      

      Ergänzung:
      Wenn man die Kurz-Bezeichnung des Datenpunktes 'xyz' benötigt, kann man diese so aus dem kompletten id '0_userdata.0.zaehlerstand.2025.xyz' extrahieren:

      var s = id.substring(id.lastIndexOf('.') + 1, id.length);
      log (s);
      

      oder alternativ so:

      var s = id.split('.');  
      log(s[s.length-1]);
      
      posted in JavaScript
      R
      Ralf 8
    • RE: [gelöst] Json mit Variable in Datenpunkt schreiben

      @paul53
      Vielen Dank, das war die Lösung. Da wäre ich nie drauf gekommen

      posted in JavaScript
      R
      Ralf 8
    • RE: [gelöst] Json mit Variable in Datenpunkt schreiben

      @ticaki
      danke, aber es funktioniert leider auch ohne Klammer nicht.
      date1 vorne wird einfach als string interpretiert und nicht als variable,
      date1 hinten ergibt tatsächlich das Datum, die zweite Zeile steht nur zur Kontrolle da.
      (value ist ein x-beliebiger Wert, hier nicht wichtig)

      var date1 = new Date().toLocaleString('de-DE', { day:'2-digit', month: '2-digit', year: 'numeric' });

      var jsonstring = {
              date1  :  value
      };
      
      setState('0_userdata.0.Zaehlerstand.0',jsonstring);
      

      Der Datenpunkt erhält dann diesen Json:
      {"date1":value}

      gewünscht ist aber
      {"22.03.2025":value}

      posted in JavaScript
      R
      Ralf 8
    • [gelöst] Json mit Variable in Datenpunkt schreiben

      Hallo,

      ich habe gerade Probleme einen Datenpunkt mit einem Json zu füllen.

      Bisher habe ich die Bezeichner fix als String eingegeben, das funktioniert problemlos:

      var date1 = new Date().toLocaleString('de-DE', { day:'2-digit', month: '2-digit', year: 'numeric'  });
      
      var jsonstring = ({
                  "Aktuelles Datum" : date1
                  });
      
      setState(id, JSON.stringify(jsonstring));
      

      Wenn ich aber ein variables Datum als Bezeichner verwenden möchte, geht das nicht,
      es wird einfach "date1" in den Json geschrieben und nicht das Datum !

      var jsonstring = ({
                  date1  :  value
                  });
      
      setState(id, JSON.stringify(jsonstring));
      

      Hat jemand eine Idee was ich falsch mache?

      Vielen Dank

      posted in JavaScript
      R
      Ralf 8
    • RE: Gibt es einen Adapter für ecoflow PowerOcean ?

      @ralf-8 Anfänger-Frage [GELÖST]

      Der Punkt musste weg:

      falsch: JSON.parse(val).['20_1.pvToInvWatts']

      richtig: JSON.parse(val)['20_1.pvToInvWatts']

      Hier die vollständigen Objektdaten des Alias

      {
        "common": {
          "name": "Test",
          "desc": "Manuell erzeugt",
          "role": "state",
          "type": "json",
          "read": true,
          "write": true,
          "alias": {
            "id": "ecoflow_catshape.0.HW51Zxxxxx.quota",
            "read": "JSON.parse(val)['20_1.pvToInvWatts']"
          }
        },
        "type": "state",
        "native": {},
        "_id": "alias.0.catshape.Test",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        },
        "from": "system.adapter.admin.0",
        "user": "system.user.admin",
        "ts": 1741699783228
      }
      
      posted in ioBroker Allgemein
      R
      Ralf 8
    • RE: Gibt es einen Adapter für ecoflow PowerOcean ?

      @catshape
      Vielen Dank. Funktioniert. Zuerst sieht es so aus, als ob der Wert nicht geändert werde.
      Nach 10 sec erscheint aber tatsächlich der neu eingestellte Wert!

      Darf ich noch eine allgemeine Anfänger-Frage stellen:

      Ich habe versucht, für pvToInvWatts einen Alias anzulegen, einfach wegen der Übersichtlichkeit.
      In ecoflow_catshape.0.HW51Zxxxxxx.quota stehen ja alle Werte zur Verfügung.

      Das klappt für JSON.parse(val).deviceName auch problemlos.

      Aber für pvToInvWatts steht in Quota "20_1.pvToInvWatts"
      Mit dem Punkt komme ich aber nicht klar, egal wie ich Klammern oder "" oder '' setze:

      "alias": {
      "read": "JSON.parse(val).['20_1.pvToInvWatts']",
      "id": "ecoflow_catshape.0.HW51ZOH4SF6T4876.quota"
      }

      JSON.parse(val).20_1.pvToInvWatts
      JSON.parse(val).[20_1.pvToInvWatts]
      JSON.parse(val).['20_1.pvToInvWatts']
      JSON.parse(val).'20_1.pvToInvWatts'

      alle Versionen funktionieren nicht

      posted in ioBroker Allgemein
      R
      Ralf 8
    • RE: Gibt es einen Adapter für ecoflow PowerOcean ?

      @catshape

      Habe heute früh versucht, permanentWatts (= Haushaltsstrom) einzustellen:
      es benötigt mehrere Versuche, damit der Wert nicht wieder zurückgestellt wird

      Muss die Änderung mit der Daten-Aktualisierung des Adapters zusammentreffen?.

      Meine Einstellung für
      node-cron Zeitplan für die Abfrage der Daten von EcoFlow
      ist wie bei Installation auf alle 10 sec. eingestellt.

      Wenn ich das per Javascript einstellen möchte, müsste ich den Wert für permanentWatts also mehrmals innerhalb von 10 sek. umstellen und überprüfen, ob der Wert auch dauerhaft geändert wurde. Oder kann man den Adapter per JS steuern, um die Daten sofort zu aktualisieren?

      posted in ioBroker Allgemein
      R
      Ralf 8
    • RE: Verbindung mit neuer Ecoflow Api

      @haus-automatisierung Eventuell hilft Dir das Beispiel von mir ja schon weiter

      Die Verbindung klappt sehr gut, alle Devices wurden in den Objektbaum eingetragen. Vielen Dank.

      Leider komme ich aber nicht weiter, wie die Werte aus der Powerstream ermittelt werden:

      • pv1InputWatts
      • pv2InputWatts
      • pvToInvWatts
      • permanentWatts

      Für weitere Hilfen bin ich daher sehr dankbar.

      Gruß
      Ralf
      Für eine

      posted in JavaScript
      R
      Ralf 8
    • RE: Gibt es einen Adapter für ecoflow PowerOcean ?

      Vielen Dank für Deinen Adapter.

      Da der ecoflow-mqtt Adapter bei mir nur Daten liefert, wenn ich vorher die Ecoflow-App auf dem Handy aufgerufen hatte, bin ich dafür sehr dankbar.

      Kann man auch Daten ändern?

      Um Energie-Abgabe aus dem Akku zu regeln,
      muss ich am PowerStream den Wert für den Haushaltsstrom
      heartbeat.permanentWatts
      dynamisch verändern, je nachdem wieviel Strom verbraucht wird.

      Leider stellt der Wert sich wieder zurück wenn ich dort einen Wert eintrage.

      Gruß
      Ralf

      posted in ioBroker Allgemein
      R
      Ralf 8
    • RE: Neuer Adapter ecoflow-mqtt

      @ralf-8
      aktuell scheinen sich die Daten aus der Powerstream wieder regelmäßiger zu aktualisieren.

      Mehrere Wochen wurden die Daten nur aktualisisert wenn ich gerade die Ecoflow-App auf dem Smartphone aufgerufen hatte.

      Ich habe ein Test-Script laufen und logge gerade die Solarmodul-Daten mit

      getState('ecoflow-mqtt.0.HW51xyz.inverter_heartbeat.pv1InputWatts').val
      

      Exakt alle 5 Minuten ändern sich die Werte. Das ist doch mal schon ein Anfang.

      Die Energieabgabe lässt sich aber zeitnah ändern, aktuell teste das mit

      setState('ecoflow-mqtt.0.HW51xyz.inverter_heartbeat.permanentWatts', Watt);
      

      im Minutentakt und es funktioniert. Die Werte werden auch endlich in der Ecoflow-App korrekt angezeigt. Da hat Ecoflow offensichtlich nachgebessert. Oder hat foxthefox am Adapter etwas verbessert?

      posted in Tester
      R
      Ralf 8
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo