Podłączenie kontaktronu do Raspberry Pi w systemie Domoticz

wpis w: Domoticz | 8

W dzisiejszym wpisie opiszę jak podłączyć do Raspberyr Pi czujnik otwarcia drzwi i okien (kontaktron).

Kontaktron HO-03B
Kontaktron HO-03B

 

W swoim przypadku użyłem kontaktronu HO-03B.

Moim zdaniem jest to jeden z ciekawszych modeli. Jest bardzo mały. Posiada wbudowane dwa kable przyłączeniowe. Ma możliwość montażu na śruby jak i taśmę, która jest dołączona do zestawu a cena nie przekracza 6 zł. Dostępny również w kolorze białym.

Dane techniczne:

  • Napięcie pracy: do 40V
  • Prąd (maksymalny): 100mA
  • Szczelina: do 25mm
  • Rodzaj styku: NC (brak magnesu – styki rozwarte)
  • Kolor : brązowy
  • Długość przewodów: 30cm
  • Wytrzymałe na warunki atmosferyczne (IP65)
  • Wymiary:
    • Czujnik: 27x13x7mm
    • Magnes: 27x13x7mm
  • W zestawie:
    • 4 śruby mocujące
    • Czujnik
    • Magnes
    • Taśma dwustronna

 

Poniżej schemat podłączenia kontaktronu do Raspberry:

 

Schemat podłączenia kontaktronu do Raspberry Pi
Schemat podłączenia kontaktronu do Raspberry Pi

 

Aby Nasz kontaktron odczytywał stan niski i wysoki (styki zwarte/rozwarte) należy utworzyć poniższy skrypt za pomocą polecania:

  • sudo nano kontaktron.py

Następnie w nowo utworzonym pliku wklejamy poniższy kod:

Jeżeli nie macie zainstalowanego modułu urllib i urllib2 należy go zainstalować poprzez komendę:

  • sudo pip install urllib urllib2

Następnie dodajemy plikowi uprawnienia poprzez komendę:

  • sudo chmod +x kontaktron.py

W tym momencie możemy sprawdzić czy Nasz skrypt działa poprzez uruchomienie go za pomocą polecenia:

  • sudo python kontaktron.py

Jeżeli wszystko jest w porządku po połączeniu ze sobą magnesów kontaktronu powinien pojawić się napis „DRZWI ZAKMNIĘTE” a po rozwarciu „DRZWI OTWARTE”

Aby Nasz kontaktron był widoczny w systemie Domoticz – tworzymy wirtualny czujnik (jak to zrobić opisałem TU). Przy tworzeniu czujnika – ustawiamy jego typ na – Przełącznik.

Gdy już wszystko utworzyliśmy zapamiętujemy idx Naszego nowo utworzonego Przełącznika (Zakładka Konfiguracja/Urządzenia).

W skrypcie zamiast xxx.xxx.xxx.xxx – wpisujecie IP do swojego systemu Domoticz oraz odpowiedni port – w moim przypadku 8080.

W skrypcie zamiast XX – wpisujecie idx swojego nowo utworzonego Przełącznika.

Wychodzimy z edytora poprzez komendę:

  • CTRL + x

Zapisujemy zmiany poprzez komendę ENTER.

Jeżeli wszystko zrobiliśmy poprawnie Nasz przełącznik powinien zmieniać swój status w zależności od tego czy połączymy ze sobą magnesy kontaktronu czy też będą one rozwarte.

Metoda druga:

Istnieje druga (myślę, że może nawet łatwiejsza) metoda na zainstalowanie kontaktronu w systemie Domoticz.

Podłączamy wszystko tak samo jak w poradniku powyżej.

Następnie w konsoli instalujemy biblioteki wiringPi (jak to zrobić opisałem na przykładzie instalacji Gniazdek 433Mhz w TYM artykule).

Następnie w konsoli wpisujemy:

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

Na końcu pliku wpisujemy:

/usr/local/bin/gpio export 23 in
/usr/local/bin/gpio edge 23 both

Jeżeli podłączyliście wasz kontaktron do innego pinu niż w tym poradniku (a był to PIN 23 – wtedy wpisujecie nie gpio export 23 i gpio edge 23 tylko Piny zgodnie z wartościami z tabeli po wpisaniu komendy): gpio readall

 

kont

 

Naciskamy Ctr+x i zapisujemy zmiany.

Następnie restartujemy Domoticz za pomocą komendy:

  • sudo service domoticz.sh restart

Teraz zostaje już tylko dodanie przełącznika do Domoticz i odpowiednia konfiguracja.

Logujemy się do Domoticz przez WWW.

Tworzymy wirtualny przycisk wchodząc do Konfiguracja–>Sprzęt i wybieramy parametry jak na poniższym zdjęciu.

 

gpio-kont

 

Następnie wchodzimy w zakładkę Przełączniki i w górnym lewym rogu wybieramy „Ręczne świat./przeł.”

 

kontaktronprzelacznik1

 

W nowo otwartej tabelce wypełniamy odpowiednio:

  • Sprzęt – wybieramy nasz wirtualny czujnik GPIO, który utworzyliśmy wcześniej
  • Nazwa – dowolna nazwa
  • Typ przełącznika – Contact
  • Typ: GPIO
  • GPIO: Wasze Gpio 23 (powinno być jako IN)

 

kont1

 

Naciskamy przycisk „Dodaj urządzenie”

Od tego momentu wszystko powinno już działać poprawnie.

Gdyby coś nie działało pod tym adresem znajdziecie gotowy plik.

8 Odpowiedzi

  1. Błąd w komendzie jest: sudo pip urllib urllib2 powinno być: sudo pip install urllib urllib2
    Pozdrawiam

    • Agnieszka Kostrzewa

      Witam Serdecznie
      Bardzo dziękuję za informacje.
      Zaraz zmienię na poprawną komendę.
      Pozdrawiam

  2. Wpisując kod:

    #!/usr/bin/python

    import RPi.GPIO as GPIO
    import time
    import urllib
    import urllib2

    sensor = 5

    GPIO.setmode(GPIO.BCM)
    GPIO.setup(sensor, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    previous_state = False
    current_state = False

    while True:
    time.sleep(0.1)
    previous_state = current_state
    current_state = GPIO.input(sensor)
    if current_state != previous_state:
    if current_state:
    httpresponse = urllib.urlopen(‚http://10.229.0.15:8081/json.htm?type=command&param=switchlight&idx=19&switchcmd=On’)
    else:
    httpresponse = urllib.urlopen(‚http://10.229.0.15:8081/json.htm?type=command&param=switchlight&idx=19&switchcmd=Off’)

    Otrzymuję następujący błąd:
    httpresponse = urllib.urlopen(‚http://10.229.0.15:8081/json.htm?type=command&param=switchlight&idx=19&switchcmd=On’)
    File „/usr/lib/python2.7/urllib.py”, line 87, in urlopen
    return opener.open(url)
    File „/usr/lib/python2.7/urllib.py”, line 213, in open
    return getattr(self, name)(url)
    File „/usr/lib/python2.7/urllib.py”, line 364, in open_http
    return self.http_error(url, fp, errcode, errmsg, headers)
    File „/usr/lib/python2.7/urllib.py”, line 377, in http_error
    result = method(url, fp, errcode, errmsg, headers)
    File „/usr/lib/python2.7/urllib.py”, line 689, in http_error_401
    errcode, errmsg, headers)
    File „/usr/lib/python2.7/urllib.py”, line 386, in http_error_default
    raise IOError, (‚http error’, errcode, errmsg, headers)
    IOError: (‚http error’, 401, ‚Unauthorized’, )

    Oczywiście gdy wprowadzam samo:

    http://10.34.0.200:8081/json.htm?type=command&param=switchlight&idx=19&switchcmd=On

    I

    http://10.34.0.200:8081/json.htm?type=command&param=switchlight&idx=19&switchcmd=Off

    Stan przełącznika w domoticzu się zmienia.

    Co robię nie tak?

    Pozdrawiam!

    • Łukasz Kostrzewa

      Witam Serdecznie

      W przykładzie używa Pan adresu: http://10.229.0.15:8081 a później w opisie http://10.34.0.200:8081. Może ten pierwszy adres IP jest niepoprawny?
      ewentualnie czy zainstalował Pan: sudo pip install urllib urllib2 ?
      Ewentualnie można spróbować drugiej metody, którą opisałem na dole posta.

      Pozdrawiam i czekam na info

  3. Oczywiści przeoczyłem adres powinien być http://10.34.0.200:8081 – jednak dalej ten sam problem. Malinka jest wystawiona na dwóch adresach w sieci LAN i WLAN – dlatego próbowałem również pod innym adresem.

    Właśnie jeśli chodzi o instalację biblioteki to jest mały problem. Dostaję następujący komunikat: sudo pip install urllib urllib2
    Downloading/unpacking urllib
    Could not find any downloads that satisfy the requirement urllib
    Cleaning up…
    No distributions at all found for urllib
    Storing debug log for failure in /root/.pip/pip.log

    Moja wersja pythona to:

    Python 2.7.9 (default, Sep 17 2016, 20:26:04)
    [GCC 4.9.2] on linux2

    Gdy dam:
    apt-cache search urllib
    python-m2crypto – a crypto and SSL toolkit for Python
    python-multipartposthandler – handler for urllib2 to enable multipart form uploading
    python-ndg-httpsclient – enhanced HTTPS support for httplib and urllib2 using PyOpenSSL
    python-pysocks – socket-like interface for tunneling through SOCKS – Python 2.x
    python-requests – elegant and simple HTTP library for Python2, built for human beings
    python-requests-whl – elegant and simple HTTP library for Python, built for human beings
    python-urllib3 – HTTP library with thread-safe connection pooling for Python
    python-urllib3-whl – HTTP library with thread-safe connection pooling
    python3-pysocks – socket-like interface for tunneling through SOCKS – Python 3.x
    python3-requests – elegant and simple HTTP library for Python3, built for human beings
    python3-urllib3 – HTTP library with thread-safe connection pooling for Python3

    Czy te biblioteki nie są już dostępne? Za bardzo nie rozumiem o co chodzi.

    Być może trzeba to przebudować na bibliotekę urllib3?

  4. Gdy wejdę w /usr/lib/python2.7

    Wydaje się, że biblioteki są!

    -rw-r–r– 1 root root 52407 Sep 18 03:44 urllib2.py
    -rw-r–r– 1 root root 46992 Feb 13 15:56 urllib2.pyc
    -rw-r–r– 1 root root 20480 Mar 2 14:01 .urllib2.py.swp
    -rw-r–r– 1 root root 58498 Mar 2 13:57 _urllib.py
    -rw-r–r– 1 root root 58498 Mar 2 14:19 urllib.py
    -rw-r–r– 1 root root 50208 Feb 13 15:56 urllib.pyc
    -rw——- 1 root root 60404 Mar 2 14:08 urllib.py.save
    -rw-r–r– 1 root root 15164 Sep 18 03:44 urlparse.py

  5. Ok – po wielu godzinach szukania i kombinowania wszystko się wyjaśniło…. Sprawa dosyć głupia i prosta.

    Chodziło o nieautoryzowany dostęp. Do panelu domoticza miałem ustawione login i hasło. Dopóki nie dodałem swojej sieci do zaufanych – nie wymagających loginu i hasła – program nie miał prawa działać (zapewne można było to gdzieś zapisać w bibliotece ). Na chwilę obecną problem uznaje za rozwiązany.

    • Łukasz Kostrzewa

      Witam Serdecznie
      Bardzo dziękuję, że opisał Pan na czym polegał problem oraz jego rozwiązanie, na które na pewno bym nie wpadł 🙂
      W przypadku budowania inteligentnego mieszkania na systemie Domoticz i raspberry pi najważniejsze jest żeby kombinować 🙂 Bo zawsze coś nie działa tak jak trzeba mimo, że robi się krok po kroku jak z poradnika. Każdy ma trochę inny system i mogą występować różne problemy.
      Pozdrawiam i życzę miłego dnia

Zostaw Komentarz

*