Я немного занимаюсь домашней автоматизацией, у клиентов стоит разное оборудование и в маленьких проектах я использую стандартные шлюзы от производителя с их облаками, но в при большой инфраструктуре ставлю свой шлюз. Если в качестве системы управления домом используется MajorDoMo то оборудование Tuya работает из коробки, не надо никаких лишних движений по извлечению ключей, регистраций на сайтах и тому подобное. В случае же с HomeAssistant всё немного печальнее и по этому на вопрос: шить или не шить, было принято решение шить!
Вот собственно и выключатель
Все вайфай выключатели у меня фирмы MOES, марка выключателей WS-EU-RFB-N. Паять было лень и решил сначала прошить по воздуху. Это возможно если прошивка сделана на базе SDK до февраля 2022 года, вот с помощью этой программы, у меня не получилось, видимо прошивка на базе SDK поздней версии. По этому пришлось разобрать выключатели и паять.
Модуль в этом выключателе CBU с процессором BK7231N, (на фото RX и TX не чипа, а программатора)

Припаиваемся к плате
качаем прошивальщик под Linux или под Винду и отсюда прошивку под свой чип.
У меня Linux и по этому я буду делать всё в командной строке. Мне старая прошивка не нужна и мне не надо делать бэкап, я попробывал забэкапить, но после обратной заливки устройство не заработало, по этому я бросил эту затею и просто прошиваю, для моего чипа обязательно шить с адреса 0x0 и с ключом -u
./uartprogram -w OpenBK7231N_QIO_1.17.366.bin -u -s 0x0
у меня порт /dev/ttyUSB0, если у Вас другой то надо его указать с соответствующим ключом. После запуска ненадолго замыкаем СБРОС на GND (сигнал CEN контакт 18) и модуль начинает прошиваться.
После прошивки перезапускаем модуль, должна появиться точка доступа с именем начинающимся с «OpenBK7231N_», заходим по айпи адресу: 192.168.4.1 и задаем имя точки доступа и пароль. Сохраняем, перезагружаемся. Входим по айти адресу который выдал роутер. На надо рассказать прошивке что к какому контакту подключено, это делается в кнопке

попадаем в конфигурирование GPIO модуля


| Pin number | Symbol | I/O type | Function |
|---|---|---|---|
| 1 | P14 | I/O | Led 1 |
| 2 | P16 | I/O | Led 2 |
| 3 | P20 | I/O | Led 3 |
| 5 | P23 ADC | I/O | Кнопка 1 |
| 8 | P8 | I/O | подключена микросхема RF |
| 10 | P6 | I/O | Реле L3 |
| 11 | P26 | I/O | Реле L2 |
| 12 | P24 | I/O | Реле L1 |
| 17 | P28 | I/O | Кнопка 3 |
| 19 | P9 | I/O | Кнопка 2 |
| 20 | P17 | I/O | Led Wi-Fi |
Далее устанавливаем параметры MQTT, думаю что в какие поля писать не составит проблем. В MQTT публикуются и управляются только Rel и LED, нажатия кнопки не публикуются, чтобы публиковалась кнопка надо выбрать dInput и указать номер порта отличный от портов реле и LED, состояния будут публиковаться, но управлять реле эти кнопки не будут, управление в этом случае надо делать через автоматизацию которая будет управлять данными реле.
Для того чтобы завести это в HomeAssistant есть соответствующая кнопка
![]()
откроется конфиг для HomeAssistant

в конфигурации будет name: с номером канала который задан в конфигурации модуля, в HomeAssistant будет выглядеть так: switch.1 switch.2 и т.д. если у Вас несколько выключателей то строку name: надо изменить, например сделать такое же как unique id тогда в HomeAssistant реле будут выглядеть switch.bt01_relay_1 switch.bt01_relay_2 и т.д.
добавляем в свой configuration.yaml код с каждого реле (строка mqtt: и switch: должны написаны один раз), после чего эти имена можно использовать в автоматизациях, lovelace. Вот пример использования lovelace
Если у Вас такой же выключатель, то можно просто загрузить конфиг, для этого войдите в меню
![]()
и в соответствующей вкладке вставьте конфиг
{
"vendor": "MOES",
"bDetailed": "0",
"name": "Smart Switch",
"model": "WS-EU2-RFB-N",
"chip": "BK7231N",
"board": "TODO",
"flags": "1088",
"keywords": [
"TODO",
"TODO",
"TODO"
],
"pins": {
"6": "Rel;3",
"14": "LED_n;4",
"16": "LED_n;5",
"20": "LED_n;6",
"23": "Btn;1",
"24": "Rel;1",
"26": "Rel;2",
"28": "Btn;2"
},
"command": "",
"image": "https://kusheev.com/wp-content/uploads/2023/12/08.jpeg",
"wiki": "https://kusheev.com/archives/1617"
}
и нажмите кнопку загрузки
Некоторые модули возможно перепаять на модули ESP которые поддерживают другие прошивки. Ниже сравнительная таблица модулей используемых в устройствах Tuya и поддерживаемые прошивки и возможные замены на модули ESP8266/8285
| модуль | процессор | замена | прошивка | примеч | |
| AXY2S | ECR6600-TS2D | ESP-02s | |||
| AXY3L | ECR6600-TS2D | ESP12 | |||
| AXY3S | ECR6600-TS2D | ESP12 | |||
| AXYU | ECR6600-TS2D | ||||
| AXYU-HM | ECR6600-TS4D | ||||
| AXYU-IPEX | ECR6600-TS2D | ||||
| CB1S | BK7231N | OpenBeken | |||
| CB2L | BK7231N | OpenBeken | |||
| CB2S | BK7231N | ESP-02s | OpenBeken | ||
| CB3L | BK7231N | ESP12 | OpenBeken | ||
| CB8P | BK7231N | OpenBeken | |||
| CBLC5 | BK7231N | OpenBeken | |||
| CBLC9 | BK7231N | OpenBeken | |||
| CBU | BK7231N | OpenBeken | |||
| CBU-IPEX | BK7231N | OpenBeken | |||
| CR2S | W701P-VA2-CG | ESP-02s | |||
| CR3L | W701M-VT2-CG | ESP12 | замена не полная, кроме нижних GPIO | ||
| CR3L-IPEX | RTL8720CM | ||||
| CRG1 | W701P-VA2-CG | ||||
| FL_M99_V1 | BK7231N/BL2028N | ESP-02s | OpenBeken | ||
| FL_M99_V2 | BK7231N/BL2028N | ESP-02s | OpenBeken | форум | |
| FL_M99_V3 | BK7231N/BL2028N | ESP-02s | OpenBeken | форум | |
| T1-2S | T1A | ||||
| T1-LC5 | T1A | ||||
| T1-U | T1A | ||||
| T1-U-IPEX | T1A | ||||
| TCS905-3S | BK7231NSP | ||||
| TCS905-3S | BK7231NSP | ESP12 | |||
| TCS905-U | BK7231N | OpenBeken | |||
| TCS905-U | BK7231N | ||||
| TYLC4 | ESP8266 | ||||
| TYLC5S | ESP8285 | ||||
| TYLC6E | ESP8285 | ||||
| TYLC8 | ESP8285 | ||||
| TYWE1S | ESP8266EX | ||||
| TYWE2L | ESP8285 | ||||
| TYWE2S | ESP8285 | ESP-02s | |||
| TYWE3L | ESP8266 | ESP12 | |||
| TYWE3S | ESP8266 | ESP12 | |||
| TYWE3SE | ESP32 | ESP12 | замена не полная, кроме нижних GPIO | ||
| WB1S | BK7231T | OpenBeken | |||
| WB2L | BK7231T | OpenBeken | |||
| WB2S | BK7231T | ESP-02s | OpenBeken | ||
| WB3L | BK7231T | ESP12 | OpenBeken | ||
| WB3S | BK7231T | ESP12E | OpenBeken | ||
| WB3S-IPEX | BK7231T | ESP12E | OpenBeken | ||
| WB8P | BK7231T | OpenBeken | |||
| WBLC5 | BK7231T | ESP-01D | OpenBeken | отличаются разным расположением GND | |
| WBLC9 | BK7231T | OpenBeken | |||
| WBR1 | W701 | ||||
| WBR1D | W701D-VA1-CG | ||||
| WBR1D-IPEX | W701D-VA1-CG | ||||
| WBR2 | W701-VA2-C | ESP-02s | |||
| WBR2D | W701D-VA1-CG | ESP-02s | |||
| WBR3 | W701-VA2-CG | ESP12 | |||
| WBR3D | W701D-VA1-CG | ESP12 | |||
| WBR3L | W701H-VT2-CG | ESP-02s | |||
| WBR3N | RTL8720CS | ESP12 | |||
| WBR3T | W701DH-VA1-CG | ESP12 | |||
| WL2H-U | LN882H | ||||
| WL2H-U-IPEX | LN882H | ||||
| WR1 | RTL8710BN | WiFi-IoT | |||
| WR1-IPEX | RTL8710BN | WiFi-IoT | |||
| WR2 | RTL8710BN | ESP-02s | WiFi-IoT | ||
| WR2 | RTL8710BN | ESP-02s | WiFi-IoT | ||
| WR2E | RTL8710BN | ESP-02s | WiFi-IoT | ||
| WR3 | RTL8710BN | ESP12 | WiFi-IoT | ||
| WR3E | RTL8710BN | ESP12 | WiFi-IoT | ||
| WR3L | RTL8710BX | ESP12 | WiFi-IoT | ||
| WR3LE | RTL8710BX | ESP12 | WiFi-IoT | ||
| WR4 | RTL8710BN | ESP08 | WiFi-IoT | ESP12 подходит по распиновке, но у WR4 нет антенны на плате | |
| WR5E | RTL8710BN | WiFi-IoT | |||
| WT3 | T2 | ESP12 | |||
| WXU | T103C-HL | ||||
| WXU-IPEX | T103C-HL | ||||
| XR1 | XR809 | OpenXR809 | |||
| XR1-IPEX | XR809 | OpenXR809 | |||
| XR2 | XR809 | ESP-02s | OpenXR809 | ||
| XR3 | XR809 | ESP12 | OpenXR809 | замена не полная, кроме нижних GPIO | |
| WL2S | LN882H | ESP-02s | форум | ||
| LN02 | LN882H | ESP-02s | возможная замена, чип взят с форума | форум |



