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. Blockly
  5. Ist mein Script richtig und effizient ?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Ist mein Script richtig und effizient ?

Geplant Angeheftet Gesperrt Verschoben Blockly
7 Beiträge 3 Kommentatoren 704 Aufrufe 1 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.
  • BluppyleinB Offline
    BluppyleinB Offline
    Bluppylein
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich bin mir irgendwie nicht sicher ob mein Script wirklich richtig ist und glaube das ich zu oft Prüfe bzw. dadurch das System unnötig belastet.

    Eigentlich ist der Fall sehr einfach. Ich möchte von meiner PV Batterie den SoC prüfen und möchte ab gleich oder größer 55% das intelligente Batterie Management Anschalten und wenn sie unter = oder kleiner 54% ausschalten. Und es soll bei Start des Scripts der aktuelle zustand geprüft werden, da ich nicht jeden % Änderung diese Funktion aus und anschalte. Deswegen die Variable.

    Hier der Blocky Code da für Bild das zuviel ist.

    var var_batteryint_mode;
    
    var_batteryint_mode = false;
    on({id: 'plenticore.0.devices.local.battery.SmartBatteryControl', val: true}, function (obj) {
     var value = obj.state.val;
     var oldValue = obj.oldState.val;
     var_batteryint_mode = true;
    });
    on({id: 'plenticore.0.devices.local.battery.SoC', change: "ne"}, function (obj) {
     var value = obj.state.val;
     var oldValue = obj.oldState.val;
     if ((obj.state ? obj.state.val : "") >= 55 && var_batteryint_mode == false) {
       setStateDelayed('plenticore.0.devices.local.battery.SmartBatteryControl', true, false, parseInt(0, 10), false);
       var_batteryint_mode = true;
       console.log((['Intelligente Batteriesteuerung aktivert','\n','Aktueller SoC Wert','\n',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
     } else if ((obj.state ? obj.state.val : "") <= 54 && var_batteryint_mode == true) {
       setStateDelayed('plenticore.0.devices.local.battery.SmartBatteryControl', false, false, parseInt(0, 10), false);
       var_batteryint_mode = false;
       console.log((['Intelligente Batteriesteuerung deaktivert','\n','Aktueller SoC Wert','\n',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
     }
    });
    
    paul53P 1 Antwort Letzte Antwort
    0
    • BluppyleinB Bluppylein

      Hallo zusammen,

      ich bin mir irgendwie nicht sicher ob mein Script wirklich richtig ist und glaube das ich zu oft Prüfe bzw. dadurch das System unnötig belastet.

      Eigentlich ist der Fall sehr einfach. Ich möchte von meiner PV Batterie den SoC prüfen und möchte ab gleich oder größer 55% das intelligente Batterie Management Anschalten und wenn sie unter = oder kleiner 54% ausschalten. Und es soll bei Start des Scripts der aktuelle zustand geprüft werden, da ich nicht jeden % Änderung diese Funktion aus und anschalte. Deswegen die Variable.

      Hier der Blocky Code da für Bild das zuviel ist.

      var var_batteryint_mode;
      
      var_batteryint_mode = false;
      on({id: 'plenticore.0.devices.local.battery.SmartBatteryControl', val: true}, function (obj) {
       var value = obj.state.val;
       var oldValue = obj.oldState.val;
       var_batteryint_mode = true;
      });
      on({id: 'plenticore.0.devices.local.battery.SoC', change: "ne"}, function (obj) {
       var value = obj.state.val;
       var oldValue = obj.oldState.val;
       if ((obj.state ? obj.state.val : "") >= 55 && var_batteryint_mode == false) {
         setStateDelayed('plenticore.0.devices.local.battery.SmartBatteryControl', true, false, parseInt(0, 10), false);
         var_batteryint_mode = true;
         console.log((['Intelligente Batteriesteuerung aktivert','\n','Aktueller SoC Wert','\n',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
       } else if ((obj.state ? obj.state.val : "") <= 54 && var_batteryint_mode == true) {
         setStateDelayed('plenticore.0.devices.local.battery.SmartBatteryControl', false, false, parseInt(0, 10), false);
         var_batteryint_mode = false;
         console.log((['Intelligente Batteriesteuerung deaktivert','\n','Aktueller SoC Wert','\n',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
       }
      });
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @Bluppylein sagte:

      gleich oder größer 55% das intelligente Batterie Management Anschalten und wenn sie unter = oder kleiner 54% ausschalten.

      Vorschlag:

      Blockly_temp.JPG

      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

      BluppyleinB 2 Antworten Letzte Antwort
      0
      • paul53P paul53

        @Bluppylein sagte:

        gleich oder größer 55% das intelligente Batterie Management Anschalten und wenn sie unter = oder kleiner 54% ausschalten.

        Vorschlag:

        Blockly_temp.JPG

        BluppyleinB Offline
        BluppyleinB Offline
        Bluppylein
        schrieb am zuletzt editiert von
        #3

        @paul53 Wenn ich das aber jetzt verstehe setzt du den wer immer bei jeden Change?

        Genau das will ich etwas verhindern da ich angst habe durch das dauernde setzen gibt es irgendwann zuviel last. Der Wert wird alle 10 sec angefragt und wird teilweise innerhalb von 15 min je nach Stromlast geändert da der Akku nur 6,4 kwh hat und wenn herd läuft ist der in 2 std. leer

        HomoranH paul53P 2 Antworten Letzte Antwort
        0
        • BluppyleinB Bluppylein

          @paul53 Wenn ich das aber jetzt verstehe setzt du den wer immer bei jeden Change?

          Genau das will ich etwas verhindern da ich angst habe durch das dauernde setzen gibt es irgendwann zuviel last. Der Wert wird alle 10 sec angefragt und wird teilweise innerhalb von 15 min je nach Stromlast geändert da der Akku nur 6,4 kwh hat und wenn herd läuft ist der in 2 std. leer

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

          @Bluppylein sagte in Ist mein Script richtig und effizient ?:

          setzt du den wer immer bei jeden Change?

          Nur die variable

          Den state nur wenn er nicht identisch ist

          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
          • BluppyleinB Bluppylein

            @paul53 Wenn ich das aber jetzt verstehe setzt du den wer immer bei jeden Change?

            Genau das will ich etwas verhindern da ich angst habe durch das dauernde setzen gibt es irgendwann zuviel last. Der Wert wird alle 10 sec angefragt und wird teilweise innerhalb von 15 min je nach Stromlast geändert da der Akku nur 6,4 kwh hat und wenn herd läuft ist der in 2 std. leer

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

            @Bluppylein sagte:

            wird teilweise innerhalb von 15 min je nach Stromlast geändert

            Da langweilt sich jede CPU.

            @Bluppylein sagte in Ist mein Script richtig und effizient ?:

            setzt du den wer immer bei jeden Change?

            Das verhindert der Vergleich der Variablen control mit dem Wert des Datenpunktes.

            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

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @Bluppylein sagte:

              gleich oder größer 55% das intelligente Batterie Management Anschalten und wenn sie unter = oder kleiner 54% ausschalten.

              Vorschlag:

              Blockly_temp.JPG

              BluppyleinB Offline
              BluppyleinB Offline
              Bluppylein
              schrieb am zuletzt editiert von
              #6

              @paul53

              Also ich habe das jetzt umgesetzt. Nun läuft es aber nicht er setzt die Harken nicht sauber in der Software. Oder habe ich Denkfehler drin? Weil ich setze Provokativ zb. nun bei 60% das Int. Steuern aus und sehe auch IO Broker hat den Wert auf False erkannt. Setze hier temporär sogar statt wurde geändert auf wurde aktualisiert. Dann müsste ja eigentlich sofort bei nächsten Lauf es wieder auf true gesetzt werden

              669ddd19-7f45-4f1d-b24a-f0184c442b10-grafik.png

              var control, aktiv;
              
              
              on({id: 'plenticore.0.devices.local.battery.SoC', change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                if ((obj.state ? obj.state.val : "") >= 55) {
                  control = true;
                  aktiv = 'aktiviert';
                } else if ((obj.state ? obj.state.val : "") <= 54) {
                  control = false;
                  aktiv = 'deaktiviert';
                }
                if ((obj.state ? obj.state.val : "") != getState("plenticore.0.devices.local.battery.SoC").val) {
                  setState("plenticore.0.devices.local.battery.SmartBatteryControl"/*Smart battery control*/, control);
                  console.log((['Intelligente Batteriesteuerung',aktiv,'\n','Aktueller SoC Wert:',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
                }
              });
              
              
              BluppyleinB 1 Antwort Letzte Antwort
              0
              • BluppyleinB Bluppylein

                @paul53

                Also ich habe das jetzt umgesetzt. Nun läuft es aber nicht er setzt die Harken nicht sauber in der Software. Oder habe ich Denkfehler drin? Weil ich setze Provokativ zb. nun bei 60% das Int. Steuern aus und sehe auch IO Broker hat den Wert auf False erkannt. Setze hier temporär sogar statt wurde geändert auf wurde aktualisiert. Dann müsste ja eigentlich sofort bei nächsten Lauf es wieder auf true gesetzt werden

                669ddd19-7f45-4f1d-b24a-f0184c442b10-grafik.png

                var control, aktiv;
                
                
                on({id: 'plenticore.0.devices.local.battery.SoC', change: "ne"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  if ((obj.state ? obj.state.val : "") >= 55) {
                    control = true;
                    aktiv = 'aktiviert';
                  } else if ((obj.state ? obj.state.val : "") <= 54) {
                    control = false;
                    aktiv = 'deaktiviert';
                  }
                  if ((obj.state ? obj.state.val : "") != getState("plenticore.0.devices.local.battery.SoC").val) {
                    setState("plenticore.0.devices.local.battery.SmartBatteryControl"/*Smart battery control*/, control);
                    console.log((['Intelligente Batteriesteuerung',aktiv,'\n','Aktueller SoC Wert:',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
                  }
                });
                
                
                BluppyleinB Offline
                BluppyleinB Offline
                Bluppylein
                schrieb am zuletzt editiert von
                #7

                Fehler gefunden ^^

                Manchmal sieht man nicht mehr den Wald voller Bäume auch wenn das echt Basic ist aber ich fange ja erst mit Blockly an :)

                var control, aktiv;
                
                
                on({id: 'plenticore.0.devices.local.battery.SoC', change: "any"}, function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                  if ((obj.state ? obj.state.val : "") >= 55) {
                    control = true;
                    aktiv = 'aktiviert';
                  } else if ((obj.state ? obj.state.val : "") <= 54) {
                    control = false;
                    aktiv = 'deaktiviert';
                  }
                  if (control != getState("plenticore.0.devices.local.battery.SmartBatteryControl").val) {
                    setState("plenticore.0.devices.local.battery.SmartBatteryControl"/*Smart battery control*/, control);
                    console.log((['Intelligente Batteriesteuerung',aktiv,'\n','Aktueller SoC Wert:',(obj.state ? obj.state.val : ""),'\n',formatDate(new Date(), "TT.MM.JJJJ SS:mm")].join('')));
                  }
                });
                
                control;
                
                
                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

                656

                Online

                32.7k

                Benutzer

                82.4k

                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