Dataplicity – zdalny dostęp do Raspberry Pi. I przy okazji do Domoticz


Produktywny dzień 🙂

Po zmianie providera internetu stanąłem przed problemem dostania się do Raspberry Pi oraz Domoticz bez zewnętrznego IP. Za takowy adres musiałbym płacić. Warto czasem sprawdzić alternatywy.

Natrafiłem na serwis Dataplicity, który jest dedykowanym rozwiązaniem dla Raspberry Pi.

Do serwisu trzeba się zarejestrować, po potwierdzeniu e-mailem nasze oczy zobaczą kod, który powinniśmy bezpośrednio wprowadzić do terminala Raspberry Pi.

Dodawanie nowego Raspberry Pi
Po kilkunastu sekundach powinniśmy zobaczyć naszą Malinę dostępną w panelu:

Tak proste, że aż zadziwiające. Mamy dostęp do SSH oraz, po odblokowaniu tak zwanego Wormhole do strony na porcie 80. W moim przypadku Domoticz.

Więcej informacji na stronie http://docs.dataplicity.com/docs/. Generalnie instalujemy na naszym Raspberry szyfrowany serwis, który pozwala na zdalny dostęp.

Pozostaje oczywiście mentalny problem dostępu do naszego sprzętu z poziomu obcego serwisu. Jak dla mnie nie jest to krytyczne, rozumiem że dla części z Was może to wykluczyć go z kręgu zainteresowania.

Raspberry Pi i system multi-room oparty na Logitech Media Server

Niedawno przyszła pocztą kolejna Malinka (pierwszą miałem v1 B+, teraz wskoczyła 3 z promocji na Banggood), mogłem więc w nocy dokończyć kolejny projekt.

Zawsze chciałem mieć dźwięk multi-room. Nigdy jednak nie kupiłem głośników które by go obsługiwały (Denon Heos, Sonos, Samsung M) – między innymi ze względu na cenę – aż tak często nie słucham żeby wydać na nie 6-8k PLN. Wolę wydać na coś innego.

Od momentu kiedy kupiłem pierwszą Malinę, chciałem z niej zrobić coś w stylu małego centrum muzycznego. Volumio, Runeaudio czy Moodeaudio są fajne, piękne, ale nie obsługują multiroom (tutaj chyba się to zmieniło w kontekście Volumio i da się to zrobić).

Założenie projektu było następujące:
– multiroom który obsługuje radia internetowe, moją muzykę, spotify, deezer
– możliwe tanio, ale z możliwością zrobienia Hi-Fi gdzie będę uważał za stosowne

Udało mi się (no, nie był to wielki wyczyn w sumie) postawić Logitech Media Server na Raspberry Pi. Produkt co prawda już oficjalnie nie jest rozwijany przez Logitech (szkoda wielka), ale udostępnili kod, dlatego produkt nie dość, że żyje to jeszcze jest rozwijany.

Lista potrzebnych elementów:
– Raspberry Pi. Działa dobrze i na v1 B+, ale postawiłem go finalnie na nowo zakupionej wersji 3 – większa moc i więcej RAM
– karta muzyczna. Jakość standardowego jacka w Pi3 jest podła, trzeba go więc czymś zastąpić. Zacząłem od czegoś bardzo prostego i taniego – http://allegro.pl/karta-muzyczna-dzwiekowa-na-usb-7-1-hurt-f-vat-i6453599436.html
– głośniki – podpiąłem na szybko głośnik przenośny jaki miałem w domu

Instalacja LMS jest prosta: http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-stand-alone-squeezebox-server-and-player-for-bbq/, system wstaje sam, poniżej opis komend.

Serwer:
sudo apt-get install -y libsox-fmt-all libflac-dev libfaad2 libmad0
wget -O logitechmediaserver_all.deb $(wget -q -O – „http://www.mysqueezebox.com/update/?version=7.9.0&revision=1&geturl=1&os=deb”)
sudo dpkg -i logitechmediaserver_all.deb
sudo chown -R squeezeboxserver:nogroup /usr/share/squeezeboxserver/

Do odtwarzania na tym samym sprzęcie użyłem Squeezelite.

sudo alsamixer – tutaj możemy sprawdzić naszą kartę muzyczną po naciśnięciu F6, wybrać poziom dźwięku, etc.

Instalacja bibliotek:
sudo apt-get install -y libflac-dev libfaad2 libmad0

Katalog tymczasowy i ściągnięcie squeezelite:
mkdir squeezelite
cd squeezelite
wget -O squeezelite-armv6hf.tar.gz http://www.gerrelt.nl/RaspberryPi/squeezelite_ralph/squeezelite-armv6hf.tar.gz
tar -xvzf squeezelite-armv6hf.tar.gz
sudo mv squeezelite squeezelite-armv6hf

sudo mv squeezelite-armv6hf /usr/bin

sudo chmod a+x /usr/bin/squeezelite-armv6hf
sudo /usr/bin/squeezelite-armv6hf -l

Poniżej kilka przykładów wywołania i sprawdzenia czy działa karta muzyczna, którą wybraliśmy.

sudo /usr/bin/squeezelite-armv6hf -o default:CARD=ALSA -s 192.168.1.200

W przypadku karty USB możemy podać:
sudo /usr/bin/squeezelite-armv6hf -o front:CARD=Device,DEV=0 -s 192.168.1.200

Dla HDMI:
sudo /usr/bin/squeezelite-armv6hf -o hw:CARD=ALSA,DEV=1

Teraz konfiguracja uruchomienia squeezelite przy starcie systemu:
cd /home/pi/squeezelite
sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite_settings.sh
sudo mv squeezelite_settings.sh /usr/local/bin
sudo chmod a+x /usr/local/bin/squeezelite_settings.sh

sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelitehf.sh
sudo mv squeezelitehf.sh /etc/init.d/squeezelite
sudo chmod a+x /etc/init.d/squeezelite

sudo wget http://www.gerrelt.nl/RaspberryPi/squeezelite.service
sudo mv squeezelite.service /etc/systemd/system
sudo systemctl enable squeezelite.service

cd /home/pi

Ważna sprawa. Musimy zmienić w ustawieniach naszą kartę muzyczną na taką, jakiej będziemy używać.

sudo nano /usr/local/bin/squeezelite_settings.sh

Szukamy:
SL_SOUNDCARD=”sysdefault:CARD=ALSA”
Zmieniamy na wybraną przez nas
SL_SOUNDCARD=”hw:CARD=ALSA,DEV=1″

Można jeszcze zmienić wyświetlaną nazwę:
SL_NAME=”Denon”

Co ciekawe, u mnie wysyłanie na HDMI działa tylko w momencie jeżeli przy starcie systemu odbiornik (u mnie amplituner) był włączony. Później chodzi tygodniami, ale przy restarcie musi go widocznie wykryć.

I na koniec
sudo /etc/init.d/squeezelite start

Sprawdzić wszystko możemy wchodząc na adres raspberry z portem 9000, dla przykładu 192.168.1.200:9000

Konieczne będzie założenie konta na http://mysqueezebox.com/ i podanie danych logowania na naszym serwerze.

Teraz clue! Mądrzy ludzie opracowali PiCorePlayer (https://sites.google.com/site/picoreplayer/home), który jest udostępniony w formie image zajmującego kilkadziesiąt megabajtów. Zgrywasz na kartę, wkładasz, działa. Jeżeli chcesz – ustawiasz połączenie po WiFi i voila – standalone player (jeżeli ktoś chce to może go nawet użyć w samochodzie, bo Malinę zasilisz po USB przecież). Można sobie każdą z instalacji nazwać jak chcesz – Łazienka góra, Łazienka dół, Salon, Sypialnia…

Dostęp do playera czy serwera możemy mieć (oprócz strony internetowej) również przez aplikację Squeezer na Android czy też iPhone (na który jest jeszcze iPeng). Można włączać, wyłączać odtwarzacze, grupować je, decydować czy muzyka gra na jednym czy na wszystkich, dla każdego z playerów można ustawić osobny alarm.

Poszło wszystko 'od strzału’. Radio 3, Antyradio, setki (jeśli nie tysiące) innych stacji dostępnych za kliknięciem. Na deezer posłuchałem Death-metalu, z Tune-in Radio stacji EBM, z mojej kolekcji bajek dla dzieci, z listy pluginów LMS pobrałem ważny dla mnie Bandcamp. Aplikacja Spotify też jest, ale tego nie zdążyłem jeszcze sprawdzić. Można dodawać do ulubionych, tworzyć własne listy odtwarzania, itp, itd. Możliwości konfiguracyjne są bardzo duże.

Minimalny koszt to jakieś 80 PLN za Rpi1 B+ (na serwer) + zapewne 70 PLN za Rp1 B + karta muzyczna + głośniki. Powiedzmy, że 200 PLN za możliwość odtwarzania na dwóch sprzętach.

Dalej poszło już z górki:
– zakup dwóch Rpi B na PiCorePlayery – około 160 PLN
– do salonu gdzie mam porządny sprzęt grający – połączenie ze wzmacniaczem Denon po HDMI – instalacja Squeezelite
– do sypialni tania karta muzyczna + głośniki komputerowe (mogą być i zasilane po USB)
– do łazienki i sauny BlitzWolf (http://www.banggood.com/BlitzWolf-BW-AP1-20W-Mini-12V-Hi-Fi-Audio-Stereo-Power-Digital-Car-Amplifier-FM-MP3-p-1053566.html?rmmds=search) + głośniki łazienkowe. Widzę komplety za 60-80 PLN – nie potrzebuję tam Mozarta w HiFi

Każdemu tutaj oczywiście wedle potrzeb – są i sprzęty DAC (HiFiBerry) za kilkaset złotych które dają świetną jakość dźwięku.

W domoticz jest obsługa Logitech Media Server, w związku z tym:
– jako że nie lubię, gdy sprzęt chodzi i pobiera energię bez potrzeby – każdy player wraz z głośnikiem (jeżeli aktywny) podpięty pod gniazdko 433MHz i zrobione sceny, które: włączą player, ustawią ulubioną stację (oczywiście z możliwością zmiany telefonem), zaczną grać na przykład w łazience o 6:45 gdy wstajemy i idziemy się kąpać a wyłączą o 7:30 gdy wychodzimy z domu
– obsługa pasywnych nie ma sensu pod włącznikiem, bo tutaj Malina pobiera bardzo mało prądu w stanie spoczynku

W Domoticz możemy dodać serwer z poziomu Hardware, gdzie podajemy adres i port. System automatycznie wykryje nasze odtwarzacze.

Jak dla mnie combo Logitech Media Server + piCorePlayer jest fantastycznym systemem dla moich potrzeb.

Życzę miłego słuchania i zapraszam do kontaktu.

Założenia do zrealizowania

No początku był pomysł – połączone siły Raspberry Pi i Arduino w służbie domu i rozwoju.


Z racji potrzeby zakupu gadżetu, przypomnienia sobie programowania i pokazania latorośli możliwości zabaw z elektroniką, komputerami i programowaniem wymyśliłem sobie pewne założenia, które koniec końców miały pomóc monitorować dom. Nie żeby jakoś drastycznie było to potrzebne, ale od przybytku głowa nie boli. Do tego – idzie zima, czasu będzie więcej. Nadmieniam – ostatni kontakt z elektroniką miałem wieki temu, uwielbiam jednak zgłębiać tajniki gadżetów i wiem, że jeżeli jest to tylko możliwe – uda mi się dopiąć swego.


Na początek:
Raspberry Pi + WiFi


  • Kamera internetowa z wykrywaniem ruchu na podjeździe. Tutaj Pi miało służyć wyłącznie jako domowy serwer FTP, na którym byłyby archiwizowane co pewien czas zdjęcia
  • Prosty serwer NAS, który oferowałby rodzinie możliwość słuchania muzyki, lekcji języka wprost z telefonu/tabletu na głośnikach Bluetooth/stacjach dokujących. Z racji posiadania różnych marek telefonów nie mogę się oprzeć na iTunes
  • To samo rozwiązanie, ale w przypadku radia internetowego. W obu przypadkach powinno wystarczyć zastosowanie MPD. Czas pokazał, że lepiej się oprzeć na Logitech Media Server
  • Kamera USB skierowana na ‘leśną’ część domu i robiąca zdjęcia w dzień co 3-4 godziny, zapisująca dane na FTP. Po roku można z tego zmontować całkiem fajny film jak się wszystko wokół zmienia


I to już było wystarczającym uzasadnieniem potrzeby zakupu i zrobienia tego rozwiązania.


Dodatkowo:
Arduino + malinka
  • Podłączenie się do jednej z dostępnych central pogodowych 433MHz i zapisywanie temperatury do bazy SQLite/MySQL
  • Podłączenie po kablu do 2,3 termometrów w domu i zapisywanie tego również w bazie SQLite/MySQL
  • Podłączenie czujek: gazowa, ognia i dymu, czadu z powiadamianiem w razie alarmu
  • Sterowanie czterema gniazdkami 433MHz – żelazko, światło w domu cyklicznie oraz poprzez stronę internetową. Sprawdzenie stanu, wyłączenie jeżeli włączone. Tu ważne aby w razie zaniku prądu i startu systemu gniazdko żelazka nie włączyło się automatycznie samo.
  • Dom jest oświetlony na zewnątrz, sterowany prostym, mechanicznym sterownikiem czasowym (niestety czujkę natężenia światła zamontowaliśmy w kiepskim, zacienionym miejscu i włączała się nawet w dzień). Chciałem zmienić to na Domoticz – włączanie światła po zachodzie słońca i wyłączenie przed wschodem.
  • Jeżeli by się udało – podłączyć czujki pod Domoticz
  • Sterowanie bramą przez internet + tryb ‘Jedziemy do domu’, czyli otwiera się brama garażowa i wjazdowa, zapala światło przed domem. Tutaj po najmniejszej linii oporu – pilot w garażu, który po zasymulowaniu przyciśnięcia przycisku otworzyłby bramy.


Może kiedyś:
  • Implementacja OWL. Zbieranie statystyk z Owl-CM113 – Energy monitor, raportowanie do Domoticz
  • Sterowanie podlewaniem ogródka


Wszystkie z tych rozwiązań widziałem już w pewien czy inny sposób zaimplementowane (np. http://techniczny.wordpress.com/2012/04/02/arduino-zdalne-sterowanie-urzadzeniami-elektrycznymi/), w internecie można znaleźć wiele ciekawych rozwiązań (majsterkowo.pl, http://techniczny.wordpress.com/).

Takie były założenia na koniec 2015 roku. W kolejnych postach opiszę jak rozwiązanie ewoluowało i w co się, jak na razie, zamieniło.

Zapraszam!

Raspberry Pi i prosta automatyka domowa

Zawsze byłem fanem gadżetów…

Czy to 'ruskie jajeczka’, czy pierwsze organizery elektroniczne Casio, NDS z homebrew (czyli programami pisanymi przez amatorów, bez akceptacji 'wielkich’ firm), aż po Raspberry Pi, które okazało się dla mnie takim trochę spełnieniem młodzieńczych marzeń – sprzęt do wszystkiego. Owszem jest PC, jest laptop. Nie dość jednak, że pobierają mnóstwo prądu, to jeszcze zabawa z nim w młodego elektronika jest jednak dość utrudniona.

Spędziłem na razie z Raspberry Pi prawie dwa lata, z 'rozstaniami i powrotami’, zaczynając od wersji B+, już z czterema portami USB i pamięcią 512MB RAM. I ciągle ją mam, ciągle działa tak samo sprawnie, ciągle spełnia moje wymagania. A były z jednej strony dość duże, z drugiej skromne. Zależy jak na to patrzeć.

Chciałem mieć sprzęt, który:
– będzie stabilny i wspierany
– będzie miał dużą, kreatywną społeczność
– daje możliwości rozwoju, głównie mnie
– nie ogranicza mojej kreatywności, nawet kosztem pewnych kompromisów

W pracy zawodowej jako IT zawsze byłem skupiony głównie na Windows. Czy to jako admin, czy implementując systemy IT, czy też jako menedżer projektów. Mimo iż moje korzenie sięgają do DOSa, a nawet Atari 65XE – Windows bardzo ułatwił nam życie. Raspberry zapewniło mi powrót do wymienionych korzeni – bash, root, komendy w trybie znakowym – mają jakiś mit 'elity’. Ale tak serio – nie ma za bardzo innego wyjścia – rozwiązań nie da się wyklikać – trzeba je stworzyć.

A o to mi głównie chodziło – uruchomić mózg. Czasem człowiek w XII wieku czuje się jak wazon, albo zaprogramowany robot – wykonujemy rutynowe działania (wstań, mleko dla córki, śniadanie dla syna, kawa dla żony, odwieź do szkoły, do żłobka, praca, zrób zakupy…), nie mając czasu na tworzenie, czy też odtwarzanie po swojemu, co również jest ciekawe.

Na tym chcę się skupić pisząc tutaj teksty. Głównie dla siebie, ku pamięci. Jeżeli ktoś jednak przeczyta, będzie zainteresowany, komuś będzie to przydatne – jeszcze lepiej!