Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Bei Filmstart Tradfri runterdimmer

    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

    Bei Filmstart Tradfri runterdimmer

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

      Hallo liebe Gemeinde,

      ich habe mir gerade ioBroker installiert und bin absolut begeistert wie einfach die Einrichtung ist.

      Nun habe ich direkt auch eine Frage

      Ist es möglich bei der Wiedergabe eines Filmes über Kodi, ein Tradfri Leuchtmittel runter zu dimmen?

      Vielen dank schon mal für eure Antworten.

      Gruß Marcel

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

        @Marcel85:

        Hallo liebe Gemeinde,

        ich habe mir gerade ioBroker installiert und bin absolut begeistert wie einfach die Einrichtung ist.

        Nun habe ich direkt auch eine Frage

        Ist es möglich bei der Wiedergabe eines Filmes über Kodi, ein Tradfri Leuchtmittel runter zu dimmen?

        Vielen dank schon mal für eure Antworten.

        Gruß Marcel ` Das ist natürlich möglich. Hast du einen Datenpunkt bei kodi ein Film läuft? Das kannst du über den scenen Adapter machen oder ein kleines einfaches Script im Javascript Adapter endweder mit Blocky oder js Script. Aber das einfachste ist der scenen Adapter. Wenn du etwas umfangreicher schalten willst mit mehr Logiken empfehle ich dir den Javascript Adapter. Da sind die Möglichkeiten nahezu grenzenlos

        Gesendet von meinem Handy

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

          Ich habe leider überhaupt keine Programmierkenntnisse, deswegen wird es auf die Szenen hinauslaufen.

          Ich habe auch schon mal angefangen mir was zu basteln, ich weiß allerdings nicht ob das so funktionieren würde.

          Die states für Play, Pause und Stop lassen sich in Kodi auslesen.

          Jetzt soll die lightbulb bei Play auf 0% gedimmt werden und bei Pause oder Stop wieder auf 100%.

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

            @Marcel85:

            Ich habe auch schon mal angefangen mir was zu basteln, ich weiß allerdings nicht ob das so funktionieren würde. `
            Na dann poste mal was du hast, sodass wir drüberschauen können 😉

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

              Ich habe mir eine Szene FilmStart angelegt und dort 2 Zustände hinzugefügt.

              • kodi.0.state (Play, stop or pause)

              • tradfri.0.***.lightbulb.brightness (254-0)

              Wie funktioniert das ganze nun das wenn beim state "Play" erkannt wird, dass brightness auf 0 gestellt wird und bei "stop oder pause" auf 254.

              Bei "Setzen bei False" habe ich den Haken gesetzt.

              Ich bin da noch nicht ganz durchgestiegen.
              3473_iobroker.png

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

                Ne so wird das nix. Die Szene schaltet die hinterlegten Zustände, wenn der State der Szene (scene.0.szenenname) auf true/false gesetzt wird. Dein Auslöser ist komplizierter, d.h. du brauchst ein Skript. Ist aber nicht schwer, keine Sorge, bitte nur mal die Schreibweisen (groß/klein, etc…) überprüfen!

                on("kodi.0.state", function (obj) {
                	switch (obj.state.val) {
                		case "play":
                			setState("tradfri.0.***.lightbulb.brightness", 0);
                			break;
                
                		case "pause":
                		case "stop":
                			setState("tradfri.0.***.lightbulb.brightness", 254);
                			break;		
                	}
                });
                
                
                1 Reply Last reply Reply Quote 0
                • M
                  Marcel85 last edited by

                  Ich habe das Skript angelegt und nach meinem ermessen abgeändert.

                  Leider funktioniert es nicht.

                  on("kodi.0.state", function (obj) {
                     switch (obj.state.val) {
                        case "Play":
                           setState("tradfri.0.L-65537.lightbulb.brightness", 0);
                           break;
                  
                        case "pause":
                        case "stop":
                           setState("tradfri.0.L-65537.lightbulb.brightness", 254);
                           break;      
                     }
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer last edited by

                    @Marcel85:

                    Leider funktioniert es nicht. `
                    Meine Lieblings-Fehlermeldung 😐

                    Gibts nen Fehler im Log? Hast du das Skript auch nicht unter global abgelegt?

                    Ansonsten füge mal ein paar Logs ein, um zu sehen ob es überhaupt richtig ausgeführt wird:

                    on("kodi.0.state", function (obj) {
                    	log("State geändert: " + obj.state.val);
                    	switch (obj.state.val) {
                    		case "Play":
                    			log("Video läuft, schalte Licht aus...");
                    			setState("tradfri.0.L-65537.lightbulb.brightness", 0);
                    			break;
                    
                    		case "pause":
                    		case "stop":
                    			log("Video läuft nicht, schalte Licht an...");
                    			setState("tradfri.0.L-65537.lightbulb.brightness", 254);
                    			break;
                    	}
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • M
                      Marcel85 last edited by

                      Das Skript ist nicht unter "Global" abgelegt. Es hat auch keinen eigenen Ordner.

                      Das einzige was im Log steht ist folgendes:

                      19:29:59.394	[info]	javascript.0 Start javascript script.js.Filmstart_dimmen
                      19:29:59.395	[info]	javascript.0 script.js.Filmstart_dimmen: subscribe: {"pattern":{"id":"kodi.0.state","change":"ne"},"name":"script.js.Filmstart_dimmen"}
                      19:29:59.395	[info]	javascript.0 script.js.Filmstart_dimmen: subscribe: {"pattern":{"id":"kodi.0.state","change":"ne"},"name":"script.js.Filmstart_dimmen"}
                      19:29:59.395	[info]	javascript.0 script.js.Filmstart_dimmen: registered 2 subscriptions and 0 schedules
                      

                      Tut mir leid, ich habe wirklich keine Ahnung vom Programmieren.

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

                        @Marcel85:

                        19:29:59.395 [info] javascript.0 script.js.Filmstart_dimmen: subscribe: {"pattern":{"id":"kodi.0.state","change":"ne"},"name":"script.js.Filmstart_dimmen"}

                        19:29:59.395 [info] javascript.0 script.js.Filmstart_dimmen: subscribe: {"pattern":{"id":"kodi.0.state","change":"ne"},"name":"script.js.Filmstart_dimmen"} `
                        Hast du jetzt beide Funktionen drin? Die letzte sollte reichen.

                        Dass da sonst nix im Log passiert, lässt mich vermuten dass der Trigger nicht ausgelöst wird. Magste mal nen Screenshot von den Objekten unter "kodi.0" machen? Am besten mal, wenn ein Video läuft und wenn nicht.

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

                          Ich habe jetzt mal ein wenig rumprobiert und jetzt funktioniert es.

                          Allerdings kann ich die Lampen nur ein- und ausschalten.

                          So funktioniert es erstmal:

                          on("kodi.0.state", function (obj) {
                             log("State geändert: " + obj.state.val);
                             switch (obj.state.val) {
                                case "play":
                                   log("Video läuft, schalte Licht aus...");
                                   setState("tradfri.0.L-65537.lightbulb.state"/*on/off*/, false);
                                   break;
                          
                                case "pause":
                                case "stop":
                                   log("Video läuft nicht, schalte Licht an...");
                                   setState("tradfri.0.L-65537.lightbulb.state"/*on/off*/, true);
                                   break;
                             }
                          });
                          

                          Die Lampen faden ja zum Glück etwas. Schöner wäre es natürlich wenn man den Dimmvorgang schön langsam einstellen könnte.

                          Kann man auch noch eine Variable einbauen, wo erkannt wird ob die Lampe vorher eingeschaltet war oder nicht?

                          Gruß Marcel

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

                            @Marcel85:

                            Die Lampen faden ja zum Glück etwas. Schöner wäre es natürlich wenn man den Dimmvorgang schön langsam einstellen könnte. `
                            Werde ich demnächst mal einbauen.

                            @Marcel85:

                            Allerdings kann ich die Lampen nur ein- und ausschalten. `
                            Das ist komisch, brightness > 0 sollte eigentlich auch anschalten.

                            @Marcel85:

                            Kann man auch noch eine Variable einbauen, wo erkannt wird ob die Lampe vorher eingeschaltet war oder nicht? `
                            Bin zwar nicht ganz sicher, ob das das ist was du damit bezwecken willst, aber probiers mal so:

                            var idStatus = "tradfri.0.L-65537.lightbulb.state";
                            
                            // Auf Status der Lampe lauschen
                            var status = getState(idStatus);
                            on(idStatus, function (obj) { status = obj.state.val });
                            
                            on("kodi.0.state", function (obj) {
                                log("State geändert: " + obj.state.val);
                                switch (obj.state.val) {
                                    case "play":
                                        if (status) {
                                            log("Video läuft, schalte Licht aus...");
                                            setState(idStatus, false);
                                        } else {
                                            log("Video läuft, Licht ist bereits aus");
                                        }
                                        break;
                            
                                    case "pause":
                                    case "stop":
                                        if (!status) {
                                            log("Video läuft nicht, schalte Licht an...");
                                            setState(idStatus, true);
                                        } else {
                                            log("Video läuft nicht, Licht ist bereits an");
                                        }
                                        break;
                                }
                            });
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • M
                              Marcel85 last edited by

                              Das ganze soll bezwecken, dass wenn die Lampe bei Filmstart aus war, die Lampe nach Filmende dann nicht eingeschaltet wird.

                              Vielen Dank für deine Mühe und das du sogar auf meine Wünsche eingehst und diese mit einbauen willst!

                              Ich probiere das neue Skript morgen mal aus und werde dann berichten.

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

                                @Marcel85:

                                Das ganze soll bezwecken, dass wenn die Lampe bei Filmstart aus war, die Lampe nach Filmende dann nicht eingeschaltet wird. `
                                Aaah, dann muss das anders lauten.

                                var idStatus = "tradfri.0.L-65537.lightbulb.state";
                                
                                var statusBeiStart;
                                
                                on("kodi.0.state", function (obj) {
                                    log("State geändert: " + obj.state.val);
                                    switch (obj.state.val) {
                                        case "play":
                                            statusBeiStart = getState(idStatus).val;
                                            log("Video läuft, schalte Licht aus...");
                                            setState(idStatus, false);      
                                            break;
                                
                                        case "pause":
                                        case "stop":
                                            log("Video läuft nicht mehr, stelle Status wieder her...");
                                            setState(idStatus, statusBeiStart);
                                            break;
                                    }
                                });
                                
                                1 Reply Last reply Reply Quote 0
                                • M
                                  Marcel85 last edited by

                                  Ich bin leider erst gestern Abend zum testen gekommen.

                                  Aber es funktioniert fast so wie ich es mir vorstelle.

                                  Wenn man jetzt noch die Dimmgeschwindigkeit regeln könnte, wäre es absolut perfekt.

                                  Danke!!!

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

                                    @Marcel85:

                                    Wenn man jetzt noch die Dimmgeschwindigkeit regeln könnte, wäre es absolut perfekt. `
                                    Steht auf der TODO-Liste, kommt in Kürze:

                                    transitionTime: 5, // TODO: <- make this configurable
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • AlCalzone
                                      AlCalzone Developer last edited by

                                      Geht jetzt auch (teilweise): http://forum.iobroker.net/viewtopic.php?p=86551#p86551

                                      Nur scheint on/off den Wert zu ignorieren. Du könntest jedoch schummeln:

                                      an: transitionTime => Wunschdauer, Brightness => 254

                                      aus: transitionTime => Wunschdauer X, Brightness => 1. nach X sekunden: on/off => false

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

                                        Ich habe heute Mittag das Skript nochmal getestet.

                                        Die Lampe schaltet sich nach dem Film ein obwohl der Status vorher aus war.

                                        Wie genau muss das Skript denn mit der transitiontime aussehen?

                                        Ich weiß leider nicht wo ich das einbauen muss.

                                        Danke fürs helfen und dafür das du die transitiontime mit einprogrammiert hast.

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

                                          @Marcel85:

                                          Die Lampe schaltet sich nach dem Film ein obwohl der Status vorher aus war. `
                                          Habe die Logausgabe mal ergänzt, was zeigt der Log an bei folgendem Skript?

                                          ! ````
                                          var idStatus = "tradfri.0.L-65537.lightbulb.state";
                                          ! var statusBeiStart;
                                          ! on("kodi.0.state", function (obj) {
                                          log("State geändert: " + obj.state.val);
                                          switch (obj.state.val) {
                                          case "play":
                                          statusBeiStart = getState(idStatus).val;
                                          log("Video läuft, schalte Licht aus... Licht war " + (statusBeiStart ? "an" : "aus"));
                                          setState(idStatus, false);
                                          break;
                                          ! case "pause":
                                          case "stop":
                                          log("Video läuft nicht mehr, stelle Status <" + (statusBeiStart ? "an" : "aus") + "> wieder her...");
                                          setState(idStatus, statusBeiStart);
                                          break;
                                          }
                                          });

                                          
                                          Ein Versuch mit TransitionTime könnte wie folgt aussehen (ungetestet):
                                          
                                          >! ````
                                          var idStatus = "tradfri.0.L-65537.lightbulb.state";
                                          var idTime = "tradfri.0.L-65537.lightbulb.transitionDuration";
                                          var idBrightness = "tradfri.0.L-65537.lightbulb.brightness";
                                          >! var transitionTime = 2; // Zeit in Sekunden
                                          >! var statusBeiStart;
                                          >! function an() {
                                              setState(idTime, transitionTime); // Dimm-Dauer festlegen
                                              setState(idBrightness, 254);      // maximale Helligkeit ansteuern
                                          }
                                          function aus() {
                                              setState(idTime, transitionTime); // Dimm-Dauer festlegen
                                              setState(idBrightness, 1);      // minimale Helligkeit ansteuern
                                              setStateDelayed(idStatus, false, transitionTime*1000) // <transitiontime>sek später komplett abschalten
                                          }
                                          >! on("kodi.0.state", function (obj) {
                                              log("State geändert: " + obj.state.val);
                                              switch (obj.state.val) {
                                                  case "play":
                                                      statusBeiStart = getState(idStatus).val;
                                                      log("Video läuft, schalte Licht aus... Licht war " + (statusBeiStart ? "an" : "aus"));
                                                      if (statusBeiStart) aus();
                                                      break;
                                          >!         case "pause":
                                                  case "stop":
                                                      log("Video läuft nicht mehr, stelle Status <" + (statusBeiStart ? "an" : "aus") + "> wieder her...");
                                          >!             if (statusBeiStart) an();
                                                      else aus();
                                          >!             break;
                                              }
                                          });</transitiontime> 
                                          

                                          Edit: Fehlerkorrektur

                                          1 Reply Last reply Reply Quote 0
                                          • N
                                            nelzon last edited by

                                            Und..erfolgreich getestet??

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            522
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            25
                                            3900
                                            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