Пришло и мое время поделится своим опытом создания «без умного» дома. Вступать в полемику, что же все таки такое умный дом и что он должен уметь делать, не очень хочется. В моем случае будем приручать 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.
В зависимости от версии, могут добавляться другие настройки, которые без надобности я бы отключал. В последних прошивках (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.
В зависимости от вашей системы, может понадобиться обновление компилятора С++.
Устанавливаем Nodejs. Заходим на хранилище и выбираем подходящий дистр. Копируем адрес дистра и дальше по образу и подобию
Я себе установил v6.9.4, сейчас уже есть более новые.
Добавляем другие нужные пакеты:
Устанавливаем сам Homebridge:
Если это не работает, пробуем:
После установки Homebridge, необходимо установить еще несколько плагинов, после чего приступаем к изменению настроек Homebridge сервера.
Установка плагинов осуществляется аналогичным путем, как и сам homebridge
Необходимый плагин находим в менеджере пакетов. Там же находим пример настроек, которые необходимо будет добавить к нашим настройкам.
Для простого выключателя.
Переходим к настройкам, создаем, если еще не создан, файл конфигурации:
Файл настройки выглядит следующим образом:
Перед сохранением файла настроек проверяем, например тут. После того как сохранили, пробуем запускать:
Если все запустилось нам напишет, что-то вроде:
Там же будет указан код 031-45-154 для подключения, если его не меняли в настройках.
Теперь включаем телефон/планешт под управлением iOS. Находим приложение «Дом» или же «HomeKit» → Добавить аксессуар и ждем когда появиться наш аксессуар «Homebridge», добавляем его вводим код, назначаем комнату для выключателя. И вуаля, «Привет Siri, включить/выключить свет в комнате» — заработало. «Привет Сири» на телефонах 5ой серии и ниже работает только при подключении к зарядке.
Если все у нас правильно работает, осталось добавить в автозагрузку Homebridge. Полная инструкция на английском. В моем случае через
Шаблон копируем в файл в этот файл и меняем под homebridge
Cохраняем, выходим.
Теперь homebridge будет стартовать при старте системы.
Внимательный читатель заметил, что на гребенке есть 5 пинов и один из них GPIO 14. Опять паяльник берем в руки и подпаиваем три провода к 3,3в, GND, GPIO 14 для датчика температуры влажности DHT22. Можно другой датчик (ds18b20, DHT 11 или другой, который поддерживается прошивкой), но у меня лежал в ящике именно DHT22. Подключение датчика сделал через разъем, который закрепил с боку родного корпуса. При необходимости можно будет подключать другой датчик без скальпеля и паяльника.

На картинке пока только закрепил разъем, провода еще не присоединял. В прошивке Sonoff-MQTT-OTA-Arduino необходимо проверить настройки:
Для прошивки Tasmota, пин и тип датчика можно указать в веб настройках.
Если все правильно подключили и настроили, то зайдя на веб интерфейс, увидим состояние реле и показания датчика. В настройках можно выставить частоту опроса датчика. По умолчанию 300 секунд (5 минут).

Ныряем на поиски плагина для Homebridge для работы с датчиком температуры и влажности. Нам же надо теперь эти показания вывести в приложении. У меня все это получилось сделать, но ИМХО это были мои грабли и не стоит этого делать.
А почему? Все очень просто, просто прикручивать к sonoff датчик нет смысла, надо исходя из этих показаний что-то включать/выключать. Но в настройках прошивки такой возможности нет, настроить приложение «Дом»/HomeKit для таких целей возможно, но необходим планшет, который будет постоянно дома или apple tv. Наличие в прошивке возможности общаться с Domoticz, привело меня на этом тернистом пути к установке системы управления умным домом Domoticz.
В виде небольшого лирического отступления скажу, пробовал подключать к homebridge плагины которые позволяют передавать RTSP поток с веб-камеры. У меня есть ip-camera TOP-201 от китайский собратьев.
Устанавливаем плагин:
Добавляем в файл настроек:
Дополнительно в приложении HomeKit появляется картинка с камеры, но все это работало очень тормознуто и необходимости в данной камере не было. Что б излишне не грузить систему, удалил ip-камеру. Вернемся к установке системы для управления «без умным» домом.
Putty → ssh → и опять мы ковыряем малинку. На удивление, установка в моем случае не потребовала танцев с бубном и достаточно было
Добавляем автозапуск:
При необходимости меняем некоторые настройки:
Открываем адрес малины 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 минуты, опросив датчик влажности система выключиться.
А как же Сири? Оказалось, все очень просто.
И добавляем в настройки
И при запуске Homebridge получаем
Все устройства, которые мы добавили в Домотикз, теперь у нас будут отображаться среди наших устройств в Homekit и можно управлять ими через подругу Siri. Необходимость других плагинов для Homebridge, как-то исчезла.
Имеем связку Domoticz-Homebridge и все очень хорошо и стабильно работает. Уже тестирую не первый месяц.
К Raspberry pi прикручен датчик температуры/влажности DHT22 из прошлых поделок и данные передаются на narodmon.ru скриптом на питоне каждые 10 минут. Добавляем несколько строк в существующий скрипт.
В Domoticz добавляем еще один virtual sensor. И теперь дополнительно можем видеть температуру и влажность на улице, как через веб на нашей локальной страничке домотикза, так и в приложении на iOS.
Кому ближе mqtt, то показания датчика можно было отправить через mqtt.
Пока моя машинка находится в ремонте и ждет пока приедет из Германии блок управления, в подарок досталась кофемашина Delonghi. На панели имеем кнопку вкл/выкл, готовить маленький, двойной кофе и еще две которыми я не пользуюсь т.к. молоко паром не взбиваю, латте и прочие напитки не употребляю. Недостаток, кофе не перемалывает сама, надо заправлять уже молотым и на одну чашку.
Для кофемашины ��спользую Sonoff SV. Пины 3,3v, Rx, Tx, GND подписаны. Отдельно на плату еще выведены GPIO 4, 5, 14. Прошивка по той же процедуре, которая была описана выше.
Вскрываем аппарат и добираемся до платы с кнопками.
На плате присутствует питание 5в, чего вполне достаточно для питания нашего беспроводного модуля sonoff sv. Труда не составило найти где же у нас заветные 5в.
Нажатие кнопок, просто закорачивают сигнал на землю. Подключаем наш модуль по схеме.

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

Собираем все по схеме, находим подходящее места внутри кофеаппарата. В настройках модуля в веб интерфейсе добавляем на GPIO5 второе реле. В меню «консоль» поставил следующие настройки:
В настройках домотикз создаем еще два «virtual sensor» и их idx добавляем в настройка модуля в меню настроек домотикз (Configuration → Configure Domoticz → IDX 1 и IDX 2).
В результате получаем еще два выключателя, один из которых нажимает кнопку вкл/выкл кофемашины и второй нажимает кнопку приготовления кофе.
Готовить кофе, все равно, приходиться ходить ножками, надо же насыпать кофе. А вот включить машинку удобно получается. От момента включения и до приготовления кофе, необходимо некоторое время для разогрева аппарата. Поэтому сидя работая в комнате, можно удаленно включить кофеаппарат и через некоторое время уже топать ножками и готовить себе напиток.
Больше пользы будет в таком выключателе на полном автомате в кофемашине, надо только не забывать заранее ставить чашку. Ждем плату управления.
В общем коридоре, тамбур возле лифта закрывается дверью с магнитным замком и системой доступа Vizit. Систему ставили уже после того как был сделан ремонт и кнопку для открытия тамбурной двери в квартиру не провели. Для того, что б запустить гостей, приходиться выходить к двери и открывать кнопкой открытия двери в коридоре. Блок управления КТМ-602М.

Замыкание OP + GND открывает дверь/ отключает магнит на 7 секунд.
Разделяем питание модуля sonoff sv и реле путем удаления двух резисторов, как указанно ниже на картинке.

На вход реле «input +» подключаем ОР, на выходе реле «output +» прикручиваем GND. Между ELC и GND блока управления 18в от которых подаем питание на сам модуль.
Добавляем дверной звонок «door bell» в домотикз и теперь Сири может нам помочь отрыть двери для гостей.
Помощница Siri распознает голосовую команду «Открыть дверь», лучше чем «включить кофемашину».
На этом я остановился с укращением модулей sonoff.
Раз пошла такая пьянка, будем еще и телевизор выключать/включать. Выключение телевизора и включение уже не имеет никакого отношения к wifi модулям. Телевизор находиться в непосредственной близости с raspberry pi. Тут нам в помощь ИК светодиод и пару сопротивлений разного номинала. Устанавливаем lirc, там же в базах находим настройки для своего пульта/телевизора.
Для работы с домотикз запускаем небольшой скрипт на питоне, который транслирует наши пожелания включить/выключить телевизор из mqtt в lirc.
Добавляем в 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
Заказал на пробу три обычных модуля sonoff и один SV (Safe Voltage). На момент заказа, обычный модуль 4,85 вечно зеленых, по акции, хотя акция выглядит бессрочной. SV в аналогичную цену 4,85. С доставкой в Украину получилось общая стоимость 26 зеленых. Китай он и в Африке Китай, деньги ушли, а товар еще надо недельки три ожидать, а может и больше. Можно конечно было купить и в Украине и не ждать, но тогда чуть дороже.
Радости первых шагов на пути у «без умного» дома
Пришло четыре модуля, обычные упакованы в коробочках, а SV просто в антистатическом пакете. Корпус и размеры порадовали.

Процесс установки родного софта e-Welink и подключения модуля к домашней сети не буду описывать, инструкций на любых языках на просторах интернета, бери — не хочу.
Недолго думая идем в коридор и добавляем этот модуль в светильник потолочный. Модуль маленький, в светильнике места много. В коридоре часто остается включенный свет и теперь можно лежа в кровати перед телевизором выключать свет. В квартире везде уже сделан ремонт и установлены обычные выключатели. Ремонт не трогаем и пользуемся уже существующей проводкой.
Получается следующая логика работы:
— Выключатель выключен, то и модуль тоже не работает;
— Выключатель включен, то свет можно выключать с приложения;
— Выключатель включен и свет выключили через приложение, то для включения света надо сделать выкл/вкл на выключателе, предварительно поставив в настройках модуля «электропитание на участке» ВКЛ (при включении модуля реле открыто) и свет включится.
Радуемся.
Второй модуль добавил в светильник в спальне. Тут светильник не такой просторный оказался как в коридоре. Пришлось корпус немного подпилить и кнопку уменьшить/обрезать, не помещалось по высоте. После чего модуль аккуратно спрятан в светильник.
Переделываем выключатель под кнопку
В квартире установлены выключатели Schneider серии Unica. Переделать такой выключатель можно установив под клавишу пружину и место уже заранее подготовлено.
Как пишут на просторах интернета, можно пробовать пружинку от шариковых ручек. Мои попытки установить пружину из шариковой ручки не дал успеха. Очень слабая пружина и не хватает жесткости вернуть клавишу исходное положение.
Оригинальная шнайдеровская пружина имеет следующие характеристики d=3,6мм, толщина проволоки 0,6мм, высота 10мм. Сам в руках не держал, в продаже не нашел, информацию по пружине нашел на одном из форумов.
Поискав по дому, была найдена похожая пружина, достаточно упругая и успешно добавлена в выключатель. Не потратив и копейки получаем вместо выключателя кнопку.

Так выглядит выключатель с установленной пружиной.
Теперь модуль у нас всегда с питаем и в сети. В настройках ставим, что при подачи питания на модуль, модуль меняет состояние реле.
Логика работы в таком случае:
— на модуле sonoff всегда есть питание, включение и выключение света через приложение;
— нажатие кнопки обрывает питание и реле меняет свое состояние на противоположное.
Можем управлять нагрузкой и на выключателе, и через приложение. Родное приложение и модуль работают через какой-то китайский сервер.
Да да, знаю, ночью происходит скачек/отключение-включение напряжения и у нас загорается свет. За время работы модуля ни разу такого пока не случилось, но мы же живем в Украине и заголовки новостей пестрят обещанием веерных отключений.
На столе лежит третий модуль. А тебя ж куда родной? А тебя родной будем ковырять и издеваться!
Установка альтернативной прошивки
Вскрытие показало,

От кнопки на корпусе (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¶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в.
Нажатие кнопок, просто закорачивают сигнал на землю. Подключаем наш модуль по схеме.

Как видно по схеме, я сделал подключение всего двух кнопок: вкл/выкл и приготовить кофе. По аналогии можно было сделать и все остальные кнопки. На 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
