Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    14
    1
    2.3k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.7k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    1.5k

Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

Geplant Angeheftet Gesperrt Verschoben JavaScript
334 Beiträge 19 Kommentatoren 29.1k Aufrufe 18 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • R Offline
    R Offline
    Rico Sander
    schrieb am zuletzt editiert von
    #306

    Danke für die Einblicke in ein ziemlich ausgewachsenes System - auch wenn es für mich nicht zutrifft. Interessant sind solche Infos allemal.

    Wenns nicht geht, wie man will
    - muss mans tun, wie man kann.
    1 Antwort Letzte Antwort
    0
    • maxclaudiM maxclaudi

      @Rico-Sander

      hallo erst mal :-)

      zum Thema Cloud / lokaler Betrieb:

      Das HTTP-Script selbst benötigt keinen Internetzugang.
      Die Kommunikation erfolgt direkt zwischen ioBroker und dem Zendure-Gerät über dessen lokale IP-Adresse.

      Die App hingegen arbeitet weiterhin über die Zendure-Cloud.
      Wenn Du dem Gerät den Internetzugang sperrst, erscheint es deshalb in der App als offline, obwohl es im lokalen Netzwerk möglicherweise weiterhin erreichbar ist.

      Mein Script greift ausschließlich auf die lokale HTTP-Schnittstelle zu und nutzt die Cloud nicht.

      Wenn bei gesperrtem Internetzugang zusätzlich die Meldung "Keine Verbindung möglich.
      Zendure-Geräte IP prüfen!" erscheint, bedeutet das lediglich, dass das Script keine gültige Antwort mehr vom lokalen HTTP-Endpunkt erhalten hat.
      Dass die Fehlermeldung kam, bedeutet, dass vier Verbindungsversuche in Folge fehlgeschlagen sind.
      Das Script läuft weiter und sobald wieder eine Verbindung zustande kommt, verschwindet die Fehlermeldung.

      Mein aktueller Kenntnisstand:

      • Für die Aktivierung der lokalen API verlangt Zendure einmalig den HEMS-Schritt.
      • Für den anschließenden Betrieb meines Scripts nutze ich kein HEMS.
      • Bei mir läuft die lokale Steuerung seit langer Zeit problemlos ohne HEMS.
      • Aufgrund der vielen Nutzer und der hohen Anzahl an Thread-Aufrufen gehe ich davon aus, dass die grundsätzliche Funktionsweise des Scripts korrekt ist.

      Ob bei aktivem HEMS die lokale HTTP-Schnittstelle deaktiviert oder anderweitig eingeschränkt wird, kann ich Dir nicht sicher sagen.
      Die bisherigen Rückmeldungen deuten jedoch darauf hin, dass HEMS und rein lokale Steuerung nicht immer problemlos zusammenarbeiten.
      Bei mir ist HEMS deaktiviert.

      Da mein Script ausschließlich lokal per HTTP kommuniziert, wäre das zunächst nicht zu erwarten.
      Warum das Gerät in diesem Fall nicht mehr auf die lokale HTTP-Abfrage antwortet, kann ich aktuell nicht sicher beurteilen.
      Es wurde allerdings schon mehrfach berichtet, dass einige neuere Geräte ohne Cloud-Verbindung nicht vollständig lokal nutzbar sind.
      Ob das hier die Ursache ist, kann ich nicht beurteilen.
      Hier ist Zendure mit der Firmware gefragt.

      Zum Intervall des Steuerungsscripts:
      Mein Script selbst arbeitet standardmäßig mit einem GET-Intervall von 5000 ms. Die aktuelle Gerätekonfiguration wird also alle 5 Sekunden abgefragt.
      Zusätzlich werden Schreibvorgänge gesammelt und zeitnah übertragen.

      Das Intervall von meinem Script kann grundsätzlich verkleinert werden, ich empfehle das aber nicht.
      Die HTTP-Schnittstelle liefert keine Messwerte im Millisekundenbereich und die zusätzliche Last auf Gerät und Netzwerk steigt unnötig an.

      Für Regelungen ist meist ohnehin das eigentliche Steuerungsscript der begrenzende Faktor.
      Wenn dieses ebenfalls alle 5 Sekunden läuft, ergibt sich im Normalfall eine Reaktionszeit von wenigen Sekunden, was für Energiemanagement-Aufgaben üblicherweise ausreichend ist.
      Ob Dein eigentliches Steuerungsscript 5 Sekunden benötigt, kann ich nicht beurteilen.
      Beispiel: Mein Hauptscript zur Steuerung verwendet z. B. als Haupt-Trigger den Stromzählerwert.
      Der Stromzählerwert wird ca alle 3 bis 5 sek. aktualisiert und damit getriggert.
      Es hat sonst keine Verzögerungen.

      Zur TypeScript-Warnung:

      Du musst nichts ändern.
      Die Meldung stammt vom TypeScript-Checker des Editors und hat keine Auswirkung auf die Funktion.
      Falls Du die Warnung loswerden möchtest, kannst Du timeOptions und dateOptions explizit als Intl.DateTimeFormatOptions typisieren.
      Für den Betrieb des Scripts ist das aber nicht erforderlich.

      Der betreffende Code ist normales JavaScript und funktioniert korrekt.

      Je nach Version des JavaScript-Adapters, Node.js oder der verwendeten TypeScript-Definitionen kann bei den Objekten timeOptions und dateOptions eine Typwarnung angezeigt werden.

      Da das Script bei Dir korrekt läuft, musst Du daran nichts ändern. Es handelt sich lediglich um eine Editor-Warnung und nicht um einen Laufzeitfehler.

      Ich würde zunächst prüfen:

      • JavaScript-Adapter aktuell?
      • Node.js aktuell?
      • Verschwindet die Warnung nach einem Adapter-Update?
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #307

      @maxclaudi [sagte]: Die aktuelle Gerätekonfiguration wird also alle 5 Sekunden abgefragt.

      Das habe ich beibehalten.
      Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

      SF800_Error.JPG

      Kann man das nicht unterdrücken?

      Gerät ist ein "SF 800 Pro 2", das ich gestern in Betrieb genommen habe. Internetzugang ist im Router gesperrt.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

      maxclaudiM 2 Antworten Letzte Antwort
      0
      • R Offline
        R Offline
        Rico Sander
        schrieb am zuletzt editiert von
        #308

        Hallo @maxclaudi ,

        ich reiche nochmal die angekündigten Infos nach.

        SF800Pro in der Fritte Internet gesperrt, Zendure App zwangsbeendet und via pihole zwei weitere Ziele gesperrt (mqtteu.zen-iot.com, app.zendure.tech).

        Script läuft prinzipiell, wirft aber jede Menge Fehler aus (Auszug aus Log):

        2026-06-16 17:53:48.644 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=timeout of 2500ms exceeded)
        2026-06-16 17:53:48.644 - warn: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: GET Fehler (3): timeout of 2500ms exceeded
        2026-06-16 17:53:49.196 - info: admin.0 (450218) ==> Connected system.user.admin from ::ffff:192.168.178.2
        2026-06-16 17:53:49.351 - info: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: Verbindung wieder OK
        2026-06-16 17:53:55.176 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:53:55.176 - warn: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: GET Fehler (1): socket hang up
        2026-06-16 17:53:58.198 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:53:58.199 - warn: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: GET Fehler (2): socket hang up
        2026-06-16 17:54:01.216 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:54:01.217 - warn: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: GET Fehler (3): socket hang up
        2026-06-16 17:54:04.198 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:54:04.198 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: Keine Verbindung möglich. Zendure-Geräte IP prüfen!
        2026-06-16 17:54:07.219 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:54:10.200 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:54:13.220 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:54:16.204 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        2026-06-16 17:54:19.779 - error: javascript.0 (463079) script.js.common.Projekte.Zendure-HTTP: httpGet(url=http://192.168.178.56/properties/report, error=socket hang up)
        

        Die Freigabe der beiden Domains brachten keine Änderungen. Daran liegt es also nicht.

        Da es sich nicht zwingend um sensible Daten handelt,werde ich den Internetzugang wieder freigeben und die App aktivieren.

        Ob sich Handlungsbedarf ergibt kann ich nicht beurteilen. Insofern siehe das bitte nicht als Kritik am Script an, sondern lediglich als Rückmeldung.

        Wenns nicht geht, wie man will
        - muss mans tun, wie man kann.
        1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @maxclaudi [sagte]: Die aktuelle Gerätekonfiguration wird also alle 5 Sekunden abgefragt.

          Das habe ich beibehalten.
          Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

          SF800_Error.JPG

          Kann man das nicht unterdrücken?

          Gerät ist ein "SF 800 Pro 2", das ich gestern in Betrieb genommen habe. Internetzugang ist im Router gesperrt.

          maxclaudiM Offline
          maxclaudiM Offline
          maxclaudi
          schrieb am zuletzt editiert von maxclaudi
          #309

          @paul53 und @Rico-Sander

          Das Problem liegt nicht am Script, sondern an der Firmware
          Die Geräte unterstützen zwar die lokale Steuerung über zenSDK, aber die Firmware erwartet weiterhin regelmäßige Verbindungen zu Zendure-Cloud-Diensten (MQTT/HTTPS) zur Synchronisation und Geräteverwaltung.

          Verliert das Gerät die Cloud-Verbindung, dann versucht das Gerät immer häufiger sich mit der Cloud zu verbinden.
          Das passiert so oft und häufig bis der Zendure-ESP intern überlastet ist und eine Steuerung gar nicht mehr möglich sein kann.

          Wird der Internetzugang komplett gesperrt, versucht das Gerät die Cloud-Verbindungen immer wieder neu aufzubauen.
          Laut Aussage eines Zendure-Entwicklers erfolgt dies derzeit mit einem recht aggressiven Wiederholungsintervall.
          Dadurch werden CPU- und Netzwerkressourcen des Geräts überlastet, was dann zu Timeouts, "socket hang up" und nicht erreichbaren lokalen Schnittstellen führt.
          Bis am Ende keine Steuerung mehr möglich ist.

          Genau dieses Verhalten sieht man in euren Logs.

          Deshalb würde ich den Internetzugang für das Gerät aktuell (noch) nicht dauerhaft sperren.
          Die Steuerung erfolgt trotzdem lokal, die Cloud wird nur für die von der Firmware erwarteten Synchronisationsvorgänge genutzt.

          Zendure hat das Verhalten bereits im Februar 2026 bestätigt und angekündigt, an einer besseren Lösung für den Local-Only-Betrieb zu arbeiten.
          Aber bisher wurde das leider - Stand heute - meines Wissens nach nicht umgesetzt.


          Quelle Bestätigung des Zendure Entwicklers:
          Local only use creates multiple external network requests leading to overload of SolarFlow 800 Pro

          Zendure Entwickler dav1dBoy sagte:

          What you are observing is indeed related to the device’s current cloud interaction mechanism.
          At the moment, the firmware still relies on periodic communication with Zendure cloud services (e.g. MQTT / HTTPS endpoints) for status synchronization, device management, and consistency checks. When outgoing traffic is blocked by a firewall, the connection attempts fail immediately and the device enters a retry loop with a relatively aggressive retry interval.

          You are absolutely correct that retrying at such a high frequency (e.g. multiple attempts per second) is not ideal behavior, especially in constrained embedded environments. In this blocked-network scenario, the repeated connection attempts can temporarily consume CPU time and network resources, which may affect the responsiveness of local interfaces such as the Home Assistant integration.

          To be clear:
          • This behavior is not intended to overload the device, and
          • It does not indicate a fault in Home Assistant or your local setup.

          At the same time, we agree with your assessment:
          a more robust retry strategy (e.g. exponential backoff, longer retry intervals, or adaptive retry timing when the network is unavailable) would be healthier and more resilient.

          Regarding your expectation of fully local operation:
          we hear this feedback very clearly. We are actively working towards a more complete local-only runtime model, where core device control logic can operate independently of continuous cloud connectivity. This is an ongoing effort and requires careful changes across firmware architecture, but it is very much aligned with the direction we are moving in.

          For now, please note that current firmware versions still expect periodic interaction with Zendure servers, and completely blocking internet access may lead to degraded responsiveness as you observed.

          We really appreciate you taking the time to analyze this so thoroughly and to report it constructively. Feedback like this directly influences how we prioritize robustness improvements and local-control capabilities.

          Thank you for your patience — and thank you for pushing us to make the zenSDK better.


          @paul53 sagte:
          Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

          SF800_Error.JPG

          Ja. Das ist aktuell bewusst so gewählt, damit Zustandsänderungen möglichst zeitnah erkannt werden.
          Die HTTP-Abfrage selbst erzeugt normalerweise keine Probleme.
          Die von euch gezeigten Fehler entstehen erst dann, wenn das Gerät durch die fehlende Cloud-Anbindung zeitweise nicht mehr sauber auf lokale HTTP-Anfragen reagiert.

          @paul53 sagte:
          Kann man das nicht unterdrücken?

          Ja, grundsätzlich schon.
          Die Log-Ausgaben stammen nicht von der Zendure-Firmware, sondern vom Script und dienen lediglich dazu, Verbindungsprobleme sichtbar zu machen.
          Wer die Ursache kennt und bewusst mit einem dauerhaft geblockten Internetzugang arbeitet, kann die entsprechenden log()-Ausgaben natürlich auskommentieren oder auf ein anderes Log-Level ändern.
          An Alle:
          Das beseitigt allerdings nur die Meldungen im Log.
          Die eigentliche Ursache – die aggressiven Cloud-Reconnect-Versuche der Firmware – bleibt unverändert bestehen.

          Allgemein würde ich noch den rssi Wert überprüfen.
          Wenn die WLAN-Verbindung zum Gerät nicht gut genug ist, kommt es eher bzw. häufiger zu timeouts.
          Sollte rssi gut genug sein (z. B. <= -60) und es dennoch zu GET - Fehler und Timeouts kommen, liegt es mit hoher Wahrscheinlicheit an dem gesperrten Internet.

          Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

          paul53P 1 Antwort Letzte Antwort
          2
          • R Offline
            R Offline
            Rico Sander
            schrieb am zuletzt editiert von
            #310

            Moin,

            danke für die ausführliche Info. Das erklärt dann das beobachtete Verhalten. Vielleicht kannst Du diesen Hinweis, die aktuelle Besonderheit, in Deiner ansonsten sehr guten Dokumentation zum Script unterbringen. Mir war lange Zeit nicht klar, was das script eigentlich tut. Erst durch Deine irgendwann nachgereichten Details habe ich das dann endlich verstanden.😳

            Danke.

            Wenns nicht geht, wie man will
            - muss mans tun, wie man kann.
            1 Antwort Letzte Antwort
            1
            • maxclaudiM maxclaudi

              @paul53 und @Rico-Sander

              Das Problem liegt nicht am Script, sondern an der Firmware
              Die Geräte unterstützen zwar die lokale Steuerung über zenSDK, aber die Firmware erwartet weiterhin regelmäßige Verbindungen zu Zendure-Cloud-Diensten (MQTT/HTTPS) zur Synchronisation und Geräteverwaltung.

              Verliert das Gerät die Cloud-Verbindung, dann versucht das Gerät immer häufiger sich mit der Cloud zu verbinden.
              Das passiert so oft und häufig bis der Zendure-ESP intern überlastet ist und eine Steuerung gar nicht mehr möglich sein kann.

              Wird der Internetzugang komplett gesperrt, versucht das Gerät die Cloud-Verbindungen immer wieder neu aufzubauen.
              Laut Aussage eines Zendure-Entwicklers erfolgt dies derzeit mit einem recht aggressiven Wiederholungsintervall.
              Dadurch werden CPU- und Netzwerkressourcen des Geräts überlastet, was dann zu Timeouts, "socket hang up" und nicht erreichbaren lokalen Schnittstellen führt.
              Bis am Ende keine Steuerung mehr möglich ist.

              Genau dieses Verhalten sieht man in euren Logs.

              Deshalb würde ich den Internetzugang für das Gerät aktuell (noch) nicht dauerhaft sperren.
              Die Steuerung erfolgt trotzdem lokal, die Cloud wird nur für die von der Firmware erwarteten Synchronisationsvorgänge genutzt.

              Zendure hat das Verhalten bereits im Februar 2026 bestätigt und angekündigt, an einer besseren Lösung für den Local-Only-Betrieb zu arbeiten.
              Aber bisher wurde das leider - Stand heute - meines Wissens nach nicht umgesetzt.


              Quelle Bestätigung des Zendure Entwicklers:
              Local only use creates multiple external network requests leading to overload of SolarFlow 800 Pro

              Zendure Entwickler dav1dBoy sagte:

              What you are observing is indeed related to the device’s current cloud interaction mechanism.
              At the moment, the firmware still relies on periodic communication with Zendure cloud services (e.g. MQTT / HTTPS endpoints) for status synchronization, device management, and consistency checks. When outgoing traffic is blocked by a firewall, the connection attempts fail immediately and the device enters a retry loop with a relatively aggressive retry interval.

              You are absolutely correct that retrying at such a high frequency (e.g. multiple attempts per second) is not ideal behavior, especially in constrained embedded environments. In this blocked-network scenario, the repeated connection attempts can temporarily consume CPU time and network resources, which may affect the responsiveness of local interfaces such as the Home Assistant integration.

              To be clear:
              • This behavior is not intended to overload the device, and
              • It does not indicate a fault in Home Assistant or your local setup.

              At the same time, we agree with your assessment:
              a more robust retry strategy (e.g. exponential backoff, longer retry intervals, or adaptive retry timing when the network is unavailable) would be healthier and more resilient.

              Regarding your expectation of fully local operation:
              we hear this feedback very clearly. We are actively working towards a more complete local-only runtime model, where core device control logic can operate independently of continuous cloud connectivity. This is an ongoing effort and requires careful changes across firmware architecture, but it is very much aligned with the direction we are moving in.

              For now, please note that current firmware versions still expect periodic interaction with Zendure servers, and completely blocking internet access may lead to degraded responsiveness as you observed.

              We really appreciate you taking the time to analyze this so thoroughly and to report it constructively. Feedback like this directly influences how we prioritize robustness improvements and local-control capabilities.

              Thank you for your patience — and thank you for pushing us to make the zenSDK better.


              @paul53 sagte:
              Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

              SF800_Error.JPG

              Ja. Das ist aktuell bewusst so gewählt, damit Zustandsänderungen möglichst zeitnah erkannt werden.
              Die HTTP-Abfrage selbst erzeugt normalerweise keine Probleme.
              Die von euch gezeigten Fehler entstehen erst dann, wenn das Gerät durch die fehlende Cloud-Anbindung zeitweise nicht mehr sauber auf lokale HTTP-Anfragen reagiert.

              @paul53 sagte:
              Kann man das nicht unterdrücken?

              Ja, grundsätzlich schon.
              Die Log-Ausgaben stammen nicht von der Zendure-Firmware, sondern vom Script und dienen lediglich dazu, Verbindungsprobleme sichtbar zu machen.
              Wer die Ursache kennt und bewusst mit einem dauerhaft geblockten Internetzugang arbeitet, kann die entsprechenden log()-Ausgaben natürlich auskommentieren oder auf ein anderes Log-Level ändern.
              An Alle:
              Das beseitigt allerdings nur die Meldungen im Log.
              Die eigentliche Ursache – die aggressiven Cloud-Reconnect-Versuche der Firmware – bleibt unverändert bestehen.

              Allgemein würde ich noch den rssi Wert überprüfen.
              Wenn die WLAN-Verbindung zum Gerät nicht gut genug ist, kommt es eher bzw. häufiger zu timeouts.
              Sollte rssi gut genug sein (z. B. <= -60) und es dennoch zu GET - Fehler und Timeouts kommen, liegt es mit hoher Wahrscheinlicheit an dem gesperrten Internet.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #311

              @maxclaudi [sagte]: Fehler entstehen erst dann, wenn das Gerät durch die fehlende Cloud-Anbindung zeitweise nicht mehr sauber auf lokale HTTP-Anfragen reagiert.

              Danke für die ausführliche Information. Ich habe die Verbindung zum Internet wieder freigegeben.

              @maxclaudi sagte:

              Die Log-Ausgaben stammen nicht von der Zendure-Firmware, sondern vom Script

              Den Error-Log erzeugt die Funktion httpGet() des Javascript-Adapters. Ich werde es mal mit axios() versuchen.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

              maxclaudiM 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @maxclaudi [sagte]: Fehler entstehen erst dann, wenn das Gerät durch die fehlende Cloud-Anbindung zeitweise nicht mehr sauber auf lokale HTTP-Anfragen reagiert.

                Danke für die ausführliche Information. Ich habe die Verbindung zum Internet wieder freigegeben.

                @maxclaudi sagte:

                Die Log-Ausgaben stammen nicht von der Zendure-Firmware, sondern vom Script

                Den Error-Log erzeugt die Funktion httpGet() des Javascript-Adapters. Ich werde es mal mit axios() versuchen.

                maxclaudiM Offline
                maxclaudiM Offline
                maxclaudi
                schrieb am zuletzt editiert von
                #312

                @paul53
                Ein Blick auf die Zeitstempel in deinem Log zeigt sehr deutlich, warum man diese Meldungen auf keinen Fall unterdrücken, sondern ernst nehmen sollte:

                Um 15:14:37 Uhr läuft der lokale HTTP-Request in einen harten Timeout von 3000 ms.
                Skript fragt an, aber der interne Webserver des Zendure-Geräts hat innerhalb von 3 Sekunden überhaupt nicht reagiert.

                Erst um 17:58:45 Uhr – also fast drei Stunden später – antwortet das Gerät wieder (Verbindung wieder OK).

                Das Unterdrücken dieser Meldungen im Skript würde das Problem nicht lösen, sondern nur die Symptome verschleiern.
                Das Log beweist eigentlich, dass das Gerät bei gesperrtem Internetzugang entweder den lokalen HTTP-Dienst nach einer Weile komplett schließt oder die interne CPU des Geräts (vielleicht durch permanente, fehlschlagende Cloud-Kopplungsversuche) so überlastet ist, dass sie keine lokalen Anfragen mehr verarbeiten kann.

                Das Skript macht hier genau das, was es soll:
                Es registriert den Ausfall der Hardware, warnt Dich und baut die Verbindung vollautomatisch wieder auf, sobald das Gerät nach Stunden wieder reagiert.

                Das Problem liegt hier eindeutig in der Firmware-Architektur des Zendure-Geräts bei reinem Offline-Betrieb.

                @paul53 sagte:

                @maxclaudi sagte:

                Die Log-Ausgaben stammen nicht von der Zendure-Firmware, sondern vom Script

                Den Error-Log erzeugt die Funktion httpGet() des Javascript-Adapters. Ich werde es mal mit axios() versuchen.

                Zu deiner Idee mit axios():
                Ein Wechsel der HTTP-Funktion wird die Fehlermeldungen bei einer blockierten Firmware leider nicht verhindern können.

                Die Meldung timeout of 3000ms exceeded stammt vom JavaScript-Adapter selbst, weil die genutzte Netzwerk-Bibliothek nach Ablauf der 3 Sekunden keine Antwort vom Zendure-Webserver erhalten hat.

                Egal ob man httpGet() oder axios() verwendet – wenn die CPU des Geräts blockiert oder der interne Webserver offline geht, laufen beide Funktionen unweigerlich in einen Timeout und werfen einen Fehler aus.

                Das Skript muss diesen Verbindungsabbruch registrieren, um im Protokoll den Status sauber zu dokumentieren.

                Solange es jetzt mit Internetverbindung wieder fehlerfrei durchläuft, passt ja alles.

                Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                paul53P 1 Antwort Letzte Antwort
                0
                • maxclaudiM maxclaudi

                  @paul53
                  Ein Blick auf die Zeitstempel in deinem Log zeigt sehr deutlich, warum man diese Meldungen auf keinen Fall unterdrücken, sondern ernst nehmen sollte:

                  Um 15:14:37 Uhr läuft der lokale HTTP-Request in einen harten Timeout von 3000 ms.
                  Skript fragt an, aber der interne Webserver des Zendure-Geräts hat innerhalb von 3 Sekunden überhaupt nicht reagiert.

                  Erst um 17:58:45 Uhr – also fast drei Stunden später – antwortet das Gerät wieder (Verbindung wieder OK).

                  Das Unterdrücken dieser Meldungen im Skript würde das Problem nicht lösen, sondern nur die Symptome verschleiern.
                  Das Log beweist eigentlich, dass das Gerät bei gesperrtem Internetzugang entweder den lokalen HTTP-Dienst nach einer Weile komplett schließt oder die interne CPU des Geräts (vielleicht durch permanente, fehlschlagende Cloud-Kopplungsversuche) so überlastet ist, dass sie keine lokalen Anfragen mehr verarbeiten kann.

                  Das Skript macht hier genau das, was es soll:
                  Es registriert den Ausfall der Hardware, warnt Dich und baut die Verbindung vollautomatisch wieder auf, sobald das Gerät nach Stunden wieder reagiert.

                  Das Problem liegt hier eindeutig in der Firmware-Architektur des Zendure-Geräts bei reinem Offline-Betrieb.

                  @paul53 sagte:

                  @maxclaudi sagte:

                  Die Log-Ausgaben stammen nicht von der Zendure-Firmware, sondern vom Script

                  Den Error-Log erzeugt die Funktion httpGet() des Javascript-Adapters. Ich werde es mal mit axios() versuchen.

                  Zu deiner Idee mit axios():
                  Ein Wechsel der HTTP-Funktion wird die Fehlermeldungen bei einer blockierten Firmware leider nicht verhindern können.

                  Die Meldung timeout of 3000ms exceeded stammt vom JavaScript-Adapter selbst, weil die genutzte Netzwerk-Bibliothek nach Ablauf der 3 Sekunden keine Antwort vom Zendure-Webserver erhalten hat.

                  Egal ob man httpGet() oder axios() verwendet – wenn die CPU des Geräts blockiert oder der interne Webserver offline geht, laufen beide Funktionen unweigerlich in einen Timeout und werfen einen Fehler aus.

                  Das Skript muss diesen Verbindungsabbruch registrieren, um im Protokoll den Status sauber zu dokumentieren.

                  Solange es jetzt mit Internetverbindung wieder fehlerfrei durchläuft, passt ja alles.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #313

                  @maxclaudi [sagte]: Um 15:14:37 Uhr läuft der lokale HTTP-Request in einen harten Timeout von 3000 ms.
                  ... Erst um 17:58:45 Uhr – also fast drei Stunden später – antwortet das Gerät wieder (Verbindung wieder OK).

                  Nein, um 15:14:40 Uhr, also 2 Sekunden später (beim nächsten Intervall-Zyklus) hat das Gerät mit "Verbindung wieder OK" geantwortet.
                  Um 17:58:46 Uhr kam die Antwort 2 s nach dem zweiten Error-Log um 17:58:44 Uhr.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                  maxclaudiM 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @maxclaudi [sagte]: Um 15:14:37 Uhr läuft der lokale HTTP-Request in einen harten Timeout von 3000 ms.
                    ... Erst um 17:58:45 Uhr – also fast drei Stunden später – antwortet das Gerät wieder (Verbindung wieder OK).

                    Nein, um 15:14:40 Uhr, also 2 Sekunden später (beim nächsten Intervall-Zyklus) hat das Gerät mit "Verbindung wieder OK" geantwortet.
                    Um 17:58:46 Uhr kam die Antwort 2 s nach dem zweiten Error-Log um 17:58:44 Uhr.

                    maxclaudiM Offline
                    maxclaudiM Offline
                    maxclaudi
                    schrieb am zuletzt editiert von
                    #314

                    @paul53
                    danke fürs genaue Nachrechnen, du hast natürlich absolut recht.

                    Da waren die Tomaten auf meinen Augen wohl im harten Timeout.

                    Am technischen Kern ändert das nichts:
                    Das Gerät verschluckt sich bei gesperrtem Internetzugang zyklisch so massiv, dass es unregelmäßig in diese harten 3-Sekunden-Timeouts läuft, weil die interne CPU kurzzeitig komplett blockiert.

                    Mit axios() wirst du diese Timeouts leider auch nicht verhindern können, da der Fehler abgefangen werden muss, wenn die Hardware nicht antwortet.

                    Aber wenn es mit freigegebener Cloud stabil läuft, ist das Wichtigste ja erreicht.

                    Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @maxclaudi [sagte]: Die aktuelle Gerätekonfiguration wird also alle 5 Sekunden abgefragt.

                      Das habe ich beibehalten.
                      Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

                      SF800_Error.JPG

                      Kann man das nicht unterdrücken?

                      Gerät ist ein "SF 800 Pro 2", das ich gestern in Betrieb genommen habe. Internetzugang ist im Router gesperrt.

                      maxclaudiM Offline
                      maxclaudiM Offline
                      maxclaudi
                      schrieb am zuletzt editiert von
                      #315

                      @paul53 sagte:

                      @maxclaudi [sagte]: Die aktuelle Gerätekonfiguration wird also alle 5 Sekunden abgefragt.

                      Das habe ich beibehalten.
                      Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

                      SF800_Error.JPG

                      Was mir gerade beim Blick auf die Sekunden im Log noch aufgefallen ist:
                      Dort wird eine Zeitüberschreitung von 3000 ms gemeldet (timeout of 3000ms exceeded).
                      Im Standard-Skript hatte ich das Timeout eigentlich auf 1500 ms vordefiniert.

                      Falls du den Wert für das Timeout bei dir manuell erhöht hast, ist das laut der Beschreibung bei einem 5000-ms-Intervall rein mathematisch natürlich vollkommen im Rahmen (3000 < 5000).
                      Man sollte allerdings im Hinterkopf behalten, dass 5000ms Interval im Fall von Timeouts dann zeitlich sehr knapp wird.

                      Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • maxclaudiM maxclaudi

                        @paul53
                        danke fürs genaue Nachrechnen, du hast natürlich absolut recht.

                        Da waren die Tomaten auf meinen Augen wohl im harten Timeout.

                        Am technischen Kern ändert das nichts:
                        Das Gerät verschluckt sich bei gesperrtem Internetzugang zyklisch so massiv, dass es unregelmäßig in diese harten 3-Sekunden-Timeouts läuft, weil die interne CPU kurzzeitig komplett blockiert.

                        Mit axios() wirst du diese Timeouts leider auch nicht verhindern können, da der Fehler abgefangen werden muss, wenn die Hardware nicht antwortet.

                        Aber wenn es mit freigegebener Cloud stabil läuft, ist das Wichtigste ja erreicht.

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #316

                        @maxclaudi
                        Kannst du etwas zu dieser Beobachtung sagen, da du schon länger Erfahrung mit den Zendure Solarflow gemacht hast?

                        Bis zum "socSet" (85 %) wird mit 800 W aus dem Netz geladen. Danach erhöht sich "electricLevel" alle 2 Stunden um 1 %, was zu der Angabe von "Battery pack power" = 9 W passt.
                        Werte unter "properties" sind dann allerdings gelogen:

                        • "gridInputPower" = "gridOffPower" um 17 W (Mini-PC: 6 W + Router)
                        • "outputPackPower": 0 W

                        Gibt es eine Minimalleistungsaufnahme am Notstrom-Ausgang, damit nicht über den "socSet" hinaus geladen wird?
                        Als ich zu Beginn mal eine 75 W Glühlampe angeschlossen hatte, blieb der SOC auf 85 % konstant.

                        EDIT: Übrigens habe ich noch folgende Werte unter "properties", die nicht der Beschreibung entsprechen:

                        • "pass": 3
                        • "socLimit": 17

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                        maxclaudiM 1 Antwort Letzte Antwort
                        1
                        • paul53P paul53

                          @maxclaudi
                          Kannst du etwas zu dieser Beobachtung sagen, da du schon länger Erfahrung mit den Zendure Solarflow gemacht hast?

                          Bis zum "socSet" (85 %) wird mit 800 W aus dem Netz geladen. Danach erhöht sich "electricLevel" alle 2 Stunden um 1 %, was zu der Angabe von "Battery pack power" = 9 W passt.
                          Werte unter "properties" sind dann allerdings gelogen:

                          • "gridInputPower" = "gridOffPower" um 17 W (Mini-PC: 6 W + Router)
                          • "outputPackPower": 0 W

                          Gibt es eine Minimalleistungsaufnahme am Notstrom-Ausgang, damit nicht über den "socSet" hinaus geladen wird?
                          Als ich zu Beginn mal eine 75 W Glühlampe angeschlossen hatte, blieb der SOC auf 85 % konstant.

                          EDIT: Übrigens habe ich noch folgende Werte unter "properties", die nicht der Beschreibung entsprechen:

                          • "pass": 3
                          • "socLimit": 17
                          maxclaudiM Offline
                          maxclaudiM Offline
                          maxclaudi
                          schrieb am zuletzt editiert von maxclaudi
                          #317

                          @paul53 sagte:

                          @maxclaudi
                          Kannst du etwas zu dieser Beobachtung sagen, da du schon länger Erfahrung mit den Zendure Solarflow gemacht hast?

                          Bis zum "socSet" (85 %) wird mit 800 W aus dem Netz geladen. Danach erhöht sich "electricLevel" alle 2 Stunden um 1 %, was zu der Angabe von "Battery pack power" = 9 W passt.
                          Werte unter "properties" sind dann allerdings gelogen:

                          • "gridInputPower" = "gridOffPower" um 17 W (Mini-PC: 6 W + Router)
                          • "outputPackPower": 0 W

                          Gibt es eine Minimalleistungsaufnahme am Notstrom-Ausgang, damit nicht über den "socSet" hinaus geladen wird?
                          Als ich zu Beginn mal eine 75 W Glühlampe angeschlossen hatte, blieb der SOC auf 85 % konstant.

                          gut beobachtet.
                          Das lässt sich elektrotechnisch und physikalisch gut erklären.
                          Die Werte sind nicht direkt „gelogen“, sondern unterliegen den typischen Grenzen der Sensoren bei Kleinstleistungen.

                          Hier spielen mehrere Effekte zusammen, z. B.:
                          Sensor-Toleranz im Mikrobereich:
                          Die internen Stromsensoren (Shunts) des Geräts sind für hohe Ströme (z. B. beim Laden mit 800 W) optimiert.
                          Wenn das Gerät bei Erreichen des socSet (85 %) das Hauptladen beendet, schaltet es in den Standby-/Erhaltungsmodus.
                          Die dabei fließenden Ströme sind so minimal, dass die Software auf 0 W abgerundet wird, obwohl im Hintergrund minimale Erhaltungsimpulse fließen.

                          Eigenverbrauch vs. Last am Notstrom-Ausgang:
                          Dein Mini-PC und der Router ziehen zusammen ca. 17 W.
                          Das ist extrem wenig.
                          Wenn das Gerät im Standby läuft, reicht diese geringe Last am Notstrom Ausgang (gridOffPower) bestimmt nicht aus, um die minimale Erhaltungsenergie, die das System intern regelt, vollständig zu verbrauchen,
                          Ein Teil sickert weiterhin in die Zellen, weshalb der SOC alle 2 Stunden um 1 % nach oben kriecht.

                          Bei 75 W Last war der Verbrauch am Ausgang hoch genug, um die gesamte bereitgestellte Erhaltungsenergie sofort abzunehmen.
                          Der Akku musste nichts mehr aufnehmen und blieb stabil auf den konfigurierten 85 % stehen.

                          Das ist m. M. n. kein Zendure-eigenes Problem sondern allgemein elektrotechnisch kaum anders möglich.
                          Abhängig von der Güte der Sensoren, BMS, den jeweiligen Messbereichen usw.
                          Vermutlich gibt es keine feste „Mindestleistungsaufnahme“, sondern es ist ein reines Balance-Spiel zwischen der minimalen Erhaltungsleistung des BMS und der angeschlossenen Grundlast im Standby.
                          Wie das genau von Zendure gelöst ist kann ich nicht beurteilen.
                          Die beobachteten Werte und Wertfindung sind dabei elektrotechnisch jedoch völlig plausibel.

                          EDIT: Übrigens habe ich noch folgende Werte unter "properties", die nicht der Beschreibung entsprechen:

                          • "pass": 3
                          • "socLimit": 17

                          Das ist für mich neu.
                          Bei mir stimmen die Werte und die Beschreibung (noch).

                          Hast Du die Firmware aktualisiert?
                          Wenn ja, hat Zendure im Hintergrund vermutlich etwas an den API-Objekten geändert oder es ist ein neuer Bug.
                          Das ist für mich im Moment auch ein Novum, über das ich aktuell noch keine näheren Informationen habe.

                          Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                          paul53P 1 Antwort Letzte Antwort
                          1
                          • maxclaudiM maxclaudi

                            @paul53 sagte:

                            @maxclaudi
                            Kannst du etwas zu dieser Beobachtung sagen, da du schon länger Erfahrung mit den Zendure Solarflow gemacht hast?

                            Bis zum "socSet" (85 %) wird mit 800 W aus dem Netz geladen. Danach erhöht sich "electricLevel" alle 2 Stunden um 1 %, was zu der Angabe von "Battery pack power" = 9 W passt.
                            Werte unter "properties" sind dann allerdings gelogen:

                            • "gridInputPower" = "gridOffPower" um 17 W (Mini-PC: 6 W + Router)
                            • "outputPackPower": 0 W

                            Gibt es eine Minimalleistungsaufnahme am Notstrom-Ausgang, damit nicht über den "socSet" hinaus geladen wird?
                            Als ich zu Beginn mal eine 75 W Glühlampe angeschlossen hatte, blieb der SOC auf 85 % konstant.

                            gut beobachtet.
                            Das lässt sich elektrotechnisch und physikalisch gut erklären.
                            Die Werte sind nicht direkt „gelogen“, sondern unterliegen den typischen Grenzen der Sensoren bei Kleinstleistungen.

                            Hier spielen mehrere Effekte zusammen, z. B.:
                            Sensor-Toleranz im Mikrobereich:
                            Die internen Stromsensoren (Shunts) des Geräts sind für hohe Ströme (z. B. beim Laden mit 800 W) optimiert.
                            Wenn das Gerät bei Erreichen des socSet (85 %) das Hauptladen beendet, schaltet es in den Standby-/Erhaltungsmodus.
                            Die dabei fließenden Ströme sind so minimal, dass die Software auf 0 W abgerundet wird, obwohl im Hintergrund minimale Erhaltungsimpulse fließen.

                            Eigenverbrauch vs. Last am Notstrom-Ausgang:
                            Dein Mini-PC und der Router ziehen zusammen ca. 17 W.
                            Das ist extrem wenig.
                            Wenn das Gerät im Standby läuft, reicht diese geringe Last am Notstrom Ausgang (gridOffPower) bestimmt nicht aus, um die minimale Erhaltungsenergie, die das System intern regelt, vollständig zu verbrauchen,
                            Ein Teil sickert weiterhin in die Zellen, weshalb der SOC alle 2 Stunden um 1 % nach oben kriecht.

                            Bei 75 W Last war der Verbrauch am Ausgang hoch genug, um die gesamte bereitgestellte Erhaltungsenergie sofort abzunehmen.
                            Der Akku musste nichts mehr aufnehmen und blieb stabil auf den konfigurierten 85 % stehen.

                            Das ist m. M. n. kein Zendure-eigenes Problem sondern allgemein elektrotechnisch kaum anders möglich.
                            Abhängig von der Güte der Sensoren, BMS, den jeweiligen Messbereichen usw.
                            Vermutlich gibt es keine feste „Mindestleistungsaufnahme“, sondern es ist ein reines Balance-Spiel zwischen der minimalen Erhaltungsleistung des BMS und der angeschlossenen Grundlast im Standby.
                            Wie das genau von Zendure gelöst ist kann ich nicht beurteilen.
                            Die beobachteten Werte und Wertfindung sind dabei elektrotechnisch jedoch völlig plausibel.

                            EDIT: Übrigens habe ich noch folgende Werte unter "properties", die nicht der Beschreibung entsprechen:

                            • "pass": 3
                            • "socLimit": 17

                            Das ist für mich neu.
                            Bei mir stimmen die Werte und die Beschreibung (noch).

                            Hast Du die Firmware aktualisiert?
                            Wenn ja, hat Zendure im Hintergrund vermutlich etwas an den API-Objekten geändert oder es ist ein neuer Bug.
                            Das ist für mich im Moment auch ein Novum, über das ich aktuell noch keine näheren Informationen habe.

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb zuletzt editiert von
                            #318

                            @maxclaudi [sagte]: Hast Du die Firmware aktualisiert?

                            Ja, bei Einrichtung in der App (HEMS 2.0).

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                            maxclaudiM R 2 Antworten Letzte Antwort
                            0
                            • maxclaudiM maxclaudi

                              @paul53 sagte:

                              @maxclaudi [sagte]: Die aktuelle Gerätekonfiguration wird also alle 5 Sekunden abgefragt.

                              Das habe ich beibehalten.
                              Was gelegentlich passiert: httpGet() liefert offenbar selbst einen Error-Log:

                              SF800_Error.JPG

                              Was mir gerade beim Blick auf die Sekunden im Log noch aufgefallen ist:
                              Dort wird eine Zeitüberschreitung von 3000 ms gemeldet (timeout of 3000ms exceeded).
                              Im Standard-Skript hatte ich das Timeout eigentlich auf 1500 ms vordefiniert.

                              Falls du den Wert für das Timeout bei dir manuell erhöht hast, ist das laut der Beschreibung bei einem 5000-ms-Intervall rein mathematisch natürlich vollkommen im Rahmen (3000 < 5000).
                              Man sollte allerdings im Hinterkopf behalten, dass 5000ms Interval im Fall von Timeouts dann zeitlich sehr knapp wird.

                              paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb zuletzt editiert von paul53
                              #319

                              @maxclaudi [sagte]: Falls du den Wert für das Timeout bei dir manuell erhöht hast, ist das laut der Beschreibung bei einem 5000-ms-Intervall rein mathematisch natürlich vollkommen im Rahmen (3000 < 5000).

                              Ja, ich hatten Timeout zwischendurch auf 3000 ms erhöht, jetzt aber wieder auf 2000 ms zurück gestellt. Dass Timeout kleiner sein muss als das Intervall, ist mir bewusst.

                              @maxclaudi sagte:

                              Mit axios() wirst du diese Timeouts leider auch nicht verhindern können

                              ... aber vielleicht den Error-Log beim einmaligen Timeout-Error, denn den erzeugt httpGet(): Javascript-Adapter, Datei sandbox.ts, Zeile 1516.
                              Du hast im Skript vorgesehen, dass erst beim 4. Error-Zyklus in Folge ein Error-Log erzeugt wird

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                              maxclaudiM 1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @maxclaudi [sagte]: Hast Du die Firmware aktualisiert?

                                Ja, bei Einrichtung in der App (HEMS 2.0).

                                maxclaudiM Offline
                                maxclaudiM Offline
                                maxclaudi
                                schrieb zuletzt editiert von
                                #320

                                @paul53
                                socLimit: 17 wird wahrscheinlich kein Bug, sondern ein neues Bitmuster sein.
                                (z. B. 16 + 1 )
                                Aber das ist aktuell Spekulation.
                                Die offizielle zenSDK-Doku von Zendure ist leider nicht auf dem neuesten Stand.
                                Mit Updates warte ich immer.

                                Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                                1 Antwort Letzte Antwort
                                0
                                • paul53P paul53

                                  @maxclaudi [sagte]: Falls du den Wert für das Timeout bei dir manuell erhöht hast, ist das laut der Beschreibung bei einem 5000-ms-Intervall rein mathematisch natürlich vollkommen im Rahmen (3000 < 5000).

                                  Ja, ich hatten Timeout zwischendurch auf 3000 ms erhöht, jetzt aber wieder auf 2000 ms zurück gestellt. Dass Timeout kleiner sein muss als das Intervall, ist mir bewusst.

                                  @maxclaudi sagte:

                                  Mit axios() wirst du diese Timeouts leider auch nicht verhindern können

                                  ... aber vielleicht den Error-Log beim einmaligen Timeout-Error, denn den erzeugt httpGet(): Javascript-Adapter, Datei sandbox.ts, Zeile 1516.
                                  Du hast im Skript vorgesehen, dass erst beim 4. Error-Zyklus in Folge ein Error-Log erzeugt wird

                                  maxclaudiM Offline
                                  maxclaudiM Offline
                                  maxclaudi
                                  schrieb zuletzt editiert von
                                  #321

                                  @paul53 sagte:

                                  @maxclaudi sagte:

                                  Mit axios() wirst du diese Timeouts leider auch nicht verhindern können

                                  ... aber vielleicht den Error-Log beim einmaligen Timeout-Error, denn den erzeugt httpGet(): Javascript-Adapter, Datei sandbox.ts, Zeile 1516.
                                  Du hast im Skript vorgesehen, dass erst beim 4. Error-Zyklus in Folge ein Error-Log erzeugt wird

                                  @paul53 Hut ab, Volltreffer! :-)
                                  Danke für den tiefen Blick in die sandbox.ts
                                  Jetzt wird absolut klar, warum der JavaScript-Adapter das bei httpGet() sofort so knallrot ins Log brennt .

                                  Da hast du natürlich recht:
                                  Bei axios() könnte man das über ein .catch() abfangen, um das Log sauber zu halten.
                                  Ich hatte mich beim Schreiben des Skripts damals bewusst für httpGet() entschieden, um es so schlank und kompatibel wie möglich zu halten (KISS-Prinzip), da es als native Core-Funktion ohne zusätzliche Abhängigkeiten auf jedem ioBroker sofort läuft.

                                  Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                                  paul53P 1 Antwort Letzte Antwort
                                  0
                                  • maxclaudiM maxclaudi

                                    @paul53 sagte:

                                    @maxclaudi sagte:

                                    Mit axios() wirst du diese Timeouts leider auch nicht verhindern können

                                    ... aber vielleicht den Error-Log beim einmaligen Timeout-Error, denn den erzeugt httpGet(): Javascript-Adapter, Datei sandbox.ts, Zeile 1516.
                                    Du hast im Skript vorgesehen, dass erst beim 4. Error-Zyklus in Folge ein Error-Log erzeugt wird

                                    @paul53 Hut ab, Volltreffer! :-)
                                    Danke für den tiefen Blick in die sandbox.ts
                                    Jetzt wird absolut klar, warum der JavaScript-Adapter das bei httpGet() sofort so knallrot ins Log brennt .

                                    Da hast du natürlich recht:
                                    Bei axios() könnte man das über ein .catch() abfangen, um das Log sauber zu halten.
                                    Ich hatte mich beim Schreiben des Skripts damals bewusst für httpGet() entschieden, um es so schlank und kompatibel wie möglich zu halten (KISS-Prinzip), da es als native Core-Funktion ohne zusätzliche Abhängigkeiten auf jedem ioBroker sofort läuft.

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb zuletzt editiert von
                                    #322

                                    @maxclaudi [sagte]: da es als native Core-Funktion ohne zusätzliche Abhängigkeiten auf jedem ioBroker sofort läuft.

                                    Axios ist ebenfalls im Javascript-Adapter per require('axios') verfügbar. Aus der Doku:

                                    The following modules are preloaded: node:dgram, node:crypto, node:dns, node:events, node:fs, node:http, node:https, node:http2, node:net, node:os, node:path, node:util, node:stream, node:zlib, suncalc2, axios, wake_on_lan, request (deprecated)
                                    

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                                    1 Antwort Letzte Antwort
                                    0
                                    • paul53P paul53

                                      @maxclaudi [sagte]: Hast Du die Firmware aktualisiert?

                                      Ja, bei Einrichtung in der App (HEMS 2.0).

                                      R Offline
                                      R Offline
                                      Rico Sander
                                      schrieb zuletzt editiert von Rico Sander
                                      #323

                                      @paul53 sagte:

                                      Ja, bei Einrichtung in der App (HEMS 2.0).

                                      Du hast also auf HEMS 2.0 geupdated? Was ist mit der neuen Firmware Solarflow 800 Pro V1.0.25? Bist Du da auch mitgegangen?

                                      Gabs irgendwelche Probleme?

                                      Im Zusammmenspiel mit dem script von @maxclaudi dütfte ja eigentlich nur die Firmware relevant sein. HEMS ist ja bei individueller Steuerung abgeschaltet, oder übersehe ich da etwas?

                                      Wenns nicht geht, wie man will
                                      - muss mans tun, wie man kann.
                                      paul53P 1 Antwort Letzte Antwort
                                      0
                                      • R Rico Sander

                                        @paul53 sagte:

                                        Ja, bei Einrichtung in der App (HEMS 2.0).

                                        Du hast also auf HEMS 2.0 geupdated? Was ist mit der neuen Firmware Solarflow 800 Pro V1.0.25? Bist Du da auch mitgegangen?

                                        Gabs irgendwelche Probleme?

                                        Im Zusammmenspiel mit dem script von @maxclaudi dütfte ja eigentlich nur die Firmware relevant sein. HEMS ist ja bei individueller Steuerung abgeschaltet, oder übersehe ich da etwas?

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb zuletzt editiert von paul53
                                        #324

                                        @Rico-Sander [sagte]: Was ist mit der neuen Firmware Solarflow 800 Pro V1.0.25?

                                        Wo finde ich die Firmware-Version?
                                        Eine Software-Version V1.1.2 finde ich nur unter "packData".

                                        @Rico-Sander sagte:

                                        HEMS ist ja bei individueller Steuerung abgeschaltet, oder übersehe ich da etwas?

                                        Ja, ist abgeschaltet.

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                                        maxclaudiM R 2 Antworten Letzte Antwort
                                        0
                                        • paul53P paul53

                                          @Rico-Sander [sagte]: Was ist mit der neuen Firmware Solarflow 800 Pro V1.0.25?

                                          Wo finde ich die Firmware-Version?
                                          Eine Software-Version V1.1.2 finde ich nur unter "packData".

                                          @Rico-Sander sagte:

                                          HEMS ist ja bei individueller Steuerung abgeschaltet, oder übersehe ich da etwas?

                                          Ja, ist abgeschaltet.

                                          maxclaudiM Offline
                                          maxclaudiM Offline
                                          maxclaudi
                                          schrieb zuletzt editiert von
                                          #325

                                          @paul53 sagte:
                                          Wo finde ich die Firmware-Version?
                                          Eine Software-Version V1.1.2 finde ich nur unter "packData".

                                          wird im JSON nicht übertragen.
                                          Es gibt zwar 'version', aber damit ist wahrscheinlich was anderes gemeint (zenSDK-Version?). Als Wert wird dort nur 2 oder 3 übertragen.

                                          @paul53 sagte:
                                          Axios ist ebenfalls im Javascript-Adapter per require('axios') verfügbar.

                                          Danke für den Hinweis zur Doku, das hatte ich tatsächlich nicht auf dem Schirm.
                                          Gut zu wissen, dass axios (mittlerweile?) zum Standard-Inventar des Adapters gehört.
                                          Ich lese ehrlich gesagt auch nicht die Doku und nutze am liebsten einfaches, pragmatisches JavaScript.
                                          Komme normal aus einer anderen Ecke – zu JS hat mich erst ioBroker gezwungenermaßen gebracht.

                                          Wie dem auch sei: Ich bin froh, dass das Skript in der Praxis genau das tut, was es soll.
                                          Als "kleines Lichtlein" im Vergleich zu eurer geballten Entwickler-Erfahrung in JS (Du, mcm1957 u. a.) bin ich schon glücklich, dass das Script ok ist.

                                          Falls Du (oder jemand anderes) Lust hast, den Code auf axios umzubauen, zu optimieren oder ( auch z.B. @Rico-Sander ) die Dokumentation zu erweitern – fühlt euch herzlich eingeladen!

                                          Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

                                          paul53P R 2 Antworten Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          612

                                          Online

                                          32.9k

                                          Benutzer

                                          83.2k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2026
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe