BLOGCZEJNalpha

(Nie tylko) Drobne naprawy #17

logo.png

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.

IMG_20180909_220253.jpg

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:

IMG_20180909_220152.jpg

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ę. :)

KOMENTARZE

  • ciapo

    Calikiem ciekawy projekt :) Mam nadzieje, że uda Ci się go doprowadzić do końca :)

  • suchy

    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

  • consto

    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.

  • bargolis

    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ę.

  • shogunma

    Ty to masz pomysły. Brawo. Pozdrawiam.