Witajcie
Z racji iż mój poprzedni post cieszył się dużą popularnością postanowiłem że czas napisać coś nowego i czas wprowadzić to w życie aby sobie udogodnić korzystanie i przebywanie w moim pokoju.
Tak narodził się pomysł inteligentnego pokoju w którym:
– rolety były by sterowane przez internet lub też opuszczały by się o danej godzinie i same podnosiły się rano.
– światło zapalało by się przy wejściu do pokoju a po wyjściu samo by gasło, oczywiście była by możliwość zapalenia wyłącznikiem.
– wyświetlenie temperatury w pomieszczeniu jak i na zewnątrz, to samo tyczy się wilgotności
– monitory które same by się zapalały przy zbliżeniu do biurka i wyłączały się same gdy nikogo przy biurku nie będzie
– komputer który włączał by się o danej porze np o 7.00 przed wstaniem :)
– czujniki otwarcia okien jak i drzwi
– drzwi otwierane na kartę RFID oraz pin (najpierw przykładamy kartę potem podajemy pin)
– światło zapalone w nocy (22.00-7.00) zapalało by się automatycznie nie na 100% ale na 25%
– wbudowany budzik jak i timer do wyłączania komputera
– zdalne sterowanie komputerem włączanie go wyłącznie go i resetowanie
– ewentualne lecz nie wiem czy wprowadzę komunikaty głosowe do wykonywanych czynności
Zdaję sobie sprawę że jest to duży projekt ale myślę że podołam, rozpocząłem już pracę nad takim pokojem i pierwszy moduł jest już gotowy.
Pierwszym modułem jest sterowanie zdalne komputerem oraz odczyt temperatury.
Lista potrzebnych rzeczy:
PŁYTKA STYKOWA
KABLE DO PŁYTEK STYKOWYCH
PRZEWODY F-M
RASPBERRY PI, MODEL B
CZUJNIK TEMPERATURY DS18B20
TRANSOPTOR PC817
Zacznijmy od czegoś prostego czyli od odczytu temperatury posiadam 2 czujniki ds18b20 jeden jest wywieszony za oknem :)
po poprawnym podłączeniu musimy zapoznać się z programem nettemp, myślę że nikt nie będzie miał z tym problemu, maksymalna ilość czujników które możemy podłączyć do jednego portu (pinu) to 99
Teraz przejdźmy do trudniejszej rzeczy czyli sterowanie komputerem.
Oto schemat połączenia (ja mam takie 2)
PINY
Po podłączeniu musimy ustawić w systemie Windows w opcjach zasilania aby po naciśnięciu przycisku zasilania wyłączył się komputer.
Jeśli mamy już wszystko gotowe możemy przejść do sterowania poprzez raspberry.
Najpierw dajemy:
1 2 |
echo 18 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio18/direction |
A następnie możemy odpalić program komp.sh
Oto kod programu:
1 2 |
echo 1 > /sys/class/gpio/gpio18/value echo 0 > /sys/class/gpio/gpio18/value |
Przy pierwszym odpaleniu programu gdy komputer jest wyłączony komputer włączy się a gdy będzie włączony (musi być załadowany system) i włączymy program komputer wyłączy się.
Mam nadzieję że każdy zrozumiał o co mi chodziło i że może ktoś wykorzysta :)
W kolejnym artykule opiszę jak włączać programy i jak wydawać komendy z poziomu przeglądarki internetowej.
Pozdrawiam
Grzegorz Walentowski
gwalento
Od pewnego czasu myślałem jak by tu zautomatyzować kilka rzeczy w pokoju a tu proszę artykuł o tym :)
Polecam śledzić moje posty będą się pojawiały co 2 tygodnie lub co 3 tygodnie i na pewno nie zrezygnuję z projektu (za dużo kasy już włożyłem w kupno części)
Cały projekt będzie się opierał wyłącznie na
Raspberry Pi ?
oraz na arduino :)
Z pewnością będę obserwował Twoje wpisy na ten temat :)
Myślałeś może, żeby podpiąć się np. pod diodę zasilania komputera, aby wiedzieć, czy jest wyłączony czy włączony?
zapomniałem to dodać już jestem podpięty jest za to odpowiedzialny 3 TRANSOPTOR PC817 tylko że jest odwrócony dzięki za przypomnienie jak będę miał chwilę czasu to dodam do postu :)
Czujniki na oknach będziesz robił bezprzewodowe, czy na kablach?
na daną chwilę mam po kablu lan (miałem gniazdko do lan na balkonie) ale w przyszłości będą zmieniane na bezprzewodowe z tego co się orientuję na nettigo mają takie zestawy :)
Dodam tylko że na razie nie mam pomysłu na sterowanie silnikami obroty prawo lewo :(
Jak to będą zwykłe silniki DC, to możesz to zrobić na mostku H.
A o czujniki pytałem, co sam się powoli zbieram do zabezpieczenia wszystkich okien i najchętniej bym to zrobił bezprzewodowo, tylko się zastanawiam, jak rozwiązać kwestię samego zasilania czujników…
u mnie na początek zastosuję jako najzwyklejsze czujniki magnes i kontaktron :)
Gniazdko LAN na balkonie. :3
gniazdko z prądem też posiadam :)
Ja się zawsze pytam po co w takich projektach gdzie włączamy komputer potrzebna jest ingerencja w sprzęt. Zakładając że jest to komputer stacjonarny podpięty kablem sieciowym wystarczy w BIOS ustawić wzbudzanie się po otrzymaniu sygnału WoL (Wake on LAN). Sygnał ten możemy wygenerować jakimś routerkiem czy w tym przypadku rPi. Co do wyłączenia czy restartu też można zastosować rozwiązanie programowe.
O tym samym pomyślałem… Wake on LAN jest o wiele bardziej uniwersalne, prostsze i bezbolesne…
ale nie ustawicie aby komputer włączył się wam o np 7.00 gdy wy wstajecie o 7.05, i jest też drugi powód ma być to integralna całość inteligentny pokój.
Może cię zaskoczę, ale odpalanie komputera o ustalonej godzinie… można ustawić w BIOS-ie. Tak po prostu. Fakt, mało to “inteligentne”, ale samo to da się zrobić bez niczego.
A co do tego, że nie ustawi się tego z WoL… przecież właśnie do tego to służy. Do budzenia urządzenia w dowolnych sytuacjach, czy to o danej godzinie (kiedy potrzebna jest wygodniejsza konfiguracja, niż przedzieranie się przez BIOS), czy zdalnie (kiedy potrzebujesz zdalnego dostępu do zasobów maszyny), czy kiedy system wykryje, że wszedłeś do domu, whatever. Jedno urządzenie z sieci wysyła pakiet, drugie się uruchamia. Tym urządzeniem może być jak najbardziej Jeżynka.
nie zrumieniałeś mnie, chodziło mi oto że gdy ty śpisz komputer ma się sam odpalić według grafiku :
pon 8.20
wto 7.00
sr 9.40
czw 7.20
pt 7.00
sob 70.30
niedz 9.30
Oraz aby komputer sam się uruchamiał gdy ja będę wracał do domu
jeśli by robić to przez WoL trzeba by samemu go “budzić” lub przez inne urządzenie a jeśli przez inne urządzenie to można tak :)
Co do biosy to mój nie posiada pełnego grafiku czyli pon-niedz oraz nie można podać paru godzin wybudzania :(
hmmm właśnie do tego potrzeba albo maliny albo jakiegoś dobrego routera gdzie ustawiasz harmonogram wysyłania pakietów WoL które uruchomią komputer
można tak ale ja wolę tak :)
“Tak, bo tak”
Zrozumiałem, chciałem jednak odpisać trochę ogólniej, niż tylko na Twój konkretny przypadek, stąd przykład z BIOS-em.
A jeśli chodzi o WoL, to jest to rozwiązanie dające dokładnie takie same możliwości jak Twój sposób, ale prostsze, mniej inwazyjne, bardziej “koszerne”, nie stwarzające problemów przy zmianie peceta.
WoL nie działa jak siądzie router :D
W dzisiejszych czasach jak siądzie router to cały komputer staje się niemalże cegłą… ;)
A ja polecam w takiej sytuacji http://jazz.tvtom.pl/wake-on-lan-via-php-zdalnie-wlaczy-komputer/
Skoro masz RPi to nie powinno być problemu z instalacją PHP + Cron w odpowiednich godzinach.
Z resztą pewnie dałoby radę i bez PHP posłać paczki “budzące”.
Z WoL może być inny problem – czasami (u mnie prawie zawsze) gdy zabraknie w nocy prądu, to po przywróceniu napięcia, nie da się włączyć kompa przez WoL. Nie wiem od czego to zależy, ale jest to temat, który powtarza się też w innych komputerach np. w pracy
dodatkowo brak mi tutaj wykrywania aktualnego stanu komputera on/off – ta “inteligencja” wymaga aby malina wiedziała co się dokładnie dzieje, a nie tylko żeby na ślepo można było strzelić przycisk “power” na obudowie kompa. bo w wyjątkowych sytuacjach może Cie zaskoczyć, że wyjedziesz na weekend, a komputer, który miał być niby wyłączony chodzi 3 dni bez sensu. Można to zrealizować w systemie (w Twoim wypadku Windows i jakiś prosty skrypt) lub sprzętowo, np. badać ile prądu pobiera w danej chwili komp i na tej podstawie stwierdzać czy jest on czy off. Daje Ci to dodatkowo taką możliwość, że możesz prezentować sobie statystykę zużycia prądu w postaci pięknego wykresu;) Proste do zrealizowania przy użyciu przetwornika A/C + czujnik poboru prądu dla Arduino np.
Zamysł masz dobry, podoba mi się. I rozumiem Cię, takich rzeczy nie robi się dlatego, że się tyłka nie chce ruszyć żeby zgasić swiatło tylko dla własnej satysfakcji i dlatego, że można;] Pozdrawiam.
co do sprawdzania stanu komputera mam zastosowany jeszcze jeden transoptor którego nie opisałem tutaj jest on w odwrotnym układzie i podpięty pod diodę zasilania komputera :)
Jesteś jednym z nielicznych którzy rozumieją po co robię to wszystko :)
Albo przypisanie stałego ip komputerowi i okresowe pinganie go – tak to się realizuje w wielu serwerowniach (i pozwala również na automatyczny reboot w wypadku awarii systemu).
Słusznie, można też pingować, jak widać sposobów jest naprawdę dużo. Ten z dioda też nie jest zły dopóki gwalento nie będzie wymieniał komputera;) Z pingowaniem jest o tyle kłopot, że dopóki system się nie zbootuje to według takiej czujki będzie cały czas “off”, może się zdarzyć zwiecha systemu, awaria dysku, ramu, routera po drodze… Sposób z odczytywaniem stanu z diody zły nie jest ale żeby nie ingerować w sprzęt i zapewnić wysoką “przenośność” tego rozwiązania na w pierwszej chwili pomyślałbym (gdybym miał czytać stan diody) o fotorezystorze naklejonym na obudowę PCta w miejscu diody;)
O rebootowaniu serwerów kiedy nie odpowiadają na ping nie słyszałem, a siedzę w branży. Tak to chyba można jakiś mały serwer potraktować, przy poważnych usługach admin powinien zostać powiadomiony o incydencie i podjąć odpowiednie kroki. Nie wyobrażam sobie żeby np. z powodu problemów z działaniem sieci rebootowały się co chwilę serwery;)
Mam na to lepszy sposób – odkąd kupiłem dysk SSD, komputer startuje 15 sekund, więc budzenie komputera przed moim wstaniem nie jest potrzebne ;)
No i kiedy będą dalsze części?
Ej a może nakręcić z tego filmik
czekam na drugą część :)
Nie działa.
W modelu B+ nie mam GPIO 1, więc podłączyłem do GPIO 3, i w komendach używałem GPIO 3 zamiast GPIO 18
Sorry, jednak działa. Zostawiłem wyłączony zasilacz.
Mimo wszystko instrukcja jest nie dokładn. Dużo trzeba sie domyślać jak te numery GPIO