Мой опыт создания «без умного» дома

Пришло и мое время поделится своим опытом создания «без умного» дома. Вступать в полемику, что же все таки такое умный дом и что он должен уметь делать, не очень хочется. В моем случае будем приручать wifi модули Sonoff от компании ITEAD и учиться включать/выключать «нагрузку» с телефона. В публикации пойдет речь, как прошить модуль, подключим к модулю сенсор температуры/влажности, научимся управлять модулем через приложение HomeKit («Дом») и Siri. Добавим ко всему этому систему управления умным домом Domoticz на raspberry pi. Добавим wifi к кофемашине и научим Siri открывать домофон.
Заказал на пробу три обычных модуля sonoff и один SV (Safe Voltage). На момент заказа, обычный модуль 4,85 вечно зеленых, по акции, хотя акция выглядит бессрочной. SV в аналогичную цену 4,85. С доставкой в Украину получилось общая стоимость 26 зеленых. Китай он и в Африке Китай, деньги ушли, а товар еще надо недельки три ожидать, а может и больше. Можно конечно было купить и в Украине и не ждать, но тогда чуть дороже.

Радости первых шагов на пути у «без умного» дома


Пришло четыре модуля, обычные упакованы в коробочках, а SV просто в антистатическом пакете. Корпус и размеры порадовали.

b03b9090e5f2437fa0fc84260c747fff.jpg

Процесс установки родного софта e-Welink и подключения модуля к домашней сети не буду описывать, инструкций на любых языках на просторах интернета, бери — не хочу.

Недолго думая идем в коридор и добавляем этот модуль в светильник потолочный. Модуль маленький, в светильнике места много. В коридоре часто остается включенный свет и теперь можно лежа в кровати перед телевизором выключать свет. В квартире везде уже сделан ремонт и установлены обычные выключатели. Ремонт не трогаем и пользуемся уже существующей проводкой.

Получается следующая логика работы:

— Выключатель выключен, то и модуль тоже не работает;
— Выключатель включен, то свет можно выключать с приложения;
— Выключатель включен и свет выключили через приложение, то для включения света надо сделать выкл/вкл на выключателе, предварительно поставив в настройках модуля «электропитание на участке» ВКЛ (при включении модуля реле открыто) и свет включится.

Радуемся.

Второй модуль добавил в светильник в спальне. Тут светильник не такой просторный оказался как в коридоре. Пришлось корпус немного подпилить и кнопку уменьшить/обрезать, не помещалось по высоте. После чего модуль аккуратно спрятан в светильник.

Переделываем выключатель под кнопку


В квартире установлены выключатели Schneider серии Unica. Переделать такой выключатель можно установив под клавишу пружину и место уже заранее подготовлено.

Как пишут на просторах интернета, можно пробовать пружинку от шариковых ручек. Мои попытки установить пружину из шариковой ручки не дал успеха. Очень слабая пружина и не хватает жесткости вернуть клавишу исходное положение.

Оригинальная шнайдеровская пружина имеет следующие характеристики d=3,6 мм, толщина проволоки 0,6 мм, высота 10 мм. Сам в руках не держал, в продаже не нашел, информацию по пружине нашел на одном из форумов.

Поискав по дому, была найдена похожая пружина, достаточно упругая и успешно добавлена в выключатель. Не потратив и копейки получаем вместо выключателя кнопку.

09272f5ea6f34969a9ce5c4774039141.jpg
Так выглядит выключатель с установленной пружиной.

Теперь модуль у нас всегда с питаем и в сети. В настройках ставим, что при подачи питания на модуль, модуль меняет состояние реле.

Логика работы в таком случае:

— на модуле sonoff всегда есть питание, включение и выключение света через приложение;
— нажатие кнопки обрывает питание и реле меняет свое состояние на противоположное.

Можем управлять нагрузкой и на выключателе, и через приложение. Родное приложение и модуль работают через какой-то китайский сервер.

Да да, знаю, ночью происходит скачек/отключение-включение напряжения и у нас загорается свет. За время работы модуля ни разу такого пока не случилось, но мы же живем в Украине и заголовки новостей пестрят обещанием веерных отключений.

На столе лежит третий модуль. А тебя ж куда родной? А тебя родной будем ковырять и издеваться!

Установка альтернативной прошивки


Вскрытие показало, что пациент умер от вскрытия, что есть место под гребенку на 5 пинов.

643e5a1f425645aab6056fce519173d8.jpg

От кнопки на корпусе (3,3v Rx, Tx, GND, GPIO 14). Паяльник в руки и подключаем usb-to-ttl переходник. В моем переходнике usb-to-ttl имеется 3,3v, от 5v питание подавать на модуль не пробовал и не советую.

Далее уже софтверная часть. На гитхабе есть прошивка для таких модулей. Сейчас уже появилась новая версия прошивки. Чего же хорошего в этих прошивках? Есть web управление, mqtt протокол, OTA (Over the air) — прошивка по воздуху. Что же касается родной прошивки, то mqtt протокол в обещаниях добавить, OTA тоже есть, но только для своих. Недостаток родной прошивки — работает только при подключении в глобальную сеть. А зачем нам это надо? На данном этапе не надо… тем более мы не знаем, что и куда отправляет наш модуль.

Устанавливаем Arduino IDE. Я установил portable версии 1.8.1. Прошивки требуют версии IDE 1.6.10 или выше.

— Добавляем поддержку модулей ESP8266
— Устанавливаем pubsubclient
○ Находим файл src\PubSubClient.h и меняем значение MQTT_MAX_PACKET_SIZE на 400 или более (сейчас версии Тасмота просят значение 500 или выше).

Качаем скетч, компилируем, скрестив пальцы и надеемся, что все прошло без ошибок. Это был не мой случай, читаем ошибку и добавляем необходимые библиотеки которых не оказалось. Пару часов мучений и имеем прошивку без ошибок. (Основная проблема была в том, что Arduino IDE я установил на Win XP). Правим файл с конфигурацией и заливаем нашу прошивку.

Тот немногий минимум, который я правил в User_config.h.

User_config.h
#define PROJECT "bath" // название проекта - в моем случае это выключатель вытяжки в ванной
#define STA_SSID1 "your_wifi_station_id" // ваша точка доступа
#define STA_PASS1 "your_pass" // пароль к точке доступа
#define STA_SSID2 "your_wifi_station_id_plus" // Можно указывать две точки доступа
#define STA_PASS2 "второй пароль" // пароль ко второй точке доступа

#define SYS_LOG_HOST "192.168.ххх.ххх" // Линукс хост, указываю адрес своей raspberry pi, можно не трогать
//#define USE_I2C // отключаем все не нужные модули
//#define USE_IR_REMOTE
//#define USE_WS2812



В зависимости от версии, могут добавляться другие настройки, которые без надобности я бы отключал. В последних прошивках (Tasmota), все больше настроек возможно сделать через веб меню настроек и дублируется с User_config.h.

Заливка скетча:


— отключаем питание от модуля (любым удобным способом);
— зажимаем кнопку на модуле и подключаем питание. Модуль готов принимать прошивку;
— нажимем ОК в IDE и опять же скрестив пальцы ждем, что б началась заливка прошивка в модуль.

В случае ошибки, проверяем провода, а везде ли у нас хорошо все прикручено, а может не хватает питания от usb-to-ttl и надо взять внешний источник. Танцуем с бубном и повторяем процедуру.

Важно: питание на модуль подается только через пины 3,3в. Подключать его к силовой нагрузке, через питание самого модуля нельзя. Опытные пользователи пишут, что подача 220в на модуль при прошивке превращает его в кирпич, маленький, но кирпич. Не пробовал, не знаю. Поэтому, при прошивке модуля к нему подключается всего четыре проводка на пины, а все остальное убираем подальше.

Если все ок, после перезагрузки модуль должен подключился к точке доступа, находим ip адрес и заходим на него в браузере.

c963169a05594c6791d9dfdd706b365e.png
Вид стартовой страницы.

Если модуль не подключился к вашей точке доступа, то продолжаем танцы с бубном. Пути решения есть различные, в пределах этой статьи не буду описывать. Я же, проверял конфиги и просто еще раз прошивал модуль.

Теперь у нас есть web доступ к модулю и его настройкам, mqtt, провода можно убирать в ящик, прошивку/обновление делать по воздуху.

А где же Сири?


Все это конечно замечательно, пора учиться управлять этим добром с телефона. Попробовал несколько программ с апстора для iфона и не получил ничего интересного. Было принято решение достучаться до приложения «Дом» или же HomeKit, что так же дает возможность управлять модулями через Siri.

Находим на полке Raspberry pi и подключаем к сети. В моем случае уже была «малина», подключенная к сети. Как установить ОС и подключить «малину» описывать нет смысла.

Для общения с HomeKit необходимо установить Homebridge. Homebridge является NodeJS сервером запущенным в вашей локальной сети и эмулирующий iOS HomeKit API. 

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git make
sudo apt-get install g++


В зависимости от вашей системы, может понадобиться обновление компилятора С++.

Устанавливаем Nodejs. Заходим на хранилище и выбираем подходящий дистр. Копируем адрес дистра и дальше по образу и подобию

wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz 
tar -xvf node-v4.0.0-linux-armv6l.tar.gz 
cd node-v4.0.0-linux-armv6l
sudo cp -R * /usr/local/


Я себе установил v6.9.4, сейчас уже есть более новые.

Добавляем другие нужные пакеты:

sudo apt-get install libavahi-compat-libdnssd-dev


Устанавливаем сам Homebridge:


sudo npm install -g --unsafe-perm homebridge


Если это не работает, пробуем:

sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/local/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild


После установки Homebridge, необходимо установить еще несколько плагинов, после чего приступаем к изменению настроек Homebridge сервера.

Установка плагинов осуществляется аналогичным путем, как и сам homebridge

sudo npm install -g --unsafe-perm homebridge-plugin-name


Необходимый плагин находим в менеджере пакетов. Там же находим пример настроек, которые необходимо будет добавить к нашим настройкам.

Для простого выключателя.

npm install -g homebridge-mqttswitch


Переходим к настройкам, создаем, если еще не создан, файл конфигурации:

sudo nano .homebridge/config.json


Файл настройки выглядит следующим образом:

config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },

"platforms": [
],
"accessories": [
        {
                "accessory": "mqttswitch",
            "name": "Спальня",
            "url": "mqtt://192.168.178.123:1883",
                        "username": "admin",
                        "password": "admin",
                        "caption": "room",
                        "topics": {
                                "statusGet":    "stat/sleeping/POWER",
                                "statusSet":    "cmnd/sleeping/power"
                        },
                        "onValue": "1",
                        "offValue": "0",
                    "integerValue": "true"

        }
    ]

}



Перед сохранением файла настроек проверяем, например тут. После того как сохранили, пробуем запускать:

Homebridge


Если все запустилось нам напишет, что-то вроде:

 11:27:43 PM] [Спальня] Initializing mqttswitch accessory...


Там же будет указан код 031–45–154 для подключения, если его не меняли в настройках.

Теперь включаем телефон/планешт под управлением iOS. Находим приложение «Дом» или же «HomeKit» → Добавить аксессуар и ждем когда появиться наш аксессуар «Homebridge», добавляем его вводим код, назначаем комнату для выключателя. И вуаля, «Привет Siri, включить/выключить свет в комнате» — заработало. «Привет Сири» на телефонах 5ой серии и ниже работает только при подключении к зарядке.

Если все у нас правильно работает, осталось добавить в автозагрузку Homebridge. Полная инструкция на английском. В моем случае через init.d, создаем файл sudo nano /etc/init.d/homebridge
Шаблон копируем в файл в этот файл и меняем под homebridge

/etc/init.d/homebridge
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

dir="/home/pi"
cmd="DEBUG=* /usr/local/bin/homebridge"
user="pi"



Cохраняем, выходим.

sudo chmod 755 /etc/init.d/homebridge
sudo update-rc.d homebridge defaults


Теперь homebridge будет стартовать при старте системы.

Прикручиваем датчик DHT22 (температура / влажность)


Внимательный читатель заметил, что на гребенке есть 5 пинов и один из них GPIO 14. Опять паяльник берем в руки и подпаиваем три провода к 3,3в, GND, GPIO 14 для датчика температуры влажности DHT22. Можно другой датчик (ds18b20, DHT 11 или другой, который поддерживается прошивкой), но у меня лежал в ящике именно DHT22. Подключение датчика сделал через разъем, который закрепил с боку родного корпуса. При необходимости можно будет подключать другой датчик без скальпеля и паяльника.

b68643a1f956407286a799bb1b03d223.jpg

На картинке пока только закрепил разъем, провода еще не присоединял. В прошивке Sonoff-MQTT-OTA-Arduino необходимо проверить настройки:

#define DHT_PIN              14           // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV)
#define DHT_TYPE             AM2301       // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321)


Для прошивки Tasmota, пин и тип датчика можно указать в веб настройках.

Если все правильно подключили и настроили, то зайдя на веб интерфейс, увидим состояние реле и показания датчика. В настройках можно выставить частоту опроса датчика. По умолчанию 300 секунд (5 минут).

3a24a33fbb3647979f69354039fb808c.png

Ныряем на поиски плагина для Homebridge для работы с датчиком температуры и влажности. Нам же надо теперь эти показания вывести в приложении. У меня все это получилось сделать, но ИМХО это были мои грабли и не стоит этого делать.

А почему? Все очень просто, просто прикручивать к sonoff датчик нет смысла, надо исходя из этих показаний что-то включать/выключать. Но в настройках прошивки такой возможности нет, настроить приложение «Дом»/HomeKit для таких целей возможно, но необходим планшет, который будет постоянно дома или apple tv. Наличие в прошивке возможности общаться с Domoticz, привело меня на этом тернистом пути к установке системы управления умным домом Domoticz.

В виде небольшого лирического отступления скажу, пробовал подключать к homebridge плагины которые позволяют передавать RTSP поток с веб-камеры. У меня есть ip-camera TOP-201 от китайский собратьев.

Устанавливаем плагин:

npm install -g --unsafe-perm  homebridge-camera-ffmpeg


Добавляем в файл настроек:

config.json
"platforms": [{
"platform": "Camera-ffmpeg",
  "cameras": [
    {
      "name": "top-201",
      "videoConfig": {
        "source": "-re -i rtsp://admin@192.168.178.10:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?real_stream",
        "maxStreams": 2,
        "maxWidth": 640,
        "maxHeight": 480,
        "maxFPS": 3
      }
    }
  ]


Дополнительно в приложении HomeKit появляется картинка с камеры, но все это работало очень тормознуто и необходимости в данной камере не было. Что б излишне не грузить систему, удалил ip-камеру. Вернемся к установке системы для управления «без умным» домом.

Установка и настройка Domoticz для модулей Sonoff


Putty → ssh → и опять мы ковыряем малинку. На удивление, установка в моем случае не потребовала танцев с бубном и достаточно было

sudo curl -L install.domoticz.com | sudo bash


Добавляем автозапуск:

sudo cp domoticz.sh /etc/init.d
sudo chmod +x /etc/init.d/domoticz.sh
sudo update-rc.d domoticz.sh defaults


При необходимости меняем некоторые настройки:

sudo nano /etc/init.d/domoticz.sh


Открываем адрес малины 192.168.ххх.ххх:8080. И должны попасть на страничку домотикс. Далее настройка и добавление датчиков уже происходит через веб.

13093cab88b54ac498fbd15d17d4536a.png
На скришоте уже добавлены датчики sonoff и уличный датчик.

Для добавления датчиков/выключателей заходим в Setup → hardware и добавляем Dummy (Does nothing, use for virtual switches only). В списке устройств появится наш «Dummy». Кликнув по нему на Create virtual sensor, называем наш сенсор/выключатель и из списка выбираем необходимый тип. Теперь во вкладке Setup → Devices появиться новое устройство и там же теперь можно посмотреть idx устройства.

Отрываем веб-морду нашего выключателя/сенсора и сохраняем сonfiguration → domoticz → idx нашего выключателя. В новых прошивках Tasmota, есть возможность задавать несколько idx. Для реле/выключателя и отдельно для GPIO. В зависимости от модуля, это может быть дополнительно один датчик или больше, так как в SV версии выведено дополнительно три пина, которым можно присваивать их роль в вашей системе (реле/датчики).

В старых прошивках (Sonoff-MQTT-OTA-Arduino) для модуля, пришлось исполнить некоторые танцы с бубном, что б Domoticz увидел показания влажности и температуры. Думаю нет смысла тут это описывать, для новой прошивки (Tasmota) это не понадобиться.

По показаниям влажности можно управлять вытяжкой в ванной. Там, где стоит вытяжной вентилятор места достаточно для модуля и все необходимое у нас уже есть. Осталось только настроить управление по показаниям влажности.

Setup → More options → Events

6ec865203b894f579e3fb3c1f0d62261.png

При помощи конструктора создаем логику работу вытяжки (как на картинке). Можно еще на Lua, но это не мой случай. Дальнейший опыт показал, что 5 минут опрос датчика великоват и я уменьшил до 3х минут. Теперь принимая душ, когда влажность поднимается выше 70% включается вытяжка. В дальнейшем при снижении ниже 45% выключается. Данные по влажности подобрал опытным путем. Единственный минус, а может это и не минус, а фича системы, если принудительно включить вытяжку нажатием кнопки, то через 3 минуты, опросив датчик влажности система выключиться.

А как же Сири? Оказалось, все очень просто.

sudo npm install -g -g --unsafe-perm  homebridge-edomoticz


И добавляем в настройки

sudo nano .homebridge/config.json

 "platform": "mqtt",
  "name": "mqtt",
  "url": "mqtt://127.0.0.1",
  "topic_prefix": "homebridge",
  "username": "foo",
  "password": "bar"


И при запуске Homebridge получаем

[5/8/2017, 11:42:30 PM] [eDomoticz] You have 10 devices defined in Domoticz.
[5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory 'bath-temp'...
[5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory 'Влажность Улица'...
[5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory 'Влажность ванна'...
[5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory 'Вытяжка'...


Все устройства, которые мы добавили в Домотикз, теперь у нас будут отображаться среди наших устройств в Homekit и можно управлять ими через подругу Siri. Необходимость других плагинов для Homebridge, как-то исчезла.

Имеем связку Domoticz-Homebridge и все очень хорошо и стабильно работает. Уже тестирую не первый месяц.

К Raspberry pi прикручен датчик температуры/влажности DHT22 из прошлых поделок и данные передаются на narodmon.ru скриптом на питоне каждые 10 минут. Добавляем несколько строк в существующий скрипт.

#domoticz settings
IP = '192.168.ххх.ххх'   #IP domoticz
PORT = '8080'            #port of server
IDX_1 = '7'              #IDX of the DHT temp sensor
//….другой код, где опрашиваем датчик и отправляем данные на narodmon.ru
url = 'http://{}:{}/json.htm?type=command¶m=udevice&nvalue=0&idx={}&svalue={}'.format(IP, PORT, IDX_1, sensor_value_1)
request = urllib2.Request(url)
response = urllib2.urlopen(request)


В Domoticz добавляем еще один virtual sensor. И теперь дополнительно можем видеть температуру и влажность на улице, как через веб на нашей локальной страничке домотикза, так и в приложении на iOS.

Кому ближе mqtt, то показания датчика можно было отправить через mqtt.

        playload = '{{ "idx": {} , "nvalue" : {}, "svalue" : "1" }}'.format(IDX_1, humidity)
        client.publish(TOPIC_DOMOTICZ, playload, qos =0 , retain =False)                   #publish


Добавляем Wifi в кофемашину


Пока моя машинка находится в ремонте и ждет пока приедет из Германии блок управления, в подарок досталась кофемашина Delonghi. На панели имеем кнопку вкл/выкл, готовить маленький, двойной кофе и еще две которыми я не пользуюсь т.к. молоко паром не взбиваю, латте и прочие напитки не употребляю. Недостаток, кофе не перемалывает сама, надо заправлять уже молотым и на одну чашку.

Для кофемашины использую Sonoff SV. Пины 3,3v, Rx, Tx, GND подписаны. Отдельно на плату еще выведены GPIO 4, 5, 14. Прошивка по той же процедуре, которая была описана выше.

Вскрываем аппарат и добираемся до платы с кнопками.

На плате присутствует питание 5в, чего вполне достаточно для питания нашего беспроводного модуля sonoff sv. Труда не составило найти где же у нас заветные 5в.

Нажатие кнопок, просто закорачивают сигнал на землю. Подключаем наш модуль по схеме.

a3c559ba5c1f48d6b552aaddaa448209.png

Как видно по схеме, я сделал подключение всего двух кнопок: вкл/выкл и приготовить кофе. По аналогии можно было сделать и все остальные кнопки. На sonoff sv у нас есть 3 пина выведенные на плату, реле, а так же можно задействовать Rx, Tx (в последней прошивке Tasmota).

a62efb5b0ea54284b0406b4f16595145.png

Собираем все по схеме, находим подходящее места внутри кофеаппарата. В настройках модуля в веб интерфейсе добавляем на GPIO5 второе реле. В меню «консоль» поставил следующие настройки:

PowerOnState 0 // при включении питания, реле всегда в выключенном состоянии. 
PulseTime1 10    // время в 0,1с , через которое происходит выключение реле
PulseTime2 10   //имитируется нажатие кнопки в течении 1 секунды. 1 и 2 для первого и второго реле.


В настройках домотикз создаем еще два «virtual sensor» и их idx добавляем в настройка модуля в меню настроек домотикз (Configuration → Configure Domoticz → IDX 1 и IDX 2).

В результате получаем еще два выключателя, один из которых нажимает кнопку вкл/выкл кофемашины и второй нажимает кнопку приготовления кофе.

Готовить кофе, все равно, приходиться ходить ножками, надо же насыпать кофе. А вот включить машинку удобно получается. От момента включения и до приготовления кофе, необходимо некоторое время для разогрева аппарата. Поэтому сидя работая в комнате, можно удаленно включить кофеаппарат и через некоторое время уже топать ножками и готовить себе напиток.

Больше пользы будет в таком выключателе на полном автомате в кофемашине, надо только не забывать заранее ставить чашку. Ждем плату управления.

Добавляем wifi для открытия двери с домофоном Vizit


В общем коридоре, тамбур возле лифта закрывается дверью с магнитным замком и системой доступа Vizit. Систему ставили уже после того как был сделан ремонт и кнопку для открытия тамбурной двери в квартиру не провели. Для того, что б запустить гостей, приходиться выходить к двери и открывать кнопкой открытия двери в коридоре. Блок управления КТМ-602М.

771ea19abd1144e4b95e39f8ffbe2c73.jpg

Замыкание OP + GND открывает дверь/ отключает магнит на 7 секунд.

Разделяем питание модуля sonoff sv и реле путем удаления двух резисторов, как указанно ниже на картинке.

c3185f6440db4066bf6cf3fd1336d4af.png

На вход реле «input +» подключаем ОР, на выходе реле «output +» прикручиваем GND. Между ELC и GND блока управления 18в от которых подаем питание на сам модуль.

Добавляем дверной звонок «door bell» в домотикз и теперь Сири может нам помочь отрыть двери для гостей.

Помощница Siri распознает голосовую команду «Открыть дверь», лучше чем «включить кофемашину».

На этом я остановился с укращением модулей sonoff.

Небольшой бонус


Раз пошла такая пьянка, будем еще и телевизор выключать/включать. Выключение телевизора и включение уже не имеет никакого отношения к wifi модулям. Телевизор находиться в непосредственной близости с raspberry pi. Тут нам в помощь ИК светодиод и пару сопротивлений разного номинала. Устанавливаем lirc, там же в базах находим настройки для своего пульта/телевизора.

Для работы с домотикз запускаем небольшой скрипт на питоне, который транслирует наши пожелания включить/выключить телевизор из mqtt в lirc.

mqtt в lirc
import paho.mqtt.client as mqtt
import os
import time
import json

IP = '192.168.ххх.ххх'
PORT = '1883'

device = {18 : 'OpenBox',
          19 : 'PHILIPS',
          22 : 'air'}
TOPIC_DOMOTICZ = 'domoticz/in'

def send(device, command):
#               """ Sends IR-signal to the device """
      os.system("irsend SEND_ONCE '" + device + "' '" + command + "'")


# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe(TOPIC_DOMOTICZ,0)

def on_publish(client,userdata,result):             #create function for callback
    print("data published \n")
    pass

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    domoticz = json.loads(msg.payload)
    if domoticz ['idx']  in device.keys():
        idx = domoticz ['idx']
        dev = device [idx]
        command = 'KEY_POWER'
        send (dev, command)

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
client.connect(IP, PORT, 60)

client.loop_forever()


Добавляем в Domoticz еще три виртуальных кнопки для телевизора, ресивера и кондиционера.
Управлять телевизором не удобно с телефона, все равно пульт, как-то родней. Но выключить телевизор, когда забыл и уже ушел из комнаты приятный бонус.

Приятным дополнением ко всему этому наличие для Pebble часов приложения Pemoticz. Добавил адрес в настройках и приложение подтянуло все выключатели. Не единой Сири можно теперь включить кофе аппарат/открывать двери и выключать свет. Часы обычно на руке, а телефона может не оказаться в непосредственной близости. Это имеет тоже свои плюсы. Тему распознавания речи часами их перепрошивкой не занимался, но это тоже возможно.

651e3dd81b654be3b0fc324f44dc8b9e.png

На этом, пожалуй, можно и завершать историю «без умного» дома.

Заключение.


В виде заключения, а что же дальше?

Todo list:

— Кондиционер, не получилось найти настроек для пульта к lirc и первые попытки скопировать нажатия, тоже не привели к успеху. Пилим дальше.
— Ждем заказа от китайской компании Mi c gateway и несколькими датчиками. Датчики открытия дверей путем не хитрых манипуляций превращаются в датчики протечки. Будем добавлять в нашу систему. При срабатывании датчиков будет слать уведомления хозяину.
— На этом мысли заканчиваются…

Используемые источники


→ Running HomeBridge on a Raspberry Pi
→ Sonoff-Tasmota Wiki
→ Installation of Domoticz on an already running Pi
→ How-to: Add WiFi to your coffee machine

© Geektimes