Domoticz on PI with relay

Przekaźniki, kontaktrony, Wake-on-LAN oraz Z-Wave – czyli Domoticz oraz Imperi Home w służbie domu – część pierwsza

Domoticz on PI with relay
Domoticz on PI with relay

Ten wpis początkowo miał służyć tylko jednemu prostemu celowi – jak stworzyć stosunkowo szybko rozwiązanie, które może otworzyć bramę, furtę czy inne urządzenie – symulując naciśnięcie guzika pilota, albo przycisku – przez Internet, z smartfonu, tabletu, przeglądarki albo własnej aplikacji na działającej w Androidzie. Ponieważ jednak zastosowany Domoticz oraz inne rozwiązania dają znacznie większe możliwości – będziemy mieli oryginalną część pierwszą oraz kolejne mniej lub bardziej rozbudowane.
Dość ciekawą inspiracją był kolega z grupy MalinowePi na Facebook – Roman Kubat, który przedstawił ImperiHome, co z kolei spowodowało zmianę w podejściu do prostego problemu.

Co będzie potrzebne?

Sprzęt:

  • Rapberry Pi (wersja A lub B, B+, 2 albo nawet wersja Zero)
  • przekaźnik – najlepiej wersja z dwoma przekaźnikami
  • karta micro SD – 4GB lub większa
  • przewody – tzw. jumper cables – posłużą do podłączenia przekaźników

Oprogramowanie:

Do dzieła!

Ponieważ zwykle czynimy założenia – to już mamy, to umiemy – tym razem zabierzemy się do tego od absolutnego początku. Instalujemy Rasbiana!
Pobieramy ze strony https://www.raspberrypi.org/downloads/raspbian/ aktualny ZIP instalacja_rasbiana z obrazem dystrybucji dla Raspberry Pi. Po rozpakowaniu w zależności od używanego przez nas systemu operacyjne na desktopie – dla Windows: wkładamy kartę micro SD do czytnika i lokalizujemy dysk z jej zawartością: dysk_h. Następnie uruchamiamy Win32disimager, otwieramy nasz rozpakowany obraz dystrybucji Rasbian i wybieramy Zapisz: win32imager. Po kilku minutach obraz zostanie poprawnie nagrany na kartę micro SD. Pozostaje ją bezpiecznie usunąć i włożyć do Raspberry Pi. Po podłączeniu klawiatury oraz monitora – podłączamy zasilanie i obserwujemy komunikaty uruchamiania systemu. Logujemy się za pomocą klawiatury używając monitora podłączonego przez HDMI, albo zdalnie przez za pomocą ssh – użytkownik pi, hasło raspberry. System wyświetla kilka opcji – z których praktycznie konieczna jest opcja rozszerzenia pojemności karty do jej całkowitej wielkości – ponieważ obraz ma tylko 2GB. Koniecznie więc wybieramy tą opcję i czekamy trochę po ponownym uruchomieniu na wykonanie. Tak więc 1. Expand Filesystem, a przy wyjściu potwierdzamy ponowne uruchomienie!

Instalacja Domoticz w Raspbian

Domoticz ? To nasze główne oprogramowanie do sterowania – bardzo rozbudowane, ale o prostej funkcji – zarządzanie przez WWW lub aplikacje dedykowane przełącznikami, włącznikami, czujnikami i… jeszcze wiele innych. A więc, aby poprawnie zainstalować domoticz, aktualizujemy naszą dystrybucje – Raspbiana uruchomionego na Raspberry Pi:

Ostatnia komenda uruchomi ponownie Pi, a pierwsza poprosi o potwierdzenie atualizacji. Po uruchomieniu, jeszcze jedna aktualizacja -tym razem jądra – obecnie z gałęzi 4.x:

Tym razem po kolejnym reboocie, instalujemy potrzebne pakiety – które są częścią dystrybucji, ale standardowo celem oszczędzenia miejsca nie są instalowane:

Po potwierdzeniu pobierania pakietów – zauważmy, że będzie ich znacznie więcej, ponieważ wybór podstawowych niesie ze sobą pewne zależności – wreszcie po ich instalacji – przystępujemy do zainstalowania właściwego domoticza – paczki binarnej:

Wykonujemy serię komend:

Powinny dać taki efekt:

Udało się? Świetnie, teraz nakazujemy domoticzowi uruchamiać się przy starcie systemu (a więc i po restarcie)

Teraz odpowiednio skonfigurujmy domoticza – niech uruchamia się z prawami domyślnego użytkownika pi, oraz na porcie 8080 (ponieważ na standardowym porcie 80 może uruchomimy coś innego):

Uruchamiamy edytor:

Plik po edycji powinien wyglądać tak – chodzi o właściwe linie, wyjście z edytora CTRL+x, a następnie potwierdzamy y albo t:

Teraz testujemy poprawność ustawień i praw dostępu, jesteśmy nadal w katalogu /home/pi/domoticz:

Wynik jakiego się spodziewamy:

OK, działa! Zakładając że adres IP naszego Pi to 10.20.30.40- w przeglądarce wpisujemy :http://10.20.30.40:8080 i powinniśmy zobaczyć taki ekran:

Czysty Domoticz
Czysty Domoticz

A więc ostatni test – prosimy domoticza o zamknięcie procesu – wciskamy CTRL+c i otrzymujemy:

Wreszcie uruchamiamy Pi ponownie (sudo reboot) i weryfikujemy czy domoticz nadal działa po reboocie

Instalacji WiringPi

WiringPi to ważna bilbioteka, która pozwoli na komfortową obsługę przekaźnika przez piny GPIO, o czym za chwilę. Najpierw instalacja:
WiringPi należy zbudować, co oznacza, że instalacja zaczyna się od pobrania repozytorium z tzw. git (jeśli nie zainstalowałeś z jamkegoś powodu domoticza albo trafiłeś do tego akapitu – upewnij się, że masz git: sudo apt-get install git-core):

W efekcie dostaniemy taki wynik:

Upewnijmy się, że mamy najnowszą wersję:

Budujemy:

Proces przebiega następująco:

Skrypt zbuduje i zainstaluje, pozostaje przetestować:

Instalacja przekaźnika

Czas wyjaśnić po co nam przekaźnik ? Otóż będziemy symulować naciśnięcie przycisku – na około 1 sekundę. Tak jak działa Twój przycisk do otwierania bramy, lub tak jak działa pilot radiowy – który najczęściej także powoduje krótkie włączenie przycisku. My użyjemy więc PI, poprzez GPIO do sterowania zwieraniem obwodu (a więc wciśnieciem przycisku) na sekundę – a następnie jego zwolnieniem. Przekaźnik ma na celu zabeczenie naszego systemu przed przepięciami i obecnością zasilania w obwodzie przycisku. Jak zauważyłeś Pi posiada wyprowadzenia w postaci pin (małych bolców). Różne wersje Pi mają ich więcej lub mniej – wybieramy więc arbitralnie – czyli numer 4.
Wracamy do domoticz i tworzymy wirtualny przycisk – taki który rzekomo nic nie robi. Wybieramy z menu Setup a następnie Hardware i dodajemy (Add):

Domoticz - dodaj port dummy
Domoticz – dodaj port dummy

Dlaczego właśnie tak ? Ponieważ chcemy mieć kontrolę nad działaniem przycisku w taki sposób:

  • Przycisk działa zawsze po kliknięciu/wybraniu (nie jest typu On/Off), nawet jeśli jest typem przełącznika
  • Do czasu naciśniecia – ma otwarty obwód wirtualnego przycisku, następnie po naciśnięciu a sekundę zamyka obwód przekaźnika, a następnie znowu rozłącza obwód

Teraz stworzymy właściwy przycisk do głównego Menu i podłączymy pod niego skrypt w języku LUA, który wykona powyższe zadanie:
Mamy już dummy switch – wybieramy Create Virtual Sensors, ponieważ – dummy służy do zrobienia praktycznie wszystkiego – wybierzemy więc „Switch”:
add-dummy-switch
Teraz z menu Setup a następnie Devices – zaznaczymy naszego Dummy i klikamy zieloną strzałkę po prawej stronie tworząc przycisk, który pojawi się w menu Switches:

Adding switch
Adding switch

Pozostaje nam dodać przełącznik, ale nadajmy mu po prostu nazwę „Garaz” bez polskich liter (w przykładzie jest trochę inaczej):

Switch and new Icon
Switch and new Icon

Pozostaje umieścić poniższy skrypt w katalogu: ~/domoticz/scripts/lua, koniecznie pod nazwą: script_device_Garaz.lua
Garaz powinien tez nazywać się nasz przycisk inaczej domoticz nie zechce wykonać skryptu.
Kod skryptu otwierającego bramę:

Podłaczyć zasilanie i sterowanie do przekaźnika i… przetestować!
+5V, GND oraz GPIO4 – podłączamy – po kliknięciu przekaźnik na jedną sekundę powinien zamknąć z trzaskiem obwód (zwykle także zaświeci LED), a następnie rozłączyć:

Pi B+ and relay - connected
Pi B+ and relay – connected

Jeśli zastanawiasz się teraz po co jadłeś tą żabę – cóż – program który później będzie sterować naszym rozwiązaniem – ImperiHome nie obsługuje przycisków tylko przełączniki. Stąd cała maskarada. Czy można to było zrobić prościej? Ba! Ale – postanowiłem to zostawić, bo być może przyda się komuś jako podejście trochę niestandardowe.