30.3.2022, 21:14
(Tento příspěvek byl naposledy změněn: 11.12.2024, 19:56 uživatelem JiRo.
Důvod úpravy: Doplnění informací
)
Zobrazení on-line měření rychlosti komunikace v Kodi dělám většinou přes funkce systému. Napadlo mě, že by možná bylo zajímavé, mít takovou funkci přímo v Kodi. Zkombinoval jsem to s tím, že bych se rád naučil něco více o programování addons (plugin i scriptů) a tak v roce 2022 na jeden zátah a přes víkend vznikla první a dosud neveřejná verze addon Kodi Speed Meter, který online vyhodnocuje a zobrazuje rychlost komunikace na vybraném rozhraní. První pokus dopadl vcelku dobře, dlouho jsme to používal jen pro vlastní potřebu, ale kvůli naléhání přátel jsem se nakonec rozhodl, že aktuální verzi zvěřejním. Trvalo to dlouho, protože jsme stále váhal, zda dolněk vypustit mezi lidi i přesto, že není dokonalý a také proto, že jsem ho vytořil v době, kdy jsem ještě neměl takové zkušenosti, jako mám nyní, kdy bych doplněk koncipoval trochu jinak, lépe a dokonaleji. Dalším důvodem bylo, že ne všechny funkce, tak, jak jsem si je naplánoval, jsme dotáhl do konce. V některých případech, hlavně v nastavení doplňku, jsou tedy nedostupné. Chtěl bych, pokud se k tomu dostanu, je postupně dokončit a uvolnit a možná, pokud bude chuť a schopnosti, doplněk překlopit do nějaké dokonalejší verze. 2.0. To ovšem neznamená, že na stávající verzi nebudu dále pracovat podle toho, jakou budu od vás dostávat zpětnou vazbu. Budou-li to náměty smysluplné a já se na jejich realizaci budu cítit, klidně je ještě do stávajcíí verze zahrnu.
Předkládám první veřejnou verzi doplňku Speed Meter, kterou je možné zařadit do mé skupiny tzv. Easy Tols.
Něco málo k řešení
Koncipované je to jako kombinace program doplňku částí script a service, pracující de facto jako dvojice klient - server, které si vyměňují data přes UDP socket komunikaci. Fungovat by to mělo v systémech *ELEC. Já to mám 100% ověřené v LibreELEC a CoreELEC verzí 20 a 21. Teoreticky by to tedy mělo fungovat i v Linux, ale protože jsou v části service využívány systémové příkazy (ifconfig, sed a další), může záležet na tom, jaké verze těchto příkazů budou v konkrétním systému použity. Teoreticky by to také mohlo fungovat i ve Windows (a vlastně mi to už fungovalo), ale byly s tím v poslední době nějaké problémy, tak jsem zatím tuto možnost v distribuované verzi zakázal.
Část service v roli server nedělá nic jiného, než v periodě (v dané verzi je ta perioda pevně 5 s) zjišťuje počet přenesených byte na síťovém rozhraní (v dané verzi je to rozhraní pevně nastaveno na eth0) a z něj pak spočítá průměrnou rychlost komunikace za tuto periodu.
Část script, v roli klient, má na starosti gui funkce. Součástí řešení, na které je funkce postavena, je i definiční soubor skinu, který script pro zobrazení používá. Implicitně se používá default, součástí stávající verze jsou ale i explicitní definice pro skin Estuary, případně Estuary Easy.
Tady by to asi chtělo vysvětlení. Definiční soubor skinu je vlastně předpis, podle kterého doplněk zobrazuje to, co zobrazovat má. Protože v tomto případě je množství infomací, které je potřeba do okna dostat, enormě velké a soustředěné na malé ploše, zvolil jsem při prvním návrhu, který jsem dělal pro Estuary, nejměnší možný font font_flag., a pro Estury Easy si dokonce vytvořil font ještě měnší, font_flagL Tyto fonty se v ostatních skinech nevyskytujeí resp. se tam nějaký podobný vyskytovat může, ale pod jiným názvem. Spustí-li se tedy script v Kodi s jiným skinem, je nahrazen tzv. default fontem daného skinu, který má zpravidla větší velikost. To pak vede k tomu, že se zobrazení stane nečitelným. Já jsem tedy postupoval tak, že pro default skin v doplňku jsem pro tato zobrazení zvolil font10, který ještě zvolenému rozložení zobrazení jakž takž vyhovuje. Znamená to, že u skinů, které font10 používají také, nebo skiny, jejichž default font je stejně velký (nebo menší) jako font10, je zobrazení v pořádku. Pro jiné skiny to ale platit nemusí. Ono tam těch problémů je ještě více, ale nebudu se už do jejich popus pouštět protože to není podstatné. Pokud si někdo doplněk nainstaluje a spustí doplněk a uvidí, že se mu zobrazují nesmyly, může mě zde požádat a já pro něj explicitní definici pro jeho skin vyrobím a umístím do nové verze doplňku. To, které typy skinů jsou s doplňkěm kompatibilní, ať už jako default, nebo explicitně, uvedu zde a zároveň to bude vždy uvedeno v popisu dané verze doplňku.
Jaké funkce dnes doplněk nabízí
Funkce, které jsou k dispozici:
Volba funkcí se zobrazí v záhlaví okna po stisku klávesy OK/ENTER. Ukončení zobrazení volby funkcí pomocí klávesy BACK/BACKSPACE/...
Pohyb po jendotlivých položká pomocí kurzorových kláves RIGHT/LEFT. K dispozici jsou funkce, které se volí nebo ovládají stiskem klávesy OK/ENTER:
Kromě funkcí v nastavení doplňku, které jsou momentálně nedostupné, jsou to:
Doplněk ke stažení
Aktuální verze doplňku v zip formátu ke stažení a instalaci v Kodi je níže připojena.
Něco málo k řešení
Koncipované je to jako kombinace program doplňku částí script a service, pracující de facto jako dvojice klient - server, které si vyměňují data přes UDP socket komunikaci. Fungovat by to mělo v systémech *ELEC. Já to mám 100% ověřené v LibreELEC a CoreELEC verzí 20 a 21. Teoreticky by to tedy mělo fungovat i v Linux, ale protože jsou v části service využívány systémové příkazy (ifconfig, sed a další), může záležet na tom, jaké verze těchto příkazů budou v konkrétním systému použity. Teoreticky by to také mohlo fungovat i ve Windows (a vlastně mi to už fungovalo), ale byly s tím v poslední době nějaké problémy, tak jsem zatím tuto možnost v distribuované verzi zakázal.
Část service v roli server nedělá nic jiného, než v periodě (v dané verzi je ta perioda pevně 5 s) zjišťuje počet přenesených byte na síťovém rozhraní (v dané verzi je to rozhraní pevně nastaveno na eth0) a z něj pak spočítá průměrnou rychlost komunikace za tuto periodu.
Část script, v roli klient, má na starosti gui funkce. Součástí řešení, na které je funkce postavena, je i definiční soubor skinu, který script pro zobrazení používá. Implicitně se používá default, součástí stávající verze jsou ale i explicitní definice pro skin Estuary, případně Estuary Easy.
Tady by to asi chtělo vysvětlení. Definiční soubor skinu je vlastně předpis, podle kterého doplněk zobrazuje to, co zobrazovat má. Protože v tomto případě je množství infomací, které je potřeba do okna dostat, enormě velké a soustředěné na malé ploše, zvolil jsem při prvním návrhu, který jsem dělal pro Estuary, nejměnší možný font font_flag., a pro Estury Easy si dokonce vytvořil font ještě měnší, font_flagL Tyto fonty se v ostatních skinech nevyskytujeí resp. se tam nějaký podobný vyskytovat může, ale pod jiným názvem. Spustí-li se tedy script v Kodi s jiným skinem, je nahrazen tzv. default fontem daného skinu, který má zpravidla větší velikost. To pak vede k tomu, že se zobrazení stane nečitelným. Já jsem tedy postupoval tak, že pro default skin v doplňku jsem pro tato zobrazení zvolil font10, který ještě zvolenému rozložení zobrazení jakž takž vyhovuje. Znamená to, že u skinů, které font10 používají také, nebo skiny, jejichž default font je stejně velký (nebo menší) jako font10, je zobrazení v pořádku. Pro jiné skiny to ale platit nemusí. Ono tam těch problémů je ještě více, ale nebudu se už do jejich popus pouštět protože to není podstatné. Pokud si někdo doplněk nainstaluje a spustí doplněk a uvidí, že se mu zobrazují nesmyly, může mě zde požádat a já pro něj explicitní definici pro jeho skin vyrobím a umístím do nové verze doplňku. To, které typy skinů jsou s doplňkěm kompatibilní, ať už jako default, nebo explicitně, uvedu zde a zároveň to bude vždy uvedeno v popisu dané verze doplňku.
Jaké funkce dnes doplněk nabízí
Funkce, které jsou k dispozici:
- průběžné zobrazení posledních 37 měření (pro tři poslední minuty komunikace) ve formě sloupcového grafu,
- zatím je to fix v kroku po 5 sekundách, plánuji to definovat jako parametr, klidně od 1 až 2 s, ale s rizikem neúměrné zátěže CPU, až např. do 30 s (více asi nemá smysl). Zátěž CPU není úplně malá ani při těch 5 s, je ale fakt, že to nijak neřeším, protože mám vesměs výkonné stroje. Ale prostor pro nějaké optimalizace tam patrně ještě bude,
- průběžné vyhodnocování a zobrazení minima a maxima (vždy z posledních 37 hodnot) a výpočet průměrné hodnoty rychlosti,
- suma přenesených byte od zahájení měření
- zobrazení výše uvedených tří veličin ve formě dynamických ukazateků v zobrazení (tři svislé barevné čáry odpovídající barvě příslušné veličiny),
- změna měřítka na základě vyhodnocení maximální hodnoty rychlosti
- zobrazení grafu v malém okně s minimem dalších informací a s možností okno přesouvat po obrazovce v 9 přednastavených pozicích (matice 3x3)
- možnost změny vybraných parametrů zobrazení přímo v okně doplňku
Volba funkcí se zobrazí v záhlaví okna po stisku klávesy OK/ENTER. Ukončení zobrazení volby funkcí pomocí klávesy BACK/BACKSPACE/...
Pohyb po jendotlivých položká pomocí kurzorových kláves RIGHT/LEFT. K dispozici jsou funkce, které se volí nebo ovládají stiskem klávesy OK/ENTER:
- zobrazení grafu v malém okně
- výběr zobrazení DOWNLOAD nebo UPLOAD
- změna úrovně průhlednosti okna (ve stupních 0 až 7)
- smazání buferr
- zapnutí nebo vypnutí synchronizovaného mazání bufferu při zahájení přehrávání videa
- spuštění nastavení doplňku. POZOR, pokud je spuštěno nastavení doplňku, tak se zastaví obnova zobrazení. Obnoví se až po ukončení nastavení, kdy se cca v 1 sekundové periodě zobrazení dotáhne do aktuálního času.
- ukončení doplňku
- ukončení doplňku, pokud nejste v režimu zobrazení nastavení, se provede pomocí klávesy BACK/BACKSPACE/...
- ukončení zobrazení malého okna a návrat do zobrazení normálního okna se provede pomocí klávesy OK/ENTER
- změna pozice malého okna na obrazovce kurozorovými klávesani LEFT/RIGHT/UP/DOWN
Kromě funkcí v nastavení doplňku, které jsou momentálně nedostupné, jsou to:
- možnost spuštění více instancí scriptu. To zatím v doplňku není ošetřeno. Pokud se to stane, zobrazí se na popředí poslední spuštěná instance a data ze service se začnou zobrazovat v ní. PO jejím ukončení se data začnou (dotáhnou se ta nezobrazená) v původní instancí.
- funkce doplňku jsou 100% ověřeny pro LibreLEC a CoreELEC instalace. Je možné, že doplněk bude fungovat i v ostatních Linux distribucích. Pokud to někdo vyzkouší, prosím, podejte o tom zde infromaci.
- pro použití ve Windows doplněk plánuji upravit,
- pro použití v Android bych to rád udělla také, ale tady to bude asi o chlup složitější,
- o použití v ostatních instalacíh zatím vůbec neuvaýuji,
- objevila se zpráva, že na slabších boxech doplněk při spuštění extrémně zatěžuje CPU a díky tomu narůstá i teplota. S tím momentálně nic nedokáži udělat. Já sám žádné "slabší boxy" doma nemám, tak jsme si tohle ověřit nemohl. Mám sice nápad, jak doplněk přepracovat, aby se jeho nároky na CPU snížily, ale ta úprava by musela být opravdu zásadní a výsldek by ani nebyl 100% garantovaný. Takže se mi nedivte že se mi do toho teď zatím moc nechce.
- a nakonec omluva slovenským přátelům. Zatím nemám texty ve slovenštině, ale slibuji, že v další verzi už to napravím.
- slovenština
- jiná rozhraní než eth0
- instalace pro Windows instalace Kodi
- zamezení spuštění dalších instancí
- postupné uvolnění neodstupných funkcí nastavení
- další mody zobrazení
- ...
- nyní je doplněk ve verzi, které říkám Alpha. Myslím tím, že je ve velmi rané fázi, co se týče jeho běžného používání a uživatelé by měli být opatrní.
- zatím bude doplňek dispozici ke stažení v zip zde na fóru, časem ho samozřejěm plánuji umísti do zdejšího repozitáře
- Explicitně podporované skiny:
- Estuary - id: skin.estuary
- Estuary Easy - id: skin.estuary-easy
- Estuary - id: skin.estuary
- Skiny jejichž zobrazení s default definičním souborem a nastavením rozllišení Kodi 1080 bylo ověřeno a funguje správně:
- Confluence - id: skin.confluence
- Confluence SCC Omega - id: skin.confluence.scc
- Estuary (Hardo) SCC Omega - id: skin.estuary.scc.omega
- Confluence - id: skin.confluence
Doplněk ke stažení
Aktuální verze doplňku v zip formátu ke stažení a instalaci v Kodi je níže připojena.