Raspberry Pi 2

Raspberry Pi 2

niedziela, 27 września 2015

Domoticz i sterowanie oświetleniem

W programie Domoticz możemy sterować pinami GPIO w Raspberry Pi.
W swoim projekcie wykorzystam moduł przekaźnika zasilany napięciem 5V jak pokazano niżej.


Przekaźnik będzie podłączony do lampki biurkowej i w tym celu wykorzystałem stare gniazdko na kabel oraz wtyk 220V.
Jest to połączone jak na schemacie niżej.


Zmontowany układ wygląda tak.


Przekaźnik zasilam zewnętrznym zasilaczem 5V , wejście oznaczone na module przekaźnika jak IN podłączamy do GPIO w Rasberry Pi, DC+ do + zasilacza 5V, a DC- do GND zasilacza, jeżeli używamy zasilacza musimy połączyć masę z zasilacza z masą z Rasberry Pi, bo inaczej przekaźnik nie będzie przełączał.
W Raspberry Pi wybrałem pin GPIO nr 20 i do niego podłączyłem wejście IN z modułu przekaźnika.

Aby w Domoticz było możliwe sterowanie pinami GPIO należy najpierw zainstalować WiringPi, zgodnie z opisem jak na tej stronie -> http://wiringpi.com/download-and-install/

Więc zaczynamy, najpierw instalujemy pakiet do obsługi GIT, otwieramy terminal w Bitvise i wklejamy:

sudo apt-get install git-core

Pobieramy pakiet WiringPi:

git clone git://git.drogon.net/wiringPi

Wchodzimy do katalogu wiringPi i urchamiamy:

cd wiringPi
git pull origin
./build

Teraz testujemy działanie WiringPi i wpisujemy kolejno:

gpio -v
gpio readall

Jak wszystko działa poprawnie, teraz musimy dodać wpisy w pliku /etc/init.d/domoticz.sh

W terminalu przechodzimy do głównego katalogu poleceniem:

cd

Edytujemy plik domoticz.sh :

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

Przechodzimy na koniec linii i wpisujemy:

/usr/local/bin/gpio export 20 out

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

sudo reboot

Wchodzimy do panelu Domoticz IP:8080
Teraz dodamy sobie nowy sprzęt, czyli wybieramy Ustawienia -> Sprzęt i szukamy na liście urządzeń Raspberry's GPIO port, wpisujemy sobie nazwę GPIO i klikamy Dodaj


Teraz klikamy Przełączniki i Ręczne ustawienia, Sprzęt ma być GPIO, Typ przełącznika ON/OFF i z rozwijalnej listy szukamy pinu 20, jak widać jest ustawiony na OUTPUT.


Wpisujemy nazwę naszego przełącznika, ja wpisałem sobie Lampka biurko i Dodaj urządzenie. Teraz mamy już nasz przełącznik i możemy włączać i wyłączać lampkę.







58 komentarzy:

  1. Wszystko gra tylko jak wiringpi kompilujesz po domoticzu to nie dziala. Trzeba dopisac restart domoticza w rc.local zeby startowal ostatni

    OdpowiedzUsuń
  2. Ja nie miałem problemów, najpierw instalowałem Domoticz, a później WiringPi i wszystko działa.

    OdpowiedzUsuń
  3. Czy u Ciebie tez powiadomienia są hm, odwrotnie? przekaźnik mam pod napięciem a domoticz widzi wyłączony, po kliknieciu stan sie zmienia na analogiczny.

    OdpowiedzUsuń
    Odpowiedzi
    1. Bo niektóre przekaźniki tak są zbudowane, że reagują odwrotnie na stan wysoki i niski. Mam ten http://allegro.pl/modul-1-kanalowy-przekaznik-l-h-5v-10a-avr-arduino-i5639328682.html to działa dobrze, a ten http://allegro.pl/modul-1-kanalowy-przekaznik-5v-10a-avr-arm-arduino-i5104312470.html działa odwrotnie.

      Usuń
    2. Ten przekaźnik, co jest na zdjęciu w poście wyżej działa dobrze, a takie węższe przekaźniki z Propoxu działają odwrotnie.

      Usuń
    3. Ja niestety mam ten, ktory widzi odwrotnie stany. Jest na to jakis sposob, zeby dzialalo jak powinno?

      Usuń
    4. Zrobić to na bramce i odbiorniku MySensors i zmodyfikować program odbiornika.

      Usuń
    5. a mozesz jasniej? nie jestem zbyt biegly w tych sprawach

      Usuń
    6. Bramka i odbiornik Mysensors, to jest Arduino z podłączonym NRF24L01, komunikują się bezprzewodowo na częstotliwości 2,4 GHz. Opisałem to tu http://projektpimalina.blogspot.com/2015/10/domoticz-i-bramka-mysensors-arduino.html
      Tu jest program na przekaźnik, który wgrywamy do Arduino https://www.mysensors.org/build/relay
      Tylko taniej wyjdzie kupić odpowiedni przekaźnik

      Usuń
    7. Jak już chcesz to w kodzie programu trzeba zmienić:
      #define RELAY_ON 1 // GPIO value to write to turn on attached relay
      #define RELAY_OFF 0
      na :
      #define RELAY_ON 0 // GPIO value to write to turn on attached relay
      #define RELAY_OFF 1

      Usuń
    8. Teraz rozumiem. Jednak wole juz zostac przy tym rozwiazaniu, tym bardziej ze przekaznik steruje wlaczaniem ledow i drugi wentylatorem do routera. I to wszystko jest obok siebie, wiec bezprzewodowe rozwiazanie w tej sytuacji to przerost formy nad trescia.

      Mozesz mi jeszcze wyjasnic:
      1. Co to za kod z ostatniego komentarza?
      2. Moze mi podpowiesz jakies rozwiazanie do sterowania gniazdkiem. Chcialbym, aby mozna bylo nim sterowac bezprzewodowo czyli podpowiedz z mysensors + arduino byloby najlepsze. Jednak ja chcialbym, aby wszystko zmiescilo sie w puszce.
      To samo chcialbym zrobic z wylacznikiem swiatel, przy czym fajni by bylo miec mozliwosc recznego wlaczenia swiatla. Masz jakis pomysl? Z gory dziekuje.

      Usuń
    9. Znalazlem bardzo proste roziwazanie swojego prblemu z odrotnymi stanami. W pliku /etc/init.d/domoticz.sh w sekcji do_start() wystarczy dodac:

      sudo sh -c 'echo 14 > /sys/class/gpio/export'
      sudo sh -c 'echo high > /sys/class/gpio/gpio14/direction'
      sudo sh -c 'echo 1 > /sys/class/gpio/gpio14/active_low'

      Usuń
    10. Poczytaj wcześniejsze wpisy, to jest kod do MySensors.
      Sterowanie gniazdkiem albo na włączniku schodowym bezpośrednio z RPi, albo na dzwonkowym z MySensors. Nie da się tego zmieścić w puszce, załozyć drugą puszkę albo kupić i wymienić na głeboką puszkę.

      Usuń
    11. ok, w takim razie nie rozumiem jeszcze co robie.
      Ale dzieki za pomoc :)

      Usuń
  4. Cześć.
    A jak zrobić aby przekaźniki po restarcie "wstawały", tj. jesli był włączony, restaruję malinę, po restarcie przekaźnik załącza się. W tym momencie w domoticzu widzę ze przekażnik jest włączony, a faktycznie nie. Przekażniki sterowane stanem wysokim.

    OdpowiedzUsuń
  5. Witam czy ktoś próbował plan czasowy czyli włączenie i wyłączenie wyjścia o danej godzinie. Ja próbuje i jakoś nic nie działa :(

    OdpowiedzUsuń
  6. Witam, czy jest możliwość podłączenia przekaźnika do zasilania 5v na GPIO raspberry, tak żeby nie używać dodatkowego zasilacza ?

    OdpowiedzUsuń
  7. Witam. Na wstępie dziękuje za opis, bardzo mi pomógł. Przebrnąłem przez całość, jednak w momencie dodania przełącznika w DOMOTICZ i wybraniu typu GPIO niżej nie mam do wybory portu GPIO a jest komunikat "GPIO INIT ERROR". Maci pomysł co jest nie tak? Nigdzie nie znalazłem odpowiedzi.

    OdpowiedzUsuń
    Odpowiedzi
    1. udało się rozwiązać problem z "GPIO INIT ERROR"?

      Usuń
    2. ja miałem ten problem jak zainstalowałem domoticz w system a nie w katalogach użytkownika

      Usuń
  8. mi to nie działa, ciągle mam stan wysoki na przekaźniku i nie działa on/off w domoticzu

    OdpowiedzUsuń
    Odpowiedzi
    1. WiringPi działa?
      Zobacz czy nie pomyliłeś pinów w RPi i czy poprawnie dodałeś w pliku domoticz.sh :
      /usr/local/bin/gpio export 20 out
      Dla tego wpisu, jest to pin 20 GPIO

      Usuń
    2. To może inaczej
      siedziałem wczoraj z kolegą który zgodził mi się pomóc i różne konfiguracje nie zadziałały.
      Mam nowe raspberry pi 3
      zainstalowałem system noobs
      Wykonałem wszystko z http://wiringpi.com/download-and-install/
      Następnie zainstalowałem wszystko tak jak jest w instrukcji domoticza.

      Edytuje plik wskazany, dopisuje który pin ma być obsługiwany. Po reboocie zapala się dioda w przekaźniku i słychać załączenie przekaźnika. Dodaję w domoticz według instrukcji i nie podaje stanu niskiego.

      Usuń
    3. Zamiast przekaźnika podłącz zwykła diodę i zobacz czy będzie działać w Domoticz prawidłowo. Ja obecnie mam zainstalowany Domoticz na Raspbian Jessie i wszystko działa prawidłowo.

      Usuń
    4. Ok coś już mamy
      Zwykła dioda działa, więc czemu przekaźnik nie działa ?

      Usuń
    5. Coś nie tak z przekaźnikiem, ja używam takiego przekaźnika jak pokazałem na zdjęciu, mam też wąski przekaźnik z Propoxu http://store.propox.com/index.php?p2949,mmsmartrel-1
      On działa odwrotnie, czyli jak damy stan wysoki, to się wyłacza, a jak stan niski to się włącza.
      Pisałem już o tym wcześniej w komentarzach

      Usuń
    6. Przekaźniki poprzez arduino chodzą normalnie.
      Mam je 2 ( jeden pojedyńczy a drugi 4 kanałowy)
      Ywrobot sie nazywają.
      Po reboot maliny wyłączają się i włączają po chwili. Więc załączają się raczej poprawnie.

      Usuń
    7. Przekaźniki jak zasilasz?
      Lepiej zasilać je osobnym zasilaniem i wtedy dajesz masę GND z przekaźnika do RPi i zasilacza.
      Zmierz też napięcie jakie daje RPi na pinie w stanie wysokim i porównaj je z Arduino.

      Usuń
    8. I coś się wyjaśniło bo u mnie jest to samo nawet po podłączeniu dodatkowego zasilania

      Usuń
    9. Zygmunt a dodałeś wpis w pliku /etc/init.d/domoticz.sh ustawiając pin jako wyjście out?
      Jeżeli podłączona dioda się włącza i wyłącza, a przekaźnik nie reaguje, to po prostu te przekaźniki, co macie nie nadają się do RPi. W RPi na wyjściu pinu przy stanie wysokim jest występuje zasilanie 3,3V i widocznie jest to zbyt małe zasilanie, aby przekaźnik zareagował.

      Usuń
    10. tak dodałem ten wpis. zmierzyłem napięcie mam około 5V. u mnie świecą sie dwie djody na przekaźniku cały czas i przekaźnik nie reaguje. na poczatku podczas dodawania świeciła jedna dopiero po tym jak zrobiłem reboot po wszystkich wpisach zaświciły się dwie.

      Usuń
    11. Zygmunt sprawdź na zwykłej diodzie led czy będzie się włączać i wyłączać, jak będzie działać, to znaczy, że przekaźnik się nie nadaje.

      Usuń
    12. kupiłem taki jak ty przekaźnik i wszystko działa prawidłowo :)

      Usuń
  9. Ten przekaźnik działa normalnie
    http://telmal.com/pl/p/Modul-przekaznik-5V-10A-zmienny-TIGER-LOW-HIGH-x1-/316

    OdpowiedzUsuń
  10. dzięki z info o przekaźnikach, ja też miałem z tym problem i u mnie przekaźniki z arduino Ywrobot nie działają. Kupie to co poleciłeś tylko napisz czy 4 kanałowy działa napewno. Własnie dzięki twojemu blogowi przerabiam sterowanie swojej kotłowni na RBI2 a zacząłem od sterowania kolektorów słonecznych.

    OdpowiedzUsuń
    Odpowiedzi
    1. rozwizalem swoj problem zmniejszajac zasilanie Ywrobot do 3,3v ale nadal stany wyswietlane w Domoticz a faktyczne przekaznikow sa odwrotne

      Usuń
    2. Bo te przekaźniki działają odwrotnie.

      Usuń
  11. miski powiem Wam tak obojetne jak przekaznik wystarczy dodac na koncu w pliko domoticz.sh linie konfiguracyjne
    gpio export 2 out
    sudo sh -c 'echo 1 > /sys/class/gpio/gpio2/active_low'
    sudo sh -c 'echo high > /sys/class/gpio/gpio2/direction'
    gpio export 3 out
    sudo sh -c 'echo 1 > /sys/class/gpio/gpio3/active_low'
    sudo sh -c 'echo high > /sys/class/gpio/gpio3/direction'
    gpio export 4 out
    sudo sh -c 'echo 1 > /sys/class/gpio/gpio4/active_low'
    sudo sh -c 'echo high > /sys/class/gpio/gpio4/direction'


    i tak dalej i zmienia na domysle z wlaczonego przekaznika na wylaczony domyslnie

    OdpowiedzUsuń
  12. a najlepiej polecam Home Assistant a nie Domoticz bo Domoticz to lipa straszna

    OdpowiedzUsuń
  13. przekaźniki opanowane. zrobilem cale sterowanie kolektorami i zabezpieczenie przed przegrzaniem. ale mam problem nie chce urzadzen bezprzewodowych i brakuje mi wyjsc gpio czy macie jakis pomysl jak polaczyc dwa domoticze na rbi2.lub jak to rozbudowac przez arduino. pozdrawiam

    OdpowiedzUsuń
  14. przekaźniki opanowane. zrobilem cale sterowanie kolektorami i zabezpieczenie przed przegrzaniem. ale mam problem nie chce urzadzen bezprzewodowych i brakuje mi wyjsc gpio czy macie jakis pomysl jak polaczyc dwa domoticze na rbi2.lub jak to rozbudowac przez arduino. pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Jak Ci brakuje wyjść, dodaj bramkę i odbiorniki MySensors.

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

      Usuń
    3. może do RPi podpiąć rejestr przesuwny - na rejestrze byś podpinał przekaźniki i jużtylko nie wiem jak z rejestrami poradzi sobie domoticz

      Usuń
  15. Witam
    Szukam już dłuższy czas czy da się sterować przełącznikiem z zewnątrz programu Domoticz. Chodzi mi oto czy jest możliwość wpisać w przeglądarkę link w przeglądarce do przełączenia przełącznikiem http://192..../gpio24/on czy toggle , dokładnie mówiąc uruchamiać to z NFC?

    OdpowiedzUsuń
    Odpowiedzi
    1. Da się, opisałem to tu http://projektpimalina.blogspot.com/2016/05/json-i-wymiana-danych-w-domoticz.html

      http://192.168.3.105:8080/json.htm?type=command&param=switchlight&idx=21&switchcmd=On

      włącza włącznik o idx 21

      http://192.168.3.105:8080/json.htm?type=command&param=switchlight&idx=21&switchcmd=Off

      a ta wyłącza.

      Idx odczytasz w Urządzeniach

      Usuń
    2. Super dzięki nie wiem jak mogłem to przeoczyć.

      Usuń
  16. Witam
    Jest opcja żeby w espeasy powiązać np.gpio 3 z gpio 4?
    Czyli switch na gpio 3 który steruje przekaźniki gpio4.
    Bez powiązania z domoticzem. Chodzi o to żeby można było sterować oświetleniem w przypadku braku połączenia z serwerem.

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie zajmuję się espeasy, cały system mam wykonany na MySensors. Szukaj pomocy w innym miejscu.

      Usuń
  17. Witam, jaka może być przyczyna jeśli na pinie w niskim stanie występuje napięcie ~1.8V , w wysokim jest normalnie około 5V.

    OdpowiedzUsuń
  18. czy możesz napisać jak do tego co powyżej dodać jeszcze switch baton przycisk zwierny impulsowy który też by włączał i wyłączał lampkę
    czy pin ustawiam na out dodaje w domoticz switch baton off
    i jak to potem połączyć z przekaźnikiem lampki ?
    będę wdzięczny za pomoc

    OdpowiedzUsuń
  19. Możesz spróbować dodać pin jako wejściowy in poleceniem: /usr/local/bin/gpio export 21 in , gdzie pin 21 będzie wejściowym. Dodać przycisk w Domoticz, rodzaj: Contact i utworzyć takie zdarzenie
    https://goo.gl/photos/VHqRnCPpWLhcgmay6
    w Domoticz -> Konfiguracja -> Więćej opcji -> Zdarzenia

    OdpowiedzUsuń
    Odpowiedzi
    1. hej dzięki za instrukcje
      jednak mi to nie działa :(
      już przy dodawaniu contact jaki input naciśnięciu test
      wyświetla się komunikat ze pin nie jest ustawiony jako output
      jeszcze w tych zdarzeniach jak robie to ustawienie jak ty to przy gniazdko A masz napis G-L i przy lampka
      ja mam M-R Gniazdko A i A-F Lampka
      to tez dla mnie dziwne trochę

      podłączyłem diodę pod pin 20 i dioda się zapala przez domotoicz jednak z przycisku nie :(

      Usuń
    2. Zobacz na tym filmie jak dodaje się kontaktron, który zapala diodę https://youtu.be/7ve0KLruhU4
      Kontaktron działa na zasadzie włącznika.

      Usuń
    3. hej coś mi się udało jednak trochę utknąłem bo nie specjalnie wiem jak to przerobić
      https://photos.google.com/photo/AF1QipP1fMNQpZTMrZYCV4_2iJ7l9Y8fDv9yzIZGreec

      jak wciskam przycisk dioda się zapala jak poszczam to gaśnie i to w sumie logiczne
      jednak jak mam to przerobić że po naciśnięciu dioda się zapali a po drugim naciśnięciu dopiero zgaśnie
      pomożesz proszę ?

      Usuń
    4. https://goo.gl/photos/ob7Dv1R5N6rco1Sw6

      Usuń
  20. Witam wszystkich na forum. Mam pytanie czy ktoś z Was zmusił "domoticza" do współpracy układ mp23017 (i2c) jako expander wyjść do sterowania lampami myśle ze wystarczy mały skrypt, może w wirtualnym urządzeniu (DUMMY). Skoro poprzez wpisanie komendy w terminalu da się zmieć stan z hi/low( i2cset -y 1 0x20 0x14 0x01) to czemu domoticz ma sobie z tym nie poradzić. Jedno jest pewne ja sobie z tym na pewno nie radze. W tej chwil korzystam CAYENNE MYDEVICES ale tu jest mało opcji i słaby wygląd. Bardzo proszę o pomoc. Pozdrawiam Marcin

    OdpowiedzUsuń