Последний раз, когда мы касались темы использования Sonoff в HomeKit мы рассказывали о том, как без прошивки и паяльника завести устройство в Homebridge, а потом соответственно и в приложение Дом. Сегодня же разговор пойдет о том, как все-таки отвязаться от чужих серверов и сделать это правильно и, главное, быстро. Основными минусами предыдущего способа заключались в том, что:
  • требовалось достаточно много времени для того, чтобы завести свое первое Sonoff устройство в Homebridge
  • все-таки периодически полученный токен «слетал» и приходить доставать новый
  • не у всех и не всегда это получалось
  • оставалась зависимость от внешней среды и европейских серверов E-welink
В описанном способе ниже нам все-также не потребуется приобретение прошивателя, а сам способ заведения устройства в HomeBridge стал еще проще предыдущего. За основу этого метода берется opensource проект SonOTA. Именно благодаря этому проекту стало возможным прошивать наши Sonoff устройства без покупки отдельных стиков/прошивателей и т.д. ВАЖНО: Использование данного способа возможно для прошивки до версии 1.6.

Прошивка

И так. Приступим к описанию самих шагов прошивки. Все инструкции ниже будут даны для «маководов», как для наиболее «ущербных» в своих возможностях, но при этом наиболее изворотливых особей 🙂
  1. Устанавливаем Python 3 на Mac — ссылка
  2. Устанавливаем Developer Tools если нас об этом попросят во время установки (у большинства они уже в общем-то стоят)
  3. Отключаем все Firewalls (по-умолчанию, у меня было всё выключено)
  4. После успешной установки скачиваем репозиторий SonOTA с помощью обычной «download zip» или командой git clone
https://github.com/mirko/SonOTA.git
После этого заходим в директорию проекта и устанавливаем зависимости Python
cd SonOTA/
pip3 install --user -r requirements.txt
После этого запускаем исполняемый файл (опять же из командной строки)
./sonota.py
В этот момент на экране начнут появляться инструкции, которые необходимо будет пошагово выполнять. Во время этих инструкций вы должны будете сбросить свой Sonoff, подключить свой Mac к его Wi-Fi, потом подключиться к еще одной сети, и так до того момента пока вы в итоге не зайдете в браузере по выделенному IP для вашего уже прошитого Sonoff.
На этом можно считать этап прошивки завершенным. После этого мы можем на время отложить свой Sonoff и перейти к нашей Raspberry.

Настройка MQTT

Для того, чтобы наш Sonoff теперь появился в Homebridge нам необходимо будет выполнить следующий список действий:
  1. Установить MQTT сервер на Raspberry
  2. Настроить MQTT на нашем Sonoff устройстве
  3. Установить и настроить плагин для HomeBridge
Дальше все действия будут описываться для настройки Sonoff Basic. Устанавливаем MQTT сервер на Raspberry
sudo apt-get install mosquitto
На этом пункт 1 можно считать выполненным 🙂 Продолжаем… Теперь возвращаемся к нашему Sonoff и прописываем настройки для MQTT Переходим Configuration -> Configure MQTT. И в настройках MQTT прописываем IP нашей малинки. В topic должно быть наименование вашего устройства. Если у вас оно одно, то можете оставить то, что стоит по-умолчанию: sonoff. В итоге у меня это выглядело так.
После этого нажимаем кнопку Save, устройство перезагрузится и вернется к жизни. Пункт 2 завершен. Теперь пришло время установить плагин и настроить его.  Нам необходим данный плагин. Устанавливаем его как обычно, либо через командную строку либо через веб-интерфейс, который мы обычно ставим в самом начале использования Homebridge. Через командную строку это будет выглядеть так
npm install -g homebridge-mqttthing
После чего переходим в config.json и добавляем следующий блок. Блок, указанный ниже, подойдет для Sonoff basic. К сожалению, для того, чтобы настроить этот блок у меня ушло не мало времени чтобы разобраться с mqtt с нуля. Поэтому если вы не знакомы с MQTT и у вас не Sonoff basic, то возможно вам потребуется некоторое время для того, чтобы понять работу MQTT и найти нужные настройки и команды. В обратном случае вам повезло и ниже вы найдете готовую настройку для управления базовым реле Sonoff.
        {
            "accessory": "mqttthing",
            "type": "lightbulb",
            "name": "Table Lamp",
            "url": "tcp://192.168.31.107:1883",
            "username": "DVES_USER",
            "password": "DVES_PASS",
            "logMqtt": true,
            "topics": {
                "getOn": "stat/sonoff/POWER",
                "setOn": "cmnd/sonoff/POWER"
            },
            "onValue": "ON",
            "offValue": "OFF"
        }
Выше показан объект с настройкой плагина, который необходимо вставить в блок .
  • accessorry — не меняем
  • type — в моем случае sonoff подключен к лампе, поэтому здесь указан lightbulb (на странице плагина можно подсмотреть другие типы)
  • name — имя устройство, которое вы вольны выбирать (я назвал свое «Table Lamp»)
  • url — url сервера MQTT
  • username и password — скопированы из настроек MQTT
  • остальные настройки отвечают за работу с MQTT устройством и лучше их скопировать как есть (примечание: если свой устройство вы переименовали из sonoff во «что-то иное», то в командах getOn и setOn надо также переименовать sonoff в «что-то иное»
После сохранения изменений перезапускаем Homebridge и устройство должно появится на главном экране. На этом настройка закончена. По итогам этих операций:
  • мы перепрошили наш Sonoff и отвязали от внешних серверов
  • мы запустили MQTT сервер на нашей малинке
  • мы настроили Homebridge и сам sonoff на работу с mqtt
Author

Наш главный гайд-мастер. Инструкции и обзоры его конёк. Иногда перебарщивает с личным мнением.