Новая версия компонента Sonoff для Home Assistant

12 января 2020, 08:06

Два месяца назад я выпустил первую версию компонента для работы с устройствами Sonoff из Home Assistant по локальному протоколу.

Не путать! с другим компонентом, который работает через сервера eWeLink!

Вы покупаете устройство с прошивкой eWeLink, настраиваете его с помощью официального мобильного приложения и они сразу готовы к работе.

Из Home Assistant устройства будут управляться по локальной сети даже при отсутсвии Интернета.

Вместе с этим устройства продолжат работать с китайскими серверами и ими можно управлять из официального приложения или подключить к Яндекс Алисе или Google Assistant. Кого-то наличие этого подключения может смущать.

Компонент успешно протестирован и работает с:

  • Sonoff Basic (самой первой версии)
  • Sonoff Mini (режим DIY включать не нужно)
  • Sonoff TH (показывает температуру и влажность)
  • Выключатели MiniTiger (безнулевые выключатели в круглый подрозетник с прошивкой eWeLink)
  • Sonoff 4CH Pro R2 с RF

В новой версии компонента:

  • список, настройки и названия ваших устройств Sonoff могут скачиваться с серверов eWeLink (опционально) - только один раз при старте HA, можно настроить обновление или выключить его
  • можно настроить все устройства вручную
  • при желании устройствам можно указать тип (switch, light или fan) - удобно при интеграции с голосовыми ассистентами
  • при желании многоканальные устройства (выключатели на две кнопки или Sonoff 4CH) можно настроить как единый источник света, а каналы будут управляться яркостью - удобно при интеграции с голосовыми ассистентами

Компонент можно скачать с github.

Работа компонента основана на протоколе Multicast, поэтому у вас должен быть достойный роутер. Это важно!

Пример минимального конфига

sonoff:
  username: mymail@gmail.com
  password: mypassword

Пример с настройкой типов устройств

sonoff:
  username: mymail@gmail.com
  password: mypassword
  reload: once # загружает конфиг только 1 раз, для обновления необходимо
               # удалить файл `.sonoff.json` и перезапустить HA
  devices:
    1000abcde0: # коридор свет
      device_class: light
    1000abcde1: # детская свет (двойной выключатель, одна люстра)
      device_class:
      - device_class: light
        channels: [1, 2]
    1000abcde2: # туалет свет и вытяжка (двойной выключатель)
      device_class: [light, fan]
    1000abcde3: # спальня свет и подсветка (двойной выключатель)
      device_class: [light, light]
    1000abcde4: # зал три зоны света Sonoff 4CH
      device_class:
      - light # зона 1 (канал 1)
      - light # зона 2 (канал 2)
      - device_class: light # зона 3 (каналы 3 и 4)
        channels: [3, 4]

Пример без подключения к серверам eWeLink

Вам нужно знать devicekey каждого вашего устройства, им шифруются команды. Как его получить написано на github.

Но гораздо проще если компонент их самостоятельно получит с серверов eWeLink.

sonoff:
  devices:
    1000abcdefg:
      name: Туалет свет
      devicekey: f9765c85-463a-4623-9cbe-8d59266cb2e4

Возможна установка через HACS

1600x_image.png?1579175909

Sonoff 4CH настроен как единый источник света с управлением яркостью


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. (Alex_L)
    (Alex_L) 10 дней назад

    В прошлый раз отказался от этого компонента потому что он наглухо завешивал мне малину с хассио при пропадании интернета. А как сейчас с этим? 


    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) 10 дней назад

      Точно это был мой компонент? Моя прошлая версия вообще в и-нет не лазила. Сейчас слазит в и-нет только один раз при старте ХА, чтоб скачать список ваших устройств.

      • (Alex_L)
        (Alex_L) 10 дней назад

        # sonoff:
        #   username: lxxxxxxx@gmail.com
        #   password: Olovo555
        #   scan_interval: 60
        #   grace_period: 600
        #   api_region: 'eu'
        #   entity_prefix: True
        #   debug: False

        Вот это. Если не Ваше - прошу прощения.

  2. (Alex_L)
    (Alex_L) 10 дней назад

    Тогда ещё раз прошу прощения 

    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) 10 дней назад

      Да не проблема. Я допускаю, что и в моём компоненте могут быть глюки. Им небось пользуются два с половиной человека. Все любят перепрошивать сонофы на что-то альтернативное.

  3. Александр  Сторчак (CAH)

    Достойная работа, которая заняла для реализации уйму времени. Респект!!!

  4. (gvasiliy)
    (gvasiliy) отредактировано 10 дней назад

    Спасибо за работу. Два вопроса видимо автоопределение в НА здесь не реализовано ? Второй вопрос отпал.

    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) отредактировано 10 дней назад

      Автоопределение это что?

      А чтоб не случалось повторной авторизации в мобильном приложении и чтоб не создавать второй аккаунт, я сделал настройку reload: once. Но написать про повторную авторизацию забыл :(

  5. (zloyglide)
    (zloyglide) 9 дней назад

    Зачет. Вечерком попробую.

  6. Андрей Гордеев (m03g1983)

    Плагин зачётный. Даже китайские поделки заходят в HA.👍

  7. (adikov)
    (adikov) 7 дней назад

    Добрый день. Спасибо за за проделанный труд! Чтобы заработал Multicast мне нужно на роутере активировать "многоадресную маршрутизацию (IGMP Proxy)" или еще что-то нужно сделать?

    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) 7 дней назад

      Добрый. А если ничего на роутере не делать - не работает?

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

      Если HA установлен в Docker - должна быть прокинута вся сеть (network=host), а не просто порт 8123.

      Ещё я встречал ситуацию, что мультикаст не работал на китайском noname mini pc.

      • (adikov)
        (adikov) 7 дней назад

        Файл .sonoff.json с данными появляется, но устройства (sonoff mini) в HA не появляются, точнее появились на некоторое время как  switch, хотя я их прописывал как light (но это не важно), но после очередного рестарта HA пропали и больше не проявлялись. Пытался вручную прописывать через devicekey, тоже ничего.

        • Алексей Х (AlexxIT)
          Алексей Х (AlexxIT) отредактировано 7 дней назад

          Устройства могут появиться не сразу. Они сами сообщают ХА о себе после каждого рестарта (через мультикаст), ХА не знает их IP-адреса до этого момента. Иногда нужно подождать несколько минут.

          Чтоб ускорить появление устройства - нужно им пощёлкать, физически или через мобильное приложение.

          device_class мог не определиться, если в ID устройства только цифры (особенности yaml). Тогда ID нужно взять в кавычки. Ну или искать опечатки в конфиге.

          • (av.borisov@gmail.com)
            (av.borisov@gmail.com) 20 часов назад

            Мне кажется здесь кроется некоторая проблема... У меня пока подключено только одно реле Sonoff Mini, и после рестарта HASSа оно сваливается в состояние unavailable.

            При этом возвращается в нормальное состояние (on или off) он только после включения или выключения реле (кнопкой или из ewelink'а), без этого состояние не меняется, ждал в районе часа...

            И в таком случае перестают работать все автоматизации по управлению этим реле, например включение света по датчику движения...

            • Алексей Х (AlexxIT)
              Алексей Х (AlexxIT) 20 часов назад

              Сложно сказать кто именно тупит - реле или роутер с кривым мультикастом. Некоторые старты ХА - всё появляется сразу. Некоторые - нужно ждать какое-то время. Но это минуты. Не замечал пропадания на час.

              Может во время старта ХА у реле был плохой сигнал вайфай и оно не получило опроса.

              Какой роутер?

              • (av.borisov@gmail.com)
                (av.borisov@gmail.com) 20 часов назад

                С мультикастом проблем не наблюдаю, те же Xiaomi'шные железки работают без особых проблем. Да и сонофф реагирует на изменения статуса моментально, задержек в смене статуса нет, как бы его не дергать - и физически и через приложение и через hass.

                Keenetic Giga (в качестве именно роутера) + Xiaomi Mi Wi-Fi Router 3G (с кастомной прошивкой "от Олега" в качестве точки доступа).

                • Алексей Х (AlexxIT)
                  Алексей Х (AlexxIT) 20 часов назад

                  А сигнал вайфай на нём норм? Последняя версия компонента выводит этот параметр в атрибутах. Правда я не сильно понял как его трактовать. 

                  • (av.borisov@gmail.com)
                    (av.borisov@gmail.com) 19 часов назад

                    В теории с сигналом проблем быть не должно, до точки по прямой метра 3.

                    Кстати, в атрибутах не увидел уровня сигнала, только supported_features и friendly_name (в конфиге девайс прописан явно, с указанием ключа и device_class'а - light)...

                    Компоненту ставил через HACS вчера вечером.

                    • Алексей Х (AlexxIT)
                      Алексей Х (AlexxIT) 19 часов назад

                      После 23 по Москве выложил.

                      • (av.borisov@gmail.com)
                        (av.borisov@gmail.com) 19 часов назад

                        Примерно в это время и ставил.

                        По версии, хакс говорит -  Installed: 6f7c033 Available: 6f7c033

                        • Алексей Х (AlexxIT)
                          Алексей Х (AlexxIT) отредактировано 19 часов назад

                          Нашёл косяк, уровень сигнала почему-то не попал в продакшен.

                          • (av.borisov@gmail.com)
                            (av.borisov@gmail.com) 19 часов назад

                            Тогда ждем апдейта )

                            Но, в любом случае, я не думаю что виноват в этом плохой сигнал, не может же он пропадать только на время загрузки HASSа =)

                            А в процессе работы никаких проблем с обновлением статусов и управлением релюхой нет...

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

  8. (adikov)
    (adikov) отредактировано 7 дней назад

    Файл .sonoff.json с данными появляется, но устройства (sonoff mini) в HA не появляются, точнее появились на некоторое время как  switch, хотя я их прописывал как light (но это не важно), но после очередного рестарта HA пропали и больше не проявлялись. Пытался вручную прописывать через devicekey, тоже ничего.

  9. (adamsik)
    (adamsik) 7 дней назад

    Sos меня!!!!

    ну вот не понимаю и не нахожу. Что делать.

    скопировал файлы компоненты. Куда дальше нажимать то? 

    Мои первые дни з ХА и я не понимаю что дальше делать со скриптом. Как его запустить. Куда и что прописать чтоб работало. Сейчас ошибку выдает. Component error: sonoff - Integration 'sonoff' not found.

    Помогите плз


    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) 7 дней назад

      В прошлой статье в коментах был такой вопрос

      • (adamsik)
        (adamsik) 7 дней назад

        Огромное спасибо!!!!!!!!

        и так со всеми питоновскими скриптами надо работать?

        • Алексей Х (AlexxIT)
          Алексей Х (AlexxIT) 6 дней назад

          Со всеми компонентами не попавшими в официальную версию Home Assistant

          • (av.borisov@gmail.com)
            (av.borisov@gmail.com) 6 дней назад

            А нет желания добавить ваш компонент в HACS (https://hacs.xyz/)?

            • Алексей Х (AlexxIT)
              Алексей Х (AlexxIT) отредактировано 6 дней назад

              Есть желание добавить в официальную сборку ХА, но нужно много доработать. 

              А поддержку HACS я сделал. Обновил статью.

              • (av.borisov@gmail.com)
                (av.borisov@gmail.com) 6 дней назад

                За HACS отдельное спасибо ) и да, наличие в официальной сборке было бы совсем прекрасно!

  10. Алексей Кудрявцев (relhzdwtd9158500)

    Идея отличная, но в моем случае не всегда реагирует на нажатие, т.е. часть сонофов как-бы зависает....и еще блокирует работу HomeKit !!!, может есть вариант исправления?

    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) отредактировано 5 дней назад

      При разработке я встречал, что сонофы подвисают и не принимают команды (от очень частых запросов). При обычном использовании устройств такого не наблюдается (более 10 сонофов в бою). У меня не идеально написан компонент (нет асинхронного кода) и подвисания сонофов могут действительно тормизить весь ХА. Может найду время переписать весь код.

      Но так же проблема может быть с роутером. Я не изучал протокол HomeKit, но подозреваю он сильно завязан на мультикасте. Простые роутеры с таким объёмом мультикаста не справляются.

      • Алексей Кудрявцев (relhzdwtd9158500)
        Алексей Кудрявцев (relhzdwtd9158500) отредактировано 5 дней назад

        роутер AirPods Extreme, что касается частых переключений - не могу сказать, что щелкаю постоянно )), может логи помогут разобраться?

        • Алексей Х (AlexxIT)
          Алексей Х (AlexxIT) 5 дней назад

          В таком должно быть всё норм с мультикастом. Может количество устройств wifi превышено (нужно посмотреть именно на 2.4ГГц, если роутер двухдиапазонный)? Эпл очень дохлые по количеству.

          Логи можно мне в личку в телеграме кинуть.

  11. (urg2000)
    (urg2000) 5 дней назад

    Ваш плугин поддерживает Sonoff B1 ?

  12. (urg2000)
    (urg2000) 5 дней назад

    У меня ест, она как неприкаянная. Sonoff прошиты ravencore, а под эту лампу нету прошивки. Сейчас она прошита ESPUrna но хочу чтоб родное ПО стояло.

  13. (urg2000)
    (urg2000) 5 дней назад

    Прошивка родная есть или что вы имеете ввиду?

    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) 5 дней назад

      В приложение eWeLink добавляли наверное? Если не удалили - можете прислать мне файл .sonoff.json в телеграм.

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

      Пишите в телеграм, так быстрее.

  14. (urg2000)
    (urg2000) отредактировано 5 дней назад

    Хорошо. Только мне надо установить HA. Я пробовал установить на прошивке volumio (мне на малине он нужен, точнее airplay) Устанавливал по инструкции  Текстовая инструкция - http://bit.ly/327gECl и видео youtube.com/watch?v=-DZAdAY-aho

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

  15. (gorg)
    (gorg) 3 дня назад

    Кто-нибудь с sonoff pow r2 юзал этот компонент? Работает? Мощность и напряжение на ХА транслирует? Сейчас сижу на Peterburg-e. Плюс-минус нормально, однако данные по вольтажу и ваттажу отдает на ХА хаотично и редко. Разработчик проблему знает и неспешно обещает решить.

    • Алексей Х (AlexxIT)
      Алексей Х (AlexxIT) отредактировано 3 дня назад

      Точно не транслирует, я такого не писал. Но, думаю, как и с TH - добавить не проблема. Логи нужны.

      • (prozor)
        (prozor) отредактировано день назад

        если добавить атрибуты в toogle.py 

        ATTRS = ('humidity', 'temperature', 'power', 'current', 'voltage') то TH начинает работать. 

        эти данные идут как атрибуты к entity и для них нужно создать templates sensors чтобы использовать их дальше.  (ну как и в TH собственно)

        а вот sonoff SC не завелось (

        простого добавления атрибутов оказалось не достаточно

        ATTRS = ('humidity', 'temperature', 'power', 'current', 'voltage', 'dusty', 'light', 'noise')

        https://www.itead.cc/ru/sonoff-sc.html

        вот такое, если бы можно было бы и ее поднять. 

        какие логи вам нужны? или лучше самому разобраться и вам выслать код?

        в devices.jsonq оно появляется. 

        online":true,"shareUsersInfo":[],"groups":["5dd68e4a52d05ec10f9c72c4"],"devGroups":[],"_id":"5bc78e7832bd3391ff16527a","name":"Meteo","type":"10","deviceid":"10003b7221","apikey":"","extra":{"extra":{"description":"WWJG001294","brandId":"58e5f344baeb368720e25469","apmac":"d0:27:00:76:e1:93","mac":"d0:27:00:76:e1:92","ui":"传感器中心","modelInfo":"5a2e1b3a0cf772f92c342f02","model":"PSA-BTA-GL","manufacturer":"深圳松诺技术有限公司","uiid":18,"staMac":"BC:DD:C2:FD:21:2D"},"_id":"5a97aabcd2b32e7d7a38ecb8"},"createdAt":"2018-10-17T19:33:12.289Z","__v":0,"onlineTime":"2020-01-21T04:47:42.357Z","ip":"46.98.188.195","location":"","params":{"dusty":2,"noise":2,"light":10,"temperature":20,"humidity":90,"fwVersion":"2.7.0","staMac":"BC:DD:C2:FD:21:2D","rssi":-29,"sledOnline":"on",,"offlineTime":"2020-01-21T04:47:10.071Z","deviceStatus":"","sharedTo":[],"devicekey":"","deviceUrl":"

        devicekey & apikey на всякий случай стер.

        о. точно, я попробую дома к ней приконектится. найти айдишник и вручную добавить. 

        • Алексей Х (AlexxIT)
          Алексей Х (AlexxIT) отредактировано день назад

          Спасибо за pow, добавлю. Опционально можно было бы прокидывать все параметры, что шлют устройства, но я не стал рисковать.

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

          Кажется понял. Sonoff SC не выключатель. Он полностью игнорируется компонентом. DEBUG логи бы помогли, чтоб я мог его добавить как сенсор.

          Напишите мне в телеграм, так быстрее.

  16. (eug314)
    (eug314) день назад

    Огромное спасибо за sonoff

К списку блогов

Похожие записи

13 февраля 2019, 22:00
Подключение радио на Xiaomi Gateway к Home Assistant c дальнейшим использованием в автоматизациях
19 апреля 2019, 20:53
Требуется ваше мнение!
06 февраля 2019, 12:02
Автоматизированное открытие/закрытие окна
04 апреля 2019, 12:45
Самое важное из апдейта Home Assistant 0.91-0.91.4 от 03.04.19.
21 марта 2019, 11:59
Самое важное из апдейта Home Assistant 0.9 от 20.03.19.
21 февраля 2019, 21:12
Самое важное из апдейта Home Assistant 0.88 от 20.02.19.
07 февраля 2019, 21:12
Самое важное из апдейта Home Assistant 0.87 от 06.02.19.
19 января 2019, 20:49
Делюсь новостями по проекту.
20 мая 2019, 20:54
Добавляем Телевизор в Homekit c помощью новых возможностей Home Assistant версии 0.93 и кастом компонента SmartIR MediaPlayer.