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. Frage zu Verknüpfung bei Auslösung eines Scripts

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Frage zu Verknüpfung bei Auslösung eines Scripts

Scheduled Pinned Locked Moved Skripten / Logik
16 Posts 4 Posters 1.4k Views
  • 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 Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #7

    @Zippolighter:

    wenn ich dann auf einmal nicht nur auf Änderung in SV Astro prüfe, sondern auf eine ganz anderen SV bei Änderung prüfe. Ich habe keine Idee wie ich das in einem Script mache. `

    var idSV1 = '...';
    var idSV2 = '...';
    ...
    
    var sv1 = getState(idSV1).val;  // Initialisierung bei Script start
    var sv2 = getState(idSV2).val;  // Initialisierung bei Script start
    ...
    
    function auswertung() {
       // hier werden alle sv1..svN ausgewertet
    }
    
    // auswertung();  // nur, wenn bei Script start gewünscht
    
    on(idSV1, function(dp) {
       sv1 = dp.state.val;
       auswertung();
    });
    on(idSV2, function(dp) {
       sv2 = dp.state.val;
       auswertung();
    });
    ...
    
    

    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 Reply Last reply
    0
    • Z Offline
      Z Offline
      Zippolighter
      wrote on last edited by
      #8

      Erstmal danke an alle. Mich verwirrt das ganze ja auch selbst. Lach. Sind alte funktionierende Programme aus der CCU2 die ich versuche erstmal 1:1 als Script abzubilden, bevor ich die dann hoffentlich irgendwann alle löschen kann.

      Es ist in dem CCU2 Programm ja so, das von oben nach unten immer "Änderung Astro" der Trigger ist, es wird dann überprüft ob etliche andere Werte da sind und dann was ausgeführt oder zur nächsten "Sonst wenn" Anweisung gesprungen.

      Nur zum Schluss wie auf dem Bild wird auf Änderung Astro (wie schon die ganze Zeit) oder auf Astro_Offset_Wert 0 geprüft. Dies soll aber nur stattfinden wenn alles andere nicht getroffen hat (so eine Art Rettungsanker). Das Problem ist jetzt für mich das zusätzliche prüfen auf <u>oder</u> wenn alles andere nicht funktioniert hat.

      Wenn ich das richtig verstehe sind ja zwei "on" Funktionen mit abgeschlossenen Semikolon, zwei eigene Funktionen. So kann ich das nicht als letzte Aktion wenn alles andere nicht funktioniert verwenden.

      Habe mal im Script versucht, Funktion in Funktion zu packen. Keine Ahnung ob das geht. Kann wegen WAF momentan nicht testen.

      Hier das Script. Mache dann nochmal Screenshots vom CCU2 Programm

      ! ````
      /* (Gruppe) Deko Licht Aus (Astro Aus Verzögert Offset)
      ! */
      ! var idAstro = "hm-rega.0.7961"; //Astro
      ! on({
      id: idAstro,
      change: "ne"
      }, function (obj1) {
      var gidAnwesenheit = getState('hm-rega.0.950').val;
      var gidAbwesendKurz = getState('hm-rega.0.2330').val;
      var gidAbwesendLang = getState('hm-rega.0.65253').val;
      var gidAbwesendFeiern = getState('hm-rega.0.4797').val;
      var gidRedBullLicht = getState('hm-rpc.0.KEQ0025668.1.STATE').val;
      var gidAstroOffsetWert = getState('hm-rega.0.13987').val;
      var gidAstroAuto = getState('hm-rega.0.14811').val;
      var gidLichthelligkeit = getState('hm-rega.0.19606').val;
      var gidAbwesend_ioBroker = getState("javascript.0.Manuell.Systemvariable.Allgemein.Abwesenheit_ioBroker").val; //Abwesenheit_ioBroker

          if ((obj1.state.val === true) && (gidAstroOffsetWert > 0) && (gidAbwesend_ioBroker === false) && (gidRedBullLicht === true) && (gidAstroAuto === true) && (gidLichthelligkeit === true)){
              setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); //(Gruppe) Deko Licht An/Aus.PRESS_LONG
              setState("javascript.0.Manuell.Systemvariable.Allgemein.(Gruppe)_Deko_Licht_An/Aus", false); //(Gruppe) Deko Licht An/Aus
              setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE
              setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE
              setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
              setState("hm-rega.0.12875", false); //Cameras Rolieren
      
              setStateDelayed("hm-rega.0.56542", true, 2000); //Lichthelligkeit Anzeige Aus Trigger
          }
          else if ((obj1.state.val === true) && (gidAstroOffsetWert = 0) && (gidAbwesend_ioBroker === false) && (gidRedBullLicht === true) && (gidAstroAuto === true) && (gidLichthelligkeit === true)){
              setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); //(Gruppe) Deko Licht An/Aus.PRESS_LONG
              setState("javascript.0.Manuell.Systemvariable.Allgemein.(Gruppe)_Deko_Licht_An/Aus", false); //(Gruppe) Deko Licht An/Aus
              setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE
              setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE
              setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
              setState("hm-rega.0.12875", false); //Cameras Rolieren
          }
          else if (obj1.state.val === true){
              setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE
              setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE
              setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
              setState("hm-rega.0.12875", false); //Cameras Rolieren
          }
          else if (on({id: 'hm-rega.0.13987', change: 'ne'}, function() {
              setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE
              setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE
              setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
              setState("hm-rega.0.12875", false); //Cameras Rolieren
              })){
          }
      

      });

      ! ````

      CCU2 Programm:
      1304_screenshot_162.jpg
      1304_screenshot_163.jpg
      1304_screenshot_164.jpg

      1 Reply Last reply
      0
      • Y Offline
        Y Offline
        ykuendig
        wrote on last edited by
        #9

        Vielleicht machst Du ein Beispiel, was genau machen möchtest.

        Gruss Yves

        1 Reply Last reply
        0
        • Z Offline
          Z Offline
          Zippolighter
          wrote on last edited by
          #10

          @ykuendig:

          Vielleicht machst Du ein Beispiel, was genau machen möchtest. `
          Ziel ist es das abgebildete CCU2 Programm als Script abzubilden.

          Denke habe es auch soweit hinbekommen, bis auf die letzte "Sonst wenn". Hier habe ich keine Ahnung ob das funktioniert und ein Abbild des CCU2 Programms an der Stelle ist.

          Danke

          Gruß Zippolighter

          1 Reply Last reply
          0
          • Y Offline
            Y Offline
            ykuendig
            wrote on last edited by
            #11

            Das hat sich überschnitten. Das Beispiel ist ja nun da :-)

            Aber das mit der letzten eingeschachtelten on-subscription wird kaum funktionieren.

            Hab Dein Script mal zerpflückt und neu zusammengebaut.

            Die Idee war, die on-subscriptions von den Funktionen zu trennen; So haben wir Anfänger mehr Übersicht.

            Das Script regisitriert mit den 0n einen Trigger, welcher die gewünschte Funktion zur Zeit auslöst.

            /* (Gruppe) Deko Licht Aus (Astro Aus Verzögert Offset)
            
             */
            
            var idAstro = "hm-rega.0.7961"; //Astro
            var irgendwas = "hm-rega.0.13987"
            
            on({id: idAstro,change: "ne"}, AstroDingens(obj1));
            on({id: irgendwas, change: "ne"}, AstroSowieso())
            
            function AstroDingens(obj1) {
            	var gidAnwesenheit = getState('hm-rega.0.950').val;
            	var gidAbwesendKurz = getState('hm-rega.0.2330').val;
            	var gidAbwesendLang = getState('hm-rega.0.65253').val;
            	var gidAbwesendFeiern = getState('hm-rega.0.4797').val;
            	var gidRedBullLicht = getState('hm-rpc.0.KEQ0025668.1.STATE').val;
            	var gidAstroOffsetWert = getState('hm-rega.0.13987').val;
            	var gidAstroAuto = getState('hm-rega.0.14811').val;
            	var gidLichthelligkeit = getState('hm-rega.0.19606').val;
            	var gidAbwesend_ioBroker = getState("javascript.0.Manuell.Systemvariable.Allgemein.Abwesenheit_ioBroker").val; //Abwesenheit_ioBroker
            
            	if (obj1.state.val === true) { // Wird immer ausführt sobald 'state.val' TRUE ist
            		setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE
            		setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE
            		setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
            		setState("hm-rega.0.12875", false); //Cameras Rolieren	
            	}	// Theoretisch könntest Du auch hier statt dem if Block direkt die Funktion AstroSowieso() aufrufen
            
            	if ((obj1.state.val === true) && (gidAstroOffsetWert > 0) && (gidAbwesend_ioBroker === false) && (gidRedBullLicht === true) && (gidAstroAuto === true) && (gidLichthelligkeit === true)) {
            		setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); //(Gruppe) Deko Licht An/Aus.PRESS_LONG
            		setState("javascript.0.Manuell.Systemvariable.Allgemein.(Gruppe)_Deko_Licht_An/Aus", false); //(Gruppe) Deko Licht An/Aus
            		setStateDelayed("hm-rega.0.56542", true, 2000); //Lichthelligkeit Anzeige Aus Trigger
            
            	} else if ((obj1.state.val === true) && (gidAstroOffsetWert = 0) && (gidAbwesend_ioBroker === false) && (gidRedBullLicht === true) && (gidAstroAuto === true) && (gidLichthelligkeit === true)) {
            		setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); //(Gruppe) Deko Licht An/Aus.PRESS_LONG
            		setState("javascript.0.Manuell.Systemvariable.Allgemein.(Gruppe)_Deko_Licht_An/Aus", false); //(Gruppe) Deko Licht An/Aus
            
            	} else {
            	// Sonst, wenn sonst nichts zutrifft
            	}
            }
            
            function AstroSowieso() {
            			setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE
            			setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE
            			setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE
            			setState("hm-rega.0.12875", false); //Cameras Rolieren
            

            Gruss Yves

            1 Reply Last reply
            0
            • Z Offline
              Z Offline
              Zippolighter
              wrote on last edited by
              #12

              Danke, das muss ich mir jetzt mal in Ruhe anschauen und dann sobald es geht testen.

              Perfekt. Daumen hoch

              1 Reply Last reply
              0
              • Y Offline
                Y Offline
                ykuendig
                wrote on last edited by
                #13

                Hab auch nur im Editor etwas dran rumkopiert. Das kann immer noch viele Fehler haben. Also lass den Daumen mal auf Halbmast! Aber danke für die Blumen :lol:

                Gruss Yves

                1 Reply Last reply
                0
                • Z Offline
                  Z Offline
                  Zippolighter
                  wrote on last edited by
                  #14

                  Brauche doch nochmal Hilfe. Kriege immer nen Referenz Error

                  > javascript.0 script.js.Allgemein.(Gruppe)_Deko_Licht_Aus_(Astro_Aus_Verzögert_Offset: TypeError: Cannot read property 'state' of undefined at AstroDingens (script.js.Allgemein.(Gruppe)_Deko_Licht_Aus_(Astro_Aus_Verzögert_Offset:28:12) at script.js.Allgemein.(Gruppe)_Deko_Licht_Aus_(Astro_Aus_Verzögert_Offset:13:33

                  Zeile 13 ist

                  on({id: idAstro, change: "ne"}, AstroDingens(obj1));
                  

                  ! ` > /* (Gruppe) Deko Licht Aus (Astro Aus Verzögert Offset)

                  */

                  /* (Gruppe) Deko Licht Aus (Astro Aus Verzögert Offset)

                  */

                  var idAstro = "hm-rega.0.7961"; //Astro

                  var irgendwas = "hm-rega.0.13987";

                  on({id: idAstro, change: "ne"}, AstroDingens(obj1));

                  on({id: irgendwas, change: "ne"}, AstroSowieso());

                  function AstroDingens(obj1) {

                  var gidAnwesenheit = getState('hm-rega.0.950').val;

                  var gidAbwesendKurz = getState('hm-rega.0.2330').val;

                  var gidAbwesendLang = getState('hm-rega.0.65253').val;

                  var gidAbwesendFeiern = getState('hm-rega.0.4797').val;

                  var gidRedBullLicht = getState('hm-rpc.0.KEQ0025668.1.STATE').val;

                  var gidAstroOffsetWert = getState('hm-rega.0.13987').val;

                  var gidAstroAuto = getState('hm-rega.0.14811').val;

                  var gidLichthelligkeit = getState('hm-rega.0.19606').val;

                  var gidAbwesend_ioBroker = getState("javascript.0.Manuell.Systemvariable.Allgemein.Abwesenheit_ioBroker").val; //Abwesenheit_ioBroker

                  if (obj1.state.val === true) { // Wird immer ausführt sobald 'state.val' TRUE ist

                  setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE

                  setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE

                  setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE

                  setState("hm-rega.0.12875", false); //Cameras Rolieren

                  } // Theoretisch könntest Du auch hier statt dem if Block direkt die Funktion AstroSowieso() aufrufen

                  if ((obj1.state.val === true) && (gidAstroOffsetWert > 0) && (gidAbwesend_ioBroker === false) && (gidRedBullLicht === true) && (gidAstroAuto === true) && (gidLichthelligkeit === true)) {

                  setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); //(Gruppe) Deko Licht An/Aus.PRESS_LONG

                  setState("javascript.0.Manuell.Systemvariable.Allgemein.(Gruppe)_Deko_Licht_An/Aus", false); //(Gruppe) Deko Licht An/Aus

                  setStateDelayed("hm-rega.0.56542", true, 2000); //Lichthelligkeit Anzeige Aus Trigger

                  } else if ((obj1.state.val === true) && (gidAstroOffsetWert = 0) && (gidAbwesend_ioBroker === false) && (gidRedBullLicht === true) && (gidAstroAuto === true) && (gidLichthelligkeit === true)) {

                  setState("hm-rpc.1.CUX4000002.2.PRESS_LONG", true); //(Gruppe) Deko Licht An/Aus.PRESS_LONG

                  setState("javascript.0.Manuell.Systemvariable.Allgemein.(Gruppe)_Deko_Licht_An/Aus", false); //(Gruppe) Deko Licht An/Aus

                  } else {

                  // Sonst, wenn sonst nichts zutrifft

                  }

                  }

                  function AstroSowieso() {

                  setState("hm-rpc.0.KEQ0926589.2.STATE", false); //Teichlicht.STATE

                  setState("hm-rpc.0.KEQ0926570.2.STATE", false); //Balkon (BlumenRGB-Stripe).STATE

                  setState("hm-rpc.0.MEQ1711639.1.STATE", false); //Balkon (Kugelnlampen):1.STATE

                  setState("hm-rega.0.12875", false); //Cameras Rolieren

                  } `

                  1 Reply Last reply
                  0
                  • Y Offline
                    Y Offline
                    ykuendig
                    wrote on last edited by
                    #15

                    Ev. brauchts AstroDingens und (obj) ein Leerzeichen

                    Dann würde ich die id überprüfen.

                    Gruss Yves

                    1 Reply Last reply
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #16

                      @Zippolighter:

                      on({id: idAstro, change: "ne"}, AstroDingens(obj1));
                      on({id: irgendwas, change: "ne"}, AstroSowieso());
                      
                      ```` `  
                      

                      –->

                      on({id: idAstro, change: "ne"}, AstroDingens);
                      on({id: irgendwas, change: "ne"}, AstroSowieso);
                      
                      

                      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 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

                      596

                      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