
Изучив установленные пакеты здесь приступим к проекту домашней автоматизации Умный дом — популярного направления развития Интернета вещей. Домашняя автоматизация в современных условиях — это гибкая система, которую пользователь конструирует и настраивает самостоятельно в зависимости от собственных потребностей. За время развития системы появилось множество «умных» устройств: умные лампы/розетки, термостаты, разнообразные датчики, которые выпускаются огромным количеством компаний. Так как все эти устройства работают на разных протоколах необходима система, система Умный дом позволяет объединить управление всем многообразием приборов в едином интерфейсе.
Существует множество проектов таким систем, например: Majordomo, Openhab, Openremote, Node-RED.
Подробно остановимся на сервере OpenHab, который может работать на любом компьютере под управлением любой ОС в том числе и на RaspberryPi.
OpenHab является гибким конструктором функциональность которого расширяется за счет использования плагинов.
Каждое «умное» устройство добавляется в конфигурацию OpenHAB в виде item. Для связи item с конкретным устройством используется binding. Ну и с помощью файла описания sitemap задается пользовательский интерфейс для управления устройствами, добавленных в item. Для работы сервера OpenHab необходимо наличие java.
Установка OpenHAB на Raspberry PI
Устанавливаем Java
apt-get install oracle-java8-jdk
Создаем папку openhab и загружаем версию OpenHAB 1.8.3
mkdir /opt/openhab cd /opt/openhab wget https://bintray.com/artifact/download/openhab/bin/distribution-1.8.3-runtime.zip unzip distribution-1.8.3-runtime.zip rm distribution-1.8.3-runtime.zip
Создаем папку addons_repo, загружаем и распаковываем архив аддонов для версии 1.8.3
mkdir addons_repo cd addons_repo wget https://bintray.com/artifact/download/openhab/bin/distribution-1.8.3-addons.zip unzip distribution-1.8.3-addons.zip rm distribution-1.8.3-addons.zip
Создаем папку addons и перемещаем в нее нужные нам аддоны из папки addons_repo. Для перемещения лучше всего использовать файловый менеджер, например mc
Запуск OpenHAB осуществляется по команде
sudo /opt/openhab/start.sh
Открываем в браузере адрес http://X.X.X.X:8080/openhab.app, где X.X.X.X — IP-адрес вашей Raspberry PI. Если все настроено правильно, то мы увидим главный экран OpenHAB.
Добавление OpenHAB в автозагрузку
Открываем файл /etc/init.d/openhab и вставляем следующий код:
#!/bin/sh ### BEGIN INIT INFO # Provides: openhab # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: OpenHAB Daemon # Description: Build your smart home in no time! ### END INIT INFO ROOT_DIR=/opt/openhab # set path to eclipse folder. If local folder, use '.'; otherwise, use /path/to/eclipse/ eclipsehome="$ROOT_DIR/server"; # set ports for HTTP(S) server HTTP_PORT=8080 HTTPS_PORT=8443 # get path to equinox jar inside $eclipsehome folder cp=$(find $eclipsehome -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1); # This next line determines what user the script runs as. # Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python. #USER=root DAEMON_USER=root DAEMON_NAME=openhab DAEMON=/usr/bin/java DAEMON_ARGS="-Djna.boot.library.path=/usr/lib/jni -Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 -Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTP_PORT -Djetty.port.ssl=$HTTPS_PORT -Djetty.home=. -Dlogback.configurationFile=configurations/logback.xml -Dfelix.fileinstall.dir=addons -Djava.library.path=lib -Djava.security.auth.login.config=./etc/login.conf -Dorg.quartz.properties=./etc/quartz.properties -Dequinox.ds.block_timeout=240000 -Dequinox.scr.waitTimeOnBlock=60000 -Dfelix.fileinstall.active.level=4 -Djava.awt.headless=true -jar $cp $* -console " PIDFILE=/var/run/$DAEMON_NAME.pid . /lib/lsb/init-functions do_start() { log_daemon_msg "Starting system $DAEMON_NAME daemon" start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --chdir $ROOT_DIR --exec $DAEMON -- $DAEMON_ARGS log_end_msg $? } do_stop() { log_daemon_msg "Stopping system $DAEMON_NAME daemon" start-stop-daemon --stop --pidfile $PIDFILE --retry 10 log_end_msg $? } case "$1" in start|stop) do_${1} ;; restart|reload|force-reload) do_stop do_start ;; status) status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $? ;; *) echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}" exit 1 ;; esac exit 0
Для исключения ошибок запуска скрипта необходимо вставить код в текстовый редактор, например notepad++ и затем в окно терминала.
Устанавливаем права доступа
chmod 777 /etc/init.d/openhab
прописываем запуск скрипта по умолчанию
sudo update-rc.d openhab defaults
Теперь Openhab будет запускаться автоматически при загрузке системы.
Управление OpenHAB
/etc/init.d/openhab status
/etc/init.d/openhab restart
/etc/init.d/openhab start
/etc/init.d/openhab stop
Установка HABmin
HABmin необходим для управления конфигурационными файлами через web-интерфейс. Это графическое приложение позволяет наглядно создавать необходимые конфигурации. Для установки необходимо:
Остановить работу OpenHAB
/etc/init.d/openhab stop
Загрузить и распаковать архив программы в папку, где находится openhab
cd /opt/openhab wget https://github.com/cdjackson/HABmin/releases/download/0.1.3-snapshot/habmin.zip unzip habmin.zip
Поле чего заново запустить OpenHAB
/etc/init.d/openhab start
Интерфейс приложения доступен по адресу http://localhost:8080/habmin/index.html
Установка Mosquitto
Mosquitto — это сервер (брокер MQTT), который постоянно поддерживает соединение с клиентами и сообщает им о всех данных, переданных другими клиентами. Для настройки взаимодействия OpenHAB с Mosquitto необходимо установить Mosquitto.
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key sudo apt-key add mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list apt-get update apt-get install mosquitto
После установки прописываем в файл конфигурации следующие настройки
nano /opt/openhab/configurations/openhab.cfg mqtt:mosquitto.url=tcp://localhost:1883 mqtt:mosquitto.clientId=MyOpenHab