• 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
  


Příspěvků v tématu
Dashboard Kodi - od Client - 18.8.2019, 12:00
RE: Dashboard Kodi - od Norton - 25.8.2019, 18:10
RE: Dashboard Kodi - od Client - 25.8.2019, 18:50
RE: Dashboard Kodi - od j.jusko - 23.9.2019, 7:47
RE: Dashboard Kodi - od Client - 23.9.2019, 8:54
RE: Dashboard Kodi - od Client - 15.9.2019, 12:07
Dashboard Kodi - od j.jusko - 23.9.2019, 9:57
RE: Dashboard Kodi - od Norton - 28.9.2019, 23:38

Přejít na fórum:


Prochází: 1 host(ů)