• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Vítejte návštevníku! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Vypnutí přehrávání v Kodi při neaktivitě ovládání [vyřešeno]
#1
Potřeboval bych funkci
Vypnutí přehrávání v Kodi při neaktivitě ovládání, (tedy STOP, ne vypnutí nebo uspání).

Podobně, jako má TV přijímač "ochranu spotřeby" při neaktivitě z dálkového ovládání.
Tam je možné v nastavení zvolit, že například po 4 hodinách, pokud sledující divák nepošle nějaký povel (přepnutí kanálu, snížení hlasitosti), TV se vypne. Vlastně přejde do stand by.

Proč. Mám jedno stále běžící zařízení (RPi3 B+, CEC nesmí zařízení vypnout ani uspat), kde sice produkci nastavuji na obrazovce TV přes HDMI-CEC (například spustím rozhlasovou stanici), ale audio posílám analogem do receiveru a reproboxů.
Potom TV mohu vypnout a jen poslouchat - ale dálkové ovládání ke Kodi už nepoužiji (také CEC se odpojí).

Může se potom stát, že vypnu receiver a zabývám se jinou činností. Jenomže doplňek v Kodi dál přehrává z internetu.
(Možné samozřejmě je poslat stop přes Kore na mobilu. Ale zde řeším "zapomenutí".)

Proto bych potřeboval funkci, která po nastaveném čase, pokud nezaznamená aktivitu z ovládání, vykoná povel STOP pro přehrávač v Kodi.

Sice existuje doplněk, služba Autostop v základní nabídce - ale nic požadovaného u mne nevykoná.
Napadá vás, jak požadavek vyřešit?
> : V této chvíli vyřešeno doplňky připojenými do příspěvků #3 a #18.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#2
@meda: Máte štěstí, že jedu kolem...



Ne vážně, asi k tomu musíš k tomu použít jednoduchou service. V ní periodicky testovat, zda se přehrává nějaké video a zároveň ještě neproběhl nastavený čas uživatelské neaktivity. A pokud proběhl, tak poslat povel STOP přehřávače. Kokrétně se pro zjištění uživatelské (ne)aktivity dají použít dvě metody:
  1. buď se testuje hodnota funkce xbmc.getGlobalIdleTime(), která vrací čas od poslení aktivity uživatele
  2. nebo ze zjišťujě hodnota boolean funkce System.IdleTime(time), která vrátí True pokud v zadaném čase  <time> nedošlo k žádné uživatelské aktivitě.
Oba postupy vedou ke stejnému cíli, ta metoda 1 bude asi o chlup jednodušší. Bude to jen pár python řáků. Mohu s realizací pomoci?

Teď jsem si uvědomil, že tuhle funkci už mám v mé univerzální schedule service zrealizovanou. Tak jestli chceš, můžu to z ní vyzobnout. Ale jestli si chceš zaprogramovat, nutit ti to nebudu. 4
 
Citovat
#3
Tak jsem vyseparoval potřebný kód a vyrobil jednoduchý doplněk typu service Idle Command, addon id: service.idlecommand. Je to jednoduché a neučesané a jistě se na tom dá ještě mnohé vylepšit. Funkce tak, jak jsem si ji kdysi definoval, v podstatě kopíruje @meda: požadavky. Nad jejich rámec jsem tam ale ponechal možnost ten STOP po uplynutí nastaveného idle (default je 60 min) v nastavitelném časovém okně (default je 10 sec) zrušit. Pokud ale na to uživatel v časovém okně nezareaguje, povel STOP se provede.
 
[attachment=12368]

Zip soubor s doplňkem je přiložený.
 
Citovat
#4
@JiRo: Díky za tvou práci. Musel jsem odložit i vyzkoušení tvého kódu. Rodina 6
Sám jsem začal s dotazem řešení na Gemini. Ale po zkušenosti, že tvá řešení jsou jednodušší a elegantní, jsem je odložil zatím k ledu.
Tvoje řešení zkusím zítra jako první.
Co navrhla Gemini, přikládám do PDF:

.pdf   autostop_timer.pdf (Velikost: 62,94 KB / Stažení: 7)
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#5
@meda: Jo, to řešení od Gemini samozřejmě fungovat bude. Používá v podstatě stejnou logiku jako jsem použil já, a která je jednou z těch, které je možné pro toto řešení použít. Jen to co uvádí jako výhodu, tedy, že to není doplněk, a že uživatel nemusí nic hledat v nastavení, já tedy jako žádnou výhodu nevidím. A nebojím se napsat, že to dokonce vidím přesně naopak!

Je to taky o tom, že já bych ten postup, napsat to (stejně jako to udělalo Gemini) jako jednoduchý script, možná použil pro úvodní test funkce (dělám to tak často), a pak bych to stejně nakonec přepsal jako doplněk. A to právě proto, že se to dá, jako addon, pak snadno nastavovat. Teď je v mém návrhu možnost nastavit dobu nečinosti, po uplynutí které se spustí ten odpočet a možnost ten odpočet v nastaveném čase zrušit, což tedy já pokládám za hodně užitečné vlastnosti řešení.

Ono by taky celkem jednoduše šlo přidat do nastavení možnost funkci scriptu zablokovat úplně, což se určitě někdy také hodí a nebo tam třeba doplnit typ akce, která se má po uplynutí nastavené doby neaktivity provést. Místo natvrdo definovaného STOP přehrávání si moci zvolit třeba uspání nebo vypnutí systému. Nebo mě třeba napadá, že by se někomu mohlo hodit mít možnost ty parametry definovat v několika sadách různě pro určité části dne. Například v pozdě večer a v noci místo STOP přehrávání systém uspat či vypnout, měnit dobu neaktivity, apod. A určitě budu raději, místo vytváření adresáře, kopírování scriptu a vytváření/editování autostart.py, a editování vlastního scriptu při potřebě změnit nějaké parametry, standardním postupem instalovat doplněk ze zip (případně nějakého repozitáře) a také standardním způsobem nastavovat parametry jeho funkce.
 
Citovat
#6
@JiRo: Ano, Gemini nejdříve připomínala onen doplňek služby Autostop s menu na 9 řádkách (který řešení nepřinesl) a pak vyzdvihla čistší řešení scriptem (viz uvedené PDF). Pro rychlost instalace považuji doplněk za optimální řešení.

Vyzkoušel jsem tvůj idlecommand hned teď, než se manželka zmocní ovládání sportovního zpravodajství nebo HbbTV.

Děkuji, koná přesně jen to, co potřebuji.
Vyzkoušel jsem pro různé stavy TV přijímače a tedy stavy HDMI-CEC.
A stavy manželky - tedy že receiver vypne a spustí si Prima Krimi nehledě na produkci z krabičky s Kodi.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#7
@meda: Tak viděl jsi sám, že jsem hned začal přemýšlet jaké další funkce do service přidat. Ono se to nabízí. Člověk když to programuje, tak hned začne přemýšlet o tom kdo a jak by to mohl chtít používat a co by tedy bylo dobré tam přidat za nastavení, a také o tom, že hromada jednoduchých scriptů, když už je hodně vysoká, taky není optimální. A pak už to jede... 1 Autor doplňku Autostop se choval stejně. Jen mu to asi prostě funguje jinak, než potřebuješ ty. Jsem rád, že jsem se trefil. Tak aby ne, když jsi to dobře popsal.

Tak ona ta filosofie jednoduchých úloh (a la scriptu, jak ho nabídla Gemini), které zajišťují jen omezený počet funkcí a bez složitého nastavování, to je převzaté z filosofie Linuse Torvaldse a pro jistou třídu aplikací je to určitě správná filosofie. Ale pro Kodi, jeho systém doplňků, omezené možnosti přístupu u některých instalací a také pro to, že velká část uživatelů není zběhlá v systémových operacích, asi moc přenositelná není.
 
Citovat
#8
@JiRo: Nedalo mi to a vyzkoušel jsem, jestli totéž zadání vyřeší doplňkem Gemini. Po prvním požadavku...

Mám Kodi/LibreElec na Raspberry Pi 3B+. Potřebuji funkci, která provede povel STOP pro přehrávač v Kodi, pokud po nějakou dobu, například 360 minut, Kodi nezaznamená žádný signál z ovládání CEC, klávesnice USB a podobně.

...a získání návrhu na script jsem tedy zadání doplnil:

Doplněk Kodi je snadný pro instalaci ze ZIP. Proto upřednostním doplněk, který vykoná jen jeden povel: Vydá pro přehrávač kodi příkaz STOP. V menu tohoto doplňku umožní nastavit dobu neaktivity ovládání v minutách. Před vydáním příkazu STOP se s předstihem 30 sekund zobrazí výstraha. Během této výstrahy, pokud dojde k detekci z ovládání, tedy z HDMI-CEC nebo z připojené USB klávesnice, se příkaz STOP zruší a nevydá. Obnoví se doba neaktivity ovládání v minutách.

Gemini vytvořila doplněk, textové zadání struktury, které jsem zazipoval a vyzkoušel:

Po instalaci tohoto doplňku není možnost vstoupit do nastavení. Není splněno zadání: V menu tohoto doplňku umožní nastavit dobu neaktivity ovládání v minutách.

... Po několikerých opravách v souboru settings.xml (zakopaný pes), kdy jsem kontroloval podezření na neviditelné znaky, dodával výpisy z logu s výsledkem missing version attribute, nastavoval oprávnění (zkoušel jsem v LinuxMint a pak v LibreELEC), ...se nic nezměnilo - tlačítko Nastavení je šedé, neaktivní.
Protože se výsledek nedostavil ani po dvou hodinách snažení, konstatoval jsem svou neschopnost a ukončil to.
Sice vidím rozdíly proti tvému souboru ale neodůvodním si je.

Pro zajímavost připojím nefunkční doplněk, třeba tě chyba praští do očí okamžitě:
.zip   service.autostop.custom_ERR.zip (Velikost: 2,41 KB / Stažení: 2)
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#9
@meda: Gemini použila nový formát souboru settings.xml. Já jsem lenoch, tak stále ještě používám ten starý, protože jsem se ještě nedokopal k tomu si ten nový formát nastudovat. On sice existuje script, který dokáže ten starý formát převést na ten nový, ale ani k tomu, abych ho použil, jsem se nedostal.

Nicméně, když se podívám na ten obsah co navrhla Gemini, tak tam možná vidím jednu chybu. Řekl bych že type="integer" je špatně. Zkus místo toho type="number".
 
Citovat
#10
@JiRo: Nakonec jsem musel soubor resources/settings.xml úplně zjednodušit, tzv nový formát dělal potíže.
Ještě jsem uplatnil omezení rozsahu range, ale to vůbec nefunguje.
Gemini mi radí použít v service.py omezení pro vstupující hodnotu limit_minutes.
Také vstup jiného znaku než čísla je ošetřený přiřazením 360 (minut), ale jak jsem vyzkoušel, stejně nelze do nastavení zadat například znaky abecedy, vrátí se k číslu.
Nyní jakž-takž funkční doplněk přikládám ale nechám si instalovaný tvůj, věřím, že je lépe vyladěný.
.zip   service.autostop.custom_019.zip (Velikost: 2,36 KB / Stažení: 2)
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#11
@meda: Tak jsem se do toho nového formátu taky dal, a nějak z toho nejsme moudrý. Ten popis v Kodi wiki je žalostný, studuji tedy existující soubory pro Kodi nastavení. Zatím jsme došel ke dvěma poznatkům:
  • ta moje úvaha, že type="integer" je špatně, byl a veskrze nesprávná. Nepochopil jsem Kodi Wiki. 11,
  • použití textu v hodnotě label, místo čísla řetezce (odkaz do language *.po souborů), nefunguje.
Crcám se s tím už 1/2 hodiny a zatím jsme k žádnému pozitivnímu závěru nedospěl. Snad jen k tomu, že ten nový formát (pokud bude fungovat podle popisu) je zatraceně složitý. Je tu sice plno nových možností, ale prokousat se jimi není úplně jednoduché. Asi nezbyde nic jiného, než prolézt kodi.tv fórum. A taky, i když jsem tohle dělat nechtěl, asi použiji ten konverzní script a zkusím si nějaké funkční settings.xml soubory ve starém formátu převést na ten nový a uvidím, co mi z toho vyleze a jestli to bude fungovat stejně.
 
Citovat
#12
@JiRo: Nu, já jen přebírám nápovědy. Nový formát settings.xml, tak jak navrhla Gemini, v Kodi nefungoval. Musel jsem "opsat" tzv plochý formát od tebe.
Ke konečně funkčnímu service.autostop.custom_019 jsem položil dotazy a dostal odpovědi, ze kterých jsem teď vyzobal zajímavosti do PDF - kvůli přehlednému příspěvku tedy přikládám v souboru:
.pdf   autostopOdpovediAi.pdf (Velikost: 67,41 KB / Stažení: 2)
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#13
@meda: Včera jsem tomu věnoval nějaký čas a nakonec to shodil ze stolu. Budu prostě používat starou verzi syntaxe settings.xml jako dosud. Funguje, umím ji a to, co v ní chybí, tedy např. to, že pro některé způsoby zadávání čísla neumí přímo v settings.xml ošetřit meze, řeším až v python kódu a nebo použiji formu zadání, které definovat meze (range) umožňují. Přesně tak, jak ti to poradila Gemini. Maximálně ještě můžu vyzkoušet tu konverzi, ale i u ní jsou prý nějaké části kódu, které ze starého settings.xml do nového nepřevede, takže je otázka, jestli se tím vůbec zabývat. Takže jediné, co by mohlo být efektivní, jít s těmi konkrétními poznatky na fórum kodi.tv, protože jestli v tom parsování settings.xml mají chyby, měli bychom jim to dát najevo, aby to opravili. A jestli děláme chybu my, protože jsme to nepochopili, tak by to mohl být tlak k tomu, aby to team ve wiki pořádně popsal. Tak však víme, jak to ve wiki je, a že ne vždy je tam všechno aktuální. A to samé samozřejmě platí i o AI. A v případě jejich znalostí o Kodi to platí tuplem, pokud předpokládáme, že ona z Kodi Wiki čerpá taky.
 
Citovat
#14
@JiRo: Až mi přebude čas, vrátím se ke zkoušení "plochého" vs "nového" settings.xml jen tak z hecu. Včera jsem tomu věnoval odpoledne a vyčerpalo mne to opakovanou mechaničností pozměň-zazipuj-vyzkoušej-odinstaluj.
Co jsem už neudělal, vyzvat Gemini, aby mi udělala doplněk s "novým" nastavovacím menu, který nic nekoná ...nebo jen to, že ukáže předávané parametry nastavené v menu.
Jestli budu schopen napsat k tomu smysluplný prompt.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#15
@meda: Jen malá rada.

Pokud laboruješ s obsahem settings.xml a pokud máš do Kodi ze systému přístup a můžeš v jeho doplňcích přímo editovat, můžeš ty změny dělat přímo v tom souboru v už nainstalovaném a běžícím doplňku. Pak jen musíš znova projít cestou zadání ze stránky Nastavení > Doplňky / Služby, z řádky doplňku Idle Command (nebo toho, který chceš upravovat):
  • buď přes OK nebo Info na stránku doplňku, kde pak dáš Konfigurovat,
  • nebo rovnou přes Context Menu vybrat a spustit položku Nastavení.
​​​Tím se ti znovu načte aktuální settings.xml. Nemusíš tedy kvůli tomu přeinstalovávat doplněk ze zip, ve které máš novou verzi settings.xml. Musíš se tedy vždy vrátit o ten jeden krok zpět, abys vycházel z toho řádku  doplňku. Pokud zůstaneš na stránce doplňku a jen dáš, po změně obsahu settings.xml, znova Konfigurovat, tak se soubor settings.xml znova nenačte a ty uvidíš ten starý obsah nastavení.
 
Citovat
#16
@JiRo: Díky, použiji. Problémy byly dva, první v tom zašedlém tlačítku Nastavení na stránce Info, druhý podružný ošetření vstupní hodnoty minut v service.py
Tak abych měl jistotu, že nedělám chybu, dělal jsem instalaci. Naštěstí v Kodi na Linux PC, takže to bylo rychlé.
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#17
@meda: Tak ještě snad poslední maličkost. Kodi tedy chyby v settings.xml moc detailně neprotokoluje, ale přeci jen něco se z logu dá získat. Takže je dobré se dívat, co se ti při spuštění doplňku *) do logu zapíše. V případě toho tvého doplňku mi to, při různých hrátkách a snahách přijít tomu na kloub, např. oznamuje:

Kód:
2026-01-11 12:40:55.620 T:98550   error <CSetting>: error reading <control> tag of "idle_minutes"
2026-01-11 12:40:55.620 T:98550 warning <CSettingGroup>: unable to read setting "idle_minutes"

Takže alespoň je hned vidět, kde může být v settings.xml problém, i když je tlačítko Konfigurovat nedostupné (šedivé).

*) V tomto případě se doplněk, protože je to service, spouští hned po spuštění Kodi nebo po jeho (doplňku) instalaci, update nebo po provedení sekvence Zakázat/Povolit.
 
Citovat
#18
@JiRo: Svedl jsem poslední boj o funkční strukturu souboru settings.xml pro nové verze Kodi.
Opět jsem se radil s Gemini a webovými stránkami
> https://kodi.wiki/view/Add-on_settings_conversion
> https://github.com/xbmc/xbmc/blob/master...strings.po

Co jsem nedokázal ani s dopomocí, je přímý zápis textů do parametru label, aby byl funkční.
Nakonec jsem doplnil soubory language strings.po a texty v nastavení se zobrazují. Cvičně česky a anglicky - ale!!! po několikerém přepnutí mi zůstala viset angličtina! Nevím proč?
Gemini neumí podle Kodi Wiki správně radit, poskládal jsem a vyzkoušel strukturu settings.xml sám.
Vložení limitu je v mezích 1 až 1080 minut (18 hodin). Od minuty kvůli zkoušení.

Kód:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings version="1">
    <section id="service.autostop.custom">
        <category id="general" label="32000" help="">
            <group id="1" label="32001">
                <setting id="idle_minutes" type="integer" label="32002" help="32003">
                    <level>0</level>
                    <default>1080</default>
                    <constraints>
                        <minimum>1</minimum>
                        <maximum>1080</maximum>
                    </constraints>
                    <control type="edit" format="integer">
                        <heading>32004</heading>
                    </control>
                </setting>
            </group>
        </category>
    </section>
</settings>

Co mne netěší ale neřeším, že při instalaci nové verze (zkouším na Linux PC) musím použít čištění Temp a Cache plus Restart Kodi, jinak se nová verze s výstrahou ERR nenainstaluje.
V infu a uvnitř jsem ponechal české texty, internacionální ambici nemám.
Finální řešení

.zip   service.autostop.custom_021.zip (Velikost: 4,38 KB / Stažení: 0)
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
#19
@meda: To zapsání přímých textů do label zjevně nefunguje. Mám s tím stejné zkušenosti.

Jinak z té angličtiny se ti to nepřepíná kvůli špatnému obsahu po souborů.Pravidlo je takové, že v anglickém souboru má vypadat definice takto:

Kód:
msgctxt "#32000"
msgid "General"
msgstr ""

Tedy msgid text anglicky, msgstr prázdný řetězec. Ale myslím si, že pokud v msgstr něco je, tak to asi nevadí.

v českém takto:

Kód:
msgctxt "#32000"
msgid "General"
msgstr "Obecné"

Tedy msgid text anglicky, msgstr text česky.
 
Citovat
#20
@JiRo: Ano, také jsem si při porovnávání začal říkat, že to tak, jaks popsal, vypadá. Ale dnes už jsem skončil a zitra nastane čas až odpoledne.
Takže jsem ráno rychle udělal opravu ve v.021 -> #18
#
Na diskuzi jen fórum, ne SZ.
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)