Android TV Box mit UDP Befehl ausschalten

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • pumuckl
    Smart Home'r
    • 11.03.2017
    • 80

    #1

    Android TV Box mit UDP Befehl ausschalten

    Hallo,

    Ich hab zu den Thema nichts hilfreiches/ aktuelles gefunden.

    Ich hab 2 Eigenbau Android TV boxen, Asus Tinker Boardund und Radxa Rock PI, auf beiden läuft Android 7 einmal die TV Version und einmal die Tablett Version.

    und möchte diese per UDP oder HTTP befehl ausschalten.


    gibt hier eine Anleitung, aber einige der apps finde ich nicht.




    Hat jemand dafür eine Lösung?


    grüsse
  • pumuckl
    Smart Home'r
    • 11.03.2017
    • 80

    #2
    Hallo,

    Ich habe eine Lösung gefunden.

    Auf meinem Openmediavault Linux NAS, (mit Loxberry müsste es auch funktionieren.), habe ich ADB installiert.

    Code:
    [SIZE=14px]sudo apt-get install adb[/SIZE]
    Danach folgendes Python Script erstellt:
    Code:
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    
    import socket
    import sys
    import time
    from time import sleep
    import os
    
    
    # Voreinstellungen für Host und Port
    # akzeptiert Nachrichten von jedem Host auf dem angeg. Port
    
    
    # Groesse Empfangspuffer (begrenzt die empfangene Nachricht)
    bufsize = 8192  # 8 kByte
    
    # UDP-Socket oeffnen
    receive = ("", ABCD )
    send = ("XX.XX.XX.ZZ", ADCE )
    
    UDPSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    UDPSock.bind(receive)
    
    print( "UDPServer Waiting for client on port", receive )
    
    
    # Define moving functions
    
    
    def recovery():
        os.system('adb connect XX.XX.XX.XX)
        #print( "connect")
        sleep(1.5)
        os.system('adb connect XX.XX.XX.XX')
        #print( "connect")
        #os.system('adb reboot ')
        os.system('adb reboot recovery')
        UDPSock.sendto(b"reboot", send)
        os.system('adb disconnect XX.XX.XX.XX')
    
    def reboot():
        os.system('adb connect XX.XX.XX.XX')
        #print( "connect")
        sleep(1.5)
        os.system('adb connect XX.XX.XX.XX')
        #print( "connect")
        os.system('adb reboot ')
        #os.system('adb reboot recovery')
        UDPSock.sendto(b"reboot", send)
        os.system('adb disconnect XX.XX.XX.XX')
    
    
    
    options = {    
                    "recovery" : recovery,
                    "reboot" : reboot,                
    }
    
    
    
    
    #while True:
    
    # Recive data from client and decide which function to call
    while True:
    
          try:
            dataFromClient, addr = UDPSock.recvfrom(bufsize)
            options[dataFromClient]()
            print( options)  
          except KeyError:
            print( "KeyError")
            UDPSock.sendto(b"KeyError", send)
    und lasse es als deamon in systemd laufen:

    Code:
    [Unit]
    Description=tor
    After=syslog.target
    
    [Service]
    Type=simple
    User=root
    Group=root
    WorkingDirectory=/root/
    ExecStart=/root/adb.py
    SyslogIdentifier=tor
    StandardOutput=syslog
    StandardError=syslog
    Restart=always
    RestartSec=3
    
    [Install]
    WantedBy=multi-user.target
    Am Android gerät muss dann noch der Entwicklermodus aktiviert werden, eventuell muss adb noch in den Entwickler Optionen aktiviert werden.


    Loxone sendet dann den UDB Befehl, um die TV Box in den Download mode zu setzen und 30 sec später wird der Strom von der Steckdose genommen.


    Mit QPython, wenn die TVbox root rechte hat, müsste es auch funktionieren.
    Zuletzt geändert von pumuckl; 16.05.2019, 08:49.

    Kommentar

    Lädt...