Съдържание:

Умен дом от Raspberry Pi: 5 стъпки (със снимки)
Умен дом от Raspberry Pi: 5 стъпки (със снимки)

Видео: Умен дом от Raspberry Pi: 5 стъпки (със снимки)

Видео: Умен дом от Raspberry Pi: 5 стъпки (със снимки)
Видео: JetHome JetHub H1 интелигентен домашен контролер, инсталирайте Supervised Home Assistant zigbee2mqtt 2024, Ноември
Anonim
Умен дом от Raspberry Pi
Умен дом от Raspberry Pi

Вече има няколко продукта, които правят вашия апартамент по -интелигентен, но повечето от тях са собствени решения. Но защо имате нужда от интернет връзка, за да превключите лампата на вашия смартфон? Това беше една от причините за мен да създам собствено решение за интелигентен дом.

Програмирах сървърно приложение, което работи на Raspberry Pi. Това е проект с отворен код, базиран на java, който ви позволява да конфигурирате апартамента си и да свържете няколко клиенти и „контролируеми единици“. Показвам решение, което се справя с превключвателите на захранването с rc, възпроизвежда музика и видео на Raspberry Pi, показва състоянието на смарт огледало и може да се контролира от приложение за Android и две приложения с камъчета. Източникът се хоства на github

Стъпка 1: Неща, от които се нуждаете

Нещата, от които се нуждаете
Нещата, от които се нуждаете

За да настроите интелигентния дом, имате нужда от следните „съставки“

  • Raspberry Pi поне модел 2 B
  • 433 MHz изпращач, нещо подобно
  • 3 джъмперни кабела, свързващи Raspberry Pi и подателя
  • Някои гнезда за радиоуправление на 433 MHz
  • Смартфон с Android за стартиране на клиентското приложение

Освен това можете да разширите интелигентния дом с още допълнителни клиенти и единици като този

  • Интелигентен часовник с камъчета
  • Smart Mirror, вижте този проект
  • 433 MHz контролирана LED лента, вижте това

Стъпка 2: Подгответе Raspberry Pi за 433 MHz

Подгответе Raspberry Pi за 433 MHz
Подгответе Raspberry Pi за 433 MHz
Подгответе Raspberry Pi за 433 MHz
Подгответе Raspberry Pi за 433 MHz

В следващите стъпки имате нужда от достъп до командния ред на Raspberry Pi. За да получите достъп, можете да прочетете тази инструкция

Свържете 433 MHz подателя с Raspberry Pi, както е показано на снимката по -горе

  • GND (подател) 6 GND (raspi)
  • VCC (подател) 2 +5V (raspi)
  • ДАННИ (подател) 11 GPIO 17 (raspi)

Моля, свържете и 17 см антена към щифта ANT (подател). Това значително увеличава сигнала.

Тъй като имаме нужда от някои библиотеки от други git хранилища, трябва да инсталираме git

sudo apt-get install git-core -y

За да настроим Raspberry Pi за 433 MHz комуникация, се нуждаем от библиотеката Pi за по -добро боравене с GPIO.

git клониране git: //git.drogon.net/wiringPi

cd окабеляванеPi./build

След това се нуждаем от библиотека, която реализира обикновено протоколи за захранване с rc.

git клониране git: //github.com/dabastynator/rcswitch-pi.git

cd rcswitch-pi правят cp изпращане/usr/bin/

Изпълнимият „изпрати“ви позволява да изпращате кодове за превключване на повечето от наличните захранвания.

В моята настройка на Smart Home също имам rc LED лента, описана от тази инструкция: https://www.instructables.com/id/RC-contlined-LED… За да зададете цветове за тази LED лента, имате нужда от друг изпращащ изпълним файл, който ви позволява за изпращане на целочислена стойност (Кодира цвета).

Затова компилирайте sendInt.cpp в репо rcswitch-pi и го преместете в/usr/bin/sendInt.

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

Сега трябва да можете да изпращате rc команди с двата изпълними файла/usr/bin/send и/usr/bin/sendInt

Стъпка 3: Настройка на Smart Home Server

Първо трябва да инсталирате няколко пакета. Приложението Smart Home е базирано на java и работи добре с openjdk-11. Не съм сигурен за други среди за изпълнение на java. Mplayer е минималистичен музикален плейър от командния ред. Omxplayer използва графиката Raspberry Pi за видео кодиране, така че това трябва да се използва за видеоклипове. Програмата mrav е необходима за изграждане на java приложението.

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

Инсталирайте директории за jar файла и за регистрационни файлове.

sudo mkdir /opt /neo

sudo chown pi: pi/opt/neo mkdir/home/pi/Дневници

Конфигурирайте началния скрипт за автоматично стартиране на приложението при зареждане. Затова копирайте прикачения скрипт за интелигентен дом в директорията /etc/init.d/ Аз също създадох скрипт в/usr/bin/, който изпраща команди към прикачения скрипт, така че просто влизам в smart-home в конзолата, за да изпълнявам команди.

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 по подразбиране за интелигентен дом

Сега е време да проверите хранилището и да създадете приложението. Ако не искате да го компилирате сами, можете просто да изтеглите приложения smarthome.jar и да го преместите в/opt/neo/

git clone [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/

Опитайте да стартирате интелигентния дом и проверете лог файла. За да получите достъп за GPIO, приложението трябва да се стартира от sudo.

старт на sudo smart-home

cat logs/smarthome.log

Трябва да видите съобщението за грешка Конфигурационният файл не съществува, което ни насочва към следващата стъпка. Хранилището съдържа readme, което обяснява конфигурационния файл. Можете да видите това добре представено в github:

Копирайте този xml в /home/pi/controlcenter.xml, след това задайте местоположението на вашия медиен сървър и променете съдържанието според нуждите ви. След като приключите с конфигурирането и рестартирате интелигентния дом (sudo smart-home restart), трябва да видите следното съдържание в smarthome.log

24.05-08: 26 ДИСТАНЦИОННА ИНФОРМАЦИЯ от de.neo.smarthome.cronjob. CronJob@15aeb7ab: График cron job

24.05-08: 26 ДИСТАНЦИОННА ИНФОРМАЦИЯ от [trigger.light]: Изчакайте 79391760 ms за изпълнение 24.05-08: 26 RMI ИНФОРМАЦИЯ от Добавяне на уеб-манипулатор (5061/ledstrip) 24.05-08: 26 RMI ИНФОРМАЦИЯ от Добавяне на уеб-манипулатор (5061 /действие) 24.05-08: 26 RMI ИНФОРМАЦИЯ от Add web-handler (5061/mediaserver) 24.05-08: 26 RMI INFORMATION by Add web-handler (5061/switch) 24.05-08: 26 RMI INFORMATION by Add web-handler (5061/controlcenter) 24.05-08: 26 RMI ИНФОРМАЦИЯ от Стартиране на уеб сървър с 5 манипулатора (localhost: 5061) 24.05-08: 26 ДИСТАНЦИОННА ИНФОРМАЦИЯ от Controlcenter: Добавяне на 1. контролен блок: MyUnit (xyz)…

Уеб сървърът вече работи:-)

Стъпка 4: Настройка на клиенти

Настройка на клиенти
Настройка на клиенти
Настройка на клиенти
Настройка на клиенти
Настройка на клиенти
Настройка на клиенти

Android клиент за смартфон

Git хранилището за приложението smart-home също съдържа източника за android клиента, така че можете да го компилирате сами. Но прикачих APK за тази стъпка, което го улеснява. Първият път, когато стартирате приложението, той ви пита за сървър, както в първото изображение по -горе. Въведете URL адреса на сървъра и маркера за сигурност.

Това трябва да е всичко. Вече имате достъп до сървъра и управлявате апартамента си, пускате музика и гледате видеоклипове от разстояние на вашия Raspberry Pi. Имайте предвид, че можете да добавяте джаджи към началния си екран, което прави превключвателите и управлението на музиката по-достъпни.

Клиент на Smartwatch Pebble

Източникът за двата клиента с камъчета се хоства на github. Едно приложение показва текущия възпроизвеждан музикален файл: https://github.com/dabastynator/PebbleRemoteMusic… Това също ви позволява да правите пауза/възпроизвеждане и увеличаване/намаляване на звука.

Второто приложение задейства три действия: https://github.com/dabastynator/PebbleControl Имената на тригера са: mobile.come_home mobile.leaving и mobile.go_to_bed. Ако дефинирате правила за събития за този тригер във вашия конфигурационен xml, вие ги задействате от часовника си.

Всичко е с отворен код, но не е нужно да го компилирате сами, прикачих и приложенията с камъчета. Изтеглете PBW с вашия смартфон, телефонът ви трябва да ги инсталира на часовника ви. Приложенията с камъчета се нуждаят от конфигурации, за да говорят със сървъра. Прикачих екранна снимка как изглеждат настройките ми.

Клиент Garmin на Smartwatch

Наличен е и клиент за Garmin Smartwatches. Приложението е достъпно в магазина за приложения на garmin connect и може да бъде инсталирано тук:

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

Клиент на Smart Mirror

Вече създадох инструкция, която обяснява как да създадете Smart Mirror, вижте това https://www.instructables.com/id/Smart-Mirror-by-R…. Изходният код също се хоства на github: https:// github.com/dabastynator/SmartMirror. Софтуерът на Smart Mirror чете конфигурацията от файла smart_config.js, който не е част от хранилището на git. Съдържанието на конфигурационния файл трябва да изглежда така:

var mOpenWeatherKey = 'your-open-wheather-key';

var mSecurity = 'your-security-token';

Също така трябва да коригирате първите два реда на файла smart_mirror.js, за да посочите ip адреса на сървъра на Smart Home и местоположението, за да получите правилното време.

Повече клиенти

Сървърното приложение е прост уеб сървър. Това ви позволява да задействате действия от всеки клиент, който искате чрез прости уеб обаждания. В демонстрационното видео показвам задачата на приложението за Android в комбинация с AutoVoice. Това ми дава възможност да задействам събития с прости гласови команди. Например „ok google, time to sleep“може да задейства mobile.go_to_bed. Но можете също така да правите уеб разговори например от IFTTT. Какво ще кажете за жълта мигаща LED лента за известие по имейл?

Можете да поискате от сървъра възможни уеб обаждания, като следните връзки (заменете ip, port и token от вашата конфигурация)

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-…

Стъпка 5: Заключение

Все още има някои функции, които трябва да се внедрят: Тъй като сървърът предоставя само прост уеб-api клиент, провежда много анкети. За да намаля анкетата, искам интеграция с MQTT за по -добро уведомяване. Също така wifi захранванията трябва да работят по -надеждно от rc захранванията, тъй като rc е само еднопосочна комуникация.

Много забавно е разработването за този проект. И е доста готино да управлявате апартамента от няколко устройства, дори ако интернет връзката се прекъсне.

Препоръчано: