Spisu treści:

Inteligentny dom Raspberry Pi: 5 kroków (ze zdjęciami)
Inteligentny dom Raspberry Pi: 5 kroków (ze zdjęciami)

Wideo: Inteligentny dom Raspberry Pi: 5 kroków (ze zdjęciami)

Wideo: Inteligentny dom Raspberry Pi: 5 kroków (ze zdjęciami)
Wideo: DLACZEGO WYBRAŁEM RASPBERRY PI | Inteligentny Dom DIY #3 2024, Lipiec
Anonim
Inteligentny dom od Raspberry Pi
Inteligentny dom od Raspberry Pi

Istnieje już kilka produktów, które sprawiają, że Twoje mieszkanie jest mądrzejsze, ale większość z nich to autorskie rozwiązania. Ale dlaczego potrzebujesz połączenia z Internetem, aby włączyć światło za pomocą smartfona? To był jeden z powodów, dla których zbudowałem własne rozwiązanie Smart Home.

Zaprogramowałem aplikację serwerową działającą na Raspberry Pi. Jest to projekt open source oparty na javie, który umożliwia skonfigurowanie mieszkania i podłączenie kilku klientów i „jednostek sterowanych”. Przedstawiam rozwiązanie, które obsługuje przełączniki zasilania rc, odtwarza muzykę i wideo na Raspberry Pi, pokazuje stan na inteligentnym lustrze i może być sterowane przez aplikację na Androida i dwie aplikacje pebble. Źródło jest hostowane na github

Krok 1: Rzeczy, których potrzebujesz

Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz

Aby skonfigurować inteligentny dom, potrzebujesz następujących „składników”

  • Raspberry Pi co najmniej model 2 B
  • Nadajnik 433 MHz, coś takiego
  • 3 kable połączeniowe łączące Raspberry Pi z nadajnikiem
  • Niektóre gniazda sterowania radiowego na 433 MHz
  • Smartfon z Androidem do uruchomienia aplikacji klienckiej

Dodatkowo możesz rozszerzyć Smart Home o więcej opcjonalnych klientów i jednostek takich jak ta

  • Pebble smartwatch
  • Smart Mirror, zobacz ten projekt
  • Sterowana taśma LED 433 MHz, zobacz ten

Krok 2: Przygotuj Raspberry Pi na 433 MHz

Przygotuj Raspberry Pi na 433 MHz
Przygotuj Raspberry Pi na 433 MHz
Przygotuj Raspberry Pi na 433 MHz
Przygotuj Raspberry Pi na 433 MHz

W kolejnych krokach potrzebujesz dostępu do wiersza poleceń na Raspberry Pi. Aby uzyskać dostęp, możesz przeczytać tę instrukcję

Połącz nadajnik 433 MHz z Raspberry Pi, jak pokazano na powyższym obrazku

  • GND (nadawca) 6 GND (raspi)
  • VCC (nadajnik) 2 +5V (raspi)
  • DANE (nadawca) 11 GPIO 17 (raspi)

Proszę również podłączyć antenę 17cm do pinu ANT (nadawcy). To znacznie zwiększa sygnał.

Ponieważ potrzebujemy bibliotek z innych repozytoriów git, musimy zainstalować git

sudo apt-get zainstaluj git-core -y

Aby skonfigurować Raspberry Pi do komunikacji 433 MHz, potrzebujemy biblioteki okablowania Pi dla lepszej obsługi GPIO.

klon git git://git.drogon.net/wiringPi

okablowanie cdPi./build

Następnie potrzebujemy biblioteki, która implementuje protokoły zasilania typowo rc.

klon git git://github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi make cp send /usr/bin/

Plik wykonywalny „send” umożliwia wysyłanie kodów do przełączania większości dostępnych zasilaczy.

W mojej konfiguracji Smart Home mam również pasek LED rc opisany przez tę instrukcję: https://www.instructables.com/id/RC-control-LED… Aby ustawić kolory dla tej taśmy LED, potrzebujesz innego pliku wykonywalnego wysyłania, który pozwala wysłać dowolną wartość typu Integer (która koduje kolor).

Dlatego skompiluj sendInt.cpp w repozytorium rcswitch-pi i przenieś go do /usr/bin/sendInt.

sudo g++ sendInt.cpp -o /usr/bin/sendInt /home/pi/rcswitch-pi/RCSwitch.o -I/home/pi/rcswitch-pi -lwiringPi

Teraz powinieneś być w stanie wysyłać polecenia rc za pomocą dwóch plików wykonywalnych /usr/bin/send i /usr/bin/sendInt

Krok 3: Skonfiguruj serwer Smart Home

Przede wszystkim musisz zainstalować kilka pakietów. Aplikacja Smart Home jest oparta na javie i działa dobrze z openjdk-11. Nie jestem pewien co do innych środowisk wykonawczych java. mplayer to minimalistyczny odtwarzacz muzyki z wiersza poleceń. Omxplayer używa grafiki Raspberry Pi do kodowania wideo, więc powinna być używana do wideo. Program ant jest potrzebny do zbudowania aplikacji java.

sudo apt-get zainstaluj mplayer omxplayer openjdk-11-jdk ant -y

Katalogi instalacyjne dla pliku jar i dzienników.

sudo mkdir /opt/neo

sudo chown pi:pi /opt/neo mkdir /home/pi/Logi

Skonfiguruj skrypt startowy, aby aplikacja uruchamiała się automatycznie przy starcie. Dlatego skopiuj załączony skrypt smart-home do katalogu /etc/init.d/ Utworzyłem również skrypt w /usr/bin/, który przesyła polecenia do załączonego skryptu, więc po prostu wpisuję smart-home do konsoli, aby wykonywać polecenia.

sudo cp smart-home /etc/init.d/smart-home

sudo chmod +x /etc/init.d/smart-home sudo sh -c "echo '#! /bin/bash' > /usr/bin/smart-home" sudo sh -c "echo '/etc/init. d/smart-home \$1' >> /usr/bin/smart-home" sudo chmod +x /usr/bin/smart-home sudo update-rc.d domyślne ustawienia smart-home

Teraz nadszedł czas, aby pobrać repozytorium i zbudować aplikację. Jeśli nie chcesz sam go kompilować, możesz po prostu pobrać załączony plik smarthome.jar i przenieść go do /opt/neo/

git klon [email protected]:dabastynator/SmartHome.git

ant -f SmartHome/de.neo.smarthome.build/build.ant build_remote cp SmartHome/de.neo.smarthome.build/build/jar/* /opt/neo/

Spróbuj uruchomić inteligentny dom i sprawdź plik dziennika. Aby uzyskać dostęp do GPIO, aplikacja musi zostać uruchomiona przez sudo.

początek inteligentnego domu sudo

Kot Logs/smarthome.log

Powinien pojawić się komunikat o błędzie Plik konfiguracyjny nie istnieje, który wskazuje na następny krok. Repozytorium zawiera plik readme wyjaśniający plik konfiguracyjny. Widać to ładnie wyrenderowane na github:

Skopiuj ten plik xml do /home/pi/controlcenter.xml, a następnie ustaw lokalizację serwera multimediów i zmień zawartość zgodnie z potrzebami. Po zakończeniu konfiguracji i ponownym uruchomieniu smart-home (sudo restart smart-home) powinieneś zobaczyć następującą zawartość w smarthome.log

24.05-08:26 ZDALNE INFORMACJE przez de.neo.smarthome.cronjob. CronJob@15aeb7ab: Zaplanuj zadanie cron

24 maja /action) 24.05-08:26 INFORMACJE RMI przez dodanie obsługi sieciowej (5061/mediaserver) 24.05-08:26 INFORMACJE RMI przez dodanie obsługi internetowej (5061/switch) 24.05-08:26 INFORMACJE RMI przez dodanie obsługi internetowej (5061/controlcenter) 24.05-08:26 INFORMACJE RMI przez serwer internetowy Start z obsługą 5 (localhost:5061) 24.05-08:26 INFORMACJE ZDALNE przez Controlcenter: Dodaj 1. jednostkę sterującą: MyUnit (xyz) …

Serwer WWW już działa:-)

Krok 4: Konfiguracja klientów

Konfiguracja klientów
Konfiguracja klientów
Konfiguracja klientów
Konfiguracja klientów
Konfiguracja klientów
Konfiguracja klientów

Klient smartfona z systemem Android

Repozytorium git dla aplikacji smart-home zawiera również źródło dla klienta Androida, więc możesz je skompilować samodzielnie. Ale do tego kroku dołączyłem APK, co ułatwia. Przy pierwszym uruchomieniu aplikacja prosi o serwer, jak na pierwszym obrazku powyżej. Wpisz adres URL serwera i token bezpieczeństwa.

To powinno być to. Masz teraz dostęp do serwera i steruj swoim mieszkaniem, odtwarzając muzykę i oglądaj filmy zdalnie na swoim Raspberry Pi. Pamiętaj, że możesz dodawać widżety do ekranu głównego, dzięki czemu przełączniki i sterowanie muzyką są bardziej dostępne.

Klient Smartwatch Pebble

Źródło dla dwóch klientów pebble jest hostowane na github. Jedna aplikacja pokazuje aktualnie odtwarzany plik muzyczny: https://github.com/dabastynator/PebbleRemoteMusic… Umożliwia to również wstrzymywanie/odtwarzanie oraz zwiększanie/zmniejszanie głośności.

Druga aplikacja uruchamia trzy akcje: https://github.com/dabastynator/PebbleControl Nazwy wyzwalaczy to: mobile.come_home mobile.leaving i mobile.go_to_bed. Jeśli zdefiniujesz reguły zdarzeń dla tego wyzwalacza w pliku konfiguracyjnym xml, uruchomisz je przez zegarek.

To wszystko jest open-source, ale nie musisz go samemu kompilować, dołączyłem też aplikacje pebble. Pobierz PBW za pomocą smartfona, telefon powinien zainstalować je na zegarku. Aplikacje żwirowe wymagają konfiguracji, aby komunikować się z serwerem. Załączyłem zrzut ekranu, jak wyglądają moje ustawienia.

Smartwatch Garmin klient

Dostępny jest również klient dla smartwatchy Garmin. Aplikacja jest dostępna w sklepie z aplikacjami Garmin Connect i można ją zainstalować tutaj:

apps.garmin.com/en-US/apps/c745527d-f2af-4…

Klient Smart Mirror

Stworzyłem już instrukcję, która wyjaśnia, jak stworzyć Smart Mirror, zobacz to https://www.instructables.com/id/Smart-Mirror-by-R…. Kod źródłowy jest również hostowany na github: https:// github.com/dabastynator/SmartMirror. Oprogramowanie Smart Mirror odczytuje konfigurację z pliku smart_config.js, który nie jest częścią repozytorium git. Zawartość pliku konfiguracyjnego powinna wyglądać jak na poniższej liście:

var mOpenWeatherKey = 'twój-klucz-otwórz-pogody';

var mSecurity = 'twój-token-zabezpieczenia';

Musisz również dostosować pierwsze dwie linie pliku smart_mirror.js, aby określić adres IP serwera Smart Home i lokalizację, aby uzyskać odpowiednią pogodę.

Więcej klientów

Aplikacja serwerowa to prosty serwer WWW. Umożliwia to wywoływanie działań z dowolnego klienta za pomocą prostych połączeń internetowych. W filmie demonstracyjnym pokazuję aplikację na Androida w połączeniu z AutoVoice. Dzięki temu mogę wyzwalać zdarzenia za pomocą prostych poleceń głosowych. Na przykład „ok google, czas spać” może wywołać mobile.go_to_bed. Ale możesz też wykonywać połączenia internetowe, na przykład z IFTTT. Co powiesz na migający na żółto pasek LED do powiadamiania e-mailem?

Możesz poprosić serwer o możliwe wywołania internetowe, takie jak poniższe linki (zastąp ip, port i token swoją konfiguracją)

localhost:5061/controlcenter/api?token=secu…

localhost:5061/action/api?token=security-to…

localhost:5061/mediaserver/api?token=securi…

localhost:5061/switch/api?token=security-to…

localhost:5061/ledstrip/api?token=security-…

Krok 5: Wniosek

Jest jeszcze kilka funkcji do zaimplementowania: Ponieważ serwer zapewnia tylko proste web-api, klienci robią dużo sondowania. Aby ograniczyć odpytywanie, chcę zintegrować MQTT dla lepszego powiadamiania. Również zasilacze wifi powinny działać bardziej niezawodnie niż zasilacze rc, ponieważ rc jest tylko jednokierunkową komunikacją.

Tworzenie dla tego projektu sprawia dużo frajdy. I całkiem fajnie jest kontrolować mieszkanie za pomocą kilku urządzeń, nawet jeśli połączenie internetowe się zepsuje.

Zalecana: