niedziela, 27 września 2015

Domoitcz i alarm z czujnikiem PIR

Na Raspberry Pi możemy zbudować alarm z wykorzystaniem czujnika PIR i syreny alarmowej, ja użyłem do testów prostego małego buzera.


Czujnik może być zasilany w zakresie 4,5 V do 20 V. Czujnik posiada wyprowadzenia VCC, OUT, GND. Po wykryciu ruchu na wyjściu OUT pojawia się stan wysoki. Ja zasilam go z zewnętrznego zasilacza 5V.


Czujnik posiada 2 potencjometry, którymi możemy regulować

T1 - czas trwania stanu wysokiego po wykryciu obiektu
T2 - czułość czujnika (dystans, w którym wykrywa ruch obiektu)


Ponieważ ja używam czujnika w pokoju T2 ustawiłem w połowie na średnią odległość, a T1 czyli czas reakcji maksymalnie w lewo.


W moim projekcie podłączyłem buzer pod pin 26 GPIO, a PIR pod pin 6 GPIO.

W programie napisanym w pythonie piny możemy sobie dowolnie zdefiniować na początku kodu:
#wpisz nr pinu GPIO czujnika PIR
PIR = 6
#wpisz nr pinu GPIO alarmu
ALARM = 26

Możemy również zdefiniować jak długo w sekundach alarm ma być włączony, definiujemy, to w tej linijce:
#wpisz czas w sekundach jak dlugo ma byc wlaczony alarm
DELAY = 5

Kod programu:

#!/usr/bin/python
import RPi.GPIO as GPIO
#import bibloetki GPIO
import time
GPIO.setmode(GPIO.BCM)
#wpisz nr pinu GPIO czujnika PIR
PIR = 6
#wpisz nr pinu GPIO alaramu
ALARM = 26
#wpisz czas w sekundach jak dlugo ma byc wlaczony alarm
DELAY = 5
#ustawienie pinu PIR jako wejscie
GPIO.setup(ALARM, GPIO.OUT)
# ustawienie pinu ALARM jako wyjscie
GPIO.setup(PIR, GPIO.IN)
GPIO.setup(PIR, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
# wykrycie ruchu
GPIO.wait_for_edge(PIR, GPIO.RISING)
# alaram wlaczony
GPIO.output(ALARM, True)
time.sleep(DELAY)
GPIO.output(ALARM, False)
except KeyboardInterrupt:
GPIO.cleanup()

Program jest do pobrania stąd -> alarm.py

Program kopiujemy sobie do katalogu python.

Teraz możemy przeprowadzić test programu, więc w terminalu wpisujemy:
cd python
sudo python alarm.py

Po wykryciu ruchu włączy się alarm na 5 sekund, po wciśnięciu dowolnego klawisza program się zakończy.

Teraz tworzymy skrypt lua, który będzie włączał i wyłączał nasz alarm, czyli uruchamiał i zamykał program w pythonie.
Skrypt będzie wyglądał tak:
commandArray = {}

if (devicechanged['ALARM'] == 'On') then
os.execute ("sudo python /home/pi/python/alarm.py")
end
if (devicechanged['ALARM'] == 'Off') then
os.execute("sudo pkill -9 -f /home/pi/python/alarm.py")
end

return commandArray

W linijce:
if (devicechanged['ALARM'] == 'On') then i
if (devicechanged['ALARM'] == 'Off') then

wpisujemy nazwę naszego przycisku jaki dodamy w Domoticz, ja nazwałem sobie go ALARM.

Skrypt jest do pobrania stąd -> script_device_alarm.lua

Kopiujemy nasz skrypt do: /home/pi/domoticz/scripts/lua

Wchodzimy na nasz panel Domoticz IP:8080 i klikamy Utwórz wirtualne sensory


Jak utworzyć wirtualne sensory napisałem wcześnie w poście -> Domoticz i uruchamianie programów w Pythonie

Wybieramy przełącznik i klikamy OK


Wchodzimy w Ustawienia -> Urządzenia, szukamy nasz utworzony przycisk Wirtualny ALARM i klikamy w zieloną strzałkę.


Wpisujemy nazwę ALARM i klikamy OK.


Teraz nasz przełącznik mamy w zakładce Przełączniki, ponieważ nie jest, to włącznik światła zmienimy sobie jego ikonkę, klikamy edytuj i wybieramy dowolną ikonkę w Zamień ikonę. Ja wybrałem Alarm i klikamy Zapisz.


Ponieważ zdefiniowany wcześniej czas włączenia buzera lub alarmu jest zbyt krótki, zmienimy sobie czas DELAY w programie na 3 minuty, czyli 180 sekund, czyli w programie alarm.py wpisujemy DELAY = 5 i zapisujemy plik w /home/pi/python

Teraz, gdy alarm się aktywuje musimy go jakoś wyłączyć, w tym celu edytujemy plik domoticz.sh, czyli w terminalu wpisujemy:

sudo nano /etc/init.d/domoticz.sh

Przechodzimy na koniec linii i wpisujemy:

/usr/local/bin/gpio export 26 out


Wciskamy Ctrl+X, T i ENTER i robimy restart, czyli:

sudo reboot

Wpisaliśmy pin GPIO nr 26 jako out ponieważ, do tego pinu mamy podłączony buzer.

Wchodzimy do panelu Domoticz IP:8080

Teraz wchodzimy w zakładkę Przełączniki -> Ręczne ustawienia.
Sprzęt ma być ustawione GPIO, Nazwę wpisuję sobie Wyłącz ALARM, Typ przełącznika Push Off Button, Typ GPIO, GPIO: gpio26 i klikamy dodaj urządzenie


Teraz po włączeniu alarmu możemy go wyłączyć przyciskiem Wyłącz ALARM, ale wykrywanie ruchu i włączanie buzera będzie nadal aktywne, aby całkowicie dezaktywować alarm, klikamy przełącznik ALARM na OFF.

9 komentarzy:

  1. Witam. Fajny poradnik ale... Mógłbyś napisać jak podłączyć sam Sensor ruchu do DOmoticz? Kiedy podłączam go do gpio (tworzę przycisk GPIO - następnie W Przełącznikach dodaje przycisk Typ Motion Sensor GPIO i mój Pin - gdzie na wiringPi mm ustawione Pin 8 in i pin 8 both) W prostym skrypcie python ruch jest wykrywany. W Domoticz na virtualnym przyciusku też (w logach). Niestety status (wykryto ruch lub nie) się nie zmienia. Cały czas jest pokazane, że nie wykryto ruchu mimo, że w logu pokazuje że wykryto. Bardzo bym prosił o pomoc. (mail:lukcinek@gmail.com)

    OdpowiedzUsuń
  2. O ile dobrze pamiętam, to sam czujnik PIR nie chciał mi działać w Domoticz i dlatego napisałem program w pythonie.
    Możesz spróbować zrobić wpis, który zdefiniuje podłączony czujnik PIR jako wejście IN i wtedy zobaczyć, czyli /usr/local/bin/gpio export 6 in. Na pewno czujnik PIR działa w odbiorniku mysensors https://www.mysensors.org/build/motion

    OdpowiedzUsuń
  3. Witam.
    Dopiero rozpoczynam zabawę z raspberry w tym artykule znalazłem jak podłączyć sam czujnik PIR do Domoticz ,logi działąją ,ale szukam sposobu na wyłączenie czujki. http://kostrzewinki.pl/podlaczenia-sensora-ruchu-pir-hc-rc-501/

    OdpowiedzUsuń
  4. Ok , a jak w Domoticzu uzbrajać działanie czujki PiR i rozbrajać panelem bezpieczeństwa, za pomocą kodu ?

    OdpowiedzUsuń
    Odpowiedzi
    1. http://www.yellington.com/advanced-events-handling-in-domoticz/

      Usuń
  5. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  6. Ten komentarz został usunięty przez administratora bloga.

    OdpowiedzUsuń
  7. Ten komentarz został usunięty przez administratora bloga.

    OdpowiedzUsuń
  8. Jeśli chodzi o monitoring to najlepszym rozwiązaniem jest inwestować w dobrej jakości urządzenia, takie jak na przykłąd te dostepne w sklepie https://gemini-tech.com.pl/ . Nie ma co oszczędzać na bezpieczeństwie, a tylko dobrej jakości i niezawodne produkty gwarantują je wam

    OdpowiedzUsuń