Найти в Дзене
Sprut.ai

Охранная система в гараж на ESP 8266 с интеграцией в Apple HomeKit

Оглавление

Добрый день дорогой читатель, хочу поделиться опытом подключения ESP8266 в систему HomeBridge (HomeKit). На примере охранной системы. 

Для этого нам понадобиться Raspbery pi с установленным HomeBridge, контроллер ESP8266 и любое совместимое устройство (реле, датчик открытия, движения, температуры, влажности), покажу на примере nodeMCU.

Начнем с установки MQTT брокера

Подключаемся по SSH к нашей Raspbery pi и далее в терминале 

sudo apt update
sudo apt install -y mosquitto mosquitto-clients

Во время установки Вам потребуется ввести "Y" и нажать "Enter"

sudo systemctl enable mosquitto.service

Поздравляю вы получили рабочий брокер у себя на Raspbery Pi

Далее приступим к прошивке ESP8266

Первым делом скачаем и распакуем последнюю версию прошивки. Я использовал ESP_Easy ссылка, архив состоит из набора прошивок под разный объем памяти устройств и программы для заливки прошивки в ESP FlashESP8266.

Подключаем ESP8266 к компьютеру, Подключение осуществляется двумя способами: 
- при помощи usb-micro usb кабеля (вопросов не должно возникнуть)

- или при помощи ttl конвертера, обратите внимание пины ttl конвертера 3.3v, GRND, RX, TX на пины ESP8266 3.3v, GRND, TX, RX (TX и RX нужно поменять местами).

Далее запускаем FlashESP8266.exe из скаченного архива.  

-2

Выбираем COM порт нашей ESP8266 или ttl конвертера и прошивку, нажимаем на кнопку Flash.

Описание прошивок, заливать можно и normal и test и dev, главное чтоб объем ESP совпадал (1024 или 4096)

-3
-4

На этом прошивка закончена. Переходим к настройке ESP8266

Подключение ESP8266 к Wi-Fi

Берем телефон или планшет в руки. Открываем настройки Wi-Fi, и видим там новую сеть ESP-0, подключаемся к ней, пароль configesp. Нас перекидывает в настройки ESP_Easy, выбираем смою домашнюю wifi сеть и вписываем пароль.

 Если все верно роутер назначит для ESP ip адрес. Дальнейшие действия возможны на компьютере.
Если все верно роутер назначит для ESP ip адрес. Дальнейшие действия возможны на компьютере.

Настройка ESP8266

Открываем в браузере 192.168.1.113 и попадаем в админку ESP_Easy.

Первым делом нужно настроить MQTT клиент. Переходим во вкладку Сontrollers и нажимаем в первой строчке Edit. 

Выбираем  

Protocol: OpenHAB MQTT

Controller IP: ip adress брокера

Controller Port: 1883 (по дефолту)

Controller User/Password: admin/admin (по дефолту) 

Ставим галочку Enabled и жмем Submit

-6

Подключение устройств к ESP8266

Покажу на примере такого реле:

Практически все устройства подключаются тремя пинами (3.3v, GND, и информационный пин IN). Так вот, подключаем 3.3v и GND, а пин IN устройства подключаем на свободный GPIO нашей ESP (в моем случаи GPIO-0).

Далее идем в админку ESP_Easy в раздел Devices и нажимаем Edit.

Выбираем Device: Switch input - Switch 

  Name: Relay1

   Enabled: Ставим галочку

    1st GPIO: GPIO на плате при подключении в моем случаи GPIO-0

     Send to Controller: Ставим галочку

    #Name: Switch

-8

Нажимаем Submit

Переходим к настройкам плагина для homebridge.

Установка и настройки Plugins Homebridge

Я использовал homebridge-mqttthing, он мне понравился большим количеством поддерживаемых устройств.

Подключаемся по SSH к малине и пишем в командной строке:

sudo npm install -g homebridge-mqttthing

далее nano ~/.homebridge/config.json

и добавляем аксессуары в конфиг:

{
"accessory": "mqttthing",
"type": "switch",
"name": "switch",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getOn": "/ESP_Easy/Relay1/Switch",
"setOn": "/ESP_Easy/gpio/0"
},
"integerValue": "true",
"onValue": "0",
"offValue": "1"
}

Перезагружаем homebridge и радуемся проделанной работой.

Таким образом я подключил к одной ESP8266:

Модуль реле (4 канала)
Модуль реле (4 канала)
Экран LCD 2004 (HD44780) c I2C (IIC) адаптером
Экран LCD 2004 (HD44780) c I2C (IIC) адаптером
Датчик температуры и влажности DHT22
Датчик температуры и влажности DHT22
Инфракрасный PIR датчик HC-SR501
Инфракрасный PIR датчик HC-SR501
Сирена 12В.
Сирена 12В.
NodeMcu V3 Lua (ESP8266, CH340)
NodeMcu V3 Lua (ESP8266, CH340)

Пример добавления датчиков в ESP_easy

-15

Схема подключения сирены

Она выглядит очень просто.

-16

Алгоритм работы системы: 

Реле1 - Охрана (добавил как датчик движения)

Реле2 - Сирена

  • Если "Датчик движения" или "Датчик открытия" сработал тогда замкнуть "Реле1" (это мы настраиваем в разделе Rules)
  • Если "Реле2" Включено в приложении HomeKit у нас сработает "Сирена"

Также если Сирена выключена/включена по событиям с Датчика движения/открытия нам прилетают push уведомления и включается освещение в гараже: 

rules

Правила для срабатывания охраны и включения освещения.

on contact#State do
if [contact#State]=1
gpio,0,0
gpio,16,0
else
gpio,0,1
gpio,16,1
endif
endon

on motion#State do
if [motion#State]=1
gpio,0,0
gpio,16,0
else
gpio,0,1
gpio,16,1
endif
endon

Полный файл конфигурации HomeBridge

{
"accessory": "mqttthing",
"type": "switch",
"name": "Sirena G",
"url": "http://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getOn": "/garage/Sirena/Switch",
"setOn": "/garage/gpio/14"
},
"integerValue": "true",
"onValue": "0",
"offValue": "1"
},
{
"accessory": "mqttthing",
"type": "motionSensor",
"name": "Ohrana G",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getMotionDetected": "/garage/Ohrana/Switch"
},
"integerValue": "true",
"onValue": "0",
"offValue": "1"
},
{
"accessory": "mqttthing",
"type": "lightbulb",
"name": "Svet G",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getOn": "/garage/Svet/Switch",
"setOn": "/garage/gpio/16"
},
"integerValue": "true",
"onValue": "0",
"offValue": "1"
},
{
"accessory": "mqttthing",
"type": "switch",
"name": "Relay",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getOn": "/garage/Relay/Switch",
"setOn": "/garage/gpio/10"
},
"integerValue": "true",
"onValue": "0",
"offValue": "1"
},
{
"accessory": "mqttthing",
"type": "contactSensor",
"name": "Contact G",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getContactSensorState": "/garage/contact/State"
},
"integerValue": "true",
"onValue": "1",
"offValue": "0"
},
{
"accessory": "mqttthing",
"type": "temperatureSensor",
"name": "Temp G",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getCurrentTemperature": "/garage/dht22/Temperature"
}
},
{
"accessory": "mqttthing",
"type": "humiditySensor",
"name": "Hum G",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getCurrentRelativeHumidity": "/garage/dht22/Humidity"
}
},
{
"accessory": "mqttthing",
"type": "motionSensor",
"name": "Motion G",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getMotionDetected": "/garage/motion/State"
},
"integerValue": "true",
"onValue": "1",
"offValue": "0"
}

Ну и конечно фотографии конечного устройства

-17
-18
-19

Скриншот из HomeKit
Скриншот из HomeKit

Заключение

Таким образом я подключил к одной ESP8266 nodeMCU 5 устройств, датчик движения, открытия, температуры/влажности, сирена. Экран для вывода информации Поместилось все это в очень маленький корпус и теперь трудиться в гараже.

Смета: 

ESP8266 nodeMCU: 180р.

LCD дисплей: 300р.

Модули реле: 200р.

Движение: 50р.

геркон покупал в городе: 200р.

Температура/Влажность DHT22: 200р.

БП от сетевого оборудования, нашел в гараже 9в.

Бокс 70р. В хоз магазине.