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 Licht Aus Script

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Frage zu Licht Aus Script

Scheduled Pinned Locked Moved Skripten / Logik
21 Posts 8 Posters 6.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.
  • M Offline
    M Offline
    mctom
    wrote on last edited by
    #1

    Hallo zusammen,

    erst einmal noch ein frohes neues Jahr.

    Ich habe folgendes Script erstellt um alle Lichter in einem bestimmten Gewerk abzuschalten:

    createState('Licht.ausschalten.EG',false);
    
    on({
        id: "javascript.0.Licht.ausschalten.EG"/*Licht.auschalten.EG*/,
        val: true
    }, function (obj) {
     $('channel[role=switch](functions=Licht-EG)[state.id=*.STATE]').setState(false);
     $('channel[role=switch](rooms=Wohnen)[state.id=*.LEVEL]').setState(0.0);   
      setTimeout(function () {
                         setState("javascript.0.Licht.ausschalten.EG"/*Licht.auschalten.EG*/, false, true);
                     }, 2000);   
    });
    
    

    Leider funktioniert das ganze nicht bei den Dimmern (Level). Kann mir jemand einen Tipp geben was ich hier falsch mache ?

    Gruß

    Michael

    1 Reply Last reply
    0
    • P Offline
      P Offline
      pix
      wrote on last edited by
      #2

      Hallo mctom,

      damit kannst du alle Dimmer und Switches im Gewerk Licht ausschalten:

      function licht_aus () {
          var idx = 0;
          var interval = 300;
          // Alle eingeschalteten Schalter im Gewerk Licht
          $('channel[state.id=*.STATE](functions=Licht-EG)').each(function(id,i) {
             if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); 
          });
          log('Alle Schalter im Gewerk Licht ausgeschaltet');
          // Alle eingeschalteten Dimmer im Gewerk Licht
          $('channel[state.id=*.LEVEL](functions=Licht-EG)').each(function(id,i) {
             if (getState(id).val > 0) setStateDelayed(id, 0, (idx++) * interval);
          });
          log('Alle Dimmer im Gewerk Licht auf 0% gesetzt');
      }
      
      

      Also noch dazu:

      on({
          id: "javascript.0.Licht.ausschalten.EG"/*Licht.auschalten.EG*/,
          val: true
      }, licht_aus());
      
      

      Gruß

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mctom
        wrote on last edited by
        #3

        Hallo Pix,

        erst einmal vielen Dank für deine Hilfe.

        Im groben habe ich das Script soweit verstanden.

        Was mir noch nicht ganz klar ist..

        $('channel[state.id=*.STATE](functions=Licht-EG)').each(function(id,i)
        {
        if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); 
        });
        
        

        Worfür ist hier der Teil````
        if (getState(id).val)

        Könnte nicht direkt````
        setStateDelayed(id, false, (idx++) * interval
        ````geschrieben werden ?
        
        Gruß
        
        Michael
        1 Reply Last reply
        0
        • P Offline
          P Offline
          pix
          wrote on last edited by
          #4

          @mctom:

          Worfür ist hier der Teil````
          if (getState(id).val)

          Könnte nicht direkt````
          setStateDelayed(id, false, (idx++) * interval
          ````geschrieben werden ? `  Der Ausschaltbefehl wird nur gesendet, wenn der Aktor vorher eingeschaltet war. Das spart "Funk" :) und beschleunigt den Vorgang bei vielen Lampen.
          

          Kann man aber auch weglassen.

          Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mctom
            wrote on last edited by
            #5

            So jetzt versteh ich die Welt nicht mehr…

            createState('Licht.ausschalten.EG',false);
            
            function licht_aus () {
                var idx = 0;
                var interval = 300;
            // Alle eingeschalteten Schalter im Gewerk Licht
              $('channel[state.id=*.STATE](functions=Licht-EG)').each(function(id,i) {
                   if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); 
                });
                log('Alle Schalter im Gewerk Licht ausgeschaltet');
                // Alle eingeschalteten Dimmer im Gewerk Licht
                $('channel[state.id=*.LEVEL](functions=Licht-EG)').each(function(id,i) {
                   if (getState(id).val > 0) setStateDelayed(id, 0, (idx++) * interval);
                });
                log('Alle Dimmer im Gewerk Licht auf 0% gesetzt');
            }
            
            on({
                id: "javascript.0.Licht.ausschalten.EG"/*Licht.auschalten.EG*/,
                val: true
            }, licht_aus());
            
            

            So habe ich das Script jetzt eingefügt.

            Wenn ich das Script speichere werden sofort alle Lichter ausgeschaltet und wenn javascript.0.Licht.ausschalten.EG auf true setzte schlägt das Script nicht an.

            Eine Idee was ich hier falsch mache?

            Gruß

            Michael

            1 Reply Last reply
            0
            • P Offline
              P Offline
              pix
              wrote on last edited by
              #6

              Hallo Michael,
              @mctom:

              So jetzt versteh ich die Welt nicht mehr…

              ...

              Wenn ich das Script speichere werden sofort alle Lichter ausgeschaltet und wenn javascript.0.Licht.ausschalten.EG auf true setzte schlägt das Script nicht an.

              Eine Idee was ich hier falsch mache? ` ist wohl mein Fehler.

              Probier mal die Langversion vom Auslöser (function bleibt gleich)

              on( {
                  id: "javascript.0.Licht.ausschalten.EG"/*Licht.auschalten.EG*/, // ist die Instanz javascript.0 richtig?
                  change: 'ne' // bei Änderung
              }, function (obj) {
                  if (obj.newState.val === true) { // auf neuen Wert true
                      licht_aus();
                  }
              });
              ````Kann sein, dass die super kurze Schreibweise doch nicht so gut funktioniert :?
              
              Gruß
              
              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Reply Last reply
              0
              • blauholstenB Offline
                blauholstenB Offline
                blauholsten
                Developer
                wrote on last edited by
                #7

                Hi,

                Das sollte reichen….

                on(irgend eine Veränderung, function() {mache irgend was();});
                

                Entwickler vom: - Viessman Adapter
                - Alarm Adapter

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mctom
                  wrote on last edited by
                  #8

                  Hallo zusammen,

                  so jetzt läuft es:

                  // -----------------------------------------------
                  // Variable
                  // -----------------------------------------------
                  
                  createState('Licht.ausschalten.EG',false);
                  var idTrigger = "javascript.0.Licht.ausschalten.EG"/*Licht.ausschalten.EG*/;
                  
                  // -----------------------------------------------
                  // Trigger
                  // -----------------------------------------------
                  on(
                      {
                      id: idTrigger,
                      val: true
                      }, 
                  
                  // -----------------------------------------------
                  // Aktion
                  // -----------------------------------------------    
                      function (obj) 
                      {
                          var idx = 0;
                          var interval = 300;
                  
                          $('channel[state.id=*.STATE](functions=Licht-EG)').each(function(id,i) {
                              if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); 
                          });
                  
                          $('channel[state.id=*.LEVEL](functions=Licht-EG)').each(function(id,i) {
                              if (getState(id).val > 0) setStateDelayed(id, 0, (idx++) * interval);
                          });
                  
                          setTimeout(function () {
                              setState(idTrigger, false, true);
                          }, 2000);
                  
                          log('Alle Schalter und Dimmer im Erdgeschoss abgeschaltet');
                      }
                  );
                  
                  

                  Danke an alle für die Hilfe.

                  Gruß

                  Michael

                  1 Reply Last reply
                  0
                  • E Offline
                    E Offline
                    ehome
                    wrote on last edited by
                    #9

                    70/30 Fehler ….

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mctom
                      wrote on last edited by
                      #10

                      Hi,

                      Du hast in deinem Script nur Licht-innen stehen.

                      Probier es doch mal mit: functions=Licht-innen

                      Gruß

                      Michael

                      1 Reply Last reply
                      0
                      • E Offline
                        E Offline
                        ehome
                        wrote on last edited by
                        #11

                        Hallo Michael,

                        manchmal sieht man den Wald vor lauter Bäumen nicht.

                        Es lag an der CCU, habe mittlerweile so viel Zeugs, dass sie es kaum noch schafft. Hatte die neuen Gewerke mit HQ WebUI angelegt und zugeordnet. Nach einem reboot lief dann alles auch mit "Licht-innen"

                        Gruß

                        Olli

                        1 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          pix
                          wrote on last edited by
                          #12

                          @ehome:

                          70/30 Fehler …. `
                          Was war denn hier die ursprüngliche Antwort?

                          Pix

                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                          1 Reply Last reply
                          0
                          • E Offline
                            E Offline
                            ehome
                            wrote on last edited by
                            #13

                            nein.

                            es sollte nur heissen, dass 70% der Fehler 30 cm vor dem Bildschirm zu finden sind …..

                            Da meine Frage aufgrund eines Übertragungsfehlers unsinnig war habe ich sie gelöscht um nicht Verwirrung zu stiften :(

                            1 Reply Last reply
                            0
                            • D Offline
                              D Offline
                              Dburner
                              wrote on last edited by
                              #14

                              Moin zusammen,

                              muss dieses Thema nochmal aufwärmen: ich habe versucht, dass Skript von mctom per copy-paste auch bei mir zum Laufen zu bekommen. Dachte wenn ich lediglich "Licht-EG" gegen "Licht" tausche (in dem Gewerk stecken bei mir alle Lichter) müsste es doch gehen, aber leider passiert nichts. Habe das Skript einfach als einzelnes Skript im Adapter angelegt und manuell gestartet als Test. Glaube irgendwas habe ich da grundsätzlich noch nicht verstanden, für jede Hilfe bin ich dankbar.

                              Ziel ist es übrigens, dass ganze am Ende in einem Blockly Skript zum Haus verlassen zu nutzen…falls es da auch eine Möglichkeit gibt, dass direkt in Blockly zu realisieren, wäre das fast noch besser.

                              Gruß

                              1 Reply Last reply
                              0
                              • P Offline
                                P Offline
                                pix
                                wrote on last edited by
                                #15

                                Hallo Dburner,

                                du hast ja die Gewerk-Bezeichnung schon korrekt geändert. Jetzt ist wichtig, dass die Javascript-Adapter-Instanz aktiviert ist und das Skript im Skripteditor unter Javascript (nicht coffee) abgespeichert ist. Das Skript muss auch aktiviert sein (statt rotem Dreieck, grüner Pause Knopf).

                                Falls du eine andere Instanz verwendest, kannst du diese Zeile

                                var idTrigger = "javascript.0.Licht.ausschalten.EG"/*Licht.ausschalten.EG*/;
                                ````durch diese ersetzen````
                                var idTrigger = "javascript." + instance + ".Licht.ausschalten.EG"/*Licht.ausschalten.EG*/;
                                

                                Um das Licht nun auszuschalten, muss dieses Objekt hinter dem Namen idTrigger per VIS oder Admin oder sonst wie dann auch auf true gesetzt werden. Beim Skriptstart passiert nix.

                                Gruß

                                Pix

                                ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                1 Reply Last reply
                                0
                                • D Offline
                                  D Offline
                                  Dburner
                                  wrote on last edited by
                                  #16

                                  Läuft, vielen Dank!

                                  1 Reply Last reply
                                  0
                                  • AlCalzoneA Offline
                                    AlCalzoneA Offline
                                    AlCalzone
                                    Developer
                                    wrote on last edited by
                                    #17

                                    @mctom:

                                    So jetzt versteh ich die Welt nicht mehr…

                                    
                                    [...]
                                    
                                    on({
                                        id: "javascript.0.Licht.ausschalten.EG"/*Licht.auschalten.EG*/,
                                        val: true
                                    }, licht_aus());
                                    
                                    

                                    So habe ich das Script jetzt eingefügt.

                                    Wenn ich das Script speichere werden sofort alle Lichter ausgeschaltet […] `

                                    Typischer JavaScript-Fallstrick. Die on-Funktion erwartet eine Funktion, die sie aufrufen soll, wenn der Trigger ausgelöst wird. Also so

                                    on({Auslöser}, function() {...});
                                    
                                    

                                    oder

                                    on({Auslöser}, callback); 
                                    
                                    

                                    Aber NICHT so:

                                    on({Auslöser}, callback()); 
                                    
                                    

                                    Der Callback ist ein Verweis auf eine Funktion, in JavaScript ist das der Name der Funktion ohne Klammern dahinter.

                                    Dein Code entspricht letztem Fall. Hier wird callback() sofort aufgerufen (deswegen gehen deine Lichter aus) und erwartet, dass der Rückgabewert dieser Funktion selbst eine Funktion ist. Diese zurückgegebene (oder in deinem Fall nicht zurückgegebene) Funktion würde dann jedesmal aufgerufen, wenn der Trigger ausgelöst wird.

                                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                    1 Reply Last reply
                                    0
                                    • D Offline
                                      D Offline
                                      Dburner
                                      wrote on last edited by
                                      #18

                                      Hallo,

                                      wollte das "Licht aus" Skript in ein "Licht an" Skript umschreiben. Meine Dimmer werden bei auslösen des Triggers auch auf 100% geschaltet, allerdings werden die anderen Lichter nicht auf "true" gesetzt.

                                      Kann mir vielleicht jemand helfen?

                                      Besten Dank!

                                      Danke, hat sich gerade erledigt. Bei der Abfrage muss natürlich noch ===false hin:

                                      if (getState(id).val === false) setStateDelayed(id, true, (idx++) * interval);

                                      // -----------------------------------------------
                                      // Variable
                                      // -----------------------------------------------
                                      
                                      createState('Licht anschalten',false);
                                      var idTrigger = "javascript.0.Licht anschalten"/*Licht anschalten*/;
                                      
                                      // -----------------------------------------------
                                      // Trigger
                                      // -----------------------------------------------
                                      on(
                                          {
                                          id: idTrigger,
                                          val: true
                                          }, 
                                      
                                      // -----------------------------------------------
                                      // Aktion
                                      // -----------------------------------------------    
                                          function (obj) 
                                          {
                                              var idx = 0;
                                              var interval = 300;
                                      
                                              $('channel[state.id=*.STATE](functions=Licht)').each(function(id,i) {
                                                  if (getState(id).val) setStateDelayed(id, true, (idx++) * interval); 
                                              });
                                      
                                              $('channel[state.id=*.LEVEL](functions=Licht)').each(function(id,i) {
                                                  if (getState(id).val < 100) setStateDelayed(id, 100, (idx++) * interval);
                                              });
                                      
                                              setTimeout(function () {
                                                  setState(idTrigger, false, true);
                                              }, 2000);
                                      
                                              log('Alle Schalter und Dimmer angeschaltet');
                                          }
                                      );
                                      
                                      1 Reply Last reply
                                      0
                                      • A Offline
                                        A Offline
                                        adlerauge1980
                                        wrote on last edited by
                                        #19

                                        Hallo Zusammen

                                        Habe das Script so übernommen und "nur den teil "functions=Licht-EG" in rooms=eg geändert.

                                        Dann in Vis ein HQWidgets - On / Off eingefügt, unter objekt id: script.js.licht_eg_aus eingefügt. und bei Extrasteuerung Wert für ID bei true: true

                                        Was ich noch nicht verstehe (vermutlich klemmt es genau da), für was benötigt es diese Variable??:

                                        // -----------------------------------------------
                                        // Variable
                                        // -----------------------------------------------
                                        
                                        createState('Licht.ausschalten.EG',false);
                                        var idTrigger = "javascript.0.Licht.ausschalten.EG"/*Licht.ausschalten.EG*/;
                                        script.js.licht_eg_aus
                                        
                                        1 Reply Last reply
                                        0
                                        • cashC Offline
                                          cashC Offline
                                          cash
                                          Most Active
                                          wrote on last edited by
                                          #20

                                          Zum schalten. Wenn Du die Variable auf true änderst wird das Licht ausgeschaltet.

                                          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

                                          502

                                          Online

                                          32.6k

                                          Users

                                          82.2k

                                          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