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. Erste Schritte beim Scripten - Einsteigerfrage

NEWS

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

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

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

Erste Schritte beim Scripten - Einsteigerfrage

Geplant Angeheftet Gesperrt Verschoben JavaScript
43 Beiträge 6 Kommentatoren 3.5k Aufrufe 3 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.
  • D Offline
    D Offline
    Doppellhelix
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich mache gerade die ersen Schritte mit Scripten.
    Dafür habe ich mir ein Script "geklaut", welches ein User zur Verfügung gestellt hat und es ein wenig abgeändert.

    var reducedCharging = false;
    
    schedule({astro: "sunrise"}, function () {
        var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
        var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
         if (forecast > 20000) {
            setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
            //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
            setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
            reducedCharging = true;
        } else {
             setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
             //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
             setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
             reducedCharging = false;
        }
    
        log(msgText);
        setState('telegram.0.communicate.response', msgText);
        });
    
    
    schedule({hour: 11, minute: 0}, function () {
        if (reducedCharging) {
            setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
            log("Set max_charge_power to 2kW");
            setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
            //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
        }
    });
    

    Die Funktion ist mir ziemlich klar.
    Dennoch habe ich ein paar Fragen.

    1. in der 1. Zeile wird eine Variable erzeugt "reducedCharging"
      kann ich den Status der Variable (true, false") irgendwo nachschauen?
      Unter Objekte/Scripte finde ich nichts.

    2. Ich hatte ein paar kleinere Fehler drin, die das Script nicht immer das machen liessen, was es sollte.
      NAáchdem ich das Script dann neu gesartet habe, läuft es dann einfach weiter?
      Bsp. Es startet ja eigentlich bei Sonnenaufgang.
      Wenn ich es nach Sonnenaufgang stoppe, etwas ändere und dann wieder starte, läuft der Rest des Scriptes doch einfach weiter ab, oder?
      D.h. um 11 Uhr käme die nächste Änderung der Variable.

    Danke für die Hilfe.

    Gruß Helix

    AsgothianA 1 Antwort Letzte Antwort
    0
    • D Doppellhelix

      Hallo zusammen,

      ich mache gerade die ersen Schritte mit Scripten.
      Dafür habe ich mir ein Script "geklaut", welches ein User zur Verfügung gestellt hat und es ein wenig abgeändert.

      var reducedCharging = false;
      
      schedule({astro: "sunrise"}, function () {
          var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
          var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
           if (forecast > 20000) {
              setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
              //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
              setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
              reducedCharging = true;
          } else {
               setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
               //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
               setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
               reducedCharging = false;
          }
      
          log(msgText);
          setState('telegram.0.communicate.response', msgText);
          });
      
      
      schedule({hour: 11, minute: 0}, function () {
          if (reducedCharging) {
              setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
              log("Set max_charge_power to 2kW");
              setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
              //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
          }
      });
      

      Die Funktion ist mir ziemlich klar.
      Dennoch habe ich ein paar Fragen.

      1. in der 1. Zeile wird eine Variable erzeugt "reducedCharging"
        kann ich den Status der Variable (true, false") irgendwo nachschauen?
        Unter Objekte/Scripte finde ich nichts.

      2. Ich hatte ein paar kleinere Fehler drin, die das Script nicht immer das machen liessen, was es sollte.
        NAáchdem ich das Script dann neu gesartet habe, läuft es dann einfach weiter?
        Bsp. Es startet ja eigentlich bei Sonnenaufgang.
        Wenn ich es nach Sonnenaufgang stoppe, etwas ändere und dann wieder starte, läuft der Rest des Scriptes doch einfach weiter ab, oder?
        D.h. um 11 Uhr käme die nächste Änderung der Variable.

      Danke für die Hilfe.

      Gruß Helix

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von Asgothian
      #2

      @doppellhelix sagte in Erste Schritte beim Scripten - Einsteigerfrage:

      Hallo zusammen,

      ich mache gerade die ersen Schritte mit Scripten.
      Dafür habe ich mir ein Script "geklaut", welches ein User zur Verfügung gestellt hat und es ein wenig abgeändert.

      Die Funktion ist mir ziemlich klar.
      Dennoch habe ich ein paar Fragen.

      1. in der 1. Zeile wird eine Variable erzeugt "reducedCharging"
        kann ich den Status der Variable (true, false") irgendwo nachschauen?
        Unter Objekte/Scripte finde ich nichts.

      Nein - diese Variable ist nur innerhalb des Skriptes bekannt. Du kannst deren Wert dementsprechend nicht nachschaue. Wenn du wissen willst was für einen Wert sie jeweils hat, kannst du (immer wenn du die Variable änderst)

      • sie in einen selbst erzeugten Datenpunkt unter 0_userdata.0 schreiben
      • per console.info('reduced charging is '+reducedCharging) ins Log schreiben.
      1. Ich hatte ein paar kleinere Fehler drin, die das Script nicht immer das machen liessen, was es sollte.
        NAáchdem ich das Script dann neu gesartet habe, läuft es dann einfach weiter?

      Nein - es fängt immer von vorne an. Wobei in Deinem Beispiel die Änderung der Variable um 11 nicht wegen dem Skriptaufbau "nach" dem Sonnenaufgang eintritt. Das wäre auch so wenn das Skript so aussähe:

      var reducedCharging = false;
      
      schedule({hour: 11, minute: 0}, function () {
          if (reducedCharging) {
              setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
              log("Set max_charge_power to 2kW");
              setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
              //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
          }
      });
      
      schedule({astro: "sunrise"}, function () {
          var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
          var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
           if (forecast > 20000) {
              setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
              //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
              setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
              reducedCharging = true;
          } else {
               setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
               //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
               setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
               reducedCharging = false;
          }
       
          log(msgText);
          setState('telegram.0.communicate.response', msgText);
      });
      

      Entscheidend ist Einzig und allein welcher der beiden Schedules als nächstes zutrifft.
      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      1 Antwort Letzte Antwort
      2
      • D Offline
        D Offline
        Doppellhelix
        schrieb am zuletzt editiert von
        #3

        Vielen Dank für deine Hilfe.

        Ich habe jetzt mal eine Variable vom Typ Logik angelegt:
        0_userdata.0.reducedCharging

        Im Script habe ich 2 Zeilen hinzugefügt:

        schedule({astro: "sunrise"}, function () {
           var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
           var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
            if (forecast > 20000) {
               setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
               //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
               setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
               reducedCharging = true;
               setState('0_userdata.0.reducedCharging'/*reducedCharging*/, true);
           } else {
                setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                reducedCharging = false;
                setState('0_userdata.0.reducedCharging'/*reducedCharging*/, false);
           }
        
        

        Aktuell sollte der Wert true sein.
        Es wird mir aber angezeigt:

        Wert:
        falsch
        Typ:
        boolean
        Zeitstempel:
        vor 13 Minuten
        Bestätigt:
        Bestätigt (true)
        Zuletzt geändert:
        vor 13 Minuten
        Qualität:
        0x20 - substitute initial value
        Von:
        system.adapter.admin.0
        Benutzer:
        system.user.admin
        

        Was mache ich noch falsch?

        Gruß Helix

        AsgothianA T 2 Antworten Letzte Antwort
        0
        • D Doppellhelix

          Vielen Dank für deine Hilfe.

          Ich habe jetzt mal eine Variable vom Typ Logik angelegt:
          0_userdata.0.reducedCharging

          Im Script habe ich 2 Zeilen hinzugefügt:

          schedule({astro: "sunrise"}, function () {
             var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
             var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
              if (forecast > 20000) {
                 setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                 //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                 setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                 reducedCharging = true;
                 setState('0_userdata.0.reducedCharging'/*reducedCharging*/, true);
             } else {
                  setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                  //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                  setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                  reducedCharging = false;
                  setState('0_userdata.0.reducedCharging'/*reducedCharging*/, false);
             }
          
          

          Aktuell sollte der Wert true sein.
          Es wird mir aber angezeigt:

          Wert:
          falsch
          Typ:
          boolean
          Zeitstempel:
          vor 13 Minuten
          Bestätigt:
          Bestätigt (true)
          Zuletzt geändert:
          vor 13 Minuten
          Qualität:
          0x20 - substitute initial value
          Von:
          system.adapter.admin.0
          Benutzer:
          system.user.admin
          

          Was mache ich noch falsch?

          Gruß Helix

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von
          #4

          @doppellhelix du hast nur 50% der Anweisung erfüllt. Neben dem anlegen des datenpunktes musst du den Wert der Variable mit setState da auch rein schreiben wenn du sie geändert hast

          A.

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            Doppellhelix
            schrieb am zuletzt editiert von
            #5

            @doppellhelix said in Erste Schritte beim Scripten - Einsteigerfrage:
            Habe ich das nicht gemacht, mit dieser Zeile?

            setState('0_userdata.0.reducedCharging'/*reducedCharging*/, true);
            

            Habe noch ein Problem.
            Gerade 11 Uhr und nichts ist passiert.
            Hatte erwartet, dass um 11 Uhr
            das hier passiert:

            setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
            
            1 Antwort Letzte Antwort
            0
            • D Doppellhelix

              Vielen Dank für deine Hilfe.

              Ich habe jetzt mal eine Variable vom Typ Logik angelegt:
              0_userdata.0.reducedCharging

              Im Script habe ich 2 Zeilen hinzugefügt:

              schedule({astro: "sunrise"}, function () {
                 var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                 var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                  if (forecast > 20000) {
                     setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                     //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                     setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                     reducedCharging = true;
                     setState('0_userdata.0.reducedCharging'/*reducedCharging*/, true);
                 } else {
                      setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                      //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                      setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                      reducedCharging = false;
                      setState('0_userdata.0.reducedCharging'/*reducedCharging*/, false);
                 }
              
              

              Aktuell sollte der Wert true sein.
              Es wird mir aber angezeigt:

              Wert:
              falsch
              Typ:
              boolean
              Zeitstempel:
              vor 13 Minuten
              Bestätigt:
              Bestätigt (true)
              Zuletzt geändert:
              vor 13 Minuten
              Qualität:
              0x20 - substitute initial value
              Von:
              system.adapter.admin.0
              Benutzer:
              system.user.admin
              

              Was mache ich noch falsch?

              Gruß Helix

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von ticaki
              #6

              @doppellhelix
              Wenn du einen Variable veröffentlichen willst, nutze diese als Schreibwert - wenn das Skript komplexer wird übersiehst du vielleicht sonst den Wert in setState anzupassen.

              reducedCharging = false;
              setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
              

              Dein Auszug sieht nach einem unberührten Datenpunkt aus, das wird wohl deshalb sein, weil sonnenaufgang schon etwas her ist :D

              EDIT: in deinem Auszug steht nix von 11 uhr

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              D 1 Antwort Letzte Antwort
              0
              • T ticaki

                @doppellhelix
                Wenn du einen Variable veröffentlichen willst, nutze diese als Schreibwert - wenn das Skript komplexer wird übersiehst du vielleicht sonst den Wert in setState anzupassen.

                reducedCharging = false;
                setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                

                Dein Auszug sieht nach einem unberührten Datenpunkt aus, das wird wohl deshalb sein, weil sonnenaufgang schon etwas her ist :D

                EDIT: in deinem Auszug steht nix von 11 uhr

                D Offline
                D Offline
                Doppellhelix
                schrieb am zuletzt editiert von
                #7

                @ticaki
                Danke
                Ja, das macht Sinn.

                Die Sache mit 11 Uhr steht im obersten ersten Thread.

                schedule({hour: 11, minute: 0}, function () {
                    if (reducedCharging) {
                        setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                        log("Set max_charge_power to 2kW");
                        setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                        //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                    }
                
                T AsgothianA 2 Antworten Letzte Antwort
                0
                • D Doppellhelix

                  @ticaki
                  Danke
                  Ja, das macht Sinn.

                  Die Sache mit 11 Uhr steht im obersten ersten Thread.

                  schedule({hour: 11, minute: 0}, function () {
                      if (reducedCharging) {
                          setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                          log("Set max_charge_power to 2kW");
                          setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                          //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                      }
                  
                  T Nicht stören
                  T Nicht stören
                  ticaki
                  schrieb am zuletzt editiert von
                  #8

                  @doppellhelix

                  Das hab ich gesehen, aber hast du auch bei 11:00 die neuen setState() eingefügt? Und wenn die das problem sind, muß du doch auch den code dort posten - Glaskugel sind da nicht sehr zuverlässig :)

                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                  Spenden

                  1 Antwort Letzte Antwort
                  0
                  • D Doppellhelix

                    @ticaki
                    Danke
                    Ja, das macht Sinn.

                    Die Sache mit 11 Uhr steht im obersten ersten Thread.

                    schedule({hour: 11, minute: 0}, function () {
                        if (reducedCharging) {
                            setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                            log("Set max_charge_power to 2kW");
                            setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                            //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                        }
                    
                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    schrieb am zuletzt editiert von Asgothian
                    #9

                    @doppellhelix Und wenn du das genau liest wirst du feststellen das um 11 nu dann etwas passiert wenn die Variable reducedCharging auf wahr steht. Du initialisierst sie aber mit falsch. Deswegen ist um 11 nix passiert.

                    A.

                    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                    T D 2 Antworten Letzte Antwort
                    0
                    • AsgothianA Asgothian

                      @doppellhelix Und wenn du das genau liest wirst du feststellen das um 11 nu dann etwas passiert wenn die Variable reducedCharging auf wahr steht. Du initialisierst sie aber mit falsch. Deswegen ist um 11 nix passiert.

                      A.

                      T Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb am zuletzt editiert von
                      #10

                      @asgothian
                      Bei einem normalen setState() würde sich das hier ändern:

                      Qualität:
                      0x20 - substitute initial value
                      

                      Da ist nix drauf geschrieben worden.

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      1 Antwort Letzte Antwort
                      0
                      • AsgothianA Asgothian

                        @doppellhelix Und wenn du das genau liest wirst du feststellen das um 11 nu dann etwas passiert wenn die Variable reducedCharging auf wahr steht. Du initialisierst sie aber mit falsch. Deswegen ist um 11 nix passiert.

                        A.

                        D Offline
                        D Offline
                        Doppellhelix
                        schrieb am zuletzt editiert von
                        #11

                        Also erstmal,

                        danke euch beiden für eure Geduld mit mir :-)
                        Ich möchte das unbedingt verstehen, weil ich schon von Berufswegen mich dafür interessiere. Da sind es aber eher SPS Programme.

                        @asgothian
                        Versteh nicht, wo ich die reducedCharging auf falsch setze?

                        Zum Ablauf:

                        Bei Sonnenaufgang wird gecheckt, ob 20000 erreicht werden.
                        Dem ist heute so, als wird reducedCharging auf wahr gestellt.
                        Zeile 11

                        Dann passiert bis 11 Uhr nix.
                        Hier wird in Zeile 27 gecheckt, ob reucedCharging ansteht.
                        Das sollte es ja eigentlich noch. ISt ja nix anderes dazwischen passiert oder überseh ich was.

                        Hie nochmal der komplette code, damit wir wieder alle gleich sind :-)

                        var reducedCharging = false;
                        console.info('reduced charging is '+reducedCharging)
                        
                        schedule({astro: "sunrise"}, function () {
                            var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                            var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                             if (forecast > 20000) {
                                setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                                //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                                setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                                reducedCharging = true;
                                setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                            } else {
                                 setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                                 //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                 setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                                 reducedCharging = false;
                                 setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                            }
                        
                            log(msgText);
                            setState('telegram.0.communicate.response', msgText);
                            });
                        
                        
                        schedule({hour: 11, minute: 0}, function () {
                            if (reducedCharging) {
                                setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                                log("Set max_charge_power to 2kW");
                                setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                                //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                            }
                        });
                        
                        
                        
                        paul53P T AsgothianA 3 Antworten Letzte Antwort
                        0
                        • D Doppellhelix

                          Also erstmal,

                          danke euch beiden für eure Geduld mit mir :-)
                          Ich möchte das unbedingt verstehen, weil ich schon von Berufswegen mich dafür interessiere. Da sind es aber eher SPS Programme.

                          @asgothian
                          Versteh nicht, wo ich die reducedCharging auf falsch setze?

                          Zum Ablauf:

                          Bei Sonnenaufgang wird gecheckt, ob 20000 erreicht werden.
                          Dem ist heute so, als wird reducedCharging auf wahr gestellt.
                          Zeile 11

                          Dann passiert bis 11 Uhr nix.
                          Hier wird in Zeile 27 gecheckt, ob reucedCharging ansteht.
                          Das sollte es ja eigentlich noch. ISt ja nix anderes dazwischen passiert oder überseh ich was.

                          Hie nochmal der komplette code, damit wir wieder alle gleich sind :-)

                          var reducedCharging = false;
                          console.info('reduced charging is '+reducedCharging)
                          
                          schedule({astro: "sunrise"}, function () {
                              var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                              var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                               if (forecast > 20000) {
                                  setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                                  //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                                  setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                                  reducedCharging = true;
                                  setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                              } else {
                                   setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                                   //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                   setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                                   reducedCharging = false;
                                   setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                              }
                          
                              log(msgText);
                              setState('telegram.0.communicate.response', msgText);
                              });
                          
                          
                          schedule({hour: 11, minute: 0}, function () {
                              if (reducedCharging) {
                                  setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                                  log("Set max_charge_power to 2kW");
                                  setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                                  //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                              }
                          });
                          
                          
                          
                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #12

                          @doppellhelix sagte: Versteh nicht, wo ich die reducedCharging auf falsch setze?

                          Beim Skriptstart in Zeile 1. Nach jeder Änderung im Skript wird das Skript neu gestartet. Wenn es nach SA passiert, ist um 11 Uhr die Variable false.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          HomoranH D 2 Antworten Letzte Antwort
                          0
                          • D Doppellhelix

                            Also erstmal,

                            danke euch beiden für eure Geduld mit mir :-)
                            Ich möchte das unbedingt verstehen, weil ich schon von Berufswegen mich dafür interessiere. Da sind es aber eher SPS Programme.

                            @asgothian
                            Versteh nicht, wo ich die reducedCharging auf falsch setze?

                            Zum Ablauf:

                            Bei Sonnenaufgang wird gecheckt, ob 20000 erreicht werden.
                            Dem ist heute so, als wird reducedCharging auf wahr gestellt.
                            Zeile 11

                            Dann passiert bis 11 Uhr nix.
                            Hier wird in Zeile 27 gecheckt, ob reucedCharging ansteht.
                            Das sollte es ja eigentlich noch. ISt ja nix anderes dazwischen passiert oder überseh ich was.

                            Hie nochmal der komplette code, damit wir wieder alle gleich sind :-)

                            var reducedCharging = false;
                            console.info('reduced charging is '+reducedCharging)
                            
                            schedule({astro: "sunrise"}, function () {
                                var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                                var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                                 if (forecast > 20000) {
                                    setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                                    //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                                    setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                                    reducedCharging = true;
                                    setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                                } else {
                                     setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                                     //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                     setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                                     reducedCharging = false;
                                     setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                                }
                            
                                log(msgText);
                                setState('telegram.0.communicate.response', msgText);
                                });
                            
                            
                            schedule({hour: 11, minute: 0}, function () {
                                if (reducedCharging) {
                                    setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                                    log("Set max_charge_power to 2kW");
                                    setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                                    //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                }
                            });
                            
                            
                            
                            T Nicht stören
                            T Nicht stören
                            ticaki
                            schrieb am zuletzt editiert von ticaki
                            #13

                            @doppellhelix
                            Also stimmt doch allles :)

                            um 11 Uhr wird die Variable reducedCharging nur abgefragt und nicht geschrieben.
                            Beim start des Skriptes solltest du die Variable mit dem Datenpunkt initialisieren.

                            Oh Paul war schon da :)

                            EDIT: Naja ich würde die Variable ganz streichen und jedesmal getState() oder setState() verwenden, so als wenns ein fremder Datenpunkt ist. Sind ja nur 2 abfragen und 1 set pro Tag.

                            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                            Spenden

                            1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @doppellhelix sagte: Versteh nicht, wo ich die reducedCharging auf falsch setze?

                              Beim Skriptstart in Zeile 1. Nach jeder Änderung im Skript wird das Skript neu gestartet. Wenn es nach SA passiert, ist um 11 Uhr die Variable false.

                              HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #14

                              @paul53 sagte in Erste Schritte beim Scripten - Einsteigerfrage:

                              Beim Skriptstart in Zeile 1. Nach jeder Änderung im Skript wird das Skript neu gestartet. Wenn es nach SA passiert ist um 11 Uhr die Variable false.

                              @Doppellhelix
                              schreib den aktuellen Zustand in einen eigenen Datenpunkt und lies den bei Skriptstart aus

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @doppellhelix sagte: Versteh nicht, wo ich die reducedCharging auf falsch setze?

                                Beim Skriptstart in Zeile 1. Nach jeder Änderung im Skript wird das Skript neu gestartet. Wenn es nach SA passiert, ist um 11 Uhr die Variable false.

                                D Offline
                                D Offline
                                Doppellhelix
                                schrieb am zuletzt editiert von
                                #15

                                @paul53

                                Ahhh, das erklärt es natürlich.
                                Das ist aber dann ziemlich unelegant. Dann dürfte man ja nie am Script arbeiten, wenn man nicht bis zum nächsten Sonnenaufgang warten will.

                                Ich bin davon ausgegangen, dass so ein Script wie ein SPS Programm arbeitet und das Script in einer Schleife stetig durchlaufen wird.

                                Wie bekommt man das denn besser hin?

                                HomoranH T paul53P 3 Antworten Letzte Antwort
                                0
                                • D Doppellhelix

                                  @paul53

                                  Ahhh, das erklärt es natürlich.
                                  Das ist aber dann ziemlich unelegant. Dann dürfte man ja nie am Script arbeiten, wenn man nicht bis zum nächsten Sonnenaufgang warten will.

                                  Ich bin davon ausgegangen, dass so ein Script wie ein SPS Programm arbeitet und das Script in einer Schleife stetig durchlaufen wird.

                                  Wie bekommt man das denn besser hin?

                                  HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #16

                                  @doppellhelix sagte in Erste Schritte beim Scripten - Einsteigerfrage:

                                  Wie bekommt man das denn besser hin?

                                  @homoran sagte in Erste Schritte beim Scripten - Einsteigerfrage:

                                  @Doppellhelix
                                  schreib den aktuellen Zustand in einen eigenen Datenpunkt und lies den bei Skriptstart aus

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  1 Antwort Letzte Antwort
                                  0
                                  • D Doppellhelix

                                    @paul53

                                    Ahhh, das erklärt es natürlich.
                                    Das ist aber dann ziemlich unelegant. Dann dürfte man ja nie am Script arbeiten, wenn man nicht bis zum nächsten Sonnenaufgang warten will.

                                    Ich bin davon ausgegangen, dass so ein Script wie ein SPS Programm arbeitet und das Script in einer Schleife stetig durchlaufen wird.

                                    Wie bekommt man das denn besser hin?

                                    T Nicht stören
                                    T Nicht stören
                                    ticaki
                                    schrieb am zuletzt editiert von
                                    #17

                                    @doppellhelix sagte in Erste Schritte beim Scripten - Einsteigerfrage:

                                    @paul53

                                    Ahhh, das erklärt es natürlich.
                                    Das ist aber dann ziemlich unelegant. Dann dürfte man ja nie am Script arbeiten, wenn man nicht bis zum nächsten Sonnenaufgang warten will.

                                    Ich bin davon ausgegangen, dass so ein Script wie ein SPS Programm arbeitet und das Script in einer Schleife stetig durchlaufen wird.

                                    Wie bekommt man das denn besser hin?

                                    Den Edit wirst du nicht gelesen habe 2 Möglichkeiten

                                    • initialisiere die Variable mit getState()
                                    • streiche die Variable und verwende überall getState() und setState()

                                    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                    Spenden

                                    1 Antwort Letzte Antwort
                                    0
                                    • D Doppellhelix

                                      Also erstmal,

                                      danke euch beiden für eure Geduld mit mir :-)
                                      Ich möchte das unbedingt verstehen, weil ich schon von Berufswegen mich dafür interessiere. Da sind es aber eher SPS Programme.

                                      @asgothian
                                      Versteh nicht, wo ich die reducedCharging auf falsch setze?

                                      Zum Ablauf:

                                      Bei Sonnenaufgang wird gecheckt, ob 20000 erreicht werden.
                                      Dem ist heute so, als wird reducedCharging auf wahr gestellt.
                                      Zeile 11

                                      Dann passiert bis 11 Uhr nix.
                                      Hier wird in Zeile 27 gecheckt, ob reucedCharging ansteht.
                                      Das sollte es ja eigentlich noch. ISt ja nix anderes dazwischen passiert oder überseh ich was.

                                      Hie nochmal der komplette code, damit wir wieder alle gleich sind :-)

                                      var reducedCharging = false;
                                      console.info('reduced charging is '+reducedCharging)
                                      
                                      schedule({astro: "sunrise"}, function () {
                                          var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                                          var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                                           if (forecast > 20000) {
                                              setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                                              //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                                              setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                                              reducedCharging = true;
                                              setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                                          } else {
                                               setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                                               //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                               setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                                               reducedCharging = false;
                                               setState('0_userdata.0.reducedCharging'/*reducedCharging*/, reducedCharging);
                                          }
                                      
                                          log(msgText);
                                          setState('telegram.0.communicate.response', msgText);
                                          });
                                      
                                      
                                      schedule({hour: 11, minute: 0}, function () {
                                          if (reducedCharging) {
                                              setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                                              log("Set max_charge_power to 2kW");
                                              setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                                              //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                          }
                                      });
                                      
                                      
                                      
                                      AsgothianA Offline
                                      AsgothianA Offline
                                      Asgothian
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      @doppellhelix sagte in Erste Schritte beim Scripten - Einsteigerfrage:

                                      Versteh nicht, wo ich die reducedCharging auf falsch setze?
                                      Zum Ablauf:
                                      Bei Sonnenaufgang wird gecheckt, ob 20000 erreicht werden.
                                      Dem ist heute so, als wird reducedCharging auf wahr gestellt.
                                      Zeile 11
                                      Dann passiert bis 11 Uhr nix.
                                      Hier wird in Zeile 27 gecheckt, ob reucedCharging ansteht.
                                      Das sollte es ja eigentlich noch. ISt ja nix anderes dazwischen passiert oder überseh ich was.
                                      Hie nochmal der komplette code, damit wir wieder alle gleich sind

                                      Da ist dein Denkfehler:

                                      • du setzt reducedCharging hier auf falsch:
                                        var reducedCharging = false;
                                      • wenn das Skript zum Sonnenaufgang läuft wird zum Sonnenaufgang der Wert von reducedCharging verändert. Das wäre heute passiert wenn Du das Skript nicht danach neu gestartet hättest. Ergo ist reducedCharging immer noch falsch

                                      Vielleicht generell mal als Denkhilfe

                                      Variablen sind:

                                      • nur in dem Kontext bekannt in dem sie definiert sind. Der Kontext kann dabei das Skript sein, kann aber auch nur ein Teil des Skriptes sein:
                                      const scriptglobal = true;
                                      
                                      if (23<11) {
                                        const scriptlocal = true;
                                        console.info('A global: ' + scriptglobal + ' local: ' + scriptlocal)
                                      }
                                      
                                      console.info('B global: ' + scriptglobal + ' local: ' + scriptlocal)
                                      

                                      liefert:
                                      A global: true local: true
                                      B global: true local: undefined

                                      • variablen belegen wenig Speicherplatz und sind nur aktiv wenn das Skript läuft
                                      • auf variablen kann schnell und einfach zugegriffen werden (lesen und schreiben)

                                      Datenpunkte sind:

                                      • persistent - ihre Werte bleiben selbst über den Neustart des ioBroker erhalten
                                      • global - sie sind nicht an einzelne Skripte gebunden
                                      • zugriff erfordert mehr Code, da die Werte aus der Datenpunkt-Datenbank geholt / dahin geschrieben werden müssen. Das macht Datenpunkte weniger 'einfach' zu nutzen
                                      • Zugriff kostet ggf. Zeit, so das der Code:
                                      let value = Math.random();
                                      setState('0_userdata.myState', value);
                                      if (value == getState('0_userdata.myState').val console.info('gleich') else console.info('ungleich')
                                      

                                      nicht bei jedem Durchlauf die gleiche Meldung ins Log schreibt.

                                      In deinem Code solltest Du die Variable also mit dem Wert des Datenpunktes vorbelegen, damit sie Synchron zum Datenpunkt ist.

                                      var reducedCharging = getState('0_userdata.0.reducedCharging'/*reducedCharging*/).val;
                                      

                                      A.

                                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                      1 Antwort Letzte Antwort
                                      0
                                      • D Offline
                                        D Offline
                                        Doppellhelix
                                        schrieb am zuletzt editiert von Doppellhelix
                                        #19

                                        Puuuhhh, und ich dachte nimm dir mal schnell dieses kleine Script und pass es an :-)
                                        Das war wohl sehr naiv.

                                        Aber mitlerweile habe ich schon einiges gelernt. :+1:

                                        Ich bin mir noch nicht sicher, ob die Variable in den Datenpunkt geschrieben wird..
                                        Habe jetzt alles auf Datenpunkte umgeschrieben.
                                        Hoffe ich zumíndest.

                                        //var reducedCharging = false;
                                        var reducedCharging = getState('0_userdata.0.reducedCharging'/*reducedCharging*/).val; 
                                        console.info('reduced charging is '+reducedCharging);
                                        
                                        schedule({astro: "sunrise"}, function () {
                                            var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                                            var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                                             if (forecast > 20000) {
                                                setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                                                //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                                                setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                                                //reducedCharging = true;
                                                setState('0_userdata.0.reducedCharging'/*reducedCharging*/, true);
                                            } else {
                                                 setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                                                 //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                                 setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                                                 setState('0_userdata.0.reducedCharging'/*reducedCharging*/, false);
                                            }
                                        
                                            log(msgText);
                                            setState('telegram.0.communicate.response', msgText);
                                            });
                                        
                                        
                                        schedule({hour: 12, minute: 0}, function () {
                                            if (reducedCharging) {
                                                setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                                                log("Set max_charge_power to 2kW");
                                                setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                                                //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                            }
                                        });
                                        
                                        
                                        

                                        EDIT:
                                        hatte das Script ja auf 12 Uhr abgeändert und das hat funktioniert :clap:

                                        AsgothianA 1 Antwort Letzte Antwort
                                        0
                                        • D Doppellhelix

                                          Puuuhhh, und ich dachte nimm dir mal schnell dieses kleine Script und pass es an :-)
                                          Das war wohl sehr naiv.

                                          Aber mitlerweile habe ich schon einiges gelernt. :+1:

                                          Ich bin mir noch nicht sicher, ob die Variable in den Datenpunkt geschrieben wird..
                                          Habe jetzt alles auf Datenpunkte umgeschrieben.
                                          Hoffe ich zumíndest.

                                          //var reducedCharging = false;
                                          var reducedCharging = getState('0_userdata.0.reducedCharging'/*reducedCharging*/).val; 
                                          console.info('reduced charging is '+reducedCharging);
                                          
                                          schedule({astro: "sunrise"}, function () {
                                              var msgText = "Akkustand bei Sonnenaufgang: " + getState('modbus.0.inputRegisters.13022_Battery_level_'/*Batteriekapazität*/).val + "%";
                                              var forecast = getState('pvforecast.0.summary.energy.today'/*Geschätzte Energie (heute)*/).val;
                                               if (forecast > 20000) {
                                                  setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 100);
                                                  //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 0);
                                                  setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Reduziere Ladeleistung auf 100W bis 11 Uhr");
                                                  //reducedCharging = true;
                                                  setState('0_userdata.0.reducedCharging'/*reducedCharging*/, true);
                                              } else {
                                                   setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 10600);
                                                   //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                                   setState('telegram.0.communicate.response', forecast + "Wh Ertrag erwartet. Lade Akku sofort");
                                                   setState('0_userdata.0.reducedCharging'/*reducedCharging*/, false);
                                              }
                                          
                                              log(msgText);
                                              setState('telegram.0.communicate.response', msgText);
                                              });
                                          
                                          
                                          schedule({hour: 12, minute: 0}, function () {
                                              if (reducedCharging) {
                                                  setState('telegram.0.communicate.response', "Starte laden des Akkus mit 2 kW");
                                                  log("Set max_charge_power to 2kW");
                                                  setState('modbus.0.holdingRegisters.33046_Max_Charging_Power'/*Max Ladeleistung*/, 2000);
                                                  //setState('evcc.0.control.prioritySoc'/*prioritySoc*/, 30);
                                              }
                                          });
                                          
                                          
                                          

                                          EDIT:
                                          hatte das Script ja auf 12 Uhr abgeändert und das hat funktioniert :clap:

                                          AsgothianA Offline
                                          AsgothianA Offline
                                          Asgothian
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #20

                                          @doppellhelix sagte in Erste Schritte beim Scripten - Einsteigerfrage:

                                          Puuuhhh, und ich dachte nimm dir mal schnell dieses kleine Script und pass es an
                                          Das war wohl sehr naiv.

                                          Ja, war es. gerade wenn du fremde Skripte übernimmst solltest Du dir vorher die Doku anschauen, damit du verstehst was die einzelnen Befehle wirklich tun.

                                          Habe jetzt alles auf Datenpunkte umgeschrieben.
                                          Hoffe ich zumíndest.

                                          Das sieht erst einmal soweit gut aus.

                                          Ob es das macht was du willst lässt sich so nicht sagen - dazu müssten wir wissen was das Ziel ist. :)

                                          A.

                                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                          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

                                          813

                                          Online

                                          32.4k

                                          Benutzer

                                          81.6k

                                          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