Dom w zasięgu ręki – czyli dom sterowany z dowolnego miejsca na świecie

Dom w zasięgu ręki – czyli dom sterowany z dowolnego miejsca na świecie

Siemanko. W październiku mam 2 okazje do świętowania: urodziny i konkurs Gadżety na majsterkowie.

Doskonałym przykładem takiego gadżetu jest dom, w którym możemy zdalnie zapalić/zgasić światło, sprawdzić czy brama jest zamknięta, a jeśli nie – zamknąć ją. A wystarczy do tego urządzenie z dostępem do internetu i przeglądarką internetową. Brzmi nieźle? To zaczynamy!

Przez cały wpis będą wam towarzyszyć moje filmiki, które w jeszcze jaśniejszy i dokładniejszy sposób pokażą wam co i jak. Nie zapomnijcie obejrzeć materiału na końcu wpisu. Warto! :D

 

Opublikuj swój projekt i odbierz 50% rabatu do wykorzystania w sklepie Nettigo.pl

Co będziemy potrzebować?

-Raspberry Pi z dostępem do internetu

-karta pamięci (min. 4GB)

-2 zasilacze 5V (jeden do Raspberry, drugi do przekaźników)

-oprogramowanie Win32DiskImager, Bitwise SSH Client oraz Notepad++ (darmowe)

-moduły z przekaźnikami (tyle, ile chcemy podłączyć urządzeń)

-przewody żeńsko-żeńskie do płytki stykowej

-przewody (do połączenia wszystkiego z Raspberry)

-przyciski/krańcówki

-Przełączniki (pstryczki) schodowe

-termometry (ja używam DS18B20)

-narzędzia

 

Ok. To jak wiemy co potrzebne, to bierzemy się do cz. 1.

Najpierw musimy przygotować nasze Raspberry do pracy. Uruchamiamy Win32DiskImager:

http://sourceforge.net/projects/win32diskimager/

Pobieramy system Raspbian:

http://downloads.raspberrypi.org/raspbian_latest

Wkładamy kartę do komputera, otwieramy Pobrany plik, wypakowujemy, a następnie wstawiamy go do Win32DiskImager, wybieramy naszą kartę (u mnie E:) i klikamy Write.

Desktop 2014-10-04 09-08-46-477

Po wgraniu systemu, wkładamy kartę do Raspberry, podłączamy do internetu, monitora i klawiatury i oczywiście monitora/telewizora.

Po przejściu przez panel konfiguracyjny i zrestartowaniu systemu, możemy odłączyć monitor i klawiaturę.

 

Dalej pobieramy Bitwise SSH Client i uruchamiamy go.Desktop 2014-10-04 09-00-09-660

W host wpisujemy IP raspberry. Można je sprawdzić logując się do rutera (najlepiej w DHCP). Port zostawiamy na 22.

Username – nazwa użytkownika (domyślnie pi). Mamy też profil root, czyli administrator (będziemy się do niego logować później). Na razie zalogujmy się do pi. Domyślne hasło to raspberry. Pamiętajmy, aby initial method zmienić na password. Dopiero wtedy możemy wpisać hasło i zalogować się zdalnie do malinki przyciskiem Login. Powinien nam się otworzyć wiersz poleceń oraz przeglądarka plików.

Desktop 2014-10-04 09-00-36-575

teraz możemy zacząć podejmować czynności które pozwolą na zalogowanie się do root.

Piszemy polecenie:

Akceptujemy przyciskiem enter. Konsola poprosi nas o New UNIX pasword. Wpisujemy hasło jakie chcemy mieć do root. Potem konsola poprosi nas o powtórzenie, więc piszemy jeszcze raz. Teraz mamy już uprawnienia do korzystania z root. Jeśli chcemy, możemy się wylogować z pi i zalogować do root, ale na razie nie będzie to konieczne.

Teraz będziemy instalować oprogramowanie na Raspberry, które pomoże nam się do malinki logować przez przeglądarkę.

U mnie te czynności trwały dość długo. Pamiętajcie, aby polecenia pisać po kolei, a nie wszystkie naraz. Można używać funkcji kopiuj+wklej, ale w konsoli nie działają skróty klawiszowe Ctrl+C/Ctrl+V. Dalej, piszemy polecenie:

Naciskamy Ctrl+W i piszemy port i enter. Linijkę port = 8000 zmieniamy na port = 80  po czym klikamy Ctrl+X, Y oraz enter.

Co mieliśmy poinstalować, to poinstalowaliśmy. Teraz zbudujemy panel. Musimy to zrobić dobrze, bo będziemy się w niego nie raz wpatrywać. Nie będę się nad tym rozwodził, po prostu podlinkuję filmik(i) które wszystko wyjaśnią.

Odnośnie gradientów, pytaliście, jak przyporządkować każdemu przyciskowi inny gradient. Wystarczy, że w miejscu standardowego .LOW {/.HIGH  { wpiszemy #gpio3.HIGH { / #gpio3.LOW { oczywiście gdy chcemy np. pin 4, po prostu zamieniamy 3 na 4. I tyle :D

Mamy panel. Ale ten panel, to my sobie teraz możemy tylko przetestować na diodach. Czas wykonać instalację elektryczną i elektroniczną.laczniki-schodowe i przekaźnik

2 czerwone przewody, to przewody łączące się z tymi, które znajdujemy w puszce. UWAGA! Może wystąpić konieczność zakupu specjalnych głębszych puszek ze wzglądu na to, że za przełącznikiem musi znaleźć się przekaźnik.

OLYMPUS DIGITAL CAMERA

jak widać (po otworach), użyłem specjalnej puszki, głębszej o połowę niż standardowe. To pozwoliło upchać w niej pstryczek i przekaźnik. Ten sposób pozwala jednocześnie na sterowanie światłem w sposób tradycyjny, lub zdalny. Jedyny minus takiego rozwiązania to to, że na panelu internetowym nie zobaczymy, czy światło jest włączone, czy zgaszone, bo wszystko zależy i od przekaźnika i od pstryczka.

Ja przy remoncie musiałem powiększać w sumie 9 otworów na puszki! Było ciężko.

Ale chwila chwila… Gdzie idą kabelki od niskiego napięcia? Idą sobie ścianą w dół, a potem do listwy, aż do raspberry. Jak widać, wychodzące przewody po prostu połączyłem z przewodami żeńskimi i wszystko działa. Musimy pamiętać, aby dobierając kabel, nie wybrać za cienkiego, ponieważ ze względu na rezystancję przewodu, do przekaźnika może nie dojść wystarczające napięcie i przekaźnik może nie działać poprawnie. A jeśli już w tym temacie. Przekaźniki kiedy są załączone pobierają ok. 70mA prądu. Dla tego, jeśli robimy więcej niż 4, warto dać do nich osobny zasilacz. Jego wydajność prądowa powinna być trochę wyższa niż liczba przekaźników mnożona przez 0,07. Napięcie oczywiście 5V. Nie zapomnijcie połączyć mas obu zasilaczy, bo w przeciwnym wypadku, przekaźniki nie będą działać. Łącząc przekaźniki do raspberry najlepiej jest posługiwać się tym układem pinów: Raspberry-Pi-GPIO-Layout-Revision-2-e1347664831557

Orientacja schematu wygląda w ten sposób, że GPIO7 jest po stronie gniazda kompozytowego (Video).

Dobra. Mamy już światło.

Pora zabrać się za termometr. Ja użyję termometrów DS18B20:

http://www.ebay.com/itm/140714089032?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Może najpierw omówię podłączenie, ponieważ przy instalacji sterowników do Raspberry, termometr powinien być już podłączony. Termometr komunikuje się poprzez interfejs OneWire. Oznacza to, że na jednym kablu (w końcu OneWire) możemy podłączyć do 8 termometrów. Zasilamy je z 3,3V, a pin OneWire w raspberry to domyślnie GPIO4.

1. ds1820-Raspberry-pi

Termometr podłączony? To idziemy do komputera.

Obsługa OneWire jest zwykle dołączana do systemu Raspbian, ale żeby później się nie głowić że coś nie działa, warto sprawdzić, czy na naszym raspbianie jest One Wire. Wpisujemy polecenia:

Jeśli nie wyskoczą nam żadne błędy, to wszystko jest ok. Teraz wpisujemy:

Na końcu robimy enter i wpisujemy  w1-gpio oraz w1-therm

Desktop 2014-10-09 15-21-30-686

 

Teraz teoretycznie nasze termometry są poprawnie zainstalowane. Jak odczytać z nich temperaturę? Na razie zrobimy to w wierszu poleceń.

Konsola powinna nam wyrzucić listę ID wszystkich naszych podłączonych termometrów, oraz niejaki w1_bus_master1 (nim się nie zajmujemy). Jeśli już znamy id, to możemy odczytać temperaturę.

W miejscu 28-00000xxxxxxx podajemy ID termometru z którego chcemy odczytać temperaturę. Tam gdzie mamy t=23500, mamy temperaturę. Po podzieleniu przez 1000 otrzymujemy temperaturę w stopniach C. Sposób fajny, ale mało komfortowy. W końcu chcemy mieć naszą temperaturę na panelu OnLine.

W tym celu wpisujemy

Szukamy [DEVICES] i wpisujemy pod nim NazwaTermometru = DS18B20   Musimy pamiętać o jednej linijce odstępu.

Desktop 2014-10-09 15-48-46-84

Teraz wystarczy wejść w domyślny panel WebIOpi oraz w devices monitor. Powinien się tam znajdować termometr. Odczyty są wykonywane co 10sek. Jeśli jednak usunęliście ten panel, obejrzyjcie film. Powiedziałem tam jak dodać termometr do naszego prywatnego panelu.

 

Co będzie nam teraz przeszkadzało? Pewnie konieczność ustawiania odpowiednich pinów na wyjście/wejście. Pora się za to zabrać.

Użyjemy do tego celu programu napisanego w języku python (.py) Program jest stosunkowo prosty.

Linijki

odpowiadają za „konfigurację programu”, linijki

powielone wielokrotnie odpowiadają za ustawienie wejścia/wyjścia na danym pinie. X to numer pinu, a Y to IN lub OUT (w zależności czy chcemy wejście, czy wyjście).

Powyższe 3 linijki odpowiadają za jedno „mignięcie” na wszysthich pinach ustawionych na wyjście (możemy wtedy sprawdzić, czy wszystko jest w porządku z naszą instalacją.

Z to LOW/HIGH (stan logiczny na wyjściu).

T to czas w sekundach.

Teraz wystarczy nasz plik zapisać, ja zapisałem jako boot.py do folderu /boot/.

Po restarcie systemu wystarczy tylko w konsoli wpisać polecenie:

Desktop 2014-10-20 17-56-55-248

Program po zakończeniu po prostu się wyłączy (ale Wy/Wej pozostaną takie, jakie ustaliliśmy).

Ok, zrobiliśmy sobie światło w pokoju, kto sprytniejszy zrobił sobie jeszcze bramę, albo coś tam jeszcze, ale może być tak, że będziemy chcieli zdalnie sprawdzić, czy np. brama jest zamknięta, a jeśli nie to ją zamknąć. W większości takich przypadków, będziemy poza domem i poza naszą siecią. Przez wzgląd na to, spróbujemy się zalogować do naszego panelu z dowolnego miejsca na świecie. Proste, czy trudne? Zobaczcie sami!

Na początek musimy stworzyć konto w serwisie No-Ip. W tym celu wchodzimy w link:

https://www.noip.com/sign-up

Wpisujemy wszystkie dane, ale możemy zaznaczyć create my hostname later. Następnie klikamy FreeSignUp. Desktop 2014-10-22 20-52-34-816

 

Po zakończeniu procesu rejestracji, powinniśmy zobaczyć nasz panel. Teraz musimy stworzyć „przekierowanie”, więc klikamy Add a host.

Desktop 2014-10-22 21-00-05-795

w hostname wpisujemy adres, jaki będziemy musieli wpisać w przeglądarce przy logowaniu się do raspberry. Jeśli macie darmowe konto noip, to musicie wybrać domenę z kategorii No-Ip Free Domains. Host type nie ulega zmianie (DNS host (A)). Ip adress to adres naszego routera w sieci globalnej. Nie jest to Ip naszego raspberry. To pole zwykle wypełnia się automatycznie i nie musimy go zmieniać. Reszta pól pozostaje nie zmieniona.

Desktop 2014-10-22 21-20-06-647

Po tych czynnościach klikamy add a host. Teraz nasz host jest gotowy.

Następnie w nowej karcie logujemy się do naszego routera (192.168.1.1). Musimy znaleźć na nim opcję DMZ. W DMZ ustawiamy nasze raspberry.

Desktop 2014-10-22 21-23-20-336

Po tych czynnościach wszystko powinno działać. Mała uwaga, nie testujcie tego linku będąc podłączonym do tej samej sieci co router. Wtedy zostaniemy przekierowani nie do raspberry, a do routera. Spokojnie, w każdej innej sieci wszystko będzie działać idealnie. Kolejną część wpisu pozostaje jedynie zakończyć filmem. :D

 

To jak na razie tyle. Wpis będzie cały czas uzupełniany pomysłami od was, oraz moimi odcinkami „Jak zdalnie sterować Raspberry Pi”. Nie zapomnij obejrzeć materiału poniżej :D

YouTube: https://www.youtube.com/channel/UCfQ_sn-aQgJhVGwZJY6Tb2A

e-mail: [email protected]

Wszystkie pliki o które będziecie prosili (np mailowo) będą podlinkowane tutaj:

 

Plik demonstrujący wszystkie przyciski oraz moje panele wykorzystane w projekcie:

http://download1349.mediafire.com/55jo99dkejgg/k2k2c823rc33p6j/Panele+Demo+i+Personal.zip

 

Ocena: 4.25/5 (głosów: 51)
Nettigo - patron działu Elektronika

Podobne posty

53 komentarzy do “Dom w zasięgu ręki – czyli dom sterowany z dowolnego miejsca na świecie

  • W sumie fajne, tylko nasuwa się pytanie, po co mi sterowanie zdalne (poza symulacją domowników) jak nie znam stanu wyjścia przekaźników poprzez interfejs? Nie wiem czy coś jest włączone czy nie więc skąd mam wiedzieć co włączyć a co nie, no chyba ,że ktoś wie na 100% co zostawił włączone Tak jak Cube napisał, czekam na więcej bo jak na razie zmierza wszystko w dobra stronę ;)

    Odpowiedz
    • Zawsze jak wyjeżdżam gdzieś dalej, to zawsze ustawiam sobie wszystkie przełączniki tak, abym wiedział, że coś jest włączone/wyłączone. Choć masz rację, na codzień jest to trochę uciążliwe. :)

      Odpowiedz
  • Jak już ciągnąłeś kabel z puszki z włącznikiem światła do raspberry (3 przewody) to mogłeś dorzucić jeszcze jeden kabel i zastosować „włączniki dzwonkowe” i sterować włączaniem światła całkowicie przez raspberry. Znał byś wtedy zawsze stan włączenia.

    Odpowiedz
  • Zastanawia mnie jak wygląda sprawa z zabezpieczeniem. Chodzi mi o to czy złodziej który ma zamiar wejść do Twojego domu będzie tylko potrzebował komputer z dostępem do internetu.

    Odpowiedz
    • Będzie potrzebował komputera, internetu, loginu i hasła do panelu. Pracuję nad systemem, który będzie wysyłał maila, gdy po przejściu w tryb bezpieczny, ktoś otworzy bramę, drzwi itp. ;)

      Odpowiedz
      • Właśnie miałem napisać, że w poradniku nie napisałeś o zmianie hasła na użytkownika Pi. Zostało domyślne więc każdy się będzie mógł zalogować.
        W ogóle bał bym się wystawiać tak po prostu raspbbery na zewnątrz. Zrobiłem z buforem w postaci bazy danych mysql od dostawcy hostingu.

        Odpowiedz
    • Dobry pomysł. Przyznaję, szkoda że na to nie wpadłem. Najgorsze jest to, że teraz jest już za późno, bo kable w ścianie już otynkowane. Ale faktycznie, lekko zmodyfikować program w pythonie i by zadziałało. :)

      Odpowiedz
  • Powiem Ci kolego,że nie chciało mi tego czytać ale przejrzałem pobieżnie. Sam mam podobny system na raspberry, tzn miałem, póki nie zaczął się psuć. Również na webiopi ale 0.7 – dlatego proponuje poprawić wpis aby wszyscy którzy to przeczytają instalowali już nowszą wersje. A co do samego systemu to powiem Ci tak: raspberry pi się do tego nie nadaje. Jak podziała kilka dni, no ewentualnie tygodni siada system plików na karcie SD co w efekcie daje błędy I/O oraz bad sectory – jak spotkasz chodź jeden taki błąd przy ładowaniu systemu i fsck sobie z nim nie poradzi wiedz, że Twoja karta SD nie nadaje się już do niczego. Mój projekt posiadał oprócz Twojego podłączony expander PCA9685 z 16 kanałami PWM którymi sterowałem oświetleniem LED i taśmami RGB, a także 2 sztuki MCP23017 do sterowania przekaźników i zarządzanie wejściami cyfrowymi. Do tego obsługa RS485 do sterowania roletami i małego urządzenia wysyłającego odebrane kody z pilota IR po magistrali 485. Cały swój praktycznie projekt przeniosłem na arduino. Dlaczego ? Bo w przeciwieństwie do raspberry mikrokontroler jest niedozaje… :) dlatego rozważ poważnie tą propozycję, bo ja gdy siadałem do arduino to znałem tylko podstawy C ale szybko z pomocą internetu ogarnąłem ten sprzęt i w sumie ten C z arduino jest tak samo intuicyjny jak Python w raspberry. W tej chwili zamierzam dopieścić program na arduino i pokombinować z raspberry – w sensie, że arduino będzie masterem a raspberrry slavem, który odpytywać będzie po USB w arduino – czyli w sumie po RS po przecież siedzi tam zwykły FT232R. I wszystko wyświetlane będzie na WWW. Narazie całą partycje root przeniosłem na dysk przenośny USB a partycja boot została na SD i powiem że jest to jakieś rozwiązanie ale nie jestem w stanie powiedzieć na jak długo bo narazie nie przebywam na stałe w domu i nie wiem czy malina jak nie podziała kilku tygodni to nie zajedzie mi wraz dysku… Jak byś miał jakieś pytania jak skonfigurować obsługę MCP lub PCA, DHT11, RS itp. w webiopi to chętnie pomogę. Pozdrawiam.

    Odpowiedz
    • Użyj Arduino Yun, zamiast dwóch płytek. Tam masz mikrokontroler + Linuksa, na którym łatwo zrobisz interfejs + biblioteki sklejające to w łatwą do programowania całość.

      Odpowiedz
      • dzięki za radę :) będę miał to na uwadze. Ale koszt tego Yun wcale nie jest mały, a raspberry ma zdecydowanie większe możliwości dlatego jeszcze pokombinuje z maliną zobaczę co z tego będzie. Rozważam także wyjście z jakimś zamiennikiem raspberry pi – np banana pi. No ale zobaczymy bo w sumie nie potrzebuje wiele: głownie jakiś serwer najlepiej na pythonie, do tego airplay i airprint na jakiejś 32 bitowej bezawaryjnej platformie :)

        Odpowiedz
    • Być może. Prawdę mówiąc sam więcej korzystam z arduino niż z Raspberry, ale tutaj wykorzystałem raspberry ponieważ miałem problemy z modułem ENC, oraz wydaje mi się, że tyle paneli ile już zrobiłem, nie zmieściło by się na żadnym arduio.

      Odpowiedz
    • To chyba miałeś pecha, u mnie Raspberry od roku chodzi bez pryknięcia, kartę pamięci wziąłem starą z aparatu. Może tu tkwi przyczyna – kiedyś karty były wolniejsze ale nie psuły się tak łatwo.

      Odpowiedz
  • Ja bym wypieprzył ten moduł i wsadził sam przekaźnik. Po co marnować tyle miejsca, a i zapewne te moduły kosztują więcej jak 8zł. Pomijam fakt że 10A na gniazdko to trochę mało, powinna być 16A minimalnie.

    Odpowiedz
    • Ja kupowałem za 1,5$ na ebay’u, czyli ok. 4,60 zł.
      A przecież przekaźniki i tak ciągną 70mA, więc i tak musiałbym dać jakiś sterownik z tranzystorem i czymś tam jeszcze. No i kwestia lutowania. Przekaźniki musiałbym lutować, a tutaj mam złącza ARK i wszystko cacy. Oczywiście mógłbym też całą elektronikę do sterowania przekaźnikami dać obok Raspberry, ale po pomiarach jakie dokonałem okazało się, że i tak musiałbym dać większe puszki.
      Gdybym sam lutował ten sterownik, wyszło by mnie 2x drożej niż za moduły.
      Ogólnie rzecz ujmując, wolę moduły :)

      Odpowiedz
    • Spalisz port GPIO. Cewka w przekaźniku bierze więcej prądu niż GPIO jest w stanie podać. Potrzebny jest moduł. Ja sobie sam zrobiłem płytkę z tranzystorem, bezpiecznikiem i przekaźnikiem. Moduł daje Ci też dodatkowe zabezpieczenie (ja dodałem diodę), bo jak odwrotnie podłączysz bieguny a nie masz diody, to też spalisz (tranzystor albo GPIO).

      Odpowiedz
  • Co do połączenia się z wewnątrz sieci – zamiast IP powinno działać również po nazwie Raspberry i ścieżce pliku, który normalnie wyświetlasz w przeglądarce.
    Np.

    RasPi/katalog1/index.html

    ewentualnie jeśli zmieniałeś to na końcu dodajesz numer portu po ‚ : ‚

    Odpowiedz
  • Po wgraniu systemu, wkładamy kartę do Raspberry, podłączamy do
    internetu, MONITORA i klawiatury i oczywiście MONITORA/telewizora. reszta elegancko :)

    Odpowiedz
  • Czy wie ktoś jak odczytać sygnał na wejściu przez Webiopi? Tzn. muszę odczytać stan niski na pinie gpio, po czym zapali się znacznik w aplikacji. będzie to służyło do sygnalizacji zamknięcia/otwarcia bramy.

    Odpowiedz
  • Pingback:

  • Witam wszystkich. Mam do was pytanie czy wiecie może jak stworzyć przycisk który będzie uruchamiał nam program w pythonie z poziomu przeglądarki chciałbym zrobić coś na zasadzie załączania alarmu z poziomu własnego menu ale szczerze mówiąc nie bardzo się w tym orientuje.

    Odpowiedz
  • W sumie to po co Ci DMZ, przecież lepiej oraz wygodniej by bylo jak bys zrobił to z port forwarding (PAT). Problem się pojawia wtedy, kiedy mamy w domu np. dwa raspberry. Jak chcesz wykonać regule PAT to wchodzisz w liveboxie lub funboxie w zaawansowanie, klikasz NAT/PAT i tam wpisujesz w „NAZWA APLIKACJI” np. webiopi potem w port wewnętrzny 80 w port zewnętrzny np. 1111, protokól tcp/udp a na koniec IP raspberry. Potem wpisujesz : i gotowe.

    Odpowiedz
  • Po prostu w oknie przegladarki internetowej wpisujesz ip (dns), ten ktory wpisales w noip, a potem piszesz „:”i port do webiopi np.1111, jesli zrobiles to co Ci mowilem.

    Odpowiedz
  • Uwaga dla Raspberry Pi 2 i 2B należy wyedytować config.txt, czyli wpisujemy:

    sudo nano /boot/config.txt

    Wpisać:

    # 1-wire settings
    dtoverlay=w1-gpio,gpiopin=4

    CTRL-X i Y i ENTER zapisujemy

    Zrobić restart

    Odpowiedz
  • Walenie głową w otwarte drzwi na jaki h się meczyc z jakimiś g… jak drzwi są już otwarte istnieje coś takiego jak nettemp i ma możliwości wyprzedzające to badziewie o lata świetlne i jest otwarte wiec po co instalować coś nie swojego i cieszyć się głupota i niedoróbkami jak drzwi są otwarte

    Odpowiedz
  • Witajcie
    Co dziesje się nie tak że nie wykonuje mi tej komendy :
    sudo update-rc.d webiopi defaults

    wszystko do tej pory idzie ok
    ta komenda ma być związana chyba z logowaniem się poprzez przeglądarkę
    Właśnie jak wpisuję mój adres maliny z :80 nie ma logowania
    proszę o pomoc

    Odpowiedz

Odpowiedz

anuluj

Dom w zasięgu ręki - czyli dom sterowany z dowolnego miejsca na świecie

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?