Vychytávky - Verze k tisku +- XBMC-Kodi.cz (https://www.xbmc-kodi.cz) +-- Fórum: KODI - software (https://www.xbmc-kodi.cz/forum-kodi-software) +--- Fórum: Operační systémy (https://www.xbmc-kodi.cz/forum-operacni-systemy) +---- Fórum: LibreELEC (https://www.xbmc-kodi.cz/forum-libreelec) +---- Téma: Vychytávky (/prispevek-vychytavky) Stran:
1
2
|
Vychytávky - JiRo - 06.7.2017 Téma pro ty, kteří si vytvořili nebo někde sehnali nějaká drobná vylepšení LibreELEC a chtějí se o ně podělit s ostatními. Téma je určeno především "hračičkům", kteří mají potřebu si svou instalaci neustále vylepšovat. Velmi pravděpodobně to, co bude uvedeno jako vychytávka pro LibreELEC, bude fungovat i pro OpenELEC a z větší či menší části i pro ostatní typy instalací Kodi. Použití toho, co zde bude dále uvedeno, je na vlastní odpovědnost. Předpokladem pro to je alespoň základní znalost a pochopení toho, co bude publikováno. Notifikace v Kodi Pokud si svou instalaci vylepšujete nějakými vlastními aplikacemi nebo scripty, určitě jste občas narazili na potřebu dát někdy vědět obyčejnému uživateli Kodi, co se právě ve vaší aplikaci nebo scriptu děje. Vychytávka umožňuje ze systému (a tedy i aplikace nebo scriptu), poslat do Kodi standardní notifikaci. Využívá k tomu dva základní principy: Aplikaci kodi-send, která umožňuje poslat ze systému do Kodi příkaz Vnitřní funkci Notification, která zobrazí standardní notifikaci Kodi Formát systémového příkazu je následující: kodi-send --action="Notification("Start","WebGrab+Plus",5000,/storage/.kodi/addons/service.webgrabplus/icon.png)" Obecný tvar funkce Notification je následujcíí: Notification(header,message[,time,image]) kde header - první řádek textu v notifikaci (větší font) message - druhý řádek textu v notifikaci (menší font) time - doba po kterou se notifikace zobrazí [msec], nepovinný parametr image - obrázek (icona), která se zobrazí v notifikaci, nepovinný parametr Já uvedenou vychytávku používám v několika případech, např.: Informace o zadání příkazu k restartu Kodi z DO (dálkového ovladače). Tlačítkem DO se spouští script (mimo Kodi, stisk tlačítka je zachycen přímo v systému), který restartuje Kodi. Ve scriptu je nejdříve odeslána notifikace a teprve pak je zadán příkaz k "tvrdému" restartu Kodi. [attachment=2616] Oznámení o startu a ukončení grabování EPG aplikací WebGrab+Plus (WG++). Do scriptu, který je součástí této aplikace, jsou vloženy dvě notifikace, jedna na začátek, druhá na konec scriptu. [attachment=2617] RE: Vychytávky - JiRo - 06.7.2017 Přenos informace do Kodi Je variantou Notifikace v Kodi, s tím rozdílem, že do Kodi předává trvalou informaci, která pak může být využita například k trvalému zobrazení stavu nějaké aplikace. Používá pro to proměnné skinu. Pravda, není to právě typické (a asi ani správné) použití, ale pro rychlé a efektní řešení je použitelné. Poprvé jsou ho použil pro to, abych si v Kodi indikoval běh aplikace WebGrab+Plus. Řešení využívá možnost nastavení uživatelské proměnné skinu. Deklarace proměnné se provede jejím první použitím (nastavením její hodnoty). Existují různé typy porměnných, já pro tento účel využívám proměnou typu řetězec.¨ Edit 2017-08-05 Upozornění: Nastavení proměnné skinu vyhodnocuje Kodi jako aktivitu uživatele (stejně jako stisk klávesy na klávesnici, DO nebo pohyb myši), se všemi důeldky. Např. se nespustí screen saver nebo některé funkce, jejíž chování je závislé na "neaktivitě uživatele", nebudou při použití této vychytávky fungovat správně. Nastavení (případně deklarace) hodnoty proměnné: Skin.SetString(string[,value]) kde string - identifikace proměnné value - hodnota (řetězec znaků, může být i prázdný) proměnné. Pozn. value je obecně nepovinný parametr, v tomto případě je ho ale třeba vždy zadat! Pokud tedy chcete zadat hodnotu proměnné z nějakého scriptu nebo aplikace v systému, je třeba to vložit do známého příkazu kodi-send: kodi-send --action="Skin.SetString(WebGrabPlus,EPG)" - tento příkaz zapíše do proměnné WebGrabPlus řetězec EPG kodi-send --action="Skin.SetString(WebGrabPlus,)" - tento příkaz zapíše do proměnné WebGrabPlus prázdný řetězec Oba příklady jsem použil ve scriptu pro spuštění grabování EPG (aplikace WebGrab+Plus) - první na začátku scriptu, druhý na jeho konci. Proměnná WebGrabPlus se pak využívá ve skinu, pro zobrazení stavu grabování EPG. Do příslušného místa definice skinu (zde pro skin Eustary.Easy) je vložena sekvence: Kód: <control type="label"> Příznak se zobrazuje v záhlaví titulní strany (v právém horním rohu, pod časem), běží-li WebGrab+plus, zobrazí se text EPG (resp. text, který obsahuje proměnná WebGrabPlus), neběží-li, nezobrazuje se nic. [attachment=2620] Omezení
RE: Vychytávky - kraftwerk007 - 06.7.2017 Pokud se za vychytávku považuje i rozšíření v prohlížeči Chrome,kterým ovládám RPI,tak já používám Kassi https://chrome.google.com/webstore/detail/kassi-share-send-to-kodi/gbghegmimhjemkhpimohkdopkeahldbh?utm_source=chrome-app-launcher-info-dialog Jde tím kompletně ovládat Kodi,tedy restart,vypnutí,je možnost používání dialogového okna-je tam komletní remote control. Pokud uživatel pracuje v RPI pomocí DO a je potřeba zadat text,tak se v prohlížeči v PC rovnou otevře okno,kde se zapisuje text.To je velmi praktické. RE: Vychytávky - JiRo - 06.7.2017 Rychlé přepnutí audio výstupu Volba audio výstupu Kodi se provádí v Nastavení > Systém > Zvuk > Výstupní zvukové zařízení [attachment=2621] Někdy je ale potřeba přepínat audio výstupy nějak jednodušeji a rychleji. Narazil jsem na to například při potřebě přepínat výstup mezi TV (HDMI) a Bluetooth sluchátky, která jsou připojena přímo k LibreELEC systému. Pátral jsme po možnosti jaké Kodi nabízí a pro současnou verzi (17.*) našel jen jednu možnost, a tou je využití příkazů rozhraní JSON-RPC, viz http://kodi.wiki/?title=JSON-RPC_API. Přepnutí se tedy dá provést pouze ze systému, což ale nemusí být žádné omezení. Po vytvoření sh scriptů pro přepnutí na vybrané výstupy je možné tyto scripty pak buď spouštět přímo z Kodi nebo je například přímo přiřadit tlačítkům DO. Vlastní příkaz pro LibreELEC vypadá následovně: curl -v -H "Content-type: application/json" -u "jméno:heslo" -X POST -d '{"jsonrpc":"2.0","method":"Settings.SetSettingValue", "params":{"setting":"audiooutput.audiodevice","value":"název_audio_výstupu"},"id":1}' http://localhost:port/jsonrpc kde port - Port pro ovládání (zadává se v Nastavení -> Služby) jméno - Uživatelské jméno pro ovládání (zadává se v Nastavení -> Služby) heslo - Heslo pro ovládání (zadává se v Nastavení -> Služby) název_audio_výstupu - skutečné označení audio výstupu - nejlépe ho najdete tak, že si v Kodi příslušný výstup nastavíte, pak Kodi restartujete, nastavení se zapíše do guisettings.xml, kde pak přesný řetězec se skutečným označením audio výstupu najdete mezi tagy <audiodevice> a </audiodevice> Ještě poznámka k názvu audio výstupu. To co Kodi ukazuje v Nastavení > Systém > Zvuk > Výstupní zvukové zařízení, nemusí být ten správný řetězec, na který správně zareaguje příkaz JSON-RPC. Např. v mém LibreELEC, který běží na Asrock Beebox, je v Kodi název zařízení ALSA: HDA Intel PCH, SAM T24E390 on HDMI #0, ale v guisettings.xml je uloženo ALSA:hdmi:CARD=PCH,DEV=0. RE: Vychytávky - JiRo - 08.7.2017 Funkce tlačítek DO mimo Kodi Někdy se hodí mít možnost přiřadit tačítkům DO nějakou funkci, které se provádí mimo Kodi. Např. spuštění nějakého scriptu nebo systémového příkazu. Ano, je to možné provést i prostřednictvím Kodi příkazů. Je jich celá řada, které aktivují nějaké systémové funkce (Reset, Reboot, Powerdowm, Shutdown) nebo pomocí Kodi příkazu System.Exec, pomocí kterého je možné vykonat libovolný příkaz shellu. Všechny tyto funkce ale předpokládají jedno, že Kodi běží a funguje tak, jak má. Velmi často je ale třeba vykonat takový příkaz právě v situaci, kdy Kodi není úplně v pořádku. Platí to zejména v případech, kdy používáme neoficiální verze nebo night build-y nebo kdy se pokoušíme z Kodi vymámit i takové funkce, s kterými jeho autoři příliš nepočítali. Pak se například možnost, z DO restartovat Kodi nebo dokonce provést reboot celého systému, hodí velice často. Uvedený postup popisuje, jak je možné zachytit stisk tlačítka DO komunikujícího přes IR port ještě na úrovni systému a na jeho základě vykonat příkaz. Tlačítka, která chceme zachytit definujeme v souboru .lircrc: Obsah souboru .lircrc, doporučuje se uložení v /storage/.config: Kód: begin První sekvence zachytí stisk tlačítka s kódem KEY_ZOOM a spustí příkaz v řádku config =, v daném případě tedy script restart.sh. Druhá pak podobně, po stisku tlačítka s kódem KEY_LANGUAGE spustí script reboot.sh. Kódy tlačítek jsou dostupné v dokumentace k DO MCE, případně je možné je v systému zjistit pomocí úlohy irw, která vypisuje kódy stisknutých tlačítek. Pozn. jméno a umístěný souboru .lircrc může být samozřejmě libovolné, stejně jako jména scriptů. Místo scriptů může být samozřejmě přímo systémový příkaz. Aby se zachycení tlačítek aktivovalo, je třeba při spuštění systému spustit úlohu irexec s parametrem jména a cesty souboru .lircrc. Nejlépe tak, že se příslušný příkaz pro spuštění umístí do autostart.sh. Úlohu irexec lze samozřejmě spustit opakovaně kdykoliv, vždy je ale třeba předchozí instanci ukončit. Pozor, pokud nezadáte cestu k souboru .lircrc, úĺoha ho pak defaultně hledá na dvou adresách /storage/.lircrc a /etc/lirc/lircrc. Úloha irexec se spouští jako démon (-d). Obsah autostart.sh: ... killall irexec irexec -d /storage/.config/.lircrc ... A jen pro doplnění, příkaz pro restart Kodi ze systému může vypadat takto: systemctl restart kodi, příkaz pro reboot celého systému pak takto: reboot. RE: Vychytávky - JiRo - 18.7.2017 Test dostupnosti serveru Jednoduchá a rychlá kontrola dostupnosti serveru (počítače). Dostupnost se může testovat různými způsoby, já jsme si zvolil jednoduché a realizačně rychlé řešení, pomocí příkazu ping. Ping periodicky spouštím v trvale běžícím sh scriptu, který se spouští z autostart.sh. Řešení využívá možnost nastavení uživatelské proměnné skinu. Deklarace proměnné se provede jejím první použitím (nastavením její hodnoty). V toto případě používám logickou (Booelan) proměnou. Edit 2017-08-05 Upozornění: Nastavení proměnné skinu vyhodnocuje Kodi jako aktivitu uživatele (stejně jako stisk klávesy na klávesnici, DO nebo pohyb myši), se všemi důeldky. Např. se nespustí screen saver nebo některé funkce, jejíž chování je závislé na "neaktivitě uživatele", nebudou při použití této vychytávky fungovat správně. Nastavení (případně deklarace) hodnoty proměnné [TRUE]. Skin.SetBool(string) Nulování hodnoty proměnné [FALSE]. Skin.Reset(string) kde string - identifikace proměnné. Pokud tedy chcete zadat hodnotu proměnné z nějakého scriptu nebo aplikace v systému, je třeba to vložit do známého příkazu kodi-send: kodi-send --action="Skin.SetBool(Server0isalive)" - nastaví hodnotu proměnné Server0isalive na [TRUE] kodi-send --action="Skin.Reset(Server0isalive)" - - nastaví hodnotu proměnné Server0isalive na [FALSE] Testování dostupnosti serveru se provádí ve scriptu testoflife.sh, který je spouštěn z autostart.sh: ... /storage/.kodi/.config/testoflife.sh & ... Kód testoflife.sh: Kód: #! /bin/sh Proměnná Server#0isalive se pak využívá ve skinu, pro zobrazení stavu dostupnosti serveru. Do příslušného místa definice skinu (zde pro skin Eustary.Easy) je vložena sekvence: Kód: <control type="image"> <!-- Easy+ Server is alive - icon --> Příznak se zobrazuje v záhlaví titulní strany (v pravém horním rohu, vedle informace o počasí): [attachment=2665] [attachment=2666] Omezení
RE: Vychytávky - PaPe3 - 19.7.2017 muzes mne prozradit jak to ze ti kodi nahrava. Jak si to udelal je na to nejaky jiny PVR klient? RE: Vychytávky - JiRo - 19.7.2017 @PaPe3 Na jeden ze strojů, kde provozuji LibreELEC, jsem si nainstaloval addon Tvheadend 4.2, který způsobí to, že se ti do systému nainstaluje Tvheadend backend. Tedy Tvheadend server, který umí zpracovávat televizní vysílání z různých přijímačů - USB, PCI - DVB-T, T2, C, S2 atp. On toho umí samozřejmě daleko víc (např. přijímat IPTV streamy, streamy internetových radií, nahrávat Tv i Radio programy, atp.). Na každý Kodi klient v domácí síti jsem si pak nainstaloval PVR addon Tvheadend HTSP Client, což mi umožní využívat všechny služby Tvheadend serveru. Jako třeba:
RE: Vychytávky - JiRo - 05.8.2017 Ve dvou předchozích příspěvcích "vychytávek" Přenos informace do Kodi a Test dostupnosti serveru jsem ukázal, jak je možné přenést do Kodi nějakou informaci například z sh scriptu s pomocí tzv. proměnných skinu. Už tehdy jsem uvedl, "to není to právě typické (a asi ani správné) použití" a jak se ukazuje, měl jsme bohužel pravdu. Před časem mi přestal správně fungovat addon pro automatického zapínání a vypínání Kodi pro nahrávání TVHeadend Power and Recording Manager (P&RM) addon a po delším pátrání jsem našel příčinu v použitý dvou výše uvedených "vychytávek". Nastavení proměnné skinu vyhodnocuje totiž Kodi jako aktivitu uživatele (stejně jako stisk klávesy na klávesnici, DO nebo pohyb myši). V tom důsledku pak addon P&RM vyhodnotí některé situace a stavy "nesprávně". Znamená to tedy, že pokud používáte addon P&RM, nemůžete ve chvíli, kdy addon vyhodnocuje stav "aktivity uživatele", nastavovat proměnné skinu. Ty totiž způsobí, že addon je vyhodnotí jako situaci, kdy je uživatel aktivní a přizpůsobí tomu svůj další postup (např. nevypne systém, který byl automaticky zapnut pro nahrávání). RE: Vychytávky - JiRo - 02.9.2017 Restart PVR Občas se hodí, při různých nestandardních kouzlech, mít možnost restartovat PVR klienta v Kodi. Existuje pro to standardní příkaz StartPVRManager, který byl do Kodi přidán počínaje verzí 12 (Frodo). Poté byl někdy, nevím kdy, zase odstraněn, resp. je nefunkční. Potřeboval jsme nedávno pro jisté účely restartovat PVR klienta, a tak jsme hledal nějakou náhradní možnost. V první chvíli jsme to obešel restartem celého Kodi, což je ovšem dosti brutální. Nakonec jsem našel sice krkolomný, ale z hlediska konečného efektu celkem jednoduchý způsob využívající JSON-RPC Api. Jeho použití ze systému je možné např. pomocí aplikace curl, která je v LibreELEC standardně instalována. Princip spočívá v potupném zadání svou příkazů zablokování a odblokování příslušného doplňku. Oproti původnímu příkazu, který restartuje všechny PVR, je možné tímto způsobem restartovat každý PVR zvlášť. Příkaz pro zablokování zadaný prostřednictvím aplikace curl ze systému, na kterém Kodi běží: Kód: curl -s -H "Content-Type: application/json" -u "USERNAME:PASSWORD" -v -X POST -o curl.txt -d '{"jsonrpc": "2.0", "method": "Addons.SetAddonEnabled", "params": { "addonid": "pvr.hts", "enabled": false }, "id": 1}' http://localhost:PORT/jsonrpc Příkaz pro odblokování: Kód: curl -s -H "Content-Type: application/json" -u "USERNAME:PASSWORD" -v -X POST -o curl.txt -d '{"jsonrpc": "2.0", "method": "Addons.SetAddonEnabled", "params": { "addonid": "pvr.hts", "enabled": true }, "id": 2}' http://localhost:PORT/jsonrpc Po postupném zadání obou příkazů dojde v restartu PVR Tvheadend klienta. příkazy by měly následovat hned za sebou, po zablokování není PVR addon pochopitelně aktivní s ním všechny jeho funkce a zobrazení. Samozřejmě, pokud budete chtít příkazy zadávat z jiného systému, je třeba změnit IP adresu. V uvedených příkladech je použita symbolická localhost adresa. Nezapomeňte rovněž zadat USERNAME, PASSWORD a PORT, parametry, které se jinak zadávají v Systém>Nastavení/Služby>Ovládání. Problémy, bugy:
RE: Vychytávky - otava5 - 04.9.2017 JiRo: Zdravím. Nyní laboruji s IPTV v TVH.... při sledování kanálu mám navigační tlačítka DO (TV CEC): šipka nahoru: přepnutí kanálu na další šipka dolu: přepnutí kanálu na předchozí šipka doprava: žádný příkaz šipka doleva: žádný příkaz..... Prosím šlo by udělat to takto: šipka nahoru: příkaz kanály (viz. screen) šipka dolu: příkaz televizní program (viz screen) šipka doprava: přepnutí kanálu na další šipka doleva: přepnutí kanálu na předchozí (jsem takto zvyklý z Dreamboxu ) V případě že by mohla bý kolize tak příkaz kanály na šipku doprava a příkaz televizní program na šipku doleva.... Zatím mám nakonfigurované jen barevná tlačítka a to v /storage/.kodi/userdata/keymaps - remote.xml ... Díky za radu RE: Vychytávky - JiRo - 04.9.2017 @otava5 Mělo by to vypadat takto: Kód: <FullscreenLiveTV> RE: Vychytávky - otava5 - 04.9.2017 to zadám do remote.xml? RE: Vychytávky - JiRo - 04.9.2017 @otava5 Jo, to jsme nenapsal. Sorry. Při editaci mi tam vlítly nějaké formátovací znaky, ale už jsem to opravil. Tak si to raději načti znova. RE: Vychytávky - otava5 - 05.9.2017 JiRo: Koukni na screen.... standardně to funguje tak že najedu na kanál potvrdím OK rozjede se stream s touto obrazovkou, dalším klepnutím OK se objeví už jen samotný stream. Šlo by udělat aby po jednom klepnutí se rovnou přeplo na stream bez této obrazovky, zkrátka vypustit to pro mě otravné potvrzování? Snad si mě pochopil.... Díky za odpověď.... RE: Vychytávky - JiRo - 05.9.2017 @otava5 Máš nastaveno Spustit přehrávání minimalizovaně, vypni si to. Viz screenshot nastavení: [attachment=2813] RE: Vychytávky - otava5 - 25.9.2017 JiRo: Mám teoretický dotaz.... Mám zájem o tento ovladač s mic: Bude tlačítko mic fungovat v hlas. hledaní ve Stream Cinema jako na Yatse ? RE: Vychytávky - JiRo - 25.9.2017 @otava5 Yatse umí hlasové příkazy proto, že je to aplikace napsaná pro Android a Adnroid poskytuje aplikacím systémovou službu umožňující využité zadávání hlasových příkazů. Jinak řečeno, abys mohl v nějaké aplikaci používat hlasové příkazy, měl by je podporovat operační systém a aplikace, ta by zase měla umět využívat jeho systémové služby. RE: Vychytávky - shiro - 23.11.2017 (08.7.2017, 18:23)JiRo Napsal(a): Funkce tlačítek DO mimo Kodi Ahoj, skusam toto ovladanie kodi mimo kodi, pretoze mi nahodne mrzne (problem na dlhy pokec, no ak chces, mozem zalozit topik) a chcem ho restartnut pomocou DO. Viem to aj cez ssh a systemctl restart kodi, ale toto je uplne paradne jednoduche. Funguje toto aj v libreelec 8.2.0 ? vyhodili tam LIRC, aj som ju vypol (robilo to dvojkliky, bol s tym problem, vedia o tom a takto sa to riesi) a DO mi normalne funguje. Mam ten original Microsoft DO. Subory si vytvaram cez LAN z PC s windows a ten mi nedovoli samozrejme spravit subor s nazvom zacinajucim bodkou. Pojde to aj ked spravim ten subor lircrc bez bodky na zaciatku? Tie *.sh subory aj samotne lircrc mam dat do \\192.168.2.3\Configfiles ? Lebo je tam aj adresar \\192.168.2.3\Userdata Spravil som si subor restartkodi.sh, ktory chcem spustat podla tvojho navodu. Staci ked do toho suboru len normalne napisem systemctl restart kodi a nic ine? alebo to musi mat nejaky format? Diky. RE: Vychytávky - JiRo - 07.3.2018 @shiro byl jsme dlouho mimo (nemoc) a na fórum jsem nechodil. Tak nevím, jestli ještě vůbec nějakou odpověď ode mne potřebuješ, tak jenom v rychlosti.
|