• 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
Dashboard Kodi
#1
V souvislosti s testováním vlivu addon Youtube Library na obsazení paměti mě napadla myšlenka na něco, co jsem nakonec nazval Dashboard Kodi, byť to tak úplně klasický dashboard není a vlastně to není ani dashboard Kodi 1, protože jeho prostřednictvím se sleduje hlavně stav systému, na kterém Kodi běží. Ale napadlo mne, že by to mohl být docela dobrý začátek něčeho, co by nakonec jako Dashboard Kodi mohlo skončit. Berte to tedy jako ukázku a zároveň návod, co a jak by se v této oblasti dalo pořídit. Tento týden jsem měl docela rozlítaný, doslova, a tak jsem trávil hodně času čekáním při přestupech, kdy jsem si mohl rozmyslel, co by se dalo rychle, jednoduše a s minimem času vyrobit. Takže po návratu domů, když jsme se dal dohromady a ještě než se mi sesynchronizovaly biologické hodiny, jsem nabouchal jednoduché řešení.

Určitě se ozve celá řada hlasů, že takové řešení se dá pořídit jednoduše, s pomocí celé řady různých, běžně dostupných aplikací. To je pravda a já mám na to v zásadě dvě odpovědi. První, že mě v tomto případě zajímá především historie. Tzn. mít možnost se podívat zpětně, co se v ten který okamžik v Kodi dělo. A druhá, že jde také o jakési přípravné cvičení, na jehož konci by mohla být univerzální aplikace ve formě addonu Kodi, možná s build-in web serverem, zásuvný modul do webového prohlížeče, ... co já vím. A nakonec ještě poslední poznámka, berte to tak, že mě to baví, přemýšlením o tom jsem strávil jinak nudný čas čekáním a že vytvořit toto řešení mě stálo nakonec méně času, jak o tom napsat tento příspěvek...

Jen drobná poznámka. Toto konkrétní řešení je určené především pro ty, jejichž Kodi běží na distrech Linux nebo na *ELEC systémech. Ve Windows ani na Androidu to fungovat nebude. No a ve velkých Linux systémech (s GUI) to asi potřeba také nebude. A druhá poznámka se týká toho, že pro vytvoření vlastního dashboard zobrazení budete potřebovat nějakou aplikaci, která z dat uložených v souboru dokáže vyprodukovat to, co jsem nazval oním dashboardem. V mém případě to byl MS Excel.

Základem a první částí je trvale běžící script, který sbírá relevantní data a ukládá je v definovaném formátu do souboru csv. Chtěl jsem script spouštět cronem nebo přes sytemd, ale ukázalo se, že s 10 sekundovou periodou spouštění mi to na LibreELEC moc nefungovalo, proto jsem zvolil toto pragmatické řešení. Aby se mi regulární výrazy psaly lépe, vkládám si do scriptu parsované výstupy z použitých aplikací, a nyní jsem je tam pro větší názornost ponechal. Script vypadá takto:

Kód:
#! /bin/sh
# Monitor
log="/storage/monitor.csv"
last=0
rxlast=0
txlast=0
while [ True ] ; do
    #free -m
    #             total       used       free     shared    buffers     cached
    #Mem:          3575       2400       1175        350         87       1511
    #-/+ buffers/cache:        801       2774
    #Swap:            0          0          0
    freemem=$(free -m | grep "cache:" | sed -re "s;.*.cache:\s*[0-9]+\s*([0-9]+).*;\\1;")

    # mpstat
    #Linux 4.19.36 (MEDIA)   08/17/19        _x86_64_        (4 CPU)
    #
    #18:08:47     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    #18:08:47     all   18.24    0.76    8.67    1.53    0.00    0.18    0.00    0.00   70.61
    idle=$(mpstat | grep "all" | sed -re "s;.+all\s+([0-9]+\.[0-9]+\s*){9};\\1;" | tr "." ",")

    #sensors
    #coretemp-isa-0000
    #Adapter: ISA adapter
    #Core 0:       +65.0 C  (high = +90.0 C, crit = +90.0 C)
    #Core 1:       +65.0 C  (high = +90.0 C, crit = +90.0 C)
    #Core 2:       +60.0 C  (high = +90.0 C, crit = +90.0 C)
    #Core 3:       +62.0 C  (high = +90.0 C, crit = +90.0 C)
    cpu0=$(sensors | grep "Core 0:" | sed -re "s;Core 0:\s+\+([0-9]+\.[0-9]+).*;\\1;" | tr "." ",")
    cpu1=$(sensors | grep "Core 1:" | sed -re "s;Core 1:\s+\+([0-9]+\.[0-9]+).*;\\1;" | tr "." ",")
    cpu2=$(sensors | grep "Core 2:" | sed -re "s;Core 2:\s+\+([0-9]+\.[0-9]+).*;\\1;" | tr "." ",")
    cpu3=$(sensors | grep "Core 3:" | sed -re "s;Core 3:\s+\+([0-9]+\.[0-9]+).*;\\1;" | tr "." ",")

    #ifconfig eth0
    #eth0      Link encap:Ethernet  HWaddr DC:FE:07:E1:3E:51
    #          inet addr:10.0.0.13  Bcast:10.0.0.255  Mask:255.255.255.0
    #          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    #          RX packets:20281336 errors:0 dropped:0 overruns:0 frame:0
    #          TX packets:6743390 errors:0 dropped:0 overruns:0 carrier:0
    #          collisions:0 txqueuelen:1000
    #          RX bytes:30650099327 (28.5 GiB)  TX bytes:452169262 (431.2 MiB)
    now=$(date +%s)
    dif=$((now-last))
    rxdat=$(ifconfig eth0 | grep "RX bytes:" | sed -re "s/\s*RX bytes:([0-9]*).*/\\1/")
    rxdif=$((rxdat-rxlast))
    rxlast=${rxdat}
    rx=$((rxdif/dif/132072))
    txdat=$(ifconfig eth0 | grep "TX bytes:" | sed -re "s/.*TX bytes:([0-9]*).*/\\1/")
    txdif=$((txdat-txlast))
    txlast=${txdat}
    tx=$((txdif/dif/131072))
    last=${now}

    printf "%s;%d;%s;%s;%s;%s;%s;%s;%s\n" $(date +'%H:%M:%S') ${freemem} ${idle} ${cpu0} ${cpu1} ${cpu2} ${cpu3} ${rx} ${tx} >> ${log}
    sleep 10
done

Já jsem si v dané chvíli vybral výše uvedené veličiny. Je samozřejmě otázka, které jsou pro dané funkce ty nejvíce vypovídající, ale to bych vdané chvíli asi nechtěl řešit. Změnit pro použité funkce zdroje dat, to je asi to nejmenší.

Produkovaná data vypadají takto:

Kód:
00:00:49;2877;62,67;67,0;67,0;61,0;64,0;0;0
00:00:59;2878;62,51;68,0;68,0;61,0;65,0;0;0
00:01:09;2866;62,38;68,0;68,0;62,0;65,0;0;0
00:01:19;2863;62,23;67,0;67,0;63,0;65,0;0;0
00:01:29;2864;62,09;67,0;67,0;62,0;65,0;0;0
00:01:40;2823;61,98;68,0;68,0;63,0;65,0;0;0
00:01:50;2873;61,82;68,0;68,0;63,0;65,0;0;0
00:02:00;2864;61,69;69,0;69,0;63,0;65,0;0;0
00:02:10;2894;61,59;69,0;69,0;63,0;65,0;0;0
00:02:20;2892;61,46;70,0;70,0;65,0;67,0;0;0
00:02:30;2889;61,38;69,0;69,0;65,0;67,0;0;0
00:02:40;2847;61,16;71,0;71,0;65,0;67,0;38;0
00:02:50;2816;60,82;71,0;71,0;65,0;69,0;135;1
00:03:01;2800;60,43;71,0;71,0;65,0;69,0;125;1
00:03:11;2796;60,06;71,0;71,0;65,0;68,0;137;1
00:03:21;2779;59,71;71,0;71,0;64,0;67,0;134;1
00:03:31;2768;59,53;71,0;71,0;63,0;66,0;133;1
00:03:41;2754;59,31;69,0;69,0;63,0;67,0;129;1
00:03:51;2773;59,24;69,0;69,0;62,0;65,0;130;1
00:04:01;2721;59,10;69,0;69,0;63,0;65,0;129;1
00:04:11;2762;58,98;68,0;68,0;63,0;65,0;131;1
00:04:22;2753;58,86;68,0;68,0;62,0;65,0;110;1
00:04:32;2748;58,76;69,0;69,0;61,0;65,0;123;1
00:04:42;2734;58,62;67,0;67,0;63,0;65,0;130;1
00:04:52;2773;58,66;67,0;67,0;60,0;63,0;127;1
00:05:02;2775;58,71;67,0;66,0;61,0;63,0;129;1
00:05:12;2778;58,76;65,0;65,0;61,0;63,0;127;1

Na druhou část řešení musíte mít k dispozici něco, co dokáže z csv souborů vytvořit požadovaný "ksicht" dashboardu. Já jsem, opět v duchu požadavku rychle, jednoduše a s minimem času sáhl po tom, co jsem měl po ruce, tedy MS Excel. Tady máte samozřejmě více možností, jak tuto část řešit. I já onen Excel používám proto, že ho mám a že jsme věděl, že s jeho pomocí a pár kliků) vytvořím ty funkce, které potřebuji. Chci si hlavně ověřit životaschopnost takového řešení a hlavně si vytvořit podmínky pro jeho další rozvoj. Je jasné, že u Excelu to neskončí. Kam by to mohlo směřovat, to v hlavě mám a napsal jsem to výše, ale tím bych se v tomto úvodu už dál zabývat nechtěl. Ale zpět k Excelu.

V Excelu se výše zmíněná data, která produkuje script běžící v systému s Kodi, načítají pomocí funkce Načíst externí data z textu. Pochopitelně se čtou data z výše uvedeného csv souboru, čímž vznikne jejich otisk ve formátu, s kterým se pak v Excelu dá dělat "téměř cokoliv". Záleží pak už jen na tom, jak Excel znáte a na co si troufnete. Samozřejmě si při definici načítání externích dat můžete nastavit periodu načítání, což vám zaručí, že data v Excel budou v dané periodě korelovat s daty v csv souboru. Ta data v Excelu vypadají nějak takto:

[attachment=5530]

Vytvořit vlastní dashboard, to je pak už jen otázka toho, jak moc Excel znáte a co vše v něm dokážete vyrobit. Já jsem si pro tuto chvíli zvolil funkci Grafy a vytvořil stejnojmennou sestavu s celkem čtyřmi obrázky:

[attachment=5536]

Co dál? To se dá shrnout do několika bodů:
  1. Vylepšit fungování zpracování dat v Excelu (nebo jiném použitém programu této kategorie). To co dnes používám já, tzn. jednoduché zobrazování všech dat vede k tomu, že se grafy, jak běží čas, neustále zahušťují. Jde to udělat několika způsoby. Omezit délku csv souboru, například tak, aby obsahoval pouze maximální počet řádků s nejakuálnějšíi daty. Nebo naopak na druhé straně v Exceu zajistit, aby se do grafů dostával pouze poslední vzorek aktuálních dat. To lze jistě bez problémů zařídit jednoduchým makrem.
  2. Rozšířit počet monitorovaných veličin. Záleží pouze na vaší fantazii a pak hlavně na tom, zda se k těm datům dokážete dostat a získat je v podobě, ve které je můžete umístit do csv souboru.
  3. Vymyslet nějaké jiné řešení, než je Excel, či jiný externí formát, která data bude zpracovávat. Tady je těch možností téměř neomezeně. Jak na straně získávání dat, jejich ukládání, zpracování a nakonec i prezentace. Ale to už přesahuje rámec tohoto příspěvku.
 
Citovat
#2
zaujímavý nápad. len by som pridal k 3 bodu, podľa mňa vhodným riešením by bolo na ukladanie dát použiť influxDB a na vykreslenie grafanu. v tom prípade by bolo na konci scriptu namiesto ukladania do súboru niečo podobné:

Kód:
    curl -i -XPOST 'http://IPadresaDB:8086/write?db=nazovDB' --data-binary 'kodi,device=cpu0 value='${cpu0}'
        kodi,device=cpu2 value='${cpu2}'
        kodi,device=freemem value='${freemem}'
        kodi,device=idle value='${idle}'
        kodi,device=rx value='${rx}'
        kodi,device=tx value='${tx}'';
Grafanu používam už dlhu na vykreselenie nie len grafov.
[Obrázek: grafana.jpg]
[Obrázek: grafana2.jpg]
klienti: 1 x HK Odroid N2(CoreELEC), 2 x Amlogic S905(CoreELEC), S1: RPI3(Raspbian;Domoticz;MySensors;InfluxDB;Grafana), S2: OPiPC2(TVHeadend;MySQL;UniFi Controller)

 
Citovat
#3
@Norton No vida, tak takhle to už začíná dávat větší smysl. Tak až někdy nebudu mít co dělat, zkusím to. Díky za rozšíření obzorů.
 
Citovat
#4
Přehrávání videa Stream-Cinema

Analýza chování Kodi při přehrávání videa v addon Stream-Cinema je jedním z příkladů využití dashboardu. Věřím, že to pro řadu lidí bude poučné a vysvětlí mnohé z toho, jak Kodi vlastně pracuje. 

Přehrával se film X-Men:Dark Phoenix, 1080, 13,30 GB, video cache: buffermode=1 a memorysize=500000000. Zahájení přehrávání cca v 10:52, ukončení přehrávání cca ve 11:22.
[attachment=5623]
Graf volné paměti ukazuje postupné zaplňování bufferu po zahájení přehrávání až do jeho maximální velikosti. Tomu odpovídá i rychlost komunikace, kdy na začátku vyskočí na aktuálně možné maximum (120 Mbps), poté klesne a sleduje aktuální datový tok přehrávaného videa. Vývoj idle stavu CPU ukazuje, že nejnáročnější na procesor je zahájení přehrávání a pak jeho ukončení. Tomu odpovídá i vývoj teplot jednotlivých jader. Zdánlivě paradoxně teplota během přehrávání klesne, a po skončení přehrávání zase stoupne. Ale je to logické. Video se dekóduje v GPU, takže pro CPU je v tomto případě daleko náročnější obsluha zobrazení skinu než přehrávání videa.

Jednotlivé grafy jsou ovlivněny funkcemi Kodi, které běží na pozadí. V grafu rychlosti komunikace je vidět, že se krátce po skončení přehrávání spustilo nahrávání v Tvheadend z OTT (HBO 3).
 
Citovat
#5
To Norton

Taketo grafy sa ti zobrazujú z domoticzu v kodi?Mne by zatiaľ úplne stačilo keby sa mi v info riadku zobrazovala teplota z vonkajšieho senzora.Ale doplnok ktorý by vedel takto zobraziť dáta z viacerých senzorov by bol super.A keby z toho bol widget v skine aeon nox silvo tak to by bolo už top.


Přiložené soubory Miniatury
   
Mecool KII pro S905D, CoreELEC 9.0.1
 
Citovat
#6
@j.jusko Pochopil jsme to správně tak, že ta data o teplotě a vlhkosti máš k dispozici někde na síti ve formátu json? Pokud ano, tak by asi bylo možné napsat Kodi addon (script nebo service), který by ten json periodicky četl a dále zpracovával v různých variantách:
  1. Jako Kodi script - spuštěním scriptu z menu Kodi uživatelem (což lze v Aeon Silvo bez problému uživatelsky definovat) by se spustilo periodické načítání dat z json a ta by se rovnou zobrazovala. Bylo by to na skinu nezávislé, případně by se v rámci scriptu daly vytvořit varianty zobrazení pro jednotlivé skiny. Tzn., že by se přímo do skinu nemuselo zasahovat.
  2. Jako Kodi service - spuštění služby by proběhlo automaticky po náběhu Kodi, služba by periodicky načítala data z json a ukládala je do proměnných Kodi. Z těch by pak bylo možné je zobrazit například v info řádku, jak požaduješ. Má to ale jeden háček, musela by se upravit definice skinu a ta úprava by se pak musela zopakovat pokaždé, pokud by se skin aktualizoval.
Pak samozřejmě existuje i řada dalších kombinací, jak to realizovat, ale ty dvě co jsme uvedl, jsou asi ty dvě základní.

Ještě mě napadlo, že by bylo možné vlastní načítání dat provádět v jednoduchých scriptech (shell, perl, ...) i mimo Kodi a pro vkládání do Kodi použít jsonrpc api Kodi. I tady je k dispozici opět značné množství variant, jak to řešit.
 
Citovat
#7
Presne ako hovoríš data su na sieti vo formate json a podla id na konci linku sa vybera zariadenie v domoticz v tomto pripade aqara senzor teploty.

Bohužiaľ to je tak asi vsetko comu som rozumel z toho čo si napísal. Ale zda sa mi najschodnejsi bod 1.
Obavam sa vsak ze to asi sam nedám. Niekedy existoval doplnok domoticz priamo do kodi ale ten uz je bohužiaľ na aktualnej verzii kodi nefunkčný.

Edit: teraz ked si to ešte raz čítam znamena bod 1 že by som to ruˇˇcne musel spustiť a vtedy by sa to zobrazovalo nonstop niekde aj pri prehravaní videa?
Ak ano potom by bol asi lepši bod dva tam by ak spravne predpokladam zobrazovalo info v info riadku čiže pri prehravaní videa by nič nerušilo.

Jsem uživatel používající Mi 9 SE , který neumí číst pravidla o nepoužívání podpisu z Tapatalku.
Mecool KII pro S905D, CoreELEC 9.0.1
 
Citovat
#8
@j.jusko - nie grafy sú z Grafany, v kodi neriešim zobrazovanie týchto údajov je to zbytočné pre mňa.
klienti: 1 x HK Odroid N2(CoreELEC), 2 x Amlogic S905(CoreELEC), S1: RPI3(Raspbian;Domoticz;MySensors;InfluxDB;Grafana), S2: OPiPC2(TVHeadend;MySQL;UniFi Controller)

 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)