Kurs Raspberry Pi, projekty – #3 – Domoticz, kamera, GPIO

Kurs Raspberry Pi, projekty – #3 – Domoticz, kamera, GPIO

Za nami podstawowa instalacja Domoticza oraz podłączenie pierwszego czujnika. Teraz czas na porty GPIO oraz wykorzystanie kamery.

Sprawdzimy również działanie harmonogramów i scen, czyli obowiązkowych elementów każdego systemu inteligentnego budynku.

Artykuł ten jest częścią serii wpisów opisujących praktyczne wykonanie różnych projektów bazujących na Raspberry Pi (popularnym komputerze jednopłytkowym). W tym artykule skupiamy się na wykonaniu konkretnego projektu. Jeśli nie znasz podstaw tego układu (instalacja, konfiguracja, praca z Linuksem) to niezbędne informacje znajdziesz w poprzednim kursie podstaw Raspberry Pi.

Czego nauczysz się z tego poradnika?

Podczas wykonywania ćwiczeń z tego artykułu poznamy sposób konfiguracji GPIO, czyli uniwersalnych pinów wejścia-wyjścia. Dzięki temu z poziomu Domoticza będziemy mogli kontrolować wyprowadzenia w sposób analogiczny do tego, który był opisywany podczas eksperymentów z Pythonem.

W praktyce będziemy kontrolować diodę, przycisk i buzzer. Jest to świetne ćwiczenia na potrzeby nauki, które wcale nie różni się wiele od późniejszych zastosowań Domoticza. Warto pamiętać, że:

  • Dioda i buzzer, symbolizują sterowanie wyjściem - w praktyce tak samo można sterować przekaźnikami, napędami bram, roletamami, czy oświetleniem LEDowym.
  • Przycisk, symbolizuje wejście - w praktyce może to być również przycisk, który wyzwala np. zamknięcie rolet, ale tak samo będzie wyglądało podłączanie czujników ruchu, kontaktronów oraz wielu innych sensorów.
Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Elementy niezbędne do wykonania wszystkich ćwiczeń z kursu podstaw Rasberry Pi dostępne są w formie gotowych zestawów!

Kup w Botland.com.pl

Zacznijmy jednak od konfiguracji kamery...

Konfiguracja kamery w Domoticzu

Jednym z zadań systemu automatyki budynkowej jest podniesienie poziomu bezpieczeństwa - stąd różne czujniki, alarmy i kamery. Nie inaczej będzie w przypadku samodzielnie budowanego systemu.

W naszym przypadku oczywiście skonfigurujemy kamerę dedykowaną malince. Jej podłączenie było już omawiane w kursie podstaw Raspberry Pi. Po podłączeniu i zamocowaniu kamery można przejść do ustawień. Zaczynamy oczywiście od włączenia interfejsu kamery w raspi-config. Więcej informacji na ten temat znaleźć można w 10. części kursu podstaw RPi.

Oryginalna kamera Raspberry Pi.

Następnie wchodzimy w ustawienia kamery znajdujące się w Setup > More Options > Camera. W nowym oknie klikamy Add Camera. Pola formularza wypełniamy następująco:

  • Name: dowolna nazwa kamery typu pokój/kuchnia/ogród itd.
  • Protocol: HTTP
  • IP Address: adres IP naszego Raspberry Pi
  • Port: port na, którym działa Domoticz (domyślnie 8080)
  • Username/Password: zostawiamy puste
  • ImageURL: raspberry.cgi

Jeśli wszystko zostało poprawnie podłączone i skonfigurowane po wciśnięciu przycisku Test Connection zobaczymy podgląd z kamery. Na tym etapie nie przejmujemy się, że obraz może być obrócony (tak jak miało to miejsce podczas naszego testu).

Gdy wszystko będzie działać poprawnie pozostaje już tylko obrócić obraz. W tym celu wchodzimy w ustawienia: Setup > Settings > Other i szukamy pozycji Raspberry Pi Camera Parameters, która domyślnie jest wypełniona następująco: -w 800 -h 600 -t 1. Parametry te powinny wyglądać znajomo, ponieważ były już używane podczas pierwszych eksperymentów z kamerą i raspistill.

Obraz obracamy tak samo jak wtedy, czyli za pomocą parametru rot:

Dodatkowe ustawienia kamery.

Po zapisaniu ustawień wracamy do podstrony z kamerami (Setup > More Options > Cameras), nasza kamera będzie już tam widoczna. Po kliknięciu w ikonkę kamery pojawi się okno z podglądem obrazu, z kolei kliknięcie w ikonkę aparatu spowoduje wykonanie zdjęcia, które będzie można od razu pobrać.

Oczywiście podgląd z kamery ma pewno opóźnienie (jak to często bywa w przypadku kamer CTV). W wielu przypadkach taka transmisja obrazu jednak wystarcza. Do tego samego panelu można również podłączyć inne kamery, które potrafią stremować obraz. Nie trzeba się ograniczać do kamery RPi. Wtedy ustawienia i sposób transmisji zależą już jednak głównie od konkretnej kamery. Więcej informacji i przykłady konfiguracji niektórych modeli znaleźć można w dokumentacji Domoticza.

Sterowanie GPIO z poziomu Raspberry Pi

Pora na obiecane GPIO, tym razem wykorzystamy diodę, przycisk oraz moduł buzzera. Podłączenie może być praktycznie dowolne. W tym przykładzie posłużymy się schematem z poprzedniego kursu, używane piny to:

  • pin numer 21 - moduł buzzera,
  • pin numer 12 - dioda podłączona przez rezystor 1,2kΩ,
  • pin numer 26 - przycisk.

Schemat podłączenia elementów do RPi.

Podłączenie elementów w praktyce:

Instalacja wiringpi

Przed dalszym etapem musimy się upewnić, że na RPi zainstalowane jest wiringpi. W tym celu możemy wydać komendę gpio readall. Jeśli zobaczymy listę GPIO to wszystko jest poprawnie, jeśli otrzymamy jakiś błąd to należy doinstalować program: sudo apt-get install wiringPi.

Wybór używanych GPIO

Teraz musimy dać znać Domoticzowi, które piny będziemy wykorzystywać. W tym celu na końcu pliku z ustawieniami (/etc/init.d/domoticz.sh) dopisujemy następujące informacje:

Za pomocą słowa kluczowego export określamy kierunek pracy pinu. Dodatkowo w przypadku wejść za pomocą edge określamy zbocze, na które ma reagować malinka (tutaj opadające). Po zapisaniu pliku restartujemy RPi i poleceniem gpio exports sprawdzamy czy wszystko jest poprawnie ustawione:

Dodawanie sprzętu do Domoticza - sterowanie wyjściem

Teraz możemy dodać sprzęt w ustawieniach Domoticza. Zaczniemy od wirtualnego włącznika, który będzie odpowiedzialny za włączenie diody podłączonej do malinki. Przechodzimy do zakładki Setup > Hardware i dodajemy nowy sprzęt. Tym razem chodzi o GPIO, które konfigurujemy jak niżej:

Konfiguracja GPIO.

Konfiguracji dokonujemy raz, dla całego GPIO. Nie musimy tutaj konfigurować każdego pinu osobno. Sytuacja jest analogiczna do tej z termometrem DS18B20 - w Hardware definiujemy tylko raz interfejs danego typu.

W przeciwieństwie do przykładu z poprzedniej części, tym razem nie znajdziemy gotowych elementów na zakładce Devices. Przechodzimy więc do zakładki Switches (żarówka w górnym menu) i klikamy przycisk Manual Light/Switch, który znajduje się w lewej, górnej części okna.

W nowym formularzu wpisujemy informacje o LED:

  • Hardware: wybieramy wcześniej dodane GPIO
  • Device name: wpisujemy przyjazną nazwę, w przykładzie "Dioda", docelowo np. "LED kuchnia".
  • Switch type: On/Off
  • Type: GPIO
  • GPIO: wybieramy z listy pin (pojawił się tu dzięki dopisaniu informacji do ustawień Domoticza).

Po zatwierdzeniu formularza zobaczymy nowy widget z ikoną żarówki, po kliknięciu w żarówkę dioda podłączona do Raspberry Pi powinna się natychmiast zaświecić, zmieni się również ikona:

Podgląd stanu urządzenia.

Symbol żarówki można zmienić na inny po kliknięciu opcji Edit. Tak samo jak w przypadku czujnika temperatury, kliknięcie gwiazdki (pod ikoną) przypnie widget na głównym ekranie Domoticza.

Harmonogramy w Domoticzu

Załóżmy, że nasza dioda symbolizuje pasek LED, który oświetla korytarz. Korzystając z Domoticza możemy zautomatyzować jego włączanie. Klikamy na widgetcie z żarówką opcję Timers.

Pojawią się opcje ustawiania harmonogramów. Można tam ustawić wiele automatycznych akcji typu:

  • włącz/wyłącz w określone dni o określonej godzinie,
  • włącz/wyłącz o zachodzie słońca (działa, jeśli ustawiliśmy poprawną lokalizację),
  • włącz/wyłącz w dni parzyste itd. itp.

Przykład konfiguracji dla automatycznego włączania codziennie o godzinie 18:45 będzie wygląda tak:

Ustawienia timerów/harmonogramów na Domoticzu.

Jeśli konkretny "wirtualny przełącznik" ma do siebie przypisane jakieś harmonogramy to przycisk Timers na jego widgetcie będzie później podświetlony na fioletowo.

Odwracanie wyjścia w Domoticzu

Zdarza się tak, że niektóre elementy są sterowane logiką odwrotną. Przykładowo moduł przekaźnika może być włączany logicznym "0", a wyłączany "1". Idealnym przykładem takiego działania jest nasz moduł buzzera. Jeśli skonfigurujemy go tak samo jak powyższą diodę to będzie piszczał, gdy na widgetcie będzie wybrana opcja "off" - skonfiguruj widget i sprawdź samodzielnie, że tak będzie.

Aby to zmienić wystarczy na samym końcu /etc/init.d/domoticz.sh (pod informacją o GPIO) dodać:

Od teraz (po restarcie Raspberry Pi) całość będzie działała poprawnie - buzzer będzie wydawał dźwięk, gdy na widgetcie będzie widoczne "On".

Odczytywanie wejść w Domoticzu

W przykładzie do naszego wejścia podłączony mamy przycisk, który zwiera wejść do masy. W praktyce podobnie odczytamy informacje np. z czujników ruchu, czujników otwarcia drzwi oraz innych sensorów.

Przechodzimy do konfiguracji nowego urządzenia. W zakładce Switches klikamy przycisk Manual Light/Switch i dodajemy nowe urządzenie nazwane jako "Przycisk alarmowy". Tym razem w Switch Type wybieramy Contact. Wszystkie ustawienia powinny być takie jak poniżej:

Dodawanie nowego czujnika.

Podłączając czujniki należy zapoznać się z ich dokumentacją, wejścia niektórych z nich będą posiadały rezystor podciągający, a inne nie. W naszym przypadku możemy dodać rezystor pull-up lub wpisać w konsoli polecenie gpio -g mode 26 up, które włączy wewnętrzny rezystor podciągający. Bez tej operacji "czujnik" nie będzie działał poprawnie. Więcej na ten temat było powiedziane w tym artykule:

Kurs Raspberry Pi – #13 – PWM, wejścia, skrypty z kamerą
Kurs Raspberry Pi – #13 – PWM, wejścia, skrypty z kamerą

Za nami podstawy GPIO i pierwsze skrypty. Tym razem przetestujemy… Czytaj dalej »

Po włączeniu rezystora podciągającego możemy przetestować nowy widget. Jego stan będzie się zmieniał z drobnym opóźnieniem, ale wszystkie "włączenia alarmu" będzie można prześledzić dokładnie klikając w przycisk Log.

Konfiguracja scen w Domoticzu

Sceny to bardzo ciekawa funkcja każdego systemu automatyki domowej. Dzięki nim jednym kliknięciem zmieniamy stan wielu elementów budynku. Przykłady popularnych scen i reakcji:

  • Scena: noc - wyłącz światło, włącz lampkę przy łóżku, wyłącz radio, zamknij rolety.
  • Scena: dzień - wyłącz światło, włącz radio, otwórz rolety.
  • Scena: wyjście - wyłącz wszystko z prądu, zamknij rolety, włącz alarm.

Czyli przykładowo wychodząc z domu włączamy scenę "wyjście" i tyle... Nie musimy ręcznie wyłączać TV, zamykać rolet, włączać alarmu itd. Po prostu pełna automatyzacja. Konfiguracja scen w Domoticzu jest bardzo prosta. Wystarczy wejść w zakładkę Scenes i utworzyć nowe ustawienie.

Dla przykładu stwórzmy dwie sceny: dzień oraz noc. Po ich utworzeniu wchodzimy w opcje każdej z nich i przypisujemy odpowiednie akcje, czyli np. wyłącz diodę dla "dzień" oraz włącz diodę dla "noc". Dodatkowo możemy skonfigurować działanie buzzera lub innych LEDów (jeśli takie podłączymy).

Ustawienie trybu jednego z urządzeń w danej scenie.

Od teraz w panelu mamy dwa przyciski, których kliknięcie będzie ustawiało cały system w dany tryb:

Przyciski wyboru scen.

Zdarzenia w Domoticzu

Na zakończenie jedna ciekawa funkcja, którą nie będziemy się teraz zajmować. Warto jednak o niej wiedzieć, bo znacznie rozszerza możliwości całego systemu. Mowa o Setup > More Options > Events. W zakładce tej znajduje się graficzny edytor, który pozwala na blokowe tworzenie programów.

Przykładowy program z dokumentacji Domoticza.

To własnie w tym miejscu można utworzyć mechanizmy typu "jeśli wykryto ruch to włącz światło", "wyślij o wschodzie słońca wiadomość na maila z temperaturą" itd. itp. Rozwiązanie to jednak jest dość rozbudowane i właściwie nadaje się na osobny kurs. Dlatego tutaj tylko krótka informacja o istnieniu takiej opcji, więcej informacji na temat tego narzędzia znaleźć można w dokumentacji Domoticza.


Dodatkowe artykuły, które mogą Cie zainteresować:

Podsumowanie Domoticza

Za nami dwa poradniki, które w ekspresowym tempie miały przybliżyć Domoticza. Mam nadzieję, że się udało i każdy zdążył opanować podstawy systemu, aby zdecydować czy warto poznawać go dalej. Jeśli te podstawy Was zainteresowały to dajcie znać w komentarzach. W ramach tej serii będziemy zajmować się teraz innymi tematami, ale jeśli będzie takie zainteresowanie to na pewno przygotujemy więcej poradników związanych z Domoticzem (może nawet w formie osobnego kursu).

Na razie kończymy z automatyką domową. W kolejnej części kursu zajmiemy się prostym radiem... i to nie internetowym. Będziemy nadawać piosenki jak normalna stacja radiowa na falach FM, a wystarczy do tego jeden przewód!

Nawigacja kursu

Autor: Damian Szymański
Testy: Piotr Adamczyk

Domoticz, GPIO, kamera, kursRPiProjekty, RaspberryPi