Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Frage zu Licht Aus Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Frage zu Licht Aus Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • blauholsten
      blauholsten Developer last edited by

      Hi,

      Das sollte reichen….

      on(irgend eine Veränderung, function() {mache irgend was();});
      
      1 Reply Last reply Reply Quote 0
      • M
        mctom last edited by

        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 Reply Quote 0
        • E
          ehome last edited by

          70/30 Fehler ….

          1 Reply Last reply Reply Quote 0
          • M
            mctom last edited by

            Hi,

            Du hast in deinem Script nur Licht-innen stehen.

            Probier es doch mal mit: functions=Licht-innen

            Gruß

            Michael

            1 Reply Last reply Reply Quote 0
            • E
              ehome last edited by

              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 Reply Quote 0
              • P
                pix last edited by

                @ehome:

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

                Pix

                1 Reply Last reply Reply Quote 0
                • E
                  ehome last edited by

                  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 Reply Quote 0
                  • D
                    Dburner last edited by

                    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 Reply Quote 0
                    • P
                      pix last edited by

                      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

                      1 Reply Last reply Reply Quote 0
                      • D
                        Dburner last edited by

                        Läuft, vielen Dank!

                        1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer last edited by

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

                          1 Reply Last reply Reply Quote 0
                          • D
                            Dburner last edited by

                            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 Reply Quote 0
                            • A
                              adlerauge1980 last edited by

                              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 Reply Quote 0
                              • cash
                                cash Most Active last edited by

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

                                1 Reply Last reply Reply Quote 0
                                • A
                                  adlerauge1980 last edited by

                                  hmm ok

                                  und in welchem bezug, also zu was steht 'licht.aussschalten.EG' muss ich das irgend wo definiert haben?

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  461
                                  Online

                                  31.9k
                                  Users

                                  80.1k
                                  Topics

                                  1.3m
                                  Posts

                                  8
                                  21
                                  5483
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo