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

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:

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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/usr/bin/python import RPi.GPIO as GPIO import time import urllib import urllib2 sensor = 23 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://xxx.xxx.xxx.xxx:8080/json.htm?type=command¶m=switchlight&idx=XX&switchcmd=On") else: httpresponse = urllib.urlopen ("http://xxx.xxx.xxx.xxx:8080/json.htm?type=command¶m=switchlight&idx=XX&switchcmd=Off") |
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
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.
Następnie wchodzimy w zakładkę Przełączniki i w górnym lewym rogu wybieramy „Ręczne świat./przeł.”
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)
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.
77 Odpowiedzi
Przemek
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
Tomasz
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¶m=switchlight&idx=19&switchcmd=On’)
else:
httpresponse = urllib.urlopen(‚http://10.229.0.15:8081/json.htm?type=command¶m=switchlight&idx=19&switchcmd=Off’)
Otrzymuję następujący błąd:
httpresponse = urllib.urlopen(‚http://10.229.0.15:8081/json.htm?type=command¶m=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¶m=switchlight&idx=19&switchcmd=On
I
http://10.34.0.200:8081/json.htm?type=command¶m=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
Tomasz
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?
Tomasz
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
Tomasz
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
Piotr
Witam,
sposób podany przez Pana generalnie działa – aktualny stan pokazuje mi dobry, ale mam problem z logami – nie wsyztstko się w nich znajduje. Wiem że dziś drzwi były otwierane, niestety nie ma tego w logu. Czy ma Pan może pomysł co może być nie tak?
Piotr
Okazuje się że otwarcie lub zamknięcie drzwi nie zmienia statusu. Problem pojawia się gdy zabraknie prądu i RPi zostanie nagle wyłączona. Po ponownym uruchomieniu kontakton już nie reaguje, aż do momemntu ponownego rozłączenia i podłączenia samego urządzenia. Można to jakoś obejść?
Łukasz Kostrzewa
Witam
Niestety też mam ten problem, że jak nie ma prądu to nie zawsze odpali się skrypt (nie wiem od czego to zależy bo przeważnie się odpala) przez crontab i nie jest wykonywany. Muszę często raz jeszcze zrestartować malinę żeby wszystko wróciło do normy. Nie do końca to rozumiem 🙁 Na szczęście prądu brakuje bardzo rzadko 🙂
Pozdrawiam
Grzesiek
Dzień dobry.
Wszystkie polecenia odnośnie wprowadzenia kodu i podłączeniu kontaktronu wykonałem. Kiedy próbuję wykonać polecenie sudo python kontaktron.py otrzymuję komunikat:
File „kontaktron.py”, line 17
time.sleep (0.1)
^
SyntaxError: invalid syntax
Jak to ugryźć.
Proszę o pomoc. Pozdrawiam
Łukasz Kostrzewa
Witam
A ściągał Pan cały plik z kodem ze strony czy wklejał z opisu?
Jak z opisu to mogą występować błędy kodowania. Najlepiej użyć pliku, który udostępniłem na końcu wpisu.
Proszę ewentualnie usunąć wszystkie spacje przed nazwą time.sleep i wstawić je od nowa (miejsce strzałki pokazuje gdzie jest błąd).
Pozdrawiam i proszę dać znać czy pomogło
Damian
Niestety żadna metoda nie działa.
Robię wszystko jak w opisach ale lipa.
Proszę o pomoc, jakie informacje podesłać żeby ktoś mógł sprawdzić co jest nie tak?
Damian
Po wpisaniu komendy, otrzymuje taki wynik:
pi@raspberrypi:~ $ sudo python kontaktron.py
File „kontaktron.py”, line 17
SyntaxError: Non-ASCII character ‚\xc2’ in file kontaktron.py on line 17, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Agnieszka Kostrzewa
Witam. Zamiast wklejac tekst ze strony prosze pobrac plik ktory umiescilem na dole. Wrzucic go na raspberry prze, np. Filezilla i tam go edytowac. To jest prawdopodobie blad kodowania znakow.
Ewentualnie prosze dodac na poczatku pliku ktorego Pan uzywa linijke:
# -*- coding: utf-8 -*-
Pozdrawiam i prosze o info czy pomoglo
Damian
Witam, po kolejnych testach dostaje taką odpowiedz po uruchomieniu skrypty kontaktron.py
pi@raspberrypi:~ $ sudo python kontaktron.py
Traceback (most recent call last):
File „kontaktron.py”, line 24, in
httpresponse = urllib.urlopen („http://192.168.8.145:8080/json.htm?type=command¶m=switchlight&idx=15&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’, )
Agnieszka Kostrzewa
Skrypt Pan kopiowal ze strony czy sciagal Pan plik? Jak byl kopiowany to moga wystepowac błędy. Bibliiteki urllib sa zainstalowane?
Damian
Witam, skopiowalem z dropboxa.
biblioteki sa zainstalowane.
Dlaczego kiedy stosuje sposób srugi tez nie działa, mam poinstalowane szystko co trzeba gdyż mam zainstalowany i działający projekt gniazdek 433mhz
Agnieszka Kostrzewa
Witam. Powodów moze byc wiele ale nie jestem w stanie wymyślić o co dokladnie moze chodzic:(
damian
Witam,
Nareszcie ruszyło, metoda druga działa.
Problemem były dodatkowe parametry, przy tworzeniu virtualnego przycisku.
U mnie akurat występują 3 dodatkowe parametry, które miały domyślne ustawienia, po ich wyzerowaniu wszystko zaczęło działać.
Dziękuję za pomoc.
Damian
Nie może być zbyt łatwo 🙂
Pojawił się kolejny problem w momencie dołączenia kolejnego kontaktronu.
Dodałem kolejne wiersze w pliku sudo nano /etc/init.d/domoticz.sh
/usr/local/bin/gpio export 20 in
/usr/local/bin/gpio edge 20 both
reszte zrobiłem identycznie jak w przypadku pierwszego kontaktronu (oczywiście wybrałem właściwe GPIO) ale niestety drugi nie działa.
Jakaś podpowiedź?
Agnieszka Kostrzewa
Witam. No kurcze nie wiem:) Tutaj cudow nie ma. Jak wszystko jest zrobione dokladnie tak samo to powinno dzialac. Prosze sprobiwac na innym gpio… Moze nie kazde nadaje sie do tego celu. Pozdrawiam
Wiktor
Witam, co trzeba zmienić w kodzie jeśli teraz jest urllib3? Nie jestem w stanie zainstalowac urllib2 na raspberry.
Łukasz Kostrzewa
Witam Serdecznie
Może wystarczy tylko zmiana urllib2 na urllib3 w kodzie. Próbował Pan?
Pozdrawiam
Wiktor
Próbowałem, jest coś nie tak z „httpresponse = urlib.urlopen (…) ”
Niestety nie znam sie na programowaniu wystarczajaco dobrze 🙁
Pozdrawiam
Agnieszka Kostrzewa
Niestety to za malo info zebym mogl probowac pomoc… Jaki jest konkretnie komunikat błędu?
Wiktor
Taki komunikat mi sie wyswietla:
https://imgur.com/AVBXc8Q
Agnieszka Kostrzewa
A prosze zrobicnjeszcze zdjecie Pana skryptu kontaktron.py bo wg bledu nie ma zdefiniowanego urllib
Wiktor
Taki jak dopisalem „import urllib”:
https://imgur.com/n48TuWl
Agnieszka Kostrzewa
Sprobuje cos poczytac i dac znac ale nie dzisiaj. Pozdrawiam
Wiktor
Ogolnie czytalem, ze urllib2 jest juz stary i z bezpieczenstwem tez sa problemy. Zostal wyparty przez urllib3, ale niestety inaczej trzeba z domoticzem sie kontaktowac, a ja nie znam sie na programowaniu.
Wiktor
Kod:
https://pastebin.com/1wk1x2md
Agnieszka Kostrzewa
A prosze wpisac na poczatku kodu: import urllib.request zamias import urllib3 i moze httpresponse = urllib.request. urlopen(„http://192.168.0.217:8080/json.htm?type=command¶m=switchlight&idx=281&switchcmd=On”)
Tez nie znam sie na programowaniu ale trzeba kombinowac. (https://stackoverflow.com/questions/41650533/cant-install-urllib2-for-python-2-7)
Dawid
Witam,
Za pomocą pierwszego sposobu dodałem kontaktron (pobrany plik, skopiowany do Rpi3, przełącznik ustawiony w Domoticzu). Sytuacja wygląda następująco: gdy wpiszę komendę sudo python drzwi.py – w konsoli nic się nie dzieje, natomiast w Domoticzu w Log’u przełącznika widzę zmiany statusów – czyli kontaktron jest poprawnie podłączony. Jednakże, gdy przerwę działanie pliku drzwo.py przez Ctrl+C (czy przez rozłączenie sesji SSH), zmiany statusów nie są już odzwierciedlane w Domoticzu. Czy jest to normalne zachowanie?
Agnieszka Kostrzewa
Witam Serdecznie. Plik musi byc uruchamiany przy starcie systemu. Czasami tez mi przestaje dzialac jak np internet mi sie rozlaczy. Musze zrestartowac rpi i wtedy jak jest dodany do autostartu to powinno dzialac w trybie ciaglym
Dawid
A czy mogę prosić o informację jak masz dodany do autostartu? (polecenie)
Agnieszka Kostrzewa
Na koncu tego wlisu jest o edycji rclocal https://kostrzewinki.pl/podlaczenia-sensora-ruchu-pir-hc-rc-501/
Trzeba tylko poprawna sciezke dostepu do pliku podac. Pozdrawiam
Dawid
Dziękuję. Wpis do autostartu dodany z powodzeniem.
Agnieszka Kostrzewa
Bardzo sie ciesze:) Pozdrawiam
Marcin
Witam. wszystko ładnie działa ale za Chiny nie mogę dodać skryptu z pierwszej metody do autostartu.
Próbowałem rc.local podając ścieżkę:
/home/pi/domoticz/scripts/drzwi.py &
Próbowałem w crontab -e podając ścieżkę:
@reboot /home/pi/domoticz/scripts/drzwi/py
robiłem to przez roota i przez użytkownika, i skrypt nie działa, uruchomieniu maliny nie włącza się
natomiast po uruchomieni ręcznie z terminala wszystko dział do następnego restartu. ma ktoś na to pomysł?
może to wina ścieżki na początku skryptu próbowałem modyfikować ja
#!/usr/bin/env python
#!/usr/bin/python
#!/bin/python
Ale nic to nie dało
Mój skrypt jest w katalogu home/pi/domoticz/scripts/drzwi.py
Agnieszka Kostrzewa
Witam Serdecznie. Niestety nic mi na ten moment nie przychodzi do glowy ale… Pomysle i mozr cos wymysle:) Moze ktos inny pomoze?
Marcin
Po wielu godzinach bojów odpuściłem metodę pierwszą i wziąłem się za metodę drugą, ale że by nie było tak fajnie to mam kolejny problem, jak w tej metodzie odwrócić działanie styków.
domyślnie jest:
Styki zwarte –> Drzwi zamknięte
A ja chcę mieć
Styki zwarte –> Drzwi otwarte
Ponoć to się da zrobić, zamieniając stan GPIO, próbowałem na Pull Up i na Pull Down ale nie działa, wyczytałem że trzeba przylutować rezystor podciągający?
Agnieszka Kostrzewa
Witam. W metodzie pierwszej to chcesz zrobic jest bardzo proste. Jezeli chodzi o metode druga to niestety nie wiem jak to zrobic:(
Adam
Spróbuj dodać do systemowego crontab-a. Komenda : sudo nano /etc/crontab
Więcej o tym wpisz w google:
CRON, czyli „harmonogram zadań” na przykładzie Raspberry Pi – WebInsider.pl
Marcin
W pierwszej metodzie odwróciłem to bez problemu, dlatego tak mi na niej zależało. Już testowałem to z systemowym Cronem, to samo 🙁 .Mam inne skrypty w pythonie które frygają i załączają się przy starcie bez problemu.
Może to winna bibliotek urllib? Tak wygląda mój początek skryptu:
import RPi.GPIO as GPIO
import time
import urllib3
import urllib
Na urllib2 nie działał w ogóle
Agnieszka Kostrzewa
Wszystko wydaje sie byc tak jak powinno… Nir mam kurcze pojecia co moze byc nie tak:(
Wiktor
ESP8266 kup. 10 zl na aliexpress. Na niego wgraj EspEasy i smiga az milo.
Tomaj
Gdyby ktoś potrzebował to załączam kawałek kodu do ./domoticz.sh
#km1
echo 21 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio21/direction
#km2
echo 16 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio16/direction
#km3
echo 20 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio20/direction
#wentylator1
echo 24 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio24/direction
#wentylator2
echo 5 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio5/direction
#km4
echo 26 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio26/direction
#automatyczne uruchomienie skryptu obsługującego 4 kontaktrony
cd /home/pi/domoticz
sudo ./kontaktron2.py
#koniec ./domoticz.sh
a tutaj kod dla 4 kontaktronów:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib
import urllib2
sensor = 16
sensor = 20
sensor = 21
sensor = 26
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://192.168.1.119:8080/json.htm?type=command¶m=switchlight&idx=25, 30, 28, 29&switchcmd=On”)
else:
httpresponse = urllib.urlopen („http://192.168.1.119:8080/json.htm?type=command¶m=switchlight&idx=25, 30, 28, 29&switchcmd=Off”)
pawel
Witam,
Instalacja kontaktron metodą nr 2.
Sprawdziłem poprawność podłączenia.
Sprawdziłem poprawność dodania kontaktron do domoticza
Po restarcie domoticza, nie wyrzuca błędów. WiringPi zainstalowane.
Niestety mam cały czas stan zamknięty. Mimo, iż powinno informować o otwarciu.
Ps. Użyłem K-1 BR (z magnesem)
Czujki magnetyczne są jednymi z podstawowych urządzeń ochrony obwodowej. Służą do zabezpieczania drzwi, okien itp., reagując na ich otwarcie. Czujka K-1 2E BR przeznaczona jest do montażu powierzchniowego poprzez przykręcenie np. na ramie okiennej czy futrynie. K-1 2E BR składa się z dwóch wodoszczelnych części: czujnika kontaktronowego (magnetycznego) oraz magnesu. Oddalenie jednej części od drugiej powoduje rozwarcie obwodu czujnika, co sygnalizowane jest jako naruszenie. Dodatkowo czujka wyposażona jest w 2 rezystory 1,1 kΩ połączone z kontaktronem w konfiguracji 2EOL. Umożliwiają one centrali alarmowej wykrycie sabotażu czujki poprzez obserwację zmian rezystancji na linii wejściowej.
Czy zastosowany kontaktron jest przyczyną „niedziałania” w domoticz-u ?
Dziękuje za info. zwrotne
Agnieszka Kostrzewa
Witam. Nie sadze ze to wina kontsktronu. Ja w lazience nie mam nawet kontaktronu tylko kabel dwuzylowy z raspberry i sreberkobz czekolady przyklejone do drzwi i dziala takze to raczej wina skryptu i ustawien maliny. Ciezko mi pomoc jak nie ma bledu a nic sie nie dzieje:( Pozdrawiam
Agnieszka Kostrzewa
Prosze sprawdzic na samych kabelkach czy dziala bez uzycia kontaktronow.
Zbyszek
witam
zrobiłem wg 2 metody i też nie działało.
Żeby działało trzeba podłączyć pod pin 23 i pin 3,3v
Michał
Jak podłączyć więcej kontaktronów?
Agnieszka Kostrzewa
Na moje… Zrobić wszystko to samo co we wpisie tylko zmienić pin komunikacyjny. Zasilanie i ground może być to samo
Tomaj
Ja mam działające 4 kontaktrony, kod dodałem powyżej, u mnie zwierają do masy. Trzeba najpierw ustawic gpio na wejscie np komendą w wirepi.
Agnieszka Kostrzewa
Dzieki za info
Paweł
Witam, dzięki za ten wpis – sprawdził się przy podłączeniu czujnika wilgotności gleby YL-69. Do tego powiadomienie email w domoticzu i wiem kiedy jest za sucho 🙂
Agnieszka Kostrzewa
🙂
Piotr
dzień dobry,
mam taki problem że po podłączeniu drugą metodą stan w przełączniku mam dobry natomiast w logach mam co chwilę zmianę stanu, choć drzwi cały czas są zamknięte:
2019-01-19 18:59:01
Off
2019-01-19 18:59:01
On
2019-01-19 18:58:59
Off
2019-01-19 18:58:59
On
2019-01-19 18:58:49
Off
2019-01-19 18:58:49
On
Czy mają Państwo pomysł co może być nie tak…???
Jedi
Witam,
wszystko świetnie działa, ale mam pytanie na jakiej zasadzie działa drugi if w kodzie skoro nie ma warunku? Sprawdza tylko czy zmienna nie jest pusta?
„if current_state != previous_state:
if current_state:
xxx
else:
xxx”
Tomek
Zrobiłem wg 2 metody i działa tylko, że z opóźnieniem około 8 sekund. Tz. Jak zmienię stan przyłożę magnes to po około 8 sekundach w domoticzu mam reakcje że zamknięte. Jak odsunę magnes to znowu po około 8 sekundach w domoticzu dopiero się zmienia na otwarte. Jak wygląda to u Was jakie macie opóźnienie? Bo tak jak teraz działa to trochę lipa bo chciałem to powiązać z załączaniem światła ale po otwarciu drzwi czekać 8 sekund to stanowczo za długo. mam domoticz versja 4.9700. Próbowałem na pełnym Raspberry i na zero i jest tak samo.
Agnieszka Kostrzewa
U mnie działa szybciej ale też nie od razu. Tak między 3-5s. Nie wiem od czego to zależy.
Tomek
wydaje mi się że tak właśnie działa domoticz odświeża stronę co x sekund dlatego nie ma informacji od razu u mnie jest dokładnie tak samo natomiast kiedy odpytuje przez terminal w raspberry reakcja jest natychmiastowa.
Mariusz
Mam problem z 1 sposobem. Sytuacja wygląda następująco. Uruchamiam domoticz i on widzi ostatni stan kontaktrona sprzed resetu maliny. Wszystko zaczyna działać tylko i wyłącznie wtedy gdy zaloguję się na malinę przez PuTTY i w konsoli wprowadzę komendę sudo python drzwi.py Wystarczy, że wyłączę konsole i wszystko się zawiesza i domoticz widzi ostatni stan sprzed wyłączenia konsoli. W jaki sposób sobie z tym poradzić? Żeby wszystko działało muszę mieć odpaloną konsolę z wpisaną komendą.
Agnieszka Kostrzewa
Ciezko powiedzieć… Mi czasami też przestaje działać i wystarcza że zrestartuje Raspberry i wtedy działa ponownie. Dzieje się tak może raz w miesiącu. Rozumiem że masz dodane by skrypt odpalal się przy starcie maliny?
Agnieszka Kostrzewa
Ja mam w crontab – e wpisane: @reboot /home/pi/kontaktron.sh
Agnieszka Kostrzewa
Ja mam w crontab – e wpisane: @reboot /home/pi/kontaktron.sh
Trzeba utworzyć plik kontaktron.sh a w nim:
#! /bin/sh
cd /
cd home/pi/
Sleep 10
Sudo python kontaktron.py
cd /
Marcin
Hej. Czy skrypt z medoty pierwszej działa u was na raspbianie buster?
kam
a jak podłączyć 10 takich sensorów ?
Agnieszka Kostrzewa
Witam. Najlepiej kupić płytkę stykowa. W innym przypadku zabraknie w Rpi pinów GPIO – Ground (jest chyba 8 sztuk) . A podłączenie tak samo jak pierwszego tylko każdy następny do innego Pinu GPIO. W skrypcie zmieniamy tylko sensor = na za każde razem inny wolny z Rpi i w sumie tyle.
Marcin
Witam, co konkretnie zmieniasz na większa ilość kontaktronów ?
Ktoś wyżej dodał skrypt na 4 ale u mnie stan w domoticzu zmienia się tylko na 1 wpisanym sensor a reszta kicha gdzie jest błąd ? Tutaj jest mój skrypt. Wykonuje mi tylko z pierwszej sensor czyli dla gpio 17
https://pastebin.com/dGquD32K
Agnieszka Kostrzewa
A nie możesz zrobić 6 oddzielnych skryptów? Wtedy będzie działać na pewno. Pozdrawiam
Arkadiusz
U mnie nie działa z GND. Muszę mieć podpięte pod 3,3V i GPIO23. Większym problemem jest to, że on działa na odwrót…. drzwi fizycznie zamknięte to pokazane, że jest otwarte.
/usr/bin/gpio export 23 in
/usr/bin/gpio edge 23 both
Albert
Witam serdecznie,
dla wszystkich, ktorym dziala tylko z poziomu konsoli i nie chce z poziomu Domoticza po restarcie. Trzeba dodac na koncu ./domoticz.sh:
cd /home/pi
sudo ./kontaktron.py
tak jak pisze Tomaj. Mam najnowsza wersje rasbiana bustera.
Pozdrawiam i dziekuje
Agnieszka Kostrzewa
Dzięki za podpowiedz
Pioter
Witam,
taka mała prośba do autora artykułu i może innych ogarniających skrypty Python’a.
Czy byłaby szansa na odświeżenie artykułu na rok 2021 (Python 3.9 i urllib3). Walczę z tym od tygodnia i w żaden sposób mi to nie działa. Występują bardzo różne błędy, ale ogólnie w domoticzu nie działa mi ani 1, ani 2 sposób. Z góry wielkie dzięki!