Пришло и мое время поделится своим опытом создания «без умного» дома. Вступать в полемику, что же все таки такое умный дом и что он должен уметь делать, не очень хочется. В моем случае будем приручать 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
0 Находим файл 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
Поделиться с друзьями
-->

Комментарии (25)


  1. kostus1974
    19.05.2017 12:35
    +4

    Находим на полке Raspberry pi

    чёт не нахожу. муху дохлую нашёл, а разберипи почему-то нет.


    1. Kisa_ua
      19.05.2017 12:40
      +3

      хм… муху не нахожу, даже дохлую, а raspberry покрывается пылью. Наверно разные у нас полки…


      1. kostus1974
        19.05.2017 17:08
        +2

        но это же к счастью, да?..


  1. undisclosed
    19.05.2017 12:45
    +2

    Развеселил наполовину закрашенный локальный IP адрес))
    Теперь хакеры не страшны?


    1. Kisa_ua
      19.05.2017 12:51

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


      1. undisclosed
        19.05.2017 13:02

        Чтобы дом был крепостью — надо не провода выдергивать, а стены покрепче)
        Говорят сейчас в моде — фаерволлы


        1. Kisa_ua
          19.05.2017 14:26

          firewall — нет, не слышал. Да и в общем, статья не о том как защитить свою внутреннюю сеть от проникновения.


      1. redmanmale
        19.05.2017 16:55
        +1

        CTRL-SHIFT-B => показать/скрыть панель закладок в хроме. Чтобы в пайнте лишний раз не ковыряться.


  1. undisclosed
    19.05.2017 13:01

    del


  1. undisclosed
    19.05.2017 14:27

    Датчики открытия дверей путем не хитрых манипуляций превращаются в датчики протечки.

    Можете поподробнее написать как это происходит? И зачем? Ведь датчики протечки сами по себе есть, да и стоят копейки.


    1. Kisa_ua
      19.05.2017 15:06

      Купил себе Mi gateway, который планирую добавить к Domoticz. Датчики которые поддерживает данное устройство: датчик открытия дверей/окон, датчик движения, датчик температуры/влажности, выключатели, розетка и возможно некоторые другие, но среди датчиков нет датчика протечки воды, который для меня актуально.
      В датчике открытия двери стоит геркон, к которому припаивается сенсор дождя/протечки воды.
      подробней по ссылке http://shopper.life/datchik-protechki-vody-dlya-sistemy-umnyy-dom-xiaomi-12323.html

      Датчиков, наверно полно, но есть еще необходимость внедрить это все в единую систему.


      1. kvvv
        19.05.2017 15:50

        У самого Mi gateway с Domoticz, датчик движения всем устраивает — при движении моментом domoticz об этом знает. А вот датчик температуры\влажности как будто по своему китайскому(феншую) настроению данные шлет — то 5 мин задержка, то 30. (может, конечно, он их шлет при изменении показаний, но dallas на esp за те же, допустим, 30 мин десятую градуса менял часто) Вытяжку в ванной на такой не подцепишь, поэтому склоняюсь к esp с температурой и влажностью


        1. Kisa_ua
          19.05.2017 16:09

          Датчик движения, температуры/влажности не покупал себе, взял только открытия дверей для попробовать. Sonoff c датчиком DHT стабильно шлет показания каждые 3 минуты. Единственное, один раз слетели настройки. В прошивке Tasmota есть возможность сохранять файл с настройками и потом при необходимости восстанавливать.


  1. kvvv
    19.05.2017 15:50

    А почему не рассматривали вариант ESPEasy для связки с domoticz? Сам пользуюсь — и никаких танцев с бубном, она специально под domoticz идет


    1. Kisa_ua
      19.05.2017 16:00

      ESPEasy не встречал ранее. Я так понимаю, мы говорим о прошивке для модулей Sonoff. На wiki прошивки Sonoff-MQTT-OTA-Arduino (когда начинал играться с модулями, прошивки Tasmota не было) все очень подробно было расписано как прошивать эти модули.


      1. kvvv
        19.05.2017 16:03

        да, ESPEasy это прошивка для любой esp, и для sonoff инструкция имеется, только если вы ее прошивали то суть та же. вот гляньте их вики Как по мне, то очень удобная прошивка. Глюков за месяц аптайма с температурными датчиками не замечено


        1. Kisa_ua
          19.05.2017 16:11

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


  1. aeowka
    19.05.2017 16:30

    А есть какие-нибудь датчики co2, которые можно с domoticz подружить?


    1. Kisa_ua
      19.05.2017 16:58

      Специально тему датчиков СО2 не смотрел. Прошивка Tasmota не поддерживает подключение датчиков СO2.
      А в общем, к rasberry pi нет проблем подключить датчик СО2 и данные выводить в domoticz. Можно СО2 датчик подключить к ESP8266 или аналогу.
      В domoticz есть среди сенсоров подключение и CO2.
      Как пример
      http://www.domoticz.com/forum/download/file.php?id=7201

      Все хорошо, но сами сенсоры довольно дорогие.


  1. baxtep2
    19.05.2017 20:16

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


    1. Kisa_ua
      19.05.2017 21:18

      В моем случае не вариант, места в подразетнике не хватит. Есть глубокие подразетники, возможно в такой бы и влезло. Подразетник по внешнему диаметру 67мм, а модуль sonoff по длинной стороне 65. Так что, скорее нет, чем да.
      Второй нюанс, у меня на две клавиши выключатель. Ставить dual? В руках не держал. Там тоже две кнопки?


  1. kostasoft
    19.05.2017 23:59

    Тоже использую Sonoff в Homekit
    По ряду причин, не хочу использовать малину (флехи дохнут от частой перезаписи данных, «лишнее» устройство в виде сервера и пр)
    Кому интересно, есть прошивка (с открытым исходным кодом) для esp8266, в которой реализован весь функционал превращения девайса от sonoff в полноценную розетку с поддержкой технологии Homekit.
    Недавно получилось ее скомпилировать. Немного изменив код под девайс (порты кнопки и реле со светодиодом)
    Привязал девайс (сонофф) к планшету и расшарил для всех в семье.
    Пока смотрю, как работает.
    До этого был сервер на dns-323, написанный на Golang, основанный на проекте Brutella/hc, и самописная прошивка к сонофф. Но вариант без промежуточного сервера мне нравится больше.


  1. mrigi
    20.05.2017 11:05

    А может кто перечислить системы автоматизации типа Domoticz и их плюсы-минусы? Что лучше использовать для частного дома?


    1. Kisa_ua
      20.05.2017 12:06

      Сравнение систем автоматизациии/управления умным домом достойно написания отдельной статьи. Опять же может быть довольно индивидуально, в зависимости от располагаемых ресурсов/оборудования.
      К решению с Homebridge-Domoticz тоже пришел не сразу, а набил некоторые шишки. Как пример, пробовал для связки с Homekit устанавливать homekit2mqtt, но у меня ничего хорошего не получилось. А кто-то может пользоваться и оставаться очень довольным.
      В частном доме, для автоматизации конечно места для полета фантазии, гараздо больше. Но наверно имеет смысл определиться для начала, какое будет использоваться железо.


      1. mrigi
        20.05.2017 12:20

        До железа ещё не дошел, но как минимум будет центральный замок на 5 дверей + гаражные ворота, принудительная система вентиляции с догревом, газовый котел, мульти-сплит кондиционер, увлажнители воздуха, полив участка, датчики влажности/со2/температуры, освещение. Экосистема на 90% НЕ эппловская. Нужно что-то мега-стабильное, конфигурабельное и вменяемое по деньгам. В холле неплохо бы какой-то планшет на стену зафигачить с управлением.