Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Android TV in Kombination mit KNX schalten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Android TV in Kombination mit KNX schalten

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 113 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F Offline
    F Offline
    Feivelzz
    schrieb am zuletzt editiert von
    #1

    Hallo,

    vorweg ich bin ziemlich neu unterwegs im IOBroker und JavaScript und habe folgendes Problem bzw. würde gerne das Verhalten verstehen.

    Ich habe eine Android TV Box die ich über den ADB Adapter steuern kann. Nun möchte ich wenn ich über meinen KNX Taster die Steckdose wo der Fernseher angeschlossen ist aktiviere, die Android TV Box aus dem Standby Modus holen.
    Wenn man fertig ist mit dem Fernsehen, möchte ich per Fernbedienung die Android TV Box wieder in den Standby Modus bringen und dann die Steckdose wieder abschalten.

    Ich hab dafür folgendes Script erstellt bzw. zusammenkopiert :)

    var Name, Initialisation, Description, Type, Role, SmartName, Text_Alexa, Alexa_Notification, Message, timeout;
    var flag_switch_tv = 1;
    
    
    function Create_DP(Name, Initialisation, Description, Type, Role, SmartName) {
        createState(Name, Initialisation, {
          name: Description,
          read: true, 
          write: true, 
          type: Type, 
          role: Role,
          smartName: SmartName
        });
     
    }
    
    function SendAdbKey(keycode)
    {
        exec('adb connect 192.168.14.110:5555');
        exec('adb shell input keyevent "' + keycode + '"');
    }
     
    function SendAdbPower()
    {
        SendAdbKey('KEYCODE_POWER');
    }
     
    function SendAdbHome()
    {
        SendAdbKey('KEYCODE_HOME');
    }
     
    function CheckAdbKNXPowerState()
    {
        // Funktion überprüft den Status der Android TV Box. Wenn diese in den Standby-Modus geht, wird die Steckdose vom TV ausgeschalten
        exec('adb connect 192.168.14.110:5555') 
        exec('adb shell dumpsys activity | grep -c "mWakefulness=Asleep"', function (error, stdout, stderr) {
            setState("0_userdata.0.Devices.AndroidTV.info.state", stdout);
            if (stdout == 1 && flag_switch_tv == 0)
            {
                console.log("Schalte Android TV in Standby");
                setState('openknx.0.Steckdosen.Erdgeschoss.Wohnzimmer_Steckdose_TV_Schalten' /* Wohnzimmer_Steckdose_TV_Schalten */, false);
                flag_switch_tv = 1;
                
            }
        });
        // Funktion überprüft den Status der Steckdose vom TV. Wenn diese eingeschalten wird, wird auch die Android TV Box gestartet
        on({ id: 'openknx.0.Rückmelde&Statusobjekte.Erdgeschoss.Wohnzimmer_Steckdose_TV_Status' /* Wohnzimmer_Steckdose_TV_Status */, change: 'any' }, (obj) => {
        if (obj.oldState.val == false && obj.state.val == true && flag_switch_tv == 1)
        {
            exec('adb connect 192.168.14.110:5555');
            exec('adb shell input keyevent "' + 'KEYCODE_POWER' + '"');
            console.log("Schalte Android TV ein!!!");
            flag_switch_tv = 0;
        }
        });
    }
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    Create_DP('0_userdata.0.Devices.AndroidTV.info.state', '', 'Power State', 'string', 'state','');
    Create_DP('0_userdata.0.Devices.AndroidTV.power.switch', false, 'Power Switch', 'boolean', 'switch','Anroid TV');
     
    schedule("*/5 * * * * *", function () {
        CheckAdbKNXPowerState();
    
    });
     
    on({id: '0_userdata.0.Devices.AndroidTV.power.switch'}, function (obj) {
        SendAdbPower();
    });
    

    Prinzipiell funktioniert es, jedoch hab ich ab und zu den Effekt wenn ich die Steckdose einschalte, dann wird sie sofort wieder ausgeschalten. Das ganze Spiel geht oft nur einmal so, ab und zu aber auch drei bis viermal. Danach läuft es wie gewünscht. Das Problem tritt auch nur beim Einschalten auf, sprich das Ausschalten funktioniert immer.

    Was ist hier das Problem bzw. was verstehe ich noch nicht :)
    Ich hoffe ihr könnt mir weiterhelfen.

    lg

    paul53P 1 Antwort Letzte Antwort
    0
    • F Feivelzz

      Hallo,

      vorweg ich bin ziemlich neu unterwegs im IOBroker und JavaScript und habe folgendes Problem bzw. würde gerne das Verhalten verstehen.

      Ich habe eine Android TV Box die ich über den ADB Adapter steuern kann. Nun möchte ich wenn ich über meinen KNX Taster die Steckdose wo der Fernseher angeschlossen ist aktiviere, die Android TV Box aus dem Standby Modus holen.
      Wenn man fertig ist mit dem Fernsehen, möchte ich per Fernbedienung die Android TV Box wieder in den Standby Modus bringen und dann die Steckdose wieder abschalten.

      Ich hab dafür folgendes Script erstellt bzw. zusammenkopiert :)

      var Name, Initialisation, Description, Type, Role, SmartName, Text_Alexa, Alexa_Notification, Message, timeout;
      var flag_switch_tv = 1;
      
      
      function Create_DP(Name, Initialisation, Description, Type, Role, SmartName) {
          createState(Name, Initialisation, {
            name: Description,
            read: true, 
            write: true, 
            type: Type, 
            role: Role,
            smartName: SmartName
          });
       
      }
      
      function SendAdbKey(keycode)
      {
          exec('adb connect 192.168.14.110:5555');
          exec('adb shell input keyevent "' + keycode + '"');
      }
       
      function SendAdbPower()
      {
          SendAdbKey('KEYCODE_POWER');
      }
       
      function SendAdbHome()
      {
          SendAdbKey('KEYCODE_HOME');
      }
       
      function CheckAdbKNXPowerState()
      {
          // Funktion überprüft den Status der Android TV Box. Wenn diese in den Standby-Modus geht, wird die Steckdose vom TV ausgeschalten
          exec('adb connect 192.168.14.110:5555') 
          exec('adb shell dumpsys activity | grep -c "mWakefulness=Asleep"', function (error, stdout, stderr) {
              setState("0_userdata.0.Devices.AndroidTV.info.state", stdout);
              if (stdout == 1 && flag_switch_tv == 0)
              {
                  console.log("Schalte Android TV in Standby");
                  setState('openknx.0.Steckdosen.Erdgeschoss.Wohnzimmer_Steckdose_TV_Schalten' /* Wohnzimmer_Steckdose_TV_Schalten */, false);
                  flag_switch_tv = 1;
                  
              }
          });
          // Funktion überprüft den Status der Steckdose vom TV. Wenn diese eingeschalten wird, wird auch die Android TV Box gestartet
          on({ id: 'openknx.0.Rückmelde&Statusobjekte.Erdgeschoss.Wohnzimmer_Steckdose_TV_Status' /* Wohnzimmer_Steckdose_TV_Status */, change: 'any' }, (obj) => {
          if (obj.oldState.val == false && obj.state.val == true && flag_switch_tv == 1)
          {
              exec('adb connect 192.168.14.110:5555');
              exec('adb shell input keyevent "' + 'KEYCODE_POWER' + '"');
              console.log("Schalte Android TV ein!!!");
              flag_switch_tv = 0;
          }
          });
      }
       
      /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       
      Create_DP('0_userdata.0.Devices.AndroidTV.info.state', '', 'Power State', 'string', 'state','');
      Create_DP('0_userdata.0.Devices.AndroidTV.power.switch', false, 'Power Switch', 'boolean', 'switch','Anroid TV');
       
      schedule("*/5 * * * * *", function () {
          CheckAdbKNXPowerState();
      
      });
       
      on({id: '0_userdata.0.Devices.AndroidTV.power.switch'}, function (obj) {
          SendAdbPower();
      });
      

      Prinzipiell funktioniert es, jedoch hab ich ab und zu den Effekt wenn ich die Steckdose einschalte, dann wird sie sofort wieder ausgeschalten. Das ganze Spiel geht oft nur einmal so, ab und zu aber auch drei bis viermal. Danach läuft es wie gewünscht. Das Problem tritt auch nur beim Einschalten auf, sprich das Ausschalten funktioniert immer.

      Was ist hier das Problem bzw. was verstehe ich noch nicht :)
      Ich hoffe ihr könnt mir weiterhelfen.

      lg

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @feivelzz
      Der Trigger (Zeilen 47 bis 56) darf nicht innerhalb der Funktion ausgeführt werden, da so alle 5 s ein neuer Trigger erzeugt wird.

      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 Antwort Letzte Antwort
      0
      • F Offline
        F Offline
        Feivelzz
        schrieb am zuletzt editiert von
        #3

        Danke für die schnelle Antwort.
        Kann ich mir das dann so vorstellen das der Trigger dann wirklich nur ausgelöst wird, wenn sich der Status der Steckdose ändert? Es kann aber dennoch passieren, wenn ich einschalte, dass er gleich wieder ausschaltet, weil der Status von der Box noch nicht geändert ist? Dann müsste man doch eigentlich noch ein bisschen nach dem Einschalten warten, bis man das "Freigabe-Flag" (flag_switch_tv) setzt um den entgegenzuwirken oder?

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        538

        Online

        32.6k

        Benutzer

        82.0k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe