AmbiTV 2

Inštalácia

AmbiTV

Idem si napraviť reputáciu, keďže mám tu viac nedokončených článkov a pokračujem v článku o AmbiTV. V predchádzajúcej časti som opísal jednotlivé komponenty a ich zapojenie. Teraz sa poďme pozrieť bližšie na softwareové vybavenie.

Základom všetkého je software nazývaný Hyperion. Ten si viete samostatne nainštalovať alebo použiť vytvorenú linux distribúciu nazvanú Hyperbian (lebo je postavená na Debiane) určenú pre toľko spomínané Raspberry Pi (ďalej len RPi). Bohužiaľ toto je aj aktuálne veľmi veľká nevýhoda. Keďže tu máme čipovú krízu momentálne kúpiť nové RPi nie je možné. Dúfam, že sa to čo najskôr zmení.

Ako som už skôr spomenul srdcom tohto celého bude RPi u mňa 3B. Ak nemáte skúsenosti s linuxom, nebojte sa nejde o nič ťažké. Kompletný návod (v anglickom jazyku) na inštaláciu nájdete na domovskej stránke, no ja sa ju pokúsim aj tu popísať. Najprv je potrebné stiahnuť zbalený obraz celého OS, ktorý je potrebný nahrať na SD kartu. Obraz ma niečo cez 2GB, takže budete potrebovať minimálne 4GB kartu. Na nahratie obrazu ja pod linuxom používam program Balena Etcher ale je dostupný aj pre Windows operačný systém.

Ak budete vaše raspberry pripájať cez wifi, je potrebné urobiť nasledujúce krok. Na partíciu boot vytvoriť súbor wpa_supplicant.conf do ktorého vložíte nasledovne dáta.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=SK

  network={
    ssid="YOUR_SSID"
    psk="YOUR_PASSWORD"
    key_mgmt=WPA-PSK
  }

A pre ssh pripojenie je potrebné vytvoriť prázdny súbor s názvom ssh taktiež na partíciu boot. Po tomto vložte SD kartu do raspberry a môžete štartovať.

Ako sa pripojiť

Ako som už vyššie spomínal ide linuxovú distribúciu, na ktorú je možne pripojiť sa cez ssh konzolu. Windows používateľom to nemusí nič hovoriť, ale ide o prihlásenie sa na zariadenie cez príkazový riadok. Ak to budete chcieť urobiť musíte si vo Windowse stiahnuť program PuTTy. Po spustení programu sa vám zobrazí nasledujúce okno. Do kolónky Host Name (or IP address) vložíte ip adresu vášho raspberry a pripojíte sa stlačením tlačítka Open. Následne sa PuTTy pokúsi spojiť a vyžiada si od vás prihlasovacie meno a heslo. Užívateľské meno je hyperion a heslo ambientlight.

Môj skript

Keďže podľa môjho súkromného názoru Hyperbian nie je dotiahnutý na 100% urobil som mali skriptik, ktorý to dokonči podľa mojich predstáv. Takže prihláste sa na Raspberry, skopírujte a spustite nasledovný príkaz.

wget dzooky.eu/uploads/my_hyperion.sh && chmod +x my_hyperion.sh && sudo ./my_hyperion.sh

Ten urobí nasledovne:

  • stiahne skript z môjho servera
  • nastaví práva aby sa dal skript spustiť
  • spustí samotný skript

A čo vlastne robí skript?

  • zmení heslo pre užívateľa hyperion na vami zvolené
  • aktualizuje operačný systém a vymaže staré veci
  • pridá aliasy (skratky)
  • doinštaluje potrebné baličky/nástroje (jq, mc, shellinabox)
  • umožní automatické zapínanie/vypínanie led pásu buď v pevne daný čas alebo pri východe/západe slnka na základe vami zvolenej polohy a pravidelne sa každý deň bude aktualizovať
  • prestaví spúšťanie služby pod užívateľa root tak aby všetko správne fungovalo
  • reštartne Raspberry

Keďže ako som spomínal skript pridá aliasi, môžete sa z času na čas pripojiť a spustením príkazu fix sa spustí aktualizovanie systému. Taktiež skript zabezpečí inštaláciu balička jq potrebného pre spracovanie json súborov, mc balíček pre Midnight Commander (správca súborov) a balíček shellinabox pomocou, ktorého sa na raspberry budete môcť pripojiť cez web rozhranie otvorením stránky https://ip_vasho_raspberry:4200

Hyperion a jeho konfigurácia

Teraz poďme k samotnej konfigurácii hyperionu, ktorý bude zabezpečovať ambientné podsvietenie. To sa taktiež robí cez webové rozhranie. Stačí si otvoriť v prehliadači http://ip_vasho_raspberry:8090

Po otvorení vo vašom prehliadači si aj tu zmeňte heslo a kliknutím v pravo hore na kľúč si nastavte úroveň na Expert. Jazyk ja nechávam anglicky a rovnako to tu aj ja budem popisovať.

Ďalší krok, si vyberieme v ľavom menu Capturing Hardware a v sekcii USB Capture zaškrtneme Activate a vyberieme dostupné zariadenie a zvýšime si rozlíšenie (Device Resolution) a uložíme nastavenia.

V ďalšom kroku sa prepneme do sekcie LED Instances/LED Output. Pred týmto nastavovaním je potrebné vedieť koľko máte dokopy lediek a koľko ich je na ktorej strane a kde začína led pás. V záložke LED Controller si ako Controller type zvolíme ws281x, Maximum LED count nastavím na hodnotu, ktorá je počet všetkých lediek a na rovnakú hodnotu nastavíme aj parameter Hardware LED count. RGB order pri tomto type led pasu prestavíme na GRB a uložíme.

Prepíname sa do tabu LED layout a vyberáme Classic Layout (LED Frame). Tu nastavíme počet lediek na jednotlivých stranách a polohu začiatku pásu.

V pravo máte aj zobrazené jednotlive led so začiatkom pásu. Nad týmto zobrazením je vypísaná odporúčaná hodnota potrebného zdroja. Zobrazenie, ktoré je v LED Layout Preview je pohlad z predu na telku.

Teraz sa prepneme do sekcie Image Processing. Ja hodnotu Brightness nastavujem na 10% alebo menej, pretože na môj vkus to svieti príliš silno. Takto môžete šetriť na napájaní.

Tuning

Teraz prejdime k malému dolaďovaniu. Najlepšie by bolo, keby pri vypnutej telke led diody nesvietili. To je niekedy problém docieliť, treba proste experimentovať. Prvé čo treba vyskúšať je vypnúť zdroj signálu a pozrieť sa do Led Instances/Led Output záložka Led Layout a zapnete si Live video. Ak tam bude sama čiernota a led nebudú svietiť tak ste vyhrali nemusíte nič riešiť.

Dúha

Ak ste nemali to šťastie a uvidíte tam dúhu ale aj tak vám led nebudú svietiť s najväčšou pravdepodobnosťou budete mať led vypnuté. Prepnite sa do Dashboardu a zapnite si ich. Po tomto úkone budu rovnako svietiť aj led.

Dlho som hľadal a snažil sa prísť na to, aby led diódy nesvietili. Ani fóra mi nepomohli. Princíp spočíva v tom, že je potrebné nájsť nejakú farbu z tej dúhy a ak sa nájde vypne to led pás. Takže je potrebné prejsť na Capturing Hardware. V spodnej časti zaškrtnúť Signal detection a tak sa nám objavia ďalšie možnosti nastavenia. Hodnoty Red, Green a Blue signal threshold nastavíme na 100 čo je biela farba. Hodnoty Signal Detection VMin a Signal Detection VMax necháme tak ako sú a hodnoty Signal Detection HMin nastavíme na 0.01 a Signal Detection HMax na 0.1. Tým sme nastavili polohu, kde sa má hľadať tá biela farba.

Toto nastavenia by malo pomôcť vypnúť led diódy respektíve aby nesvietili ak nie je zapnutý zdroj signálu. Pozor toto si netreba pliesť s vypínaním led v Dasboard alebo vypínanie pomocou môjho skriptu o ktorom som písal už skôr.

Efekty

Teraz si poviem niečo k efektom. Tento software umožňuje aj nejaké efekty, ktoré môžete použiť ako „křovi“. Samotné efekty sú predom nadefinované alebo si môžete urobiť aj svoje. Mojím najobľúbenejším je Knight Rider. Prepnite sa do sekcie Effects Configurator, v pravo Delete/Load Effect si vyberiete efekt. Kliknete Load Efekt. Následne v pravo dole kliknete na Start test/Continuous Test. Hyperion umožňuje aj spustenie efektu pri samotnom boote. Toto nájdete v sekcii Led Instances/Efects a Boot Effect/Color. Rovnako si viete nastaviť nejaký efekt pri nečinnosti Background Effect/Color.

Appky

Svoje ledky môžete ovládať aj pomocou aplikácie v mobilnom telefóne či tablete. Pre iPhone je to aplikácia s názvom Hyperion Remote. Bohužiaľ nie všetky funkcie sú voľne dostupné (ako inak). Dokážete si vybrať len farbu a jas lediek.

Pre Android telefóny su dostupné dve verzie aplikácie. Hyperion Free a Hyperion, za ktorú si zaplatíte 1.19€. Čo sa týka tej Free verzie, tak viete robiť to isté čo v tej neplatenej iPhone verzii.

Tie spoplatnené verzie dokážu detailnejšie nastaviť led alebo rozsvietiť led na základe nejakého obrázku atp.

Záver

No a máme tu záver. Keďže je to už môj niekoľko ročný projekt asi veľmi ťažko sa dostanem k cene koľko ma to celé vyšlo. Môj skromný odhad RPi+ Led pás + zdroj odhadujem, že bude okolo 100 eur plus mínus autobus. A na úplný záver aj video ako to celé funguje.

Odkazy

HyperBian návod
Balena Etcher
PuTTY

Hyperion Remote (iOS)
Hyperion Free / Hyperion (Android)