W trzecim odcinku Fred opowiada o weekendowym projekcie automatyzacji gniazdka Belkin Wemo. Celem operacji jest przybliżenie się do komputerowej Nirvany. Pożądany scenariusz działania budowanego systemu jest następępujący: Cubox i4Pro jest podpięty do wzmacniacza stereo przewodami RCA. Wzmacniacz stereo jest wyposażony w "głupi", mechaniczny włącznik/wyłącznik. Wzmacniacz stereo jest podłączony do zasilania poprzez sterowane za pośrednictwem Wi-Fi gniazdko Belkin Wemo. Kiedy Cubox zaczyna odtwarzać jakąkolwiek muzykę z dowolnego źródła (MPD, Bluetooth, Pulseaudio remote sink), to gniazdko Wemo włącza się. Kiedy muzyka przestanie grać, to gniazdko Wemo ma wyłączyć się po upływie zadanego czasu (coś na zasadzie pętli "histerezy"). Repozytorium github z kodem do odcinka: link
Odcinek dostępny także na Youtube: link
Poniższy opis nie jest tutorialem tylko kilkoma generalnymi wskazówkami/dokumentacją. Kod jest tak prosty że będzie zrozumiały dla każdego potencjalnego odbiorcy tego posta :) Jeżeli jednak czegoś nie rozumiesz a chciałbyś zrozumieć - daj znać, pomożemy!
Wymagany software/hardware (sama koncepcja znajdzie zastosowanie w dowolnym podobnym projekcie, te wymagania dotyczą kodu z załączonego repo):
perlbrew i zainstalowany perl 5.16.0 (lub inny "nowożytny")
dystrybucja Linuxa wykorzystująca systemd
gniazdko Belkin Wemo
urządzenia na którym uruchamiamy projekt podpięte do tej samej sieci lokalnej co gniazdko Wemo
Ogólne kroki jakie należy wykonać dla odtworzenia działania projektu: ( więcej wskazówek w repo na githubie)
O TYM ZAPOMNIAŁEM W VIDEO!!!!: przed uruchomieniem właściwych programów sterujących gniazdkiem, należy utworzyć katalog i plik: [crayon-5c4b5e5cebe7d268745582-i/]
należy zainstalować wymagane pakiety Perla:
[crayon-5c4b5e5cebe87944909687/]
oraz przeskanować sieć lokalną w poszukiwaniu urządzeń Wemo uruchamiając skrypt: scanDevices.sh
upewnić się, że skrypty turnAmpOn.sh i turnAmpOff.sh działają jak należy. Oczywiście należy pozmieniać w nich wartości odpowiednich zmiennych sterujących
w pliku monitorSoundcard.sh podmienić numer karty dźwiękowej na kartę, którą chcesz monitorować
sprawdzić, czy główny program realizujący logikę rozwiązania działa jak należy, uruchamiając lokalnie: monitorSoundcard.sh
jeżeli wszystko działa jak należy, teraz trzeba utworzyć usługę systemd, korzystając z plików w katalogu. Poza główną usługą realizującą sterowanie gniazdkiem, jest też druga usługa, która raz dziennie skanuje sieć lokalną w poszukiwaniu urządzeń Wemo.
Schemat algorytmu sterującego pracą gniazdka Wemo: