Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Bitte Hilfe beim Erstellen einer kleinen Programmzeile

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Bitte Hilfe beim Erstellen einer kleinen Programmzeile

Scheduled Pinned Locked Moved JavaScript
28 Posts 2 Posters 1.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @TH-G sagte:

    Das bedeute doch dann auch, dass die Grundlast ständig angepasst wird oder?

    Nicht ständig, sondern nur bei Umschaltung auf "Kühlen". Die Änderung von grundlast muss vor der Deklaration der zyklisch aufgerufenen Funktion processing() erfolgen (vor Zeile 63).

    TH GT Offline
    TH GT Offline
    TH G
    wrote on last edited by TH G
    #11

    @paul53

    Sorry Paul wenn ich anstrengend bin aber ich möchte es gerne verstehen.

    Wenn das gesamte Skript alle 1000 ms abgefragt wird, wird doch auch der Status von Kühlen angefragt oder?

    Ah ich verstehe. In dem Skript wird erst ab Zeile 63 alle 1000 abgefragt.

    paul53P 1 Reply Last reply
    0
    • TH GT TH G

      @paul53

      Sorry Paul wenn ich anstrengend bin aber ich möchte es gerne verstehen.

      Wenn das gesamte Skript alle 1000 ms abgefragt wird, wird doch auch der Status von Kühlen angefragt oder?

      Ah ich verstehe. In dem Skript wird erst ab Zeile 63 alle 1000 abgefragt.

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #12

      @TH-G sagte:

      Wenn das gesamte Skript alle 1000 ms abgefragt wird, wird doch auch der Status von Kühlen angefragt oder?

      Nein, es wird nur die Funktion processing() zyklisch abgearbeitet. Alles davor nicht. Kühlen wird bisher nicht abgefragt, deshalb muss es vor Zeile 63 ergänzt werden.

      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

      TH GT 1 Reply Last reply
      0
      • paul53P paul53

        @TH-G sagte:

        Wenn das gesamte Skript alle 1000 ms abgefragt wird, wird doch auch der Status von Kühlen angefragt oder?

        Nein, es wird nur die Funktion processing() zyklisch abgearbeitet. Alles davor nicht. Kühlen wird bisher nicht abgefragt, deshalb muss es vor Zeile 63 ergänzt werden.

        TH GT Offline
        TH GT Offline
        TH G
        wrote on last edited by TH G
        #13

        @paul53

        Wenn ich dein Script nach Zeile 63 einbaue, würde es doch zyklisch abgefragt werden oder?

        Noch eine andere Frage. Warum steht hinter val kein true? Woher weiss das Skript das Kühlung aktiv ist?

        paul53P 1 Reply Last reply
        0
        • TH GT TH G

          @paul53

          Wenn ich dein Script nach Zeile 63 einbaue, würde es doch zyklisch abgefragt werden oder?

          Noch eine andere Frage. Warum steht hinter val kein true? Woher weiss das Skript das Kühlung aktiv ist?

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #14

          @TH-G sagte:

          Wenn ich dein Script nach Zeile 63 einbaue, würde es doch zyklisch abgefragt werden oder?

          Ja, das wäre aber kontraproduktiv. Mein Vorschlag passt die Variable grundlast per Trigger an, wenn sich der Status von Kühlen ändert. Bau es anstelle der leeren Zeile 62 ein.

          if(getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN').val) grundlast +=  3000;
          on('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN', function(dp) { // triggert bei Änderung des Status Kühlen
              if(dp.state.val) grundlast += 3000;
              else grundlast -= 3000;
          });
          
          // ab hier Programmcode, nichts ändern!
          function processing() {
          

          @TH-G sagte in Bitte Hilfe beim Erstellen einer kleinen Programmzeile:

          Woher weiss das Skript das Kühlung aktiv ist?

          Weil dann der Wert des Datenpunktes true ist.

          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

          TH GT 1 Reply Last reply
          0
          • paul53P paul53

            @TH-G sagte:

            Wenn ich dein Script nach Zeile 63 einbaue, würde es doch zyklisch abgefragt werden oder?

            Ja, das wäre aber kontraproduktiv. Mein Vorschlag passt die Variable grundlast per Trigger an, wenn sich der Status von Kühlen ändert. Bau es anstelle der leeren Zeile 62 ein.

            if(getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN').val) grundlast +=  3000;
            on('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN', function(dp) { // triggert bei Änderung des Status Kühlen
                if(dp.state.val) grundlast += 3000;
                else grundlast -= 3000;
            });
            
            // ab hier Programmcode, nichts ändern!
            function processing() {
            

            @TH-G sagte in Bitte Hilfe beim Erstellen einer kleinen Programmzeile:

            Woher weiss das Skript das Kühlung aktiv ist?

            Weil dann der Wert des Datenpunktes true ist.

            TH GT Offline
            TH GT Offline
            TH G
            wrote on last edited by
            #15

            @paul53

            Habe ich in Zeile 62 eingefügt. Folgende Warnung kommt dann:

            7.8.2020, 16:14:46.668 [info ]: javascript.0 (31544) Stop script script.js.common.SMA_Bat_Regelung_2_1
            7.8.2020, 16:14:46.682 [info ]: javascript.0 (31544) Start javascript script.js.common.SMA_Bat_Regelung_2_1
            7.8.2020, 16:14:46.731 [warn ]: javascript.0 (31544) at script.js.common.SMA_Bat_Regelung_2_1:62:4
            7.8.2020, 16:14:46.735 [info ]: javascript.0 (31544) script.js.common.SMA_Bat_Regelung_2_1: registered 1 subscription and 0 schedules

            paul53P 1 Reply Last reply
            0
            • TH GT TH G

              @paul53

              Habe ich in Zeile 62 eingefügt. Folgende Warnung kommt dann:

              7.8.2020, 16:14:46.668 [info ]: javascript.0 (31544) Stop script script.js.common.SMA_Bat_Regelung_2_1
              7.8.2020, 16:14:46.682 [info ]: javascript.0 (31544) Start javascript script.js.common.SMA_Bat_Regelung_2_1
              7.8.2020, 16:14:46.731 [warn ]: javascript.0 (31544) at script.js.common.SMA_Bat_Regelung_2_1:62:4
              7.8.2020, 16:14:46.735 [info ]: javascript.0 (31544) script.js.common.SMA_Bat_Regelung_2_1: registered 1 subscription and 0 schedules

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #16

              @TH-G
              Ich hatte getState falsch geschrieben (inzwischen korrigiert).

              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

              TH GT 1 Reply Last reply
              0
              • paul53P paul53

                @TH-G
                Ich hatte getState falsch geschrieben (inzwischen korrigiert).

                TH GT Offline
                TH GT Offline
                TH G
                wrote on last edited by
                #17

                @paul53

                Warnung ist immer noch da:

                // PV-WR Register Definition, nur bei Bedarf anpassen
                  var PV_Dev_Type = ModBusPV + ".inputRegisters.30053_DevTypeId", /*Typnummer*/
                      PVWR_limit = ModBusPV + ".holdingRegisters.41255_WNomPrc";
                      
                if(getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN').val) grundlast +=  3000;
                on('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN', function(dp) { // triggert bei Änderung des Status Kühlen
                    if(dp.state.val) grundlast += 3000;
                    else grundlast -= 3000;
                });
                
                // ab hier Programmcode, nichts ändern!
                function processing() {
                // Start der Parametrierung
                
                
                paul53P 1 Reply Last reply
                0
                • TH GT TH G

                  @paul53

                  Warnung ist immer noch da:

                  // PV-WR Register Definition, nur bei Bedarf anpassen
                    var PV_Dev_Type = ModBusPV + ".inputRegisters.30053_DevTypeId", /*Typnummer*/
                        PVWR_limit = ModBusPV + ".holdingRegisters.41255_WNomPrc";
                        
                  if(getState('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN').val) grundlast +=  3000;
                  on('stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN', function(dp) { // triggert bei Änderung des Status Kühlen
                      if(dp.state.val) grundlast += 3000;
                      else grundlast -= 3000;
                  });
                  
                  // ab hier Programmcode, nichts ändern!
                  function processing() {
                  // Start der Parametrierung
                  
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #18

                  @TH-G sagte:

                  Warnung ist immer noch da

                  Schau mal im Tab "Log" nach. Dort gibt es meist mehr Informationen. Ist die Datenpunkt-ID richtig geschrieben ?

                  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

                  TH GT 1 Reply Last reply
                  0
                  • paul53P paul53

                    @TH-G sagte:

                    Warnung ist immer noch da

                    Schau mal im Tab "Log" nach. Dort gibt es meist mehr Informationen. Ist die Datenpunkt-ID richtig geschrieben ?

                    TH GT Offline
                    TH GT Offline
                    TH G
                    wrote on last edited by TH G
                    #19

                    @paul53

                    Ja der DP ist richtig: stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN

                    javascript.0 2020-08-07 16:25:44.150 warn (31544) at script.js.common.SMA_Bat_Regelung_2_1:62:4
                    javascript.0 2020-08-07 16:25:44.145 warn (31544) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN" not found (3)

                    paul53P 1 Reply Last reply
                    0
                    • TH GT TH G

                      @paul53

                      Ja der DP ist richtig: stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN

                      javascript.0 2020-08-07 16:25:44.150 warn (31544) at script.js.common.SMA_Bat_Regelung_2_1:62:4
                      javascript.0 2020-08-07 16:25:44.145 warn (31544) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN" not found (3)

                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #20

                      @TH-G sagte:

                      "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN" not found (3)

                      Die Warnung sagt aus, dass der Datenpunkt nicht gefunden wurde.

                      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

                      TH GT 1 Reply Last reply
                      0
                      • paul53P paul53

                        @TH-G sagte:

                        "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN" not found (3)

                        Die Warnung sagt aus, dass der Datenpunkt nicht gefunden wurde.

                        TH GT Offline
                        TH GT Offline
                        TH G
                        wrote on last edited by
                        #21

                        @paul53

                        Verstehe aber er ist da und nutze diesen auch für VIS und da wird es richtig angezeigt.

                        Der DP ist auch über die Kopierfuktion kopiert worden, damit es keine Schreibfehler gibt.

                        paul53P 1 Reply Last reply
                        0
                        • TH GT TH G

                          @paul53

                          Verstehe aber er ist da und nutze diesen auch für VIS und da wird es richtig angezeigt.

                          Der DP ist auch über die Kopierfuktion kopiert worden, damit es keine Schreibfehler gibt.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by
                          #22

                          @TH-G
                          Poste mal die RAW-Ansicht des Objektes in Code tags.

                          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

                          TH GT 1 Reply Last reply
                          0
                          • paul53P paul53

                            @TH-G
                            Poste mal die RAW-Ansicht des Objektes in Code tags.

                            TH GT Offline
                            TH GT Offline
                            TH G
                            wrote on last edited by TH G
                            #23

                            @paul53

                            Hallo Paul,

                            es gab für VIS damals auch das Problem, das es nicht möglich ist, ein leeres Feld zu triggern. Kann das hier auch das Problem sein?

                            https://forum.iobroker.net/topic/34677/triggern-dp-ohne-wert-nicht-möglich-true-leer-stiebel-isg/53

                            AlCalzone schrieb damals dazu:

                            Der Adapter nutzt die expire-Funktion, um states automatisch nach gewisser Zeit zurück (auf null) zu setzen. Scheint als bekommt der JS-Adapter diese Änderung nicht mit.

                            {
                              "from": "system.adapter.stiebel-isg.0",
                              "user": "system.user.admin",
                              "ts": 1592375626112,
                              "common": {
                                "name": "KÜHLEN",
                                "type": "boolean",
                                "unit": "",
                                "role": "indicator.state",
                                "read": true,
                                "write": false
                              },
                              "native": {},
                              "acl": {
                                "object": 1636,
                                "owner": "system.user.admin",
                                "ownerGroup": "system.group.administrator",
                                "state": 1636
                              },
                              "_id": "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN",
                              "type": "state"
                            }
                            
                            paul53P 1 Reply Last reply
                            0
                            • TH GT TH G

                              @paul53

                              Hallo Paul,

                              es gab für VIS damals auch das Problem, das es nicht möglich ist, ein leeres Feld zu triggern. Kann das hier auch das Problem sein?

                              https://forum.iobroker.net/topic/34677/triggern-dp-ohne-wert-nicht-möglich-true-leer-stiebel-isg/53

                              AlCalzone schrieb damals dazu:

                              Der Adapter nutzt die expire-Funktion, um states automatisch nach gewisser Zeit zurück (auf null) zu setzen. Scheint als bekommt der JS-Adapter diese Änderung nicht mit.

                              {
                                "from": "system.adapter.stiebel-isg.0",
                                "user": "system.user.admin",
                                "ts": 1592375626112,
                                "common": {
                                  "name": "KÜHLEN",
                                  "type": "boolean",
                                  "unit": "",
                                  "role": "indicator.state",
                                  "read": true,
                                  "write": false
                                },
                                "native": {},
                                "acl": {
                                  "object": 1636,
                                  "owner": "system.user.admin",
                                  "ownerGroup": "system.group.administrator",
                                  "state": 1636
                                },
                                "_id": "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN",
                                "type": "state"
                              }
                              
                              paul53P Offline
                              paul53P Offline
                              paul53
                              wrote on last edited by
                              #24

                              @TH-G
                              Wird der Datenpunkt vom Adapter "stiebel-isg" erzeugt und geschrieben ? Dann erstelle ein Issue auf Github, dass der Wert nur false und true enthalten darf und nicht null.

                              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

                              TH GT 1 Reply Last reply
                              0
                              • paul53P paul53

                                @TH-G
                                Wird der Datenpunkt vom Adapter "stiebel-isg" erzeugt und geschrieben ? Dann erstelle ein Issue auf Github, dass der Wert nur false und true enthalten darf und nicht null.

                                TH GT Offline
                                TH GT Offline
                                TH G
                                wrote on last edited by TH G
                                #25

                                @paul53

                                Das Thema ist schon mehrfach angesprochen worden und es scheint keine Lösung dafür zu geben.

                                So ist es ja für VIS gelöst worden. Kann man daraus nicht etwas auch für das Problem hier nutzen?

                                var Intervall;
                                
                                
                                on({id: "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN"/*KÜHLEN*/, change: "ne"}, function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  Intervall = setInterval(function () {
                                    if (getState("stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN").val == true) {
                                      setState("0_userdata.0.Status_WP"/*Status_WP*/, 'Kühlen', true);
                                    } else {
                                      setState("0_userdata.0.Status_WP"/*Status_WP*/, 'nicht aktiv', true);
                                      (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                                    }
                                  }, 1000);
                                });
                                
                                

                                z.B. mit dem DP 0_userdata.0.Status_WP

                                Dort gibt es folgende Texteinträge:

                                Kühlen
                                Heizen
                                Warmwasser
                                nicht aktiv

                                paul53P 1 Reply Last reply
                                0
                                • TH GT TH G

                                  @paul53

                                  Das Thema ist schon mehrfach angesprochen worden und es scheint keine Lösung dafür zu geben.

                                  So ist es ja für VIS gelöst worden. Kann man daraus nicht etwas auch für das Problem hier nutzen?

                                  var Intervall;
                                  
                                  
                                  on({id: "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN"/*KÜHLEN*/, change: "ne"}, function (obj) {
                                    var value = obj.state.val;
                                    var oldValue = obj.oldState.val;
                                    Intervall = setInterval(function () {
                                      if (getState("stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN").val == true) {
                                        setState("0_userdata.0.Status_WP"/*Status_WP*/, 'Kühlen', true);
                                      } else {
                                        setState("0_userdata.0.Status_WP"/*Status_WP*/, 'nicht aktiv', true);
                                        (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                                      }
                                    }, 1000);
                                  });
                                  
                                  

                                  z.B. mit dem DP 0_userdata.0.Status_WP

                                  Dort gibt es folgende Texteinträge:

                                  Kühlen
                                  Heizen
                                  Warmwasser
                                  nicht aktiv

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  wrote on last edited by paul53
                                  #26

                                  @TH-G sagte:

                                  mit dem DP 0_userdata.0.Status_WP

                                  Dieser Datenpunkt zeigt immer den richtigen Zustand an ? Dann ändere es so:

                                  if(getState('0_userdata.0.Status_WP').val == 'Kühlen') grundlast +=  3000;
                                  on('0_userdata.0.Status_WP', function(dp) { // triggert bei Änderung des Status
                                      if(dp.state.val == 'Kühlen') grundlast += 3000;
                                      else grundlast = 550;
                                  });
                                  

                                  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

                                  TH GT 1 Reply Last reply
                                  0
                                  • paul53P paul53

                                    @TH-G sagte:

                                    mit dem DP 0_userdata.0.Status_WP

                                    Dieser Datenpunkt zeigt immer den richtigen Zustand an ? Dann ändere es so:

                                    if(getState('0_userdata.0.Status_WP').val == 'Kühlen') grundlast +=  3000;
                                    on('0_userdata.0.Status_WP', function(dp) { // triggert bei Änderung des Status
                                        if(dp.state.val == 'Kühlen') grundlast += 3000;
                                        else grundlast = 550;
                                    });
                                    
                                    TH GT Offline
                                    TH GT Offline
                                    TH G
                                    wrote on last edited by
                                    #27

                                    @paul53

                                    Ja der stimmte bisher immer :-)

                                    Habe ich geändert und keine Fehlermeldung mehr.

                                    Ich werde das nun testen

                                    Vielen Dank für deine Hilfe und Ausdauert!

                                    TH GT 1 Reply Last reply
                                    0
                                    • TH GT TH G

                                      @paul53

                                      Ja der stimmte bisher immer :-)

                                      Habe ich geändert und keine Fehlermeldung mehr.

                                      Ich werde das nun testen

                                      Vielen Dank für deine Hilfe und Ausdauert!

                                      TH GT Offline
                                      TH GT Offline
                                      TH G
                                      wrote on last edited by
                                      #28

                                      @paul53

                                      Erste Anwendung hat schon geklappt und die Grundlast wurde erhöht

                                      1 Reply Last reply
                                      0
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      312

                                      Online

                                      32.6k

                                      Users

                                      82.3k

                                      Topics

                                      1.3m

                                      Posts
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Login

                                      • Don't have an account? Register

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Home
                                      • Recent
                                      • Tags
                                      • Unread 0
                                      • Categories
                                      • Unreplied
                                      • Popular
                                      • GitHub
                                      • Docu
                                      • Hilfe