Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] TV + Receiver + NUC (Libreelec) an / aus

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] TV + Receiver + NUC (Libreelec) an / aus

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

      Hallo,

      ich habe folgendes Szenario vor und benötige hilfe, wie ich das realisiere. Ich bin leider wenig bis gar nicht affin in Javascript und mit Blockly tue ich mich auch noch schwer.

      Ich hoffe, dass ich es dennoch mit eurer Hilfe schaffen werde.

      Hardware:

      Samsung TV (über Samsung Adapter ansprechbar)

      Yamaha Receiver (über Yamaha Adapter ansprechbar)

      Intel Nuc 5i5ryh

      Kodi (Libreelec - Linux) (über Kodi Adapter ansprechbar)

      Amazon Echo Dot Gen2 (über Cloud Adapter verbunden)

      Folgende 2 Szenarien möchte ich abdecken:

      1.1 "Alexa… TV an"

      1.2 Yamaha Receiver geht an über das Objekt in Yamaha-Adapter | Power - media.power "true" (TV geht schon automatisch mit an, also kein zusätzliches Doing)

      1.3 Wake on Lan Befehl um den Intel NUC aus dem Standby zu holen.

      1.4 Yamaha Receiver soll nach ca. 15 Sekunden noch einmal das Profil "Kodi" auswählen über das Objekt | InputEnum - State "Kodi" (Grund: Beim Starten des Intel NUCs - Libreelec geht der Receiver nach kurzer Zeit immer auf AV1, wo ich KODI immer erneut auswählen muss, damit er auf dem Profil bleibt.)

      2.1 "Alexa... TV aus"

      2.2 Yamaha Receiver geht an über das Objekt in Yamaha-Adapter | Power - media.power "false"

      2.3 Intel NUC geht über das Objekt in Kodi-Adapter | Suspend - state "Button" in den Standby

      2.4 Samsung TV geht über Objekt in Samsung-Adapter | Power.CheckOn - state "true" ---danach---> Power.Off - state "true"

      Folgendes habe ich zum Wake On LAN gefunden:

      Windows:

      createState("javascript.0.PCanschalten", 0); // Generiert beim Starten den Datenpunkt

      var wol = require('wake_on_lan'); // Lädt von ioBroker das nötige Paket herunter

      var myPC = "XXX"; // XXX durch eure MAC Adresse ersetzten

      on({id: "javascript.0.PCanschalten", change: 'any'}, function (obj) {

      wol.wake(myPC);

      log("Script WOL - PC aufgeweckt", "info");

      }

      );

      Linux:

      createState(„javascript.0.PCanschalten“, 0); // Generiert beim Starten den Datenpunkt

      var wol = require(‚wake_on_lan‘); // Lädt von ioBroker das nötige Paket herunter

      var myPC = „MAC Adresse“; // durch eure MAC Adresse ersetzten

      on({id: „javascript.0.PCanschalten“, change: ‚any‘}, function (obj) {

      var current_state = getState(„javascript.0.PCanschalten“).val;

      if (current_state == „1“) { //entspricht true bzw „an“ über Alexa

      wol.wake(myPC);

      log(„Script ServerSteuerung – Server aufgeweckt, „+current_state, „info“);

      }else {

      exec(’ssh Serverip -l root -t „shutdown -h now“‚);

      log(„Script ServerSteuerung – Server shutdown „+current_state, „info“);

      }

      }

      );

      Libreelec ist ja ein Linux System, demach habe ich mich mit dem Wake On Lan Linux Script versucht, was aber leider funktioniert. Der Intel NUC geht nicht aus dem Standby an.

      Über die Yatse App (Fernbedienung Kodi) funktioniert das Wake on LAN auf UDP 5600, also ist der NUC ansich für Wake on LAN konfiguriert.

      Könnt ihr mir bei meinem Vorhaben behilflich sein?

      Vielen Dank und VG

      Modjo

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

        Hallo zusammen,

        ich habe hier ein wenig getüftelt und habe wenigstens das Wake On Lan Thema gelöst. Hierfür habe ich "etherwake" auf dem Raspberry Pi (IOBroker) installiert, womit ich den Intel NUC (Libreelec) einschalten kann.

        Ich habe es auch hinbekommen, dass ich daraus 2 Szenen baue, welche für sich funktionieren. Genau hier liegt das Problem für Alexa. Alexa kann ja nur an und aus, womit ich nicht wie gewünscht beide Scripte hinterlegen kann.

        Hier müsste ich derzeit folgendes machen:

        Szene 1: TV an

        Szene 2: TV aus

        "Alexa, schalte TV an an" (Szene 1 wird gestartet)

        "Alexa, schalte TV aus an" (Szene 2 wird gestartet)

        Das ist sehr unpraktikabel, weshalb ich es wohl in ein Script bauen muss.

        Wenn ich logisch nicht ganz falsch liege müsste es doch dann folgendermaßen gebaut werden, oder?:

        ****__Falls yamaha.0.power = false //Prüfe ob Receiver aus ist

        Setze yamaha.0.scene = 1 //Starte Scene 1, womit Receiver angeht und TV über CEC mit angeht

        exec('sudo etherwake -i eth0 MACADRESSE'); // Setze Magic Packet für Wake on LAN

        Setze nach 15 Sekunden yahama.0.inputEnum = KODI // Warte 15 Sekunden und setze den Input auf "KODI", weil er, wie oben beschrieben durch starten des NUCs auf AV1 wechselt

        Falls yamaha.0.power = true //Prüfe ob Receiver an ist

        Setze kodi.0.system.Suspend = true //Setze Kodi in den Sleep Modus

        Setze samsung.0.Power.checkOn = true // Prüfe ob Samsung TVeingeschaltet ist

        Setze samsung.0.Power.off = true // Schalte Samsung TV aus__****

        Lieg ich hier richtig oder muss ich den an und aus Status von Alexa auch noch irgendwie mit 1 oder 0 setzen?

        Wenn ja, kann man mir damit helfen?

        Vielen Dank & Grüße

        Modjo

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

          Hallo nochmal,

          ich habe mich jetzt in JS versucht. Ich vermute, dass das Scipt irgendwie so aussehen muss, aber es funktioniert noch nicht:

          createState("scriptEnabled.TV.ein_aus", 0); // Datenpunkt erzeugen
          var yamaha_scene = "yamaha.0.scene" // Yamaha Receiver AN + Szene setzen
          var yamaha_power = "yamaha.0.power" // Yamaha Receiver An/Aus
          var yamaha_input = "yamaha.0.inputEnum" //Yamaha Receiver Profil
          var kodi_suspend = "kodi.0.system.Suspend" // Kodi (NUC) Standby
          var samsung_checkon = "samsung.0.Power.checkOn" // Samsung TV AN/Aus prüfen
          var samsung_poweroff = "samsung.0.Power.off" // Samsung TV AUS
          on({id: "scriptEnabled.TV.ein_aus",change: 'any'}, function(obj) {
          		var current_state = getState("scriptEnabled.TV.ein_aus").val;
          		if (current_state == "1") {
          			yamaha_scene = "1";
          			exec('sudo etherwake -i eth0 [b]MACADRESSE[/b]');
          			setTimeout(function() {
          				yamaha_input = "Kodi";
          			}, 15000);
          			log("TV: AN", "info");
          		} else {
          			kodi_suspend = true;
          			yahama_power = false;
          			samsung_checkon = true;
          			samsung_poweroff = true;
          			log("TV: AUS", "info");
          		}
          });
          
          

          Einer ne Idee, wo die Fehler liegen?

          Danke & Gruß

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

            Hier nochmal eine überarbeitete Form, welche aber leider auch nicht so klappen will:

            // Datenpunkt erstellen
            createState("javascript.0.TV_an_aus", 0);
            on({
                id: "javascript.0.TV_an_aus",
                change: 'any'
            }, function(obj) {
                var current_state = getState("javascript.0.TV_an_aus").val;
                // "An"-Status für Alexa generieren
                if (current_state == "1") {
                    // Yamaha-Receiver über Szene 1 einschalten (startet gleichzeitig den TV via HDMI-CEC)
                    setState('yamaha.0.scene', 1);
                    // Starte den NUC mit WOL-Befehl mit 5 Sekunden Versatz
                    setTimeout(function() {
                        exec('sudo etherwake -i eth0 MACADRESSE');
                    }, 5000);
                    // Schalte am Receiver auf Profil "KODI" mit 30 Sekunden Versatz
                    setTimeout(function() {
                        setState('yamaha.0.inputEnum', "KODI");
                    }, 30000);
                    log("Geräte sind gestartet mit Status, " + current_state, "info");
                } else {
                    //Kodi in den Sleep Modus versetzen
                    setState('kodi.0.system.Suspend', true);
                    //Yamaha-Receiver ausschalten
                    setState('yamaha.0.power', false);
                    // TV prüfen ob an/aus
                    setState('samsung.0.Power.checkOn', true);
                    //TV ausschalten
                    setState('samsung.0.Power.off', true);
                    log("Geräte sind heruntergefahren mit Status, " + current_state, "info");
                }
            });
            

            Vielleicht hat ja noch Jemand ne Idee?

            Gruß

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

              Habe es nun wie folgt gelöst:

              on({
                  id: "javascript.0.scriptEnabled.TV.ein_aus",
                  change: 'any'
              }, function(obj) {
                  var current_state = getState("javascript.0.scriptEnabled.TV.ein_aus").val;
                  // "An"-Status für Alexa generieren
                  if (current_state === true) {
                      // Yamaha-Receiver über Szene 1 einschalten (startet gleichzeitig den TV via HDMI-CEC)
                      setState('yamaha.0.scene', 1);
                      // Starte den NUC mit WOL-Befehl mit 5 Sekunden Versatz
                      setTimeout(function() {
                          exec('sudo etherwake -i eth0 MACADRESSE');
                      }, 7000);
                      // Schalte am Receiver auf Profil "KODI" mit 30 Sekunden Versatz
                      setTimeout(function() {
                          setState('yamaha.0.inputEnum', "KODI");
                      }, 30000);
                      log("Geräte sind gestartet mit Status, " + current_state, "info");
                  } else {
                      //Kodi in den Sleep Modus versetzen
                      setState('kodi.0.system.Suspend', true);
                      //Yamaha-Receiver ausschalten
                      setState('yamaha.0.power', false);
                      // TV prüfen ob an/aus
                      setState('samsung.0.Power.checkOn', true);
                      //TV ausschalten
                      setState('samsung.0.Power.off', true);
                      log("Geräte sind heruntergefahren mit Status, " + current_state, "info");
                  }
              });
              

              Fehler war, dass ich gar keinen Datenpunkt generieren musste, sondern den des Scriptes selbst der auf "true" und "false" bei an / aus wechselt.

              VG

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

              Support us

              ioBroker
              Community Adapters
              Donate

              785
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              1
              5
              1062
              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