Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. E3DC Hauskraftwerk steuern

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

E3DC Hauskraftwerk steuern

Geplant Angeheftet Gesperrt Verschoben JavaScript
3.5k Beiträge 70 Kommentatoren 1.6m Aufrufe 61 Watching
  • Ä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.
  • A ArnoD

    Ich habe dieses Topic eröffnet, um gemeinsam an einer Überschusssteuerung des E3DC Hauskraftwerks in ioBroker zu arbeiten.
    Dankeschön an dieser Stelle an Eberhard und sein Programm E3DC-Control, ohne ihn wäre das alles nicht möglich gewesen.
    Großes Lob und Danke auch an Uli, der den Adapter e3dc-rscp programmiert hat, über den die Steuerung im ioBroker erst möglich wurde.

    Ziel der Steuerung ist:
    Mit der Steuerung soll erreicht werden, dass der Batteriespeicher möglichst schonend geladen wird, um die Lebensdauer zu erhöhen.

    • Speicher soll nie längere Zeit auf 100 % geladen werden oder auf 0 % entladen werden.
    • Möglichst gleichmäßige Ladeleistung beim Laden.
    • PV-Überschuss soll gespeichert werden, um nicht in die 70 % Abriegelung zu kommen.
    • Bei Überschreitung WR Begrenzung soll Überschuss in die Batterie gespeichert werden.

    ioBroker
    Es werden folgende Adapter benötigt:

    • Javascript (NPM-Module: axios, is-it-bst)
    • e3dc-rscp

    Für die View Beispiele in VIS werden noch folgende Adapter benötigt:

    • vis-hqwidgets
    • vis-materialdesign
    • vis-timeandweather

    Beispiel View zum Importieren und das Skript Charge-Control, sowie eine Anleitung findet ihr auf GitHub:
    https://github.com/ArnoD15/iobroker_E3DC

    Einstellbare Parameter:
    Unload: Wenn der SoC Wert der Batterie > Wert „Unload“ ist, wird der Batteriespeicher mit Beginn Solarproduktion bis Beginn Regelzeitraum, auf SOC Wert Parameter "Unload" entladen. Ist Unload < Ladeschwelle wird bis Ladeschwelle geladen und Unload ignoriert.

    Ladeschwelle: Mit Beginn Solarproduktion wird die Batterie mit der maximalen Ladeleistung bis zum Wert Ladeschwelle geladen. Erst wenn der Batterie SOC den Wert Ladeschwelle erreicht, wird mit dem geregelten Laden begonnen. Danach wird bis SOC Wert „Ladeende“ gleichmäßig geladen, mit Ausnahme, wenn die PV-Leistung das Einspeiselimit oder die WR-Maxleistung übersteigt, wird die Ladeleistung um den Wert erhöht, um das Einspeiselimit oder WR-Limit einhalten zu können. Bei unterschreiten von dem Wert Einspeiselimit oder WR-Limit, wird wieder mit neu berechneter Ladeleistung, gleichmäßig bis „Ladeende" geladen. Bei großem Überschuss kann die gleichmäßige Ladeleistung bis auf 0 abgesenkt werden. Parameter "Ladeschwelle" hat Vorrang vor "Unload", d.h. "Unload" wird ignoriert, falls "Ladeschwelle" größer sein sollte als „Unload“.

    Ladeende: SoC Wert Speicher, der zum Ende des Regelzeitraums erreicht werden soll.

    Ladeende2: SoC Wert Speicher, der zum Ende Sommer Ladeende erreicht werden sollten.

    Unterer Ladekorridor: Der „Untere Ladekorridor“ definiert nur den min. Wert, ab dem mit dem Laden der Batterie gestartet wird. Erst wenn die berechnetet Ladeleistung den Wert „unteren Ladekorridor“ übersteigt, wird mit dem Laden der Batterie gestartet.

    Offset Regelbeginn Zeit in hh:mm, die von der Astro Zeit "solarNoon" (höchster Sonnenstand) abgezogen wird.

    Offset Regelende Zeit in hh:mm, die zu der Astro Zeit "solarNoon" (höchster Sonnenstand) dazu addiert wird.

    Offset Ladeende Zeit in hh:mm, die von der Astro Zeit "sunset" (Sonnenuntergang) abgezogen wird.

    70c4baad-fc5b-45bb-8c02-45b0b14f89ea-grafik.png
    Eigenverbrauch: Der geschätzte Eigenverbrauch pro Tag in kWh. Wird für die Überschussberechnung der Prognose verwendet.

    Notstrom min.: Speicherreserve in % bei Wintersonnenwende 21.12

    Notstrom Sockel: min. SOC Wert bei Tag-/Nachtgleiche 21.3./21.9.

    Berechnung Notstrom: 21.12 (Wintersonnenwende) ist der Bezugs-SoC = Wert „Notstrom min“ und wird bis zum 21.3 (Tag-/Nachtgleiche) auf Wert „Notstrom Sockel“ reduziert und bis zum 20.06 (Sommersonnenwende) um ca. weitere 10% reduziert. Ab dem 20.06 (Sommersonnenwende) steigt der Bezugs-SoC wieder bis zum 21.09 (Tag-/Nachtgleiche) auf den Wert „Notstrom Sockel“ und bis zum 21.12 (Wintersonnenwende) auf den Wert „Notstrom min“. Je Monat ändert sich somit der SoC um ca. +- 3,3%. Mit Notstrom min. und Notstrom Sockel kann man eine Dynamische Notstromreserve vorhalten, Vorteil ist, dass der Speicher nicht alle 3 Wochen entladen wird wie bei der Notstromreserve von E3DC.

    Starten wir am 21.12 (Wintersonnenwende) der kürzeste Tag, da wird der Speicher bis auf Notstrom min = 20% entladen.
    Ab jetzt werden die Tage immer länger, bis zum 21.3 (Tag-/Nachtgleiche) wo die Tage und Nächte gleich lang sind.
    Das bedeutet deine Speicherreserve kann immer geringer werden je länger die Tage sind, da ja mehr PV-Leistung zur Verfügung steht. Es wird somit jeden Monat die Speichergrenze um ca.3,33% reduziert bis zum 21.03 auf den Wert Notstrom Sockel = 10%.

    Ab dem 21.03 werden die Tage immer länger bis zum 20.06 (Sommersonnenwende) dem längsten Tag im Jahr.
    Es wird also die Speichergrenze weiter jeden Monat um ca. 3,33% reduziert bis zum 20.06 auf 0%,
    Ab diesem Zeitpunkt werden die Tage wieder kürzer bis zum 21.9 (Tag-/Nachtgleiche) wo die Tage und Nächte wieder gleich lang sind und die Speicherreserve wird jeden Monat um ca. 3,33% erhöht auf Notstrom Sockel = 10%.
    Die Tage werden immer kürzer bis zum 21.12 (Wintersonnenwende) und die Speichergrenze wird weiter jeden Monat um ca. 3,33% erhöht auf den Wert Notstrom min = 20%

    Notstrom Sockel ist somit der min. SOC Wert, wenn die Tage und Nächte gleich lang sind, also am 21.3 und 21.09 und
    Notstrom min wenn die Tage am kürzesten sind am 21.12 .

    Laderegelung:
    Mit Beginn Solarproduktion wird die Batterie mit der maximalen Ladeleistung bis zum Wert Ladeschwelle geladen oder bis zum SOC Wert Unload entladen. Erst wenn der Batterie SOC den Wert Ladeschwelle erreicht, wird mit dem geregelten Laden begonnen.

    Mit Start Regelzeitraum wird die benötigte Ladeleistung berechnet, um den SOC Ladeende bis zum Ende Regelzeitraum zu erreichen.

    Bei Überschreitung der Zeit, Ende Regelzeitraum wird die benötigte Ladeleistung neu berechnet, um den SOC Ladeende2 bis zur Zeit Ladeende zu erreichen.

    Wenn die Zeit Ladeende erreicht ist und die Batterie noch nicht den SOC Ladeende2 erreicht hat, wird das Laden mit maximal noch zur Verfügung stehender PV-Leistung freigegeben.

    Ausnahme: Wenn die PV-Leistung das Einspeiselimit oder die maximale Wechselrichterleistung übersteigt, wird die Ladeleistung um den Wert erhöht, um das Einspeiselimit oder die maximale Wechselrichterleistung einhalten zu können. Bei Unterschreiten von dem Wert Einspeiselimit oder WR-Limit, wird mit neu berechneter Ladeleistung, gleichmäßig geladen.

    S Offline
    S Offline
    stevie77
    schrieb am zuletzt editiert von stevie77
    #458

    Hallo Leute, zurück aus dem Urlaub. :-)
    Wie konnte das denn heute passieren? Ich weiß, ich bin noch auf dem alten Stand von vor 2-3 Wochen (Version: 0.2.01), aber vielleicht hat ja jemand eine Idee? Heute hat sich das Skript dafür entschieden Einstellung 1 zu wählen und alles in den Speicher zu schieben, trotz blauem Himmel und bestem Vorhersagewetter beider Dienste...
    Da war der Speicher dann um 10:15 Uhr schon voll. Jetzt entlade ich gerade manuell mit unload = 80 und Automatik aus.
    Da muss doch irgendwas bei der Berechnung schief gegangen sein?! Irgendein Spezialfall, der seither noch nicht aufgetreten ist? Konnte das bisher noch nie beobachten...

    1a1dd738-e1a2-4c28-81fc-a9fd55a0455e-image.png

    902121c6-e401-48d8-9dfd-56283ce3cb47-image.png

    05:10:02.547	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Rueckmeldung :{"result":{"2020-08-29":69424,"2020-08-30":69457},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
    05:10:02.548	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Gespeichert wurde Dachfläche =1/2 : 69424 :69457
    05:15:00.374	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Rueckmeldung :{"result":{"2020-08-29":19158,"2020-08-30":19027},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
    05:15:00.375	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Gespeichert wurde Dachfläche =2/2 : 19158 :19027
    05:45:00.005	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Bewölkungsgrad 12 Uhr Proplanta 0
    05:45:00.005	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Bewölkungsgrad 15 Uhr Proplanta 0
    05:45:00.006	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose Forecast in kWh = 88.58200000000001
    05:45:00.007	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose Proplanta in kWh = 82.09899999999999
    05:45:00.007	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose_kWh_heute für Berechnung = 75.53107999999999
    05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: AktSpeicherSoC in % = 25
    05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: FreieKapBatterie_kWh = 8.77
    05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Ueberschuss in kWh = 0
    05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Ueberschuss in Prozent = 0
    05:45:00.009	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Berechneter Unload SoC ist = 25
    05:45:00.009	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Einstellung 1 aktiv
    05:45:00.015	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei gespeichert!
    05:45:01.016	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei eingelesen!
    10:22:53.326	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Automatik gestoppt
    10:23:06.952	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei gespeichert!
    
    A 2 Antworten Letzte Antwort
    0
    • S stevie77

      Hallo Leute, zurück aus dem Urlaub. :-)
      Wie konnte das denn heute passieren? Ich weiß, ich bin noch auf dem alten Stand von vor 2-3 Wochen (Version: 0.2.01), aber vielleicht hat ja jemand eine Idee? Heute hat sich das Skript dafür entschieden Einstellung 1 zu wählen und alles in den Speicher zu schieben, trotz blauem Himmel und bestem Vorhersagewetter beider Dienste...
      Da war der Speicher dann um 10:15 Uhr schon voll. Jetzt entlade ich gerade manuell mit unload = 80 und Automatik aus.
      Da muss doch irgendwas bei der Berechnung schief gegangen sein?! Irgendein Spezialfall, der seither noch nicht aufgetreten ist? Konnte das bisher noch nie beobachten...

      1a1dd738-e1a2-4c28-81fc-a9fd55a0455e-image.png

      902121c6-e401-48d8-9dfd-56283ce3cb47-image.png

      05:10:02.547	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Rueckmeldung :{"result":{"2020-08-29":69424,"2020-08-30":69457},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
      05:10:02.548	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Gespeichert wurde Dachfläche =1/2 : 69424 :69457
      05:15:00.374	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Rueckmeldung :{"result":{"2020-08-29":19158,"2020-08-30":19027},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
      05:15:00.375	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Gespeichert wurde Dachfläche =2/2 : 19158 :19027
      05:45:00.005	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Bewölkungsgrad 12 Uhr Proplanta 0
      05:45:00.005	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Bewölkungsgrad 15 Uhr Proplanta 0
      05:45:00.006	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose Forecast in kWh = 88.58200000000001
      05:45:00.007	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose Proplanta in kWh = 82.09899999999999
      05:45:00.007	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose_kWh_heute für Berechnung = 75.53107999999999
      05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: AktSpeicherSoC in % = 25
      05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: FreieKapBatterie_kWh = 8.77
      05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Ueberschuss in kWh = 0
      05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Ueberschuss in Prozent = 0
      05:45:00.009	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Berechneter Unload SoC ist = 25
      05:45:00.009	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Einstellung 1 aktiv
      05:45:00.015	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei gespeichert!
      05:45:01.016	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei eingelesen!
      10:22:53.326	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Automatik gestoppt
      10:23:06.952	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei gespeichert!
      
      A Offline
      A Offline
      ArnoD
      schrieb am zuletzt editiert von
      #459

      @stevie77
      Aus irgendeinem Grund ist bei der Berechnung Überschuss das Ergebnis von 0 kWh rausgekommen.
      Anhand der LOG Ausgabe müsste als Ergebniss eigentlich ca. 66 kWh rauskommen.
      Verwende mal das aktuelle Script, da sich einiges geändert hat.

      1 Antwort Letzte Antwort
      0
      • S stevie77

        Hallo Leute, zurück aus dem Urlaub. :-)
        Wie konnte das denn heute passieren? Ich weiß, ich bin noch auf dem alten Stand von vor 2-3 Wochen (Version: 0.2.01), aber vielleicht hat ja jemand eine Idee? Heute hat sich das Skript dafür entschieden Einstellung 1 zu wählen und alles in den Speicher zu schieben, trotz blauem Himmel und bestem Vorhersagewetter beider Dienste...
        Da war der Speicher dann um 10:15 Uhr schon voll. Jetzt entlade ich gerade manuell mit unload = 80 und Automatik aus.
        Da muss doch irgendwas bei der Berechnung schief gegangen sein?! Irgendein Spezialfall, der seither noch nicht aufgetreten ist? Konnte das bisher noch nie beobachten...

        1a1dd738-e1a2-4c28-81fc-a9fd55a0455e-image.png

        902121c6-e401-48d8-9dfd-56283ce3cb47-image.png

        05:10:02.547	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Rueckmeldung :{"result":{"2020-08-29":69424,"2020-08-30":69457},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
        05:10:02.548	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Gespeichert wurde Dachfläche =1/2 : 69424 :69457
        05:15:00.374	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Rueckmeldung :{"result":{"2020-08-29":19158,"2020-08-30":19027},"message":{"code":0,"type":"success","text":"","info":{"place":"21368 Dahlenburg, Landkreis L\u00fcneburg, Niedersachsen, DE","timezone":"Europe/Berlin","distance":0},"ratelimit":{"limit":12,"remaining":11}}}
        05:15:00.375	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Gespeichert wurde Dachfläche =2/2 : 19158 :19027
        05:45:00.005	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Bewölkungsgrad 12 Uhr Proplanta 0
        05:45:00.005	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Bewölkungsgrad 15 Uhr Proplanta 0
        05:45:00.006	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose Forecast in kWh = 88.58200000000001
        05:45:00.007	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose Proplanta in kWh = 82.09899999999999
        05:45:00.007	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Prognose_kWh_heute für Berechnung = 75.53107999999999
        05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: AktSpeicherSoC in % = 25
        05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: FreieKapBatterie_kWh = 8.77
        05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Ueberschuss in kWh = 0
        05:45:00.008	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Ueberschuss in Prozent = 0
        05:45:00.009	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Berechneter Unload SoC ist = 25
        05:45:00.009	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Einstellung 1 aktiv
        05:45:00.015	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei gespeichert!
        05:45:01.016	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei eingelesen!
        10:22:53.326	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: Automatik gestoppt
        10:23:06.952	info	javascript.0 (709) script.js.e3dc-control.handleE3DCControl: E3DC Config Datei gespeichert!
        
        A Offline
        A Offline
        ArnoD
        schrieb am zuletzt editiert von
        #460

        @stevie77
        Der Fehler wurde in der Version 0.2.10 behoben.

        S 1 Antwort Letzte Antwort
        0
        • A ArnoD

          @stevie77
          Der Fehler wurde in der Version 0.2.10 behoben.

          S Offline
          S Offline
          stevie77
          schrieb am zuletzt editiert von
          #461

          @ArnoD sagte in E3DC Hauskraftwerk steuern:

          @stevie77
          Der Fehler wurde in der Version 0.2.10 behoben.

          Okay, dann spricht doch vieles dafür die nächsten Tage quasi "nochmals von vorne anzufangen" und die neueste Version mit den ganzen Änderungen bei mir zu integrieren. Das beruhigt, dass der Bug schon gefunden wurde. Danke.

          1 Antwort Letzte Antwort
          0
          • A ArnoD

            @smartboart sagte in E3DC Hauskraftwerk steuern:

            @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
            Muss nicht am Script liegen.

            Habe ich noch nicht feststellen können, werde das Morgen mal testen ob es bei mir auch der Fall ist.

            Ich wollte mir das bei Gelegenheit mal genauer anschauen und vlt, hier und da estwas abspecken. Z.B würde ich hier nurn noch auf Proplanta setzen wollen. Das andere liegt bei mir eh meistens daneben.

            Sehe ich auch so.
            Werde das ganze anwählbar machen ob nur Proplanta oder Forecast oder beides.

            smartboartS Offline
            smartboartS Offline
            smartboart
            schrieb am zuletzt editiert von smartboart
            #462


            Sehe ich auch so.
            Werde das ganze anwählbar machen ob nur Proplanta oder Forecast oder beides

            @ArnoD super Idee...

            1 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              ArnoD
              schrieb am zuletzt editiert von ArnoD
              #463

              Habe heute mal ein Script geschrieben, das die Modbus Register 40088 und 40085 (Datenword dezimal) in eine Bitausgabe für VIS umwandelt.
              Man kann somit in VIS noch einige Informationen anzeigen.
              Beim Modbus Register 40088 "Wallbox_x_CTRL" kann man auch drei Bits setzen und die E3DC Wallbox steuern.

              Wer es benötigt, hier das komplette Script:

              // Aufteilung der Datenpunkte mit doppelten Informationen
               
              // Aufteilung "Autarkie und Eigenverbrauch in Prozent"
              var id1 = 'modbus.0.holdingRegisters.40082_Autarkie_Eigenverbrauch';
              createState('e3dc.modbus.Autarkie');
              createState('e3dc.modbus.Eigenverbrauch');
              on(id1, function (obj) {
              setState('e3dc.modbus.Autarkie', (obj.state.val >> 8) & 0xFF, true);
              setState('e3dc.modbus.Eigenverbrauch', obj.state.val & 0xFF, true);
              });
               
              // Aufteilung "Modbus Firmware Version"
              var id2 = 'modbus.0.holdingRegisters.40002_Modbus_Firmware';
              createState('e3dc.modbus.MajorVersion');
              createState('e3dc.modbus.MinorVersion');
              on(id2, function (obj) {
                  log(obj.state.val);
                  setState('e3dc.modbus.MajorVersion', (obj.state.val >> 8) & 0xFF, true);
                  setState('e3dc.modbus.MinorVersion', obj.state.val & 0xFF, true);
              });
              
              // Modbus Register 40088 "Wallbox_x_CTRL" Datenwort Dez. in BIT_Ausgabe für Vis umwandeln
              var id3 = 'modbus.0.holdingRegisters.40088_WallBox_0_CTRL';
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_0', {'def':0, 'name':'Wallbox vorhanden und verfügbar=1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_1', {'def':0, 'name':'Solarbetrieb aktiv=1 Mischbetrieb aktiv=0' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_2', {'def':0, 'name':'Laden abgebrochen=1 Laden freigegeben=0' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_3', {'def':0, 'name':'Auto lädt=1 Auto lädt nicht=0' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_4', {'def':0, 'name':'Typ-2-Stecker verriegelt=1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_5', {'def':0, 'name':'Typ-2-Stecker gesteckt=1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_6', {'def':0, 'name':'Schukosteckdose1 an = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_7', {'def':0, 'name':'Schukostecker1 gesteckt = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_8', {'def':0, 'name':'Schukostecker1 verriegelt = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_9', {'def':0, 'name':'Relais an, 16A, 1 Phase,Schukosteckdose = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_10', {'def':0, 'name':'Relais an, 16A, 3 Phasen, Typ 2 = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_11', {'def':0, 'name':'Relais an, 32A, 3 Phasen, Typ 2 = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.WallBox_0_CTRL_Bit_12', {'def':0, 'name':'Eine Phase aktiv=1 drei Phasen aktiv=0' , 'type':'number', 'role':'State'});
              
              on({id: 'javascript.0.e3dc.modbus.WallBox_0_CTRL_Bit_1', change: "ne"}, function (obj){if (CallingInstance(obj) == 3){WriteModbusDez(obj)}});
              on({id: 'javascript.0.e3dc.modbus.WallBox_0_CTRL_Bit_2', change: "ne"}, function (obj){if (CallingInstance(obj) == 3){WriteModbusDez(obj)}});
              on({id: 'javascript.0.e3dc.modbus.WallBox_0_CTRL_Bit_12', change: "ne"}, function (obj){if (CallingInstance(obj) == 3){WriteModbusDez(obj)}});
              
              on(id3, function (obj) {
                  var myDez = obj.state.val;
                  var myBin = myDez.toString(2); //Decimal in Bin 
                  myBin = new Array(17 - myBin.length).join('0') + myBin;
                  log('Wallbox_x_CTRL Dez ='+myDez+'/ BIN ='+myBin);
                  if(myBin[15]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_0',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_0',0)};
                  if(myBin[14]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_1',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_1',0)};
                  if(myBin[13]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_2',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_2',0)};
                  if(myBin[12]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_3',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_3',0)};
                  if(myBin[11]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_4',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_4',0)};
                  if(myBin[10]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_5',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_5',0)};
                  if(myBin[9]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_6',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_6',0)};
                  if(myBin[8]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_7',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_7',0)};
                  if(myBin[7]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_8',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_8',0)};
                  if(myBin[6]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_9',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_9',0)};
                  if(myBin[5]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_10',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_10',0)};
                  if(myBin[4]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_11',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_11',0)};
                  if(myBin[3]==1){setState('e3dc.modbus.WallBox_0_CTRL_Bit_12',1)}else{setState('e3dc.modbus.WallBox_0_CTRL_Bit_12',0)};
               
              });
              
              // Modbus Register 40088 "Wallbox_x_CTRL" BIT_Eingabe VIS in Datenwort Dez. umwandeln
              function WriteModbusDez(obj)
              {
                  var myBin='000';
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_12').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_11').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_10').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_9').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_8').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_7').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_6').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_5').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_4').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_3').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_2').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_1').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  if(getState('e3dc.modbus.WallBox_0_CTRL_Bit_0').val == 1){myBin = myBin+'1'}else{myBin = myBin+'0'};
                  var myDez = parseInt(myBin, 2);
                  setState(id3,myDez);
                  //log('Neu Dez ='+myDez+'/ BIN ='+myBin);
              }; 
              
              // Modbus Register 40085 "EMS-Status" Datenwort Dez. in BIT_Ausgabe für Vis umwandeln
              var id4 = 'modbus.0.holdingRegisters.40085_EMS_Status';
              createState('e3dc.modbus.EMS_Status_Bit_0', {'def':0, 'name':'Laden der Batterien ist gesperrt=1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.EMS_Status_Bit_1', {'def':0, 'name':'Entladen der Batterien ist gesperrt=1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.EMS_Status_Bit_2', {'def':0, 'name':'Notstrommodus ist möglich=1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.EMS_Status_Bit_3', {'def':0, 'name':'Wetterbasiertes Es wird Ladekapazität zurückgehalten=1 Es wird keine Ladekapazität zurückgehalten=0' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.EMS_Status_Bit_4', {'def':0, 'name':'Abregelungs-Status es wird abgeregelt=1 es wird nicht abgeregelt=0' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.EMS_Status_Bit_5', {'def':0, 'name':'Ladesperrzeit aktiv = 1' , 'type':'number', 'role':'State'});
              createState('e3dc.modbus.EMS_Status_Bit_6', {'def':0, 'name':'Entladesperrzeit aktiv = 1' , 'type':'number', 'role':'State'});
              
              on({id: id4, change: "ne"}, function (obj) {
                  var myDez = obj.state.val;
                  var myBin = myDez.toString(2); //Decimal in Bin 
                  myBin = new Array(17 - myBin.length).join('0') + myBin;
                  log('EMS-Status Dez ='+myDez+'/ BIN ='+myBin);
                  if(myBin[15]==1){setState('e3dc.modbus.EMS_Status_Bit_0',1)}else{setState('e3dc.modbus.EMS_Status_Bit_0',0)};
                  if(myBin[14]==1){setState('e3dc.modbus.EMS_Status_Bit_1',1)}else{setState('e3dc.modbus.EMS_Status_Bit_1',0)};
                  if(myBin[13]==1){setState('e3dc.modbus.EMS_Status_Bit_2',1)}else{setState('e3dc.modbus.EMS_Status_Bit_2',0)};
                  if(myBin[12]==1){setState('e3dc.modbus.EMS_Status_Bit_3',1)}else{setState('e3dc.modbus.EMS_Status_Bit_3',0)};
                  if(myBin[11]==1){setState('e3dc.modbus.EMS_Status_Bit_4',1)}else{setState('e3dc.modbus.EMS_Status_Bit_4',0)};
                  if(myBin[10]==1){setState('e3dc.modbus.EMS_Status_Bit_5',1)}else{setState('e3dc.modbus.EMS_Status_Bit_5',0)};
                  if(myBin[9]==1){setState('e3dc.modbus.EMS_Status_Bit_6',1)}else{setState('e3dc.modbus.EMS_Status_Bit_6',0)};
                  
              });
              
              
              1 Antwort Letzte Antwort
              0
              • smartboartS smartboart

                @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                Muss nicht am Script liegen.

                Ich wollte mir das bei Gelegenheit mal genauer anschauen und vlt, hier und da estwas abspecken. Z.B würde ich hier nurn noch auf Proplanta setzen wollen. Das andere liegt bei mir eh meistens daneben.

                A Offline
                A Offline
                ArnoD
                schrieb am zuletzt editiert von
                #464

                @smartboart sagte in E3DC Hauskraftwerk steuern:

                @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                Muss nicht am Script liegen.

                Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                smartboartS 2 Antworten Letzte Antwort
                0
                • A Offline
                  A Offline
                  ArnoD
                  schrieb am zuletzt editiert von ArnoD
                  #465

                  Neue Version 0.2.12 hochgeladen.

                  Änderungen:
                  Neuer State "PrognoseAnwahl" hinzugefügt. Es kann jetzt in VIS ausgewählt werden, welche Prognose für die Berechnung verwendet wird. 0 = Proplanta u. Forecast (Standard) 1 = Proplanta 2 = Forecast.

                  Aktuelle View txt Datei 30.08.2020 habe ich auch hochgeladen.

                  smartboartS 1 Antwort Letzte Antwort
                  0
                  • A ArnoD

                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                    @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                    Muss nicht am Script liegen.

                    Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                    smartboartS Offline
                    smartboartS Offline
                    smartboart
                    schrieb am zuletzt editiert von smartboart
                    #466

                    @ArnoD sagte in E3DC Hauskraftwerk steuern:

                    Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                    ja genau

                    1 Antwort Letzte Antwort
                    0
                    • A ArnoD

                      Neue Version 0.2.12 hochgeladen.

                      Änderungen:
                      Neuer State "PrognoseAnwahl" hinzugefügt. Es kann jetzt in VIS ausgewählt werden, welche Prognose für die Berechnung verwendet wird. 0 = Proplanta u. Forecast (Standard) 1 = Proplanta 2 = Forecast.

                      Aktuelle View txt Datei 30.08.2020 habe ich auch hochgeladen.

                      smartboartS Offline
                      smartboartS Offline
                      smartboart
                      schrieb am zuletzt editiert von smartboart
                      #467

                      @ArnoD sagte in E3DC Hauskraftwerk steuern:

                      Neue Version 0.2.12 hochgeladen.

                      Änderungen:
                      Neuer State "PrognoseAnwahl" hinzugefügt. Es kann jetzt in VIS ausgewählt werden, welche Prognose für die Berechnung verwendet wird. 0 = Proplanta u. Forecast (Standard) 1 = Proplanta 2 = Forecast.

                      Aktuelle View txt Datei 30.08.2020 habe ich auch hochgeladen.

                      Hallo Arno, function main wird bei Programmstart nicht mehr ausgeführt...
                      wenn PognoseAnwahl != 1

                      habe den Teil für mich so abgeändert...

                      createUserStates(instanz, false, statesToCreate, function(){
                          log('Jetzt sind alle States abgearbeitet');
                          AutomatikAnwahl = getState(sID_Automatik).val;
                          PrognoseAnwahl = getState(sID_PrognoseAnwahl).val;
                          setState(sID_Anwahl_MEZ_MESZ, dst());  
                          setState(sID_Einstellung,0);
                          ZeitAnwahl_MEZ_MESZ = getState(sID_Anwahl_MEZ_MESZ).val
                          EinstellungAnwahl = getState(sID_EinstellungAnwahl).val
                          Wh_Leistungsmesser0();
                          // Daten Proplanta einmal beim Programmstart aktualisieren
                          InterrogateProplanta(2);
                          // Regelmässige Aktualisierung Daten Proplanta beim Programmstart starten
                          ScheduleProplanta();
                          setTimeout(function(){main();},5000);//Zeit geben bevor main ausgeführt wird
                          // Daten Forecast einmal beim Programmstart aktualisieren
                          if(getState(sID_PrognoseAnwahl).val != 1) {
                          switch (nDachflaechen){
                              case 1:
                                  InterrogateForecast (1,2);
                      
                                  break;
                              case 2:
                                  InterrogateForecast (1,2);
                                  InterrogateForecast (2,2);
                      
                                  break;
                              };
                          }    
                      
                          // Stündliche Aktualisierung Daten Forecast beim Programmstart starten
                          SheduleForecast();
                      
                      });
                      
                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        ArnoD
                        schrieb am zuletzt editiert von
                        #468

                        @smartboart
                        Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?
                        Egal ob PognoseAnwahl = 0, 1 oder 2 ist, wird die function main() immer in der function InterrogateProplanta() aufgerufen.
                        Mit deiner Änderung kann es sein, das die Rückmeldung der Wetterdaten von Proplanta noch nicht erfolgt ist und die Variablen noch den Wert 0 enthalten, was zu einer Fehlermeldung im LOG führen würde.

                        smartboartS 2 Antworten Letzte Antwort
                        0
                        • A Offline
                          A Offline
                          ArnoD
                          schrieb am zuletzt editiert von
                          #469

                          Es ist anscheinend noch ein Fehler in der Funktion Ueberschuss_Prozent() enthalten.

                          2020-09-01 15:30:07.418 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose Forecast in kWh = 53.230000000000004
                          2020-09-01 15:30:07.420 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose Proplanta in kWh = 42.982400000000005
                          2020-09-01 15:30:07.421 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose_kWh nach Abzug Korrekturfaktor = 42.982400000000005
                          2020-09-01 15:30:07.421 - info: javascript.1 (16601) script.js.common.E3DC_Control: Bereits produzierte PV-Leistung = 29.11779853024598
                          2020-09-01 15:30:07.422 - info: javascript.1 (16601) script.js.common.E3DC_Control: Prognose_kWh_heute für Berechnung = 13.864601469754025
                          2020-09-01 15:30:07.422 - info: javascript.1 (16601) script.js.common.E3DC_Control: Berechneter Eigenverbrauch = 7
                          2020-09-01 15:30:07.422 - info: javascript.1 (16601) script.js.common.E3DC_Control: AktSpeicherSoC in % = 75
                          2020-09-01 15:30:07.423 - info: javascript.1 (16601) script.js.common.E3DC_Control: FreieKapBatterie_kWh = 9.75
                          2020-09-01 15:30:07.423 - info: javascript.1 (16601) script.js.common.E3DC_Control: Ueberschuss in kWh = 21.945266867762044
                          2020-09-01 15:30:07.424 - info: javascript.1 (16601) script.js.common.E3DC_Control: Ueberschuss in Prozent = 56.2699150455437
                          2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Bewölkungsgrad 12 Uhr Proplanta 87.5
                          2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Bewölkungsgrad 15 Uhr Proplanta 87.5
                          2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Berechneter Unload SoC ist = 19
                          2020-09-01 15:30:07.425 - info: javascript.1 (16601) script.js.common.E3DC_Control: Einstellung 3 aktiv
                          2020-09-01 15:30:07.438 - info: javascript.1 (16601) script.js.common.E3DC_Control: E3DC Config Datei gespeichert!
                          

                          Hier hätte bei Ueberschuss in kWh und Ueberschuss in Prozent eigentlich 0 rauskommen müssen.
                          Das Komische daran ist, dass es fünfmal hintereinander richtig berechnet wurde.
                          Stehe irgendwie auf dem Schlauch.

                          1 Antwort Letzte Antwort
                          0
                          • A ArnoD

                            @smartboart
                            Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?
                            Egal ob PognoseAnwahl = 0, 1 oder 2 ist, wird die function main() immer in der function InterrogateProplanta() aufgerufen.
                            Mit deiner Änderung kann es sein, das die Rückmeldung der Wetterdaten von Proplanta noch nicht erfolgt ist und die Variablen noch den Wert 0 enthalten, was zu einer Fehlermeldung im LOG führen würde.

                            smartboartS Offline
                            smartboartS Offline
                            smartboart
                            schrieb am zuletzt editiert von smartboart
                            #470

                            @ArnoD sagte in E3DC Hauskraftwerk steuern:

                            @smartboart
                            Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?
                            Egal ob PognoseAnwahl = 0, 1 oder 2 ist, wird die function main() immer in der function InterrogateProplanta() aufgerufen.
                            Mit deiner Änderung kann es sein, das die Rückmeldung der Wetterdaten von Proplanta noch nicht erfolgt ist und die Variablen noch den Wert 0 enthalten, was zu einer Fehlermeldung im LOG führen würde.

                            Ok, muss ich mir nochmal anschauen..Ich hatte das bemerkt nachdem ich das script neu gestartet habe und festgestellt habe, das meine vis Anzeige ( Einstellung 1, 2, 3, 4 oder 5 aktiv ) leer war.
                            was nur passiert wenn main nicht ausgeführt wurde...

                            1 Antwort Letzte Antwort
                            0
                            • A ArnoD

                              @smartboart
                              Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?
                              Egal ob PognoseAnwahl = 0, 1 oder 2 ist, wird die function main() immer in der function InterrogateProplanta() aufgerufen.
                              Mit deiner Änderung kann es sein, das die Rückmeldung der Wetterdaten von Proplanta noch nicht erfolgt ist und die Variablen noch den Wert 0 enthalten, was zu einer Fehlermeldung im LOG führen würde.

                              smartboartS Offline
                              smartboartS Offline
                              smartboart
                              schrieb am zuletzt editiert von smartboart
                              #471

                              @ArnoD sagte in E3DC Hauskraftwerk steuern:

                              @smartboart
                              Warum sollte die function main() beim Programmstart nicht ausgeführt werden ?

                              Ok, hatte das beim letzten Update übersehen und nicht aktualisiert.
                              Ich benutze eine angepasste Version von deinem Script und muss immer Paketweise updaten... Der Eintrag hat bei mir gefehlt... Sorry...

                              1 Antwort Letzte Antwort
                              0
                              • A ArnoD

                                @smartboart sagte in E3DC Hauskraftwerk steuern:

                                @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                                Muss nicht am Script liegen.

                                Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                                smartboartS Offline
                                smartboartS Offline
                                smartboart
                                schrieb am zuletzt editiert von smartboart
                                #472

                                @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                @smartboart sagte in E3DC Hauskraftwerk steuern:

                                @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                                Muss nicht am Script liegen.

                                Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                                Hallo Arno, konnte den Fehler nachvollziehen und folgendermaßen unterbinden...

                                im Trigger ein Change 'ne' und wie in deinen Bedingungen eine Verzögerung für
                                e3dcConfigWrite.
                                ebenfalls kann man doch auch hier wieder zurücklesen e3dcConfigRead

                                // e3dc.config.txt mit den aktuellen Werten neu schreiben wenn State DatenSchreiben = true
                                on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenSchreiben', val: true, change:'ne'}, function (){
                                StateRead();
                                    setTimeout(function() { e3dcConfigWrite(0);},500);
                                setTimeout(e3dcConfigRead, 1500);
                                });
                                
                                // Einlesen der Werte e3dc.config.txt wenn State DatenLesen = true
                                on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenLesen', val: true, change:'ne'}, function (){
                                	e3dcConfigRead();
                                });
                                

                                Ebenfalls hast du die Verzögerung bei Prognose 1 in der Funktion main weggeleassen...

                                    // 1 Prognose PV-Leistung geringer als benötigter Eigenverbrauch, Überschuss zu 100% in Batterie speichern
                                	if ((Ueberschuss === 0 && AutomatikAnwahl) || (AutomatikAnwahl === false && EinstellungAnwahl ===1))
                                	{
                                		if(Einstellung_alt != 1){
                                            if (LogAusgabe){log('Einstellung 1 aktiv');}
                                		    setState(sID_Einstellung,1);
                                            StateRead();
                                            setTimeout(function() { e3dcConfigWrite(1);},500);
                                            setTimeout(e3dcConfigRead, 1500);
                                        }
                                	}
                                
                                A 1 Antwort Letzte Antwort
                                1
                                • smartboartS smartboart

                                  @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                  @smartboart sagte in E3DC Hauskraftwerk steuern:

                                  @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                                  Muss nicht am Script liegen.

                                  Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                                  Hallo Arno, konnte den Fehler nachvollziehen und folgendermaßen unterbinden...

                                  im Trigger ein Change 'ne' und wie in deinen Bedingungen eine Verzögerung für
                                  e3dcConfigWrite.
                                  ebenfalls kann man doch auch hier wieder zurücklesen e3dcConfigRead

                                  // e3dc.config.txt mit den aktuellen Werten neu schreiben wenn State DatenSchreiben = true
                                  on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenSchreiben', val: true, change:'ne'}, function (){
                                  StateRead();
                                      setTimeout(function() { e3dcConfigWrite(0);},500);
                                  setTimeout(e3dcConfigRead, 1500);
                                  });
                                  
                                  // Einlesen der Werte e3dc.config.txt wenn State DatenLesen = true
                                  on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenLesen', val: true, change:'ne'}, function (){
                                  	e3dcConfigRead();
                                  });
                                  

                                  Ebenfalls hast du die Verzögerung bei Prognose 1 in der Funktion main weggeleassen...

                                      // 1 Prognose PV-Leistung geringer als benötigter Eigenverbrauch, Überschuss zu 100% in Batterie speichern
                                  	if ((Ueberschuss === 0 && AutomatikAnwahl) || (AutomatikAnwahl === false && EinstellungAnwahl ===1))
                                  	{
                                  		if(Einstellung_alt != 1){
                                              if (LogAusgabe){log('Einstellung 1 aktiv');}
                                  		    setState(sID_Einstellung,1);
                                              StateRead();
                                              setTimeout(function() { e3dcConfigWrite(1);},500);
                                              setTimeout(e3dcConfigRead, 1500);
                                          }
                                  	}
                                  
                                  A Offline
                                  A Offline
                                  ArnoD
                                  schrieb am zuletzt editiert von
                                  #473

                                  @smartboart sagte in E3DC Hauskraftwerk steuern:

                                  @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                  @smartboart sagte in E3DC Hauskraftwerk steuern:

                                  @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                                  Muss nicht am Script liegen.

                                  Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                                  Hallo Arno, konnte den Fehler nachvollziehen und folgendermaßen unterbinden...

                                  im Trigger ein Change 'ne' und wie in deinen Bedingungen eine Verzögerung für
                                  e3dcConfigWrite.
                                  ebenfalls kann man doch auch hier wieder zurücklesen e3dcConfigRead

                                  // e3dc.config.txt mit den aktuellen Werten neu schreiben wenn State DatenSchreiben = true
                                  on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenSchreiben', val: true, change:'ne'}, function (){
                                  StateRead();
                                      setTimeout(function() { e3dcConfigWrite(0);},500);
                                  setTimeout(e3dcConfigRead, 1500);
                                  });
                                  
                                  // Einlesen der Werte e3dc.config.txt wenn State DatenLesen = true
                                  on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenLesen', val: true, change:'ne'}, function (){
                                  	e3dcConfigRead();
                                  });
                                  

                                  Konnte diesen Fehler bei mir nicht reproduzieren, habe es so übernommen, da es generell nicht schadet, etwas zu warten.
                                  Danke.

                                  Ebenfalls hast du die Verzögerung bei Prognose 1 in der Funktion main weggeleassen...

                                  Habe es nicht weggelassen, da ich bis jetzt keine Verzögerung beim schreiben der e3dc-config.txt hatte :-)
                                  Habe jetzt mal bei allen Aufrufen der function e3dcConfigWrite() eine Verzögerung eingetragen, also auch bei Prognose 2-5.

                                  S 1 Antwort Letzte Antwort
                                  0
                                  • A ArnoD

                                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                                    @ArnoD sagte in E3DC Hauskraftwerk steuern:

                                    @smartboart sagte in E3DC Hauskraftwerk steuern:

                                    @ArnoD Hey Arno ich habe gestern mal ein wenig manuell herum gespielt und werte manuell geändert und angepasst. Dabei ist mir aufgefallen, dass die Werte im Anschluss dann immer zwischen den neuen und alten Werten in Vis hin und her gesprungen sind. Ist das ein Vis Thema oder liegt es am script...Das hatte ich auch schon in älteren Versionen des skript beobachtet, bevor wir die manuelle Vorwahl eingeführt haben.
                                    Muss nicht am Script liegen.

                                    Also ich kann das bei mir nicht feststellen. Wie änderst du die Werte, über das hqwidget CircleKnob ?

                                    Hallo Arno, konnte den Fehler nachvollziehen und folgendermaßen unterbinden...

                                    im Trigger ein Change 'ne' und wie in deinen Bedingungen eine Verzögerung für
                                    e3dcConfigWrite.
                                    ebenfalls kann man doch auch hier wieder zurücklesen e3dcConfigRead

                                    // e3dc.config.txt mit den aktuellen Werten neu schreiben wenn State DatenSchreiben = true
                                    on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenSchreiben', val: true, change:'ne'}, function (){
                                    StateRead();
                                        setTimeout(function() { e3dcConfigWrite(0);},500);
                                    setTimeout(e3dcConfigRead, 1500);
                                    });
                                    
                                    // Einlesen der Werte e3dc.config.txt wenn State DatenLesen = true
                                    on({id: instanz + PfadEbene1 + PfadEbene2[1] + 'DatenLesen', val: true, change:'ne'}, function (){
                                    	e3dcConfigRead();
                                    });
                                    

                                    Konnte diesen Fehler bei mir nicht reproduzieren, habe es so übernommen, da es generell nicht schadet, etwas zu warten.
                                    Danke.

                                    Ebenfalls hast du die Verzögerung bei Prognose 1 in der Funktion main weggeleassen...

                                    Habe es nicht weggelassen, da ich bis jetzt keine Verzögerung beim schreiben der e3dc-config.txt hatte :-)
                                    Habe jetzt mal bei allen Aufrufen der function e3dcConfigWrite() eine Verzögerung eingetragen, also auch bei Prognose 2-5.

                                    S Offline
                                    S Offline
                                    stevie77
                                    schrieb am zuletzt editiert von
                                    #474

                                    @ArnoD Wann denkst du dass diese letzte Änderung online geht? Wollte jetzt eben anfangen, aber vielleicht warte ich dann noch ein bisschen um mir Arbeit zu ersparen?
                                    Die aktuelle Vis-View finde ich nur, wenn ich ganz runterscrolle, oder? Oder gibt es irgendwo irgendwie einen Direktlink womit man in diesem Forum an die möglichen Downloads kommt?

                                    A 2 Antworten Letzte Antwort
                                    0
                                    • S stevie77

                                      @ArnoD Wann denkst du dass diese letzte Änderung online geht? Wollte jetzt eben anfangen, aber vielleicht warte ich dann noch ein bisschen um mir Arbeit zu ersparen?
                                      Die aktuelle Vis-View finde ich nur, wenn ich ganz runterscrolle, oder? Oder gibt es irgendwo irgendwie einen Direktlink womit man in diesem Forum an die möglichen Downloads kommt?

                                      A Offline
                                      A Offline
                                      ArnoD
                                      schrieb am zuletzt editiert von
                                      #475

                                      @stevie77

                                      Version 0.2.13 habe ich gerade hochgeladen.

                                      Änderungen:
                                      Version: 0.2.13 Neuer State EigenverbrauchTag um den Eigenverbrauch aus VIS oder anderem Script variabel anpassen zu können. Hinweis von smartboart, Verzögerung beim schreiben der e3dc-config.txt umgesetzt

                                      S 1 Antwort Letzte Antwort
                                      0
                                      • A ArnoD

                                        @stevie77

                                        Version 0.2.13 habe ich gerade hochgeladen.

                                        Änderungen:
                                        Version: 0.2.13 Neuer State EigenverbrauchTag um den Eigenverbrauch aus VIS oder anderem Script variabel anpassen zu können. Hinweis von smartboart, Verzögerung beim schreiben der e3dc-config.txt umgesetzt

                                        S Offline
                                        S Offline
                                        stevie77
                                        schrieb am zuletzt editiert von
                                        #476

                                        @ArnoD Okay, jetzt hab' ich Dummie auch den Link im Text gefunden. :-) War etwas irritiert, da ich meine, seither das Skript immer über eine Code-Passage herunterkopiert zu haben (anstatt Download). Danke für das schnelle Update!

                                        1 Antwort Letzte Antwort
                                        0
                                        • S stevie77

                                          @ArnoD Wann denkst du dass diese letzte Änderung online geht? Wollte jetzt eben anfangen, aber vielleicht warte ich dann noch ein bisschen um mir Arbeit zu ersparen?
                                          Die aktuelle Vis-View finde ich nur, wenn ich ganz runterscrolle, oder? Oder gibt es irgendwo irgendwie einen Direktlink womit man in diesem Forum an die möglichen Downloads kommt?

                                          A Offline
                                          A Offline
                                          ArnoD
                                          schrieb am zuletzt editiert von
                                          #477

                                          @stevie77 sagte in E3DC Hauskraftwerk steuern:

                                          Vis-View finde ich nur, wenn ich ganz runterscrolle, oder?

                                          Ja ist immer an der selben Stelle.

                                          Link Post 433439:

                                          S 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          742

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          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