Статья

Dimmer за 15$ теперь с Mqtt!

Чуть меньше года назад у меня появился умный диммер из поднебесной. Я его закинул в Homekit через HomeBridge, и худо-бедно он работал, до момента выхода IOS 13. После этого диммер превратился не то что в тыкву, а просто в неюзабельную фигню. О том, как это исправить, я расскажу ниже.

Подготовка к прошивке.

ВНИМАНИЕ!!!

Перед тем, как разбирать диммер, отключи его от сети!!!

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

Откручиваем крепежный болт и вынимаем плату из корпуса.

Берем USB/UART конвертер ( у меня CP2102, версия 4.2, как на фото, с win10 x64), паяльник и немного проводов.

Устанавливаем драйвера для работы с CP2102 и паяем все по схеме ниже.

  • VCC - 3.3v !!!
  • GND - GND - Gpio 0 (GND и Gpio 0 = esp в режиме прошивки)
  • TX - RX
  • RX - TX

Обратите внимание на левый верхний угол - там должна быть перемычка (просто соединяем).

Если вы все сделали правильно, загорится зеленый светодиод.

Можно отложить плату и скачать последнюю версию прошивки Tasmota, на данный момент это 6.6.0.14.

Вместе с прошивкой нужно скачать ArduinoIDE и установить ее.

После установки ArduinoIDE, переходим в место ее установки и создаем папку c названием "Portable".

Запускаем Arduino.exe и переходим в настройки.

В строку "Дополнительные ссылки для Менеджера плат" необходимо добавить следующую ссылку:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Закроем Arduno.exe и зайдем в архив с прошивкой Tasmota, и разархивируем его. Потом заходим в папку "Lib", все содержимое которой необходимо выделить и скопировать.

Вернемся в папку, где установлена ArduinoIDE, пройдем по следующему пути:"Porable"-->"sketchbook"-->"libraries".

Сюда вставляем все, что скопировали ранее, выходим. Возвращаемся в папку, где лежит Tasmota, и запускаем Sonoff.ino. Сверху находим вкладку "my_user_config.h", откроем её.

Нам необходимо указать имя вашей Wi-Fi сети и пароль.

Если в школе прогуливали английский, то ищем ниже "Localization" и удаляем два слеша.

Заходим в инструменты.

Сверяясь с картинкой левее, настраиваем вариант прошивки.

  • Плата: "Generic ESP8266 Module"
  • Upload Speed: "11520"
  • Flash Size: "1m (noSPIFFS)"
  • Reset Method: "ck"
  • Порт: в какому порту подключен USB/UART конвертер, как узнать порт рассказал тут.

После того как убедились, что все выбрано верно, нажимаем "Загрузка".

Если загрузка прошла удачно, можно закрыть ArduinoIDE, и отпаять провод от Gpio 0. Перемычку в верхнем левом углу тоже.

Проверяем, появилось ли новое устройство в Wi-Fi сети, с помощью программ или в настройках роутера. Если да, то переходим по IP адресу, где нас встречает интерфейс прошивки Tasmota.

Подключим диммер к mqtt, заходим в "Конфигурация" --> "Конфигурация mqtt" и в поле хост вставляем адрес mqtt сервера. В графе топик пишем: Dimmer

О том, как установить mqtt сервер на ваш компьютер, можно прочитать тут.

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

Можно нажать "Переключить", если свет включился. Вы прекрасны, но это еще не все. Прошивка все еще думает, что это переключатель, исправим досадное недоразумение. На домашней странице заходим в "Консоль" Тасмоты и вводим следующее:

TuyaMCU 21,2

Диммер перезагрузится, и на нашем мониторе должен появится ползунок. Если ползунок работает и свет включается на заданную яркость, открываем "Консоль" вновь и вводим следующее правило:

Rule1 on Dimmer#State do publish stat/Dimmer/Dimmer %value% endon

Включим данное правило:

Rule1 1

Для чего это нужно? Во время интегрирования данного димера в HomeBridge, с помощью плагина mqttthing, встал вопрос обратной связи. Данное правило получает яркость диммера из топика Stat/Dimmer/RESULT и отдает их в Stat/Dimmer/Dimmer.

Как заставить mqttthing считывать яркость из топика RESULT - я не знаю, поэтому было добавлено данное правило. Коль заговорили про HomeBridge и mqttthing, перейдем к их настройке.

О том, что такое HomeBridge, для чего он нужен, и как его установить, я рассказывал недавно тут. Mqttthing же - лучший плагин для интеграции ваших устройств в HomeBridge, от телевизора до розетки.

Установка Mqttthing

Обладатели плагина HomeBridge Config UI X могут во вкладке Plugins просто ввести "Mqttthing" и установить данный плагин. А те, кто про данный Web интерфейс для HomeBridge не слышал, советую ознакомится с ним и установить компонент через консоль. Подключимся к вашему серверу по SSH и введем в консоль команду для скачивания плагина.

sudo npm install -g homebridge-mqttthing

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

sudo nano ~/.homebridge/config.json

Скопируем несколько строк для работы диммера и вставим их в аксессуары:

{ "accessory": "mqttthing", "type": "lightbulb", "name": "Лампочки", "url": "mqtt://127.0.0.1", "username": "admin", "password": "admin", "caption": "Sprut", "topics": { "getOn": "stat/Dimmer/POWER", "setOn": "cmnd/Dimmer/POWER", "getBrightness": "stat/Dimmer/Dimmer", "setBrightness": "cmnd/Dimmer/Dimmer" }, "integerValue": "false", "onValue": "ON", "offValue": "OFF" }

  • Name - можете задать любое имя, но siri, по моему опыту, лучше понимает "лампочки".
  • URL - адрес вашего mqtt сервера, у меня mqtt сервер крутится там же, где и HomeBridge, поэтому я поставил 127.0.0.1
  • Username - логин для подключения к mqtt серверу.
  • Password - пароль для подключения к mqtt серверу.
  • getON - топик для получения состояния диммера (ON/OFF).
  • setON - топик для изменения состояния диммера (ON/OFF).
  • getBrightness - топик для получения яркости диммера (0...100).
  • setBrightness - топик для изменения яркости диммера (0...100).

Обращаем внимание на правильность расстановки запятых, и перезагружаем HomeBridge. Если вы все сделали правильно, у вас появится новое устройство в вашем умном доме.

Итог

За 15 вечно зеленых долларов мы получаем сенсорный диммер, с помощью протокола mqtt его можно интегрировать практически в любую систему умного дома - Apple HomeKit, Google Home, Яндекс умный дом и т.д.

И скорость работы стала на высоте - практически минимальная задержка. На мой взгляд - это победа.

Ссылки на покупку диммера и USB/UART конвертера можно найти ниже.

Диммер ~ 1000 рублей.

CP2102 ~ 80 рублей.

Отдельную благодарность хочу выразить Антону (@Whilser) за помощь в настройке прошивки Tasmota. Без его знаний данный материал не увидел бы свет.

Демонстрация работы - картинка темновата, в жизни ярче.


Отличное продолжение серии!

Не совсем понятно, на что повлиял выход iOS13. Он перестал как диммер работать?

В видео показал как он работал, посмотри

Если прямое управление не требуется, то есть нативная прошивка под хк, где пин шим только указывается. На али есп01с и диммер под шим покупаем и вуаля :)))

Можно ссылку? Очень бы пригодилось данное устройство



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

Могу дать ссылку на репозиторий диммера. 

Хотел сегодня запилить статью про это дело, собрал устройство для упаковки в корпус, да наступил на грабли. При чем на прототипе на проводочках все работало 🤣

https://sprut.ai/static/media/cache/00/29/78/5/1609888/44887/1000x_image.jpeg?1570391118" alt="1000x_image.jpeg?1570391118" />https://sprut.ai/static/media/cache/00/29/78/5/1609888/44888/1000x_image.jpeg?1570391120" alt="1000x_image.jpeg?1570391120" />

https://github.com/curla92/LED-Dimmer-Homekit">https://github.com/curla92/LED...
там в принципе все понятно из кода, закидывается эта прошивка через ота - я брал бин-файлы от равенкора, потом при первом подключении прописывал репозиторий диммера. настройка черезе eve - тип платы, пин диммера, пин кнопки-триггера и тп.



Спасибо за статью! 

Если немного похимичить с паяльником, можно получить в MQTT события на холд и даблклик

https://sprut.ai/static/media/cache/00/53/92/5/3611163/56924/1000x_image.png?1588095101" alt="1000x_image.png?1588095101" />

Необходимо перерезать дорожку помеченную красныи и припаять ножку микросхемы cr302 к свободной ноге от ESP8266. Далее объявить эту ногу как кнопку и можно слушать события.

Rule2 on button#State=1 do power=2 endon

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


Вернуться назад

Устройства


Вернуться назад