Podłączenie czujnika zmierzchu w systemie Domoticz

wpis w: Domoticz | 26

W dzisiejszym wpisie opisze jak podłączyć bardzo przydatny czujnik (natężenia światła) do sterowania Naszym oświetleniem w systemie Domoticz.

Dzięki temu modułowi będziemy mogli sterować Naszym oświetleniem w zależności od tego ile światła jest w Naszym pomieszczeniu (najlepiej umieścić go w pobliżu okna)

Nie wskazuje on konkretnych wartości LUX tylko wartość 0 lub 1. Ma też możliwość regulacji czułości za pomocą „śruby” widocznej na zdjęciu poniżej.

Możemy go nabyć min. w sklepie Electropark we Wrocławiu.

Moduł natężenia światła
Moduł natężenia światła

 

Dane techniczne czujnika:

  • Moduł wyposażony fotorezystor oraz komparator LM393
  • Napięcie zasilania: 3,3V/5V
  • Czułość regulowana potencjometrem
  • Na wyjściu sygnał binarny
  • Dioda LED sygnalizująca zasilanie
  • Możliwość podłączenia czujnika bezpośrednio do mikrokontrolera (złącze P3)
  • Wymiary: 30x15mm

Podłączenie:

  • VCC – zasilanie 3,3V/5V
  • GND – Ground
  • OUT – Nasz pin w Raspberry PI – w przykładzie (kodzie, który znajdziecie poniżej) jest to GPIO 25

 

Raspberry Pi rev2 GPIO
Raspberry Pi rev2 GPIO

 

Przykładowy kod:

Aby go utworzyć logujemy się na Nasze raspberry i wpisujemy komendę:

  • sudo nano czujnikzmierzchu.py

Zapisujemy Nasz plik i za pomocą komendy:

  • sudo chmod +x czujnikzmierzchu.py nadajemy mu odpowiednie uprawnienia

 

W miejscu xxx.xxx.xxx.xxx w kodzie – wpisujemy adres ip Naszego systemu Domoticz.

W miejscu xx w kodzie – wpisujemy IDX Naszego Wirtualnego Czujnika (jak go utworzyć opisałem w poprzednich wpisach).

W systemie DOmoticz zmieniamy typ czujnika na – Dusk Sensor.

Tym sposobem powinniśmy otrzymać czujnik, który po zapadnięciu zmierzchu będzie przełączał się pozycje 1.

Możemy to wykorzystać do zarzadzania tzw. Events w systemie Domoticz. Tak by światła zapalały się tylko wtedy gdy czujnik ten będzie włączony (ale o tym i o innych systemach blokowych tam wykorzystywanych napisze w późniejszych wpisach).

Gotowy plik do ściągnięcia znajdziecie TUTAJ

26 Odpowiedzi

  1. Nie ma takiego typu czujnika jak Dusk Sensor jaki powinien być wybrany ?

  2. Nie ma takiego typu czujnika jak Dusk Sensor, jaki wybrać ?

    • Łukasz Kostrzewa

      Witam Serdecznie
      Jest taki czujnik. Jak już dodamy przełącznik to wchodzimy w jego ustawienia i tam wybieramy typ przełącznika – Dusk Sensor. Przy tworzeniu wybieramy przełącznik On/OFF.
      Pzodrawiam

  3. Faktycznie jest ale w dalszym ciągu nie działa po uruchomieniu skryptu w konsoli mam
    ./czujnikzmierzchu.py: linia 1: import: nie znaleziono polecenia
    from: can’t read /var/mail/time
    ./czujnikzmierzchu.py: linia 3: błąd składni przy nieoczekiwanym znaczniku GPIO.BCM'
    ./czujnikzmierzchu.py: linia 3:
    GPIO.setmode(GPIO.BCM)’

    • Teraz po wielu kombinacjach mam po wykonaniu skryptu

      SyntaxError: Non-ASCII character ‚\xc2’ in file czujnikzmierzchu.py on line 9, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

      Co jest nie tak ?

      • Łukasz Kostrzewa

        Witam
        Proszę na początku pliku czujnikzmierzchu.py dodać:
        # -*- coding: utf-8 -*-
        Proszę dać znać czy pomogło

  4. Dla tych którym nie działa:
    Przed całym kodem należy dodać:
    #!/usr/bin/python
    # -*- coding: -*-

    Super poradniki! Pozdrawiam i czekam na kolejne:)

  5. W dalszym ciągu uruchamiając program w konsoli ./czujnikzmierzchu.py są błędy

    • Łukasz Kostrzewa

      Witam Serdecznie
      Jakie błędy?
      Proszę coś więcej napisać.
      Pozdrawiam

    • Łukasz Kostrzewa

      Na samym dole wpisu umieściłem mój plik, który wystarczy ściągnąć i edytować. Musi działać!:)
      Pozdrawiam

  6. Hej
    bardzo fajny poradnik, korzystam z wielu przykładów
    ale ten….
    czy jest jakaś możliwość aby program działał cały czas ?
    w moim przypadku po wykonaniu on lub off przestaje działać 🙁

    • Łukasz Kostrzewa

      Witam Serdecznie

      Proszę utworzyć plik o nazwie np. czujnik.sh poprzez komendę:
      sudo nano czujnik.sh

      W pliku proszę wpisać:

      #!/bin/sh

      cd /
      cd home/pi/
      sudo python czujnikzmierzchu.py – zamiast nazwy czujnikzmierzchu.py proszę podać nazwę Pana pliku z kodem do czujnika zmierzchu
      cd /

      Zapisać ten plik i nadać mu uprawnienia za pomocą komendy:
      sudo chmod +x czujnik.sh

      Następnie proszę odpalić crantab za pomocą komendy:
      crontab -e
      i na końcu pliku wkleić

      */30 * * * * /home/pi/czujnik.sh

      Zamiast liczby 30 można wpisać np.1. 30 oznacza, że czujnik będzie wysyłął swój stan co 30 minut. 1 – co minutę.
      Proszę zrestartować malinę za pomocą komendy
      sudo restart

      Wszystko powinno działać
      Pozdrawiam i proszę o info czy pomogło

  7. Dziękuję za odpowiedź
    niestety, nie działa
    moje wpisy:
    oba w katalogu
    home/pi
    czujnikzmierzchu.py

    #!/bin/sh
    # -*- coding: utf-8 -*-
    import RPi.GPIO as GPIO
    from time import sleep
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    import urllib2
    import urllib

    try:
    if GPIO.input(22):
    print GPIO.input(22)
    httpresponse = urllib.urlopen („http://192.168.1.10:8080/json.htm?type=command&param=switchlight&idx=16&switchcmd=Off”)
    else:
    print GPIO.input(22)
    httpresponse = urllib.urlopen („http://192.168.1.10:8080/json.htm?type=command&param=switchlight&idx=16&switchcmd=On”)

    sleep(0.9)

    finally:
    GPIO.cleanup()

    i czujnik.sh
    #!/bin/sh

    cd /
    cd home/pi/
    sudo python czujnikzmierzchu.py
    cd /

    dziękuję za zainteresowanie i odpowiedź
    od niedawna bawię się RPI, Domoticzem i automatyką w domu
    wszystko w powijakach ale małymi krokami do przodu
    pozdrawiam
    Borko

    • Łukasz Kostrzewa

      Witam
      A w crontab -e Pan wpisał to co pisałem?
      Musi działać.
      Rozumiem, że skrypt ogólnie działa tylko, że raz?
      Status się nie zmienia co 30 minut? (czy co ile Pan wpisał)
      Proszę sprawdzić w logach w Domoticz czy się aktualizuje.

  8. heh
    Tak zmieniłem
    oto ostatnie dwie linijki z wpisu

    #*/10 * * * * sudo python /etc/domoticz/scripts/check_device_online.py 192.168.1.13 17 99 45
    */1 * * * * /home/pi/czujnikzmierzchu.sh

    wiem że dla „LINUXOWCÓW” to pestka
    dla mnie to wyzwanie 😉
    THX

    • Agnieszka Kostrzewa

      W crontab – e wg. tego co Pan wvzesniej pisal powinien byc odnosnik do pliku czujnik.sh a nie czujnikzmierzchu.sh. No chyba ze zmienil Pan nazwe?

  9. Tak
    w moich obu przypadkach jest to
    czujnikzmierzchu.sh
    czujnikzmierzchu.py

    • Agnieszka Kostrzewa

      A po komendzie ./czujnikzmierzchu.sh odpala sie skrypt czujnikzmierzchu.py? Jezeli tak to cos musi byc nie tak z cron bo innej opcji nie widze.
      Pozdrawiam

  10. woow
    Pani Agnieszko
    DZIĘKUJĘ 😉
    po odpaleniu ./czujnikzmierzchu.sh skrypt się nie uruchomił
    i zacząłem szukać
    i znalazłem „literówkę” w czujnikzmierzchu.sh
    poprawiłem i wszystko działa jak należy
    dziękuję za pomoc
    i stawiam wirtualne „fifko”
    pozdrawiam
    Borko

  11. Witam, jestem w trakcie realizacji tego czujnika. Jeżeli chodzi o wywołanie czujnika w malinie to w momencie zmiany natężenia oświetlenia widać stan 0 albo 1. Lecz za pierwszym razem wyskakuje mi błąd ( który teoretycznia można zignorować)

    sudo python czujnikzmierzchu.py

    czujnikzmierzchu.py:6: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
    GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    Dodatkowo po wszelkich ustawieniach domoticz nie reaguje na zmiany stanu.
    Typ to : Light/Switch, Switch, Dusk Sensor.

    Pozdrawiam Filip

  12. Cześć,

    Podczas realizacji tego czujnika natrafiłem na pewne problemy, związane z nowszą wersją pythona. Komentarze zostały z pliku źródłowego. Wrzucam kod który działa mi na versji obecnej czyli: 3.5.3

    Dzięki za bloga!

    #!/bin/sh
    import RPi.GPIO as GPIO
    from time import sleep # this lets us have a time delay (see line 12)
    GPIO.setmode(GPIO.BCM) # set up BCM GPIO numbering
    GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # set GPIO25 as input (b$
    import urllib.request
    import urllib.error
    import urllib
    from urllib.request import urlopen

    try:
    # while True: # this will carry on until you hit CTRL+C
    if GPIO.input(25): # if port 25 == 1
    print(GPIO.input(25))
    httpresponse = urlopen(„http://192.168.0.185:8080/json.htm?type=comman$
    else:
    print(GPIO.input(25))
    httpresponse = urlopen(„http://192.168.0.185:8080/json.htm?type=comman$

    sleep(0.9) # wait 0.1 seconds

    finally: # this block will run no matter how the try block ex$
    GPIO.cleanup() # clean up after yourself

Zostaw Komentarz

*