• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Прошивка Sonoff NSPanel в ESPHome и управление устройствами умного дома Home Assistant.

8 июня, 2022

NSPanel: http://alii.pub/6d6k50

NSPanel подешевле: http://alii.pub/6d6k66

Программатор: http://alii.pub/6d6k7x

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

 

ВАЖНО!!! ПОСЛЕ ПЕРЕПРОШИВКИ, ВЫ УЖЕ НЕ ВЕРНЕТЕ СТАНДАРТНУЮ ПРОШИВКУ ОТ SONOFF И В EWELINK ПРИЛОЖЕНИИ РАБОТАТЬ НЕ БУДЕТ.

Для того чтоб  перепрошить NSPanel нам нужно добраться до основной платы. Там выведены пины  3.3v , rx, tx, io, gnd.

Для программирования нам понадобится usb/ttl конвертер.

Подключать нужно rx и tx пины платы и конвертера крест на крест.

Пин Io0 на плате нужно замкнуть на землю.

Если не хотите замыкать, то нужен специальный usb/ttl конвертер. Я использовал вот такой: http://alii.pub/6d6k7x

С ним не нужно пин io0 замыкать на землю. Программатор сам это делает.

Итак, как подключить программатор и прошить вроде разобрались. Теперь давайте собственно перейдем к подготовке прошивки.

Без Home Assistant нам не удастся полностью прошить панель. Мы сможем прошить только Основную плату с esp32. Но у нас в NSPanel присутствует еще дисплей Nextion. Который собственно сам является отдельным умным дисплеем и под него нужно отдельную прошивку изготавливать и загружать.

И так, первым делом в Home Assistant открываем File Editor и там в папке /config/esphome/ отредактируем файл secrets.yaml. Если нет этого файла, то создадим новый.

Содержимое конфига должно выглядеть примерно так:


wifi_ssid: "NETGEAR"
wifi_password: "24112515156"
nextion_update_url: "http://192.168.31.145:8123/local/hmi.tft"

Собственно SSID и пароль – это учетные данные от вашей wi-fi сети.

А вот с nextion_update_url интересней.

ip адрес нужно заменить на ip адрес Вашего сервера Home Assistant. А путь /local/hmi.tft – это путь который ведет к /config/www/hmi.tft

Не спрашивайте почему (долго объяснять) Просто примите к сведению, что файл hmi.tft должен у Вас лежать по пути /config/www/.

Ну и собственно вам нужно в File Editoре перейти в папку /config/www и закачать туда файл hmi.tft. Это файл дисплея Nextion, который собственно я уже подготовил для работы. Если хотите чтоб у Вас все так-же работало как у меня в видео, то качайте его и загружайте в NSPanel не меняя ничего. Скачать его можно по ссылке: https://disk.yandex.ru/d/ry6xj0WL9PhE8g

Ну а если Вы хотите сами отредактировать проект в Nextion editor, то качайте файл проекта: https://disk.yandex.ru/d/QKqBHNqndye0gw

Чтоб проверить работоспособность, что Ваш файл hmi.tft доступен для загрузки прошивки, просто в браузере впишите адрес http://192.168.31.145:8123/local/hmi.tft

И у Вас должен начать скачиваться файл. Если этого не происходит, то что-то у Вас не так.

Ну а если у Вас скачивается файл, то значит все у Вас правильно. И после того как Вы прошьете основную плату NSPanel прошивкой ESPHome. У Вас в Home Assistant появится служба под названием “ESPHome: nspanel_upload_tft”

Ее можно найти (но только после загрузки прошивки в NSPanel и добавлении получившегося устройства в Home Assistant) перейдя в “Панель разработчика-> службы” там найти службу ESPHome: nspanel_upload_tft и нажать кнопку “Вызвать службу”. После этого начнется прошивка дисплея.

Ну и собственно на дисплее NSPanel вы должны увидеть шкалу загрузки прошивки:

Так, с прошивкой дисплея Nextion у NSPanel разобрались. Надеюсь понятно как это сделать.

Теперь возвращаемся немного в прошлое. А именно в то время, когда мы подготавливаем прошивку ESPHome Для NSPanel.

У прошивки более 800 строчек кода и все мне очень сложно описать. По этому давайте я опишу основные.  А про все остальные я рассказал в видео, которое будет в конце статьи.

Итак, из прошивки Важно следующее.

Например, за кнопку включения и выключения объекта освещения light или выключателя switch. Отвечают следующие блоки:


  - platform: nextion
    name: $device_name Light 0 button
    page_id: 2
    component_id: 17
    on_click:
      - homeassistant.service:
          service: light.toggle
          data:
            entity_id: light.desk_lamp

Эта кнопка, которая находится на странице id 2 nextion дисплея. Компонент кнопки 17. Их можно посмотреть в Nextion проекте:

Далее объявляется, что это service Home Assistant который называется light.toggle  И он работает с объектом light.desk_lamp

light.desk_lamp – это моя настольная лампа.

Далее код который будет выбирать картинку из проекта Nextion для этой лампы. Картинки две. Одна будет показывать состояние включенное, и вторая следовательно выключенное состояние.


  - platform: homeassistant
    id: secto
    entity_id: light.desk_lamp
    on_value:
      then:
        - wait_until:
            switch.is_on: nextion_init
        - lambda: |-
            int symbol = 33;
            if (id(secto).state == "off") {
              symbol=32;
            }
            id(disp1).send_command_printf("Lights.light0.pic=%i", symbol); 
 

Тут тоже описываем, что это элемент Home assistant light.desk_lamp тоесть моя настольная лампа. Далее описывается функция которая будет вызывать при включении symbol = 33 , а при выключении symbol=32

ЧТо – это за symbolы такие. Это собственно id картинки. Тоесть когда лампа будет включена, вызвать картинку 33,  а когда выключена картинку 32. Номера этих картинок так-же надо смотреть в проекте nextion:

Картинки можете сами вставлять свои, они должны быть разрешением 85×85. Ну и собственно изменить надо будет только symbol.

Ну а собственно вот эта строчка какраз выводит эти картинки в поле light0 которое тоже выделено на картинке выше. id(disp1).send_command_printf("Lights.light0.pic=%i", symbol)

 

 


  - platform: homeassistant
    id: secto_name
    entity_id: light.desk_lamp
    attribute: friendly_name
    on_value:
      then:
        - wait_until:
            switch.is_on: nextion_init
        - lambda: id(disp1).set_component_text_printf("Lights.light0t", "%s", id(secto_name).state.c_str());

 

Ну а этот блок выводит название объекта под каждой кнопкой. тут тоже надо указать какой это объект. В моем случае это light.desk_lamp

Таким образом описывать можно все 8 блоков. Я описал так только 3. И выглядят они в итоге на живой NSPanel вот таким образом:

Так-же описаны и кнопки управления музыкой. Музыкой яндекс колонки ( какнибудь о ней тоже расскажу).


  - platform: nextion
    name: $device_name Music play pause
    page_id: 1
    component_id: 2
    on_click:
      - homeassistant.service:
          service: media_player.media_play_pause
          data:
            entity_id: media_player.yandex_station_lp0000000000003532610000c4d25201

Ну и давайте рассмотрим одну кнопку “Пауза, плей” остальные по аналогии.

Значит тут так-же как в начале с выключателем настольной лампы, указывается page_id: 1 – это id страницы на которой находится кнопка.

Далее component_id: 2 – это id кнопки которая отвечать будет за play_pause.

Потом идет сервис Home assistant. У Home Assistant есть куча сервисов которые отвечают за медиа плеер. Там куча кнопок и старт, пауза, громкость и всякое всякое. Вот оттуда я собственно и взял службу которая отвечает за старт и стоп трека. Она называется: media_player.media_play_pause

Ну и последним указывается для какого устройства управлять кнопкой плей/стоп. У меня это яндекс станция. И у меня это устройство выглядит как: media_player.yandex_station_lp0000000000003532610000c4d25201

Так, со страницей музыки тоже разобрались.

Теперь давайте покажу как вывести например свой какой-нибудь датчик. В моем случае это датчик CO2. Он тоже берется из Home Assitant.


  - platform: homeassistant
    id: co2
    entity_id: sensor.mh_z19_co2_value
    on_value:
      then:
        - wait_until:
            switch.is_on: nextion_init
        - lambda: id(disp1).set_component_text_printf("Home.text2", "%.1fppm", id(co2).state);
 

Ну собственно тут берется сенсор sensor.mh_z19_co2_value – это мой сенсор co2 в home assitant.

Ну и вот этой строчкой он собственно выводится на дисплей на страничку Home в блок text2 - lambda: id(disp1).set_component_text_printf("Home.text2", "%.1fppm", id(co2).state)

 

Это я описал элементы, которые каждый будет конфигурировать под себя. А остальное собственно останется без изменений. По этому с Вашего позволения я не буду их описывать. О них я рассказал в видео. Которое можете посмотреть ниже.

Скачать конфиг esphome можно по ссылке: https://disk.yandex.ru/d/FlD3wQL9dEr2hg

Там файл в формате .yaml Его лучше открывать блокнотом.

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·