(Nie tylko) Drobne naprawy #17
Od dłuższego czasu chodzi mi po głowie pomysł zbudowaniu systemu, który będzie w stanie sterować wymarzonym domem. Na dom na razie zbieram, ale między czasie postanowiłem już pomyśleć o tym systemie :) Może kogoś z Was to zaciekawi :)
Założenia
Gdy myślę o inteligentnym domu przed oczami mam wiele funkcjonalności, które chciałbym by system przez mnie zrobiony posiadał. Niestety wiele z nich jest na razie dla mnie abstrakcją ze względu na to, że jestem prostym elektrykiem i na studiach nie bardzo przykładałem uwagę do mikroprocesorów, sterowania i języków programowania. Dopiero teraz postanowiłem się za to zabrać i powoli przekuwać plany w rzeczywistość. Dlatego też zaczynam bardzo powoli. Chciałbym aby mój system sterowania domem posiadał następujące funkcje:
- odczyt temperatury w pokojach i na zewnątrz (przydatne do sterowania ogrzewaniem)
- pomiar nasłonecznienia (żebym wiedział, czy solary dadzą radę nagrzać wodę do kąpieli czy jednak będę musiał dogrzać ją za pomocą prądu/gazu/pieca)
- sygnalizacja zamknięcia drzwi i okien (żebym wiedział wychodząc do pracy czy aby na pewno przekręciłem kluczykiem w drzwiach)
- sterowanie oświetleniem w sypialni (rzucanie kapciami w wyłącznik światła by nastała noc w pokoju nie jest wygodne)
- sterowanie roletami w oknach (powiązane z czujnikiem nasłonecznienia i temperatury tak by system wiedział czy ma wpuścić słońce do pokoju by nagrzać w pomieszczeniu czy wręcz przeciwnie gdyż jest już wystarczająco ciepło!)
itp… itd..
Jest tego trochę, wydaję się to bardzo skomplikowane i pewnie tak jest. Mniejsza z tym. Damy radę to rozkminić :)
Hardware
Czyli tak zwany sprzęt. Najważniejsze to przygotować coś, co wszystkimi tymi rzeczami będzie zarządzać. Będzie zamieniać odczyt z czujnika temperatury z Voltów na stopnie Celsiusza, dodawać bądź odejmować te wartości i podejmować decyzję co dalej robić. Przekazywać komunikaty do silników aby te obróciły się o tyle żeby ustawić rolety w odpowiednim położeniu, bądź nastawić panele fotowoltaiczne tak by słoneczko maksymalnie je oświecało.
Sprzętem tym będzie musiał być komputer. Rozeznałem się trochę, jest tego na rynku sporo. Od najbardziej popularnych Rasberry, przez Beaglebone po Intel Edisony i inne podobne urządzenia. Osobiście celuję w Malinkę,
natomiast na chwilę obecną udało pożyczyć mi się Beaglebone w wersji B. Na nim też zacznę pierwsze testy.
Jest to mini komputer, który dorównuje malince pod względem parametrów. Ma również kilka zalet względem Rasberry. Powiem o nich innym razem, wszak to tylko zajawka serii :)
Początkowo myślałem jeszcze o wykorzystaniu mikrokontrolera z serii STM32, w moim przypadku Nucleo:
Jednak po dłuższej rozkminię wyszło na to, że STMik może nie dać sobie rady z tym wszystkim co sobie wymyśliłem. Poza tym chciałem by efekty pracy (a także względne sterowanie całym układem) było możliwe z poziomu telefonu/komputera. A tutaj minikomputer z Linuxem na pokładzie poradzi sobie lepiej niż mały mikroprocesor. Tak mi się przynajmniej wydaje :)
Software
Czyli po ludzku tak zwane oprogramowanie. Tutaj wszystko rozbija się na dwie części:
a) komunikacja z peryferiami, to jest odczyt temperatury czy sterowanie silnikami
b) odebranie poleceń od użytkownika i zaprezentowanie mu danych
Pierwsza część to typowe programowanie systemów wbudowanych (embedded), drugie natomiast więcej ma wspólnego z aplikacjami sieciowymi. Uznałem bowiem, że łatwiej będzie mi wykonać aplikację, która będzie zainstalowana na wewnętrznym serwerze, do której dostęp będę miał z poziomu wszystkich urządzeń zalogowanych do sieci poprzez przeglądarkę internetową – niż tworzyć aplikację oddzielnie na Windowsa, androida i nie wiadomo czego jeszcze.
Do obydwu części software’u postanowiłem zaprzęgnąć język programowania, który nazywa się Python. W miejscach, gdzie nie da rady on poskromić systemów wbudowanych, będę ratował się językiem C, wktórym co nieco programowałem mikroprocki. Jeśli chodzi o część, którą będzie widział użytkownik końcowy, postanowiłem nauczyć się frameworka (kolejne dziwne słowo) Django i o niego oprzeć swoją „domową” stronę. Czas pokażę co uda mi się z tego zrobić.
Kolejne etapy mojej walki z poskramianiem Pythona i systemów wbudowanych już wkrótce! :)
Za każdego upvota i komentarz z góry dziękuję. :)
Ciekawa przeprawa Cię czeka :) osobiście zdecydowałbym się na już opracowane rozwiązania najlepiej przewodowe :) niestety koszt tego jest całkiem porażający (kwoty zaczynające się od 50.000PLN za podstawowe funkcjonalności), projekt instalacji musimy mieć już gotowy na etapie stanu surowego budynku, bo późniejsze zmiany i dodatkowe funkcjonalności są ograniczone do tego jak dobrze rozplanowaliśmy instalację na etapie projektu. Aczkolwiek nic nie stoi na przeszkodzie, żeby hybrydowo do instalacji przewodowej dodawać moduły bezprzewodowe. Dotatkowo stabilność i bezpieczeństwo takiego rozwiązania jest nieporównywalnie większa niż w przypadku automatyki bezprzewodowej.
Przy rozwiązaniach wireless również mamy teraz opracowane gotowe standardy i tworzenie takiego systemu od zera na Malince to wymyślanie koła na nowo. Poczytaj o ZigBee / Z-wave. Do inicjalizacji wykorzystujesz już opracowane moduły, które wystarczy spiąć ze sobą, skonfigurować i przetestować czy całość została dobrze zaprojektowana i w razie problemów, dodania/usunięcia funkcjonalności łatwo przekonfigurować. Dopiero potem jeśli zajdzie taka potrzeba dopisujemy nowe moduły/funcjonalności, więc kodowanie Cię nie ominie:) Rynek jest już pełen rozwiązań od "idiot-friendly, fancy GUI" gdzie wszystko możemy wyklikać sobie z poziomu apki na telefon po bliższe temu co opisałeś gdzie budujemy wszystko tak jak chcemy i sami dokładamy kolejne klocki mając pełną dowolność. Według mnie stratą czasu jest pisanie wszystkiego od zera jeśli istnieją już rozwiązania i standardy, które ułatwią i przyspieszą nam pracę.
W pełni się z Toba zgadzam :) jeśli miałbym robić to tak w pełni profesjonalnie, uzyłbym gotowych systemów. Natomiast nie tylko o to w tym wszystkim chodzi. Jestem zapalonym majsterkowiczem i poprostu lubię grzebać. Dlatego też nie nastawiam się na to że mój dom będzie super ekstra inteligentny. Ale może uda się małym kosztem coś zrobić a dodatkowo dużo się przy tym nauczyć :)
Podobnie było w moim przypadku z innymi pracami, które mogłyby zlecic komus/uzyc gotowca ale wolalem zrobić sam:)
Calikiem ciekawy projekt :) Mam nadzieje, że uda Ci się go doprowadzić do końca :)
A to się okaże w praniu :) Ale powiem Ci, że mam mocną zajawkę na to. Jakoś do takiego czystego kodzenia mnie niespecjalnie ciągnie ale jeśli chodzi o mikroprocki to już lepiej :)
Ja też nie jestem mocny jeśli chodzi o programowanie, HTML to jedyny język jaki udało mi się ogarnąć ;) Jednak z drugiej jak jest konkretna potrzeba to jakoś łatwiej się człowiek uczy :)
Ty to masz pomysły. Brawo. Pozdrawiam.
Dla mnie to wszystko czarna magia :) światło sie gasi pstryczkiem koło łóżka, rolety się odsłania gdy się wstaje itd. A co jeśli zabraknie internetu? Kumpel tak miał i nie mógł żarówki włączyć bo była Smart a router padł i część. Był odcinek Black mirror o smart domu. Bardzo dobry swoją drogą :) ja wolę konwencjonalne rozwiązania
Dla mnie na razie też czarna magia :) w moim projekcie planuję zrobić tak, żeby to wszystko to był dodatek i żeby nie stracił możliwości kontroli domu w przypadku takim jak mowisz. Trzeba będzie również pomyśleć o "bezpiecznikach" ktore zabezpiecza system przed niepowolanymi probami przejęcia kontroli:)
Ciekawy pomysł ... również mam w planach stworzenie własnego systemu inteligentnego domu. Podobnie jak Ty pomyślałem o Malince ale jednocześnie jako serwera www i systemu multimediów.