Пришло и мое время поделится своим опытом создания «без умного» дома. Вступать в полемику, что же все таки такое умный дом и что он должен уметь делать, не очень хочется. В моем случае будем приручать wifi модули Sonoff от компании ITEAD и учиться включать/выключать «нагрузку» с телефона. В публикации пойдет речь, как прошить модуль, подключим к модулю сенсор температуры/влажности, научимся управлять модулем через приложение HomeKit («Дом») и Siri. Добавим ко всему этому систему управления умным домом Domoticz на raspberry pi. Добавим wifi к кофемашине и научим Siri открывать домофон.

Заказал на пробу три обычных модуля sonoff и один SV (Safe Voltage). На момент заказа, обычный модуль 4,85 вечно зеленых, по акции, хотя акция выглядит бессрочной. SV в аналогичную цену 4,85. С доставкой в Украину получилось общая стоимость 26 зеленых. Китай он и в Африке Китай, деньги ушли, а товар еще надо недельки три ожидать, а может и больше. Можно конечно было купить и в Украине и не ждать, но тогда чуть дороже.

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


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



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

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

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

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

Радуемся.

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

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


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

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

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

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


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

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

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

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

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

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

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

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


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



От кнопки на корпусе (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 адрес и заходим на него в браузере.


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

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

Теперь у нас есть 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. Подключение датчика сделал через разъем, который закрепил с боку родного корпуса. При необходимости можно будет подключать другой датчик без скальпеля и паяльника.



На картинке пока только закрепил разъем, провода еще не присоединял. В прошивке 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 минут).



Ныряем на поиски плагина для 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. И должны попасть на страничку домотикс. Далее настройка и добавление датчиков уже происходит через веб.


На скришоте уже добавлены датчики 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



При помощи конструктора создаем логику работу вытяжки (как на картинке). Можно еще на 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&param=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в.

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



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



Собираем все по схеме, находим подходящее места внутри кофеаппарата. В настройках модуля в веб интерфейсе добавляем на 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М.



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

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



На вход реле «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. Добавил адрес в настройках и приложение подтянуло все выключатели. Не единой Сири можно теперь включить кофе аппарат/открывать двери и выключать свет. Часы обычно на руке, а телефона может не оказаться в непосредственной близости. Это имеет тоже свои плюсы. Тему распознавания речи часами их перепрошивкой не занимался, но это тоже возможно.



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

Заключение.


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

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