Vytvoření skriptu v Pythonu – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vytvoření skriptu v Pythonu – Python – Fórum – Programujte.comVytvoření skriptu v Pythonu – Python – Fórum – Programujte.com

 

Mayki0
Duch
16. 5. 2020   #1
-
0
-

Ahoj, hledám někoho, kdo by mi napsal skript v Pythonu pro ovládání mé LG TV. Pythonu vůbec nerozumím, tak to zkouším takhle, tak snad tím nikoho neurazím

O co jde? Potřebuji skript, který poběží na Rpi3 v Raspbianu a bude kontrolovat jaký vstup je vybrán na TV a podle toho přepne zvukový výstup TV. Pokud poběží live TV vysílání, přepne vstup na reproduktory televize, pokud detekuje v TV HDMI vstup, přepne výstup zvuku na HDMI ARC.

Našel jsem knihovnu která toto umí, ale umím pouze zaslat příkaz pro kontrolu vstupu, nebo přepnutí výstupu zvuku, ale neumím to zautomatizovat a neumím udělat aby script běžel nepřetržitě a kontroloval TV

Skript pro kontrolu vstupu mám takhle:  (vypíše aktuální vstup v TV)

import asyncio
from aiopylgtv import WebOsClient

async def runloop(client):
    await client.connect()
    
    print (client.current_appId)    

    await client.disconnect()

client = WebOsClient('192.168.0.151')
asyncio.get_event_loop().run_until_complete(runloop(client))

Skript pro přepnutí zvukového výstupu:  (dokáže přepnou výstup zvuku na HDMI ARC nebo repro)

import asyncio
from aiopylgtv import WebOsClient

async def runloop(client):
    await client.connect()
    
    await client.change_sound_output("external_arc")    # nebo ("tv_speaker")

    await client.disconnect()

client = WebOsClient('192.168.0.151')
asyncio.get_event_loop().run_until_complete(runloop(client))

Knihovnu kterou mám nainstalovanou to využívá tuhle: https://github.com/bendavid/aiopylgtv

Předem děkuji tomu, kdo se mi pokusí pomoct.

Nahlásit jako SPAM
IP: 94.113.178.–
gna
~ Anonymní uživatel
1182 příspěvků
17. 5. 2020   #2
-
0
-

Moc jsem to nestudoval a hlavně to nemám na čem vyzkoušet, ale toto by asi mohlo chodit (tu část s XX a YY si uprav jak pořebuješ)

import asyncio
from aiopylgtv import WebOsClient

async def on_state_change():
    if client.current_appId == XX and client.sound_output != YY:
        await client.change_sound_output(YY)

async def runloop():
    await client.register_state_update_callback(on_state_change)
    await client.connect()
    while True:
        await asyncio.sleep(10)

async def disconnect():
    await client.disconnect()

client = WebOsClient('192.168.0.151')
try:
    asyncio.get_event_loop().run_until_complete(runloop())
except KeyboardInterrupt:
    asyncio.get_event_loop().run_until_complete(disconnect())
Nahlásit jako SPAM
IP: 213.211.51.–
Mayki0
Duch
17. 5. 2020   #3
-
0
-

#2 gna
Děkuji moc za ochotu pomoct, moc si toho vážím. Upravil jsem skript takhle : 

import asyncio
from aiopylgtv import WebOsClient

async def on_state_change():
    if client.current_appId == "com.webos.app.hdmi2" and client.sound_output != "tv_speaker":
        await client.change_sound_output("external_arc")

async def runloop():
    await client.register_state_update_callback(on_state_change)
    await client.connect()
    while True:
        await asyncio.sleep(10)

async def disconnect():
    await client.disconnect()

client = WebOsClient('192.168.0.151')
try:
    asyncio.get_event_loop().run_until_complete(runloop())
except KeyboardInterrupt:
    asyncio.get_event_loop().run_until_complete(disconnect())

To znamená, pokud jsem to pochopil správně, že pokud bude detekován vstup HDMI2 a výstup zvuku bude TV repro, měl by se přepnout zvuk na HDMI ARC.

Skript běží, nepřijde mi žádná chyba, bohužel se ale zvuk nepřepne a jelikož se nic v cmd nevypíše, tak nevím proč. Ale určitě je to správná cesta...

Není nějaká možnost, jak zobrazit co se děje?

Nahlásit jako SPAM
IP: 94.113.178.–
Mayki0
Duch
17. 5. 2020   #4
-
0
-

Tak jsem si s tím trochu hrál a pokud upravím skript takto, tak to funguje : 

import asyncio
from aiopylgtv import WebOsClient

async def on_state_change():
    if client.current_appId == "com.webos.app.hdmi2":
        await client.change_sound_output("external_arc")
    elif client.current_appId == "com.webos.app.livetv":
        await client.change_sound_output("tv_speaker")  

async def runloop():
    await client.register_state_update_callback(on_state_change)
    await client.connect()
    while True:
        await asyncio.sleep(10)

async def disconnect():
    await client.disconnect()

client = WebOsClient('192.168.0.151')
try:
    asyncio.get_event_loop().run_until_complete(runloop())
except KeyboardInterrupt:
    asyncio.get_event_loop().run_until_complete(disconnect())

Takže to vlastně nekontroluje audio výstupy, ale rovnou je přepíná.

Nahlásit jako SPAM
IP: 94.113.178.–
gna
~ Anonymní uživatel
1182 příspěvků
17. 5. 2020   #5
-
0
-

On ten callback chytá všechny změny, tak jsem to nechtěl přepínat, pokud to není potřeba. A ten test by byl takhle:

if client.current_appId == "com.webos.app.hdmi2" and client.sound_output != "external_arc":
    await client.change_sound_output("external_arc")

Ale ta telka to asi pořeší sama, takže na tom nesejde. Jsem rád, že ti to chodí.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 65 hostů

Podobná vlákna

Spustenie skriptu s db — založil radypala

Zabezpečenie skriptu — založil Martin

Princip skriptu — založil MaxDJs

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý