XBMC-Kodi.cz
Zjištění způsobu spuštění systému - Verze k tisku

+- XBMC-Kodi.cz (https://www.xbmc-kodi.cz)
+-- Fórum: KODI - Doplňky (https://www.xbmc-kodi.cz/forum-kodi-doplnky)
+--- Fórum: Live TV & PVR (https://www.xbmc-kodi.cz/forum-live-tv-pvr)
+---- Fórum: Tvheadend (https://www.xbmc-kodi.cz/forum-tvheadend)
+---- Téma: Zjištění způsobu spuštění systému (/prispevek-zjisteni-zpusobu-spusteni-systemu)



Zjištění způsobu spuštění systému - JiRo - 23.7.2017

Díky specifické konfiguraci a systému provozu v domácí instalaci jsem dospěl k potřebě umět rozlišit, zda byl systém, na kterém běží společně Tvheadend server a Kodi, spuštěn tzv. RTC Alarm-em  (tzn. díky plánovanému  nahrávání) nebo jinak (DO, klávesnice, Power tlačítko). Důvodem této potřeby bylo to, že pokud se systém spustí díky RTC Alarm, není třeba pouštět server na síti, zatímco při jiném spuštění je to naopak nutné. Nejsem velký znalec Linuxu, ale bylo mi jasné, že velmi pravděpodobně po spuštění nikde informace o tom, jak (čím) k němu došlo, není. Odpověď jak na to jsem našel na blogu GdH Automatické časové zapínání počítače pro nahrání pořadu s Tvheadend.

Mé řešení využívá pouze tu část výše odkazovaného řešení, která po spuštění zjišťuje, zda je aktuální čas systému "blízký" původně nastavenému času spuštění v RTC Alarm. Klíčové je, jak zjistit původně nastavený čas spuštění. Ten je po spuštění už také nedostupný, proto se v každém případě, kdy se hodnota RTC Alarm před uspáním/vypnutím nastavuje, zapsat ji v každém případě současně do souboru. Důležité je ono "v každém případě". Je tedy třeba vědět, kdo všechno může RTC Alarm nastavit. V mém případě, je to pouze TVHeadend Power and Recording Manager (P&RM) addon.

Řešení tedy obsahuje:
  • upravit script /storage/.kodi/addons/service.tvh.manager/resources/lib/shutdown.sh a současně se zápisem hodnoty času spuštění do /sys/class/rtc/rtc0/wakealarm, zapsat stejnou hodnotu (je obsažena v parametru $1) také do souboru, např. příkazem echo $1 > /storage/.config/wakealarm
  • při spuštění systému otestovat, zda je čas spuštění blízký času uloženému ve výše uvedeném souboru. Já mám v současné nastaveno v testu nastaveno časové okno +/= 30 s (*). Pokud ano, tak je pravděpodobné, že systém byl spuštěn díky dosažení času uloženému v RTC Alarm, pokud ne, tak byl spuštěn jinak.
Je třeba se ještě zmínit o tom "je pravděpodobné". Samozřejmě, pokud se svým příkazem na spuštění systému (např. z DO) trefíte +/- do doby, kdy se systém současně spouští díky RTC Alarm, je výsledek testu nejistý. Záleží na tom, zda se trefíte do výše uvedeného časového okna. Z tohoto pohledu je samozřejmě vhodné, aby to okno bylo co možná nejmenší. Ale to je daň za jednoduchost řešení. Otázkou je, zda to lze řešit nějak jinak. Mě osobně to nevadí, zatím jsem se do takovéto stavu nedostal a pravděpodobnost, že se tak stane je velmi nepatrná. Máte-li někdo jiné řešení nebo nápad, rád se s ním seznámím.

(*)  V současné době si rozdíly času zapisuji do souboru, abych zjistil, jaký bude největší rozdíl těchto časů. Podle toho pak velikost časového okna v testu upravím, aby bylo co možná nejmenší.