Подключение устройств Redmond
На данной странице представлена инструкция по подключению устройств Redmond к Умному Дому Яндекса. Некоторые пункты статьи внесены, основываясь на личном опыте пользователей и не являются официальной рекомендацией Яндекса.
Предупреждение о технике Redmond
С этим брендом, если вам понравились его устройства, готовьтесь к сложностям. Был этап периодических сбоев в облаке, затем компания отказалась от услуг разработчиков приложения Ready4Sky, в итоге возможность регистрации стала зависеть от даты выпуска устройства, затем новые устройства перестали регистрироваться, а Redmond выпустил для новых устройств своё приложение.
С августа 2023 года навык 4sky вообще снят с публикации самим разработчиком.
Что такое gateway (шлюз) и зачем он нужен
Главное: сами по себе устройства Redmond не могут интегрироваться в умный дом. Необходимо отдельно докупить специальное устройство — гейтвей (gateway, шлюз). Одной стороной шлюз смотрит на устройства через Bluetooth, другой — во внешний мир через Wifi. Напрямую устройства работать не будут. Либо придётся выделить смартфон или планшет, на котором имеются оба интерфейса, и установить на него программный вариант шлюза.
Инструкция
Что нам понадобится:
- Ready for Sky — приложение для настройки устройств.
- Гейтвей (шлюз):
- центр умного дома REDMOND SkyCenter 11S (аппаратный вариант),
или - приложение R4S Gateway (программный вариант).
- центр умного дома REDMOND SkyCenter 11S (аппаратный вариант),
- Приложение Яндекс — для объединения аккаунтов Яндекс и Redmond (после этого устройства станут видны Алисе).
Приложение Ready for Sky
- Скачиваем приложение для управления устройствами Ready for Sky (Android, iOS).
- Регистрируемся и входим в аккаунт.
Подключение шлюза
| Аппаратный гейтвей – центр управления SkyCenter 11S | Программный гейтвей – приложение R4S Gateway |
|---|---|
| 1) Подключите SkyCenter к свободной розетке у вас дома. Убедитесь, что SkyCenter находится на расстоянии не более 15 м до умных приборов. | 1) Установите мобильное приложение R4S Gateway на свободное Android-устройство (минимальные требования ОС – 4.4. Jelly Bean) |
| 2) В приложении Ready for Sky необходимо нажать кнопку ДОБАВИТЬ по центру экрана или кнопку «+» в верхнем правом углу. В открывшемся каталоге нажмите на иконку SkyCenter RSC-11S и следуйте инструкции в приложении. | 2) В приложении R4S Gateway введите такой же логин и пароль, который вы использовали для входа в мобильное приложение Ready for Sky. Выполните вход в приложение R4S Gateway. |
| 3) Если всё сделано верно, то SkyCenter RSC-11S появится в списке доступных приборов. | 3) Нажмите на экране кнопку Включить |
Не устанавливайте на одно устройство одновременно приложение R4S Gateway и Ready For Sky. Они будут давать взаимные помехи.
Подсоединение устройств к шлюзу
- Войдите в экран управления SkyCenter нажатием на строку в списке в приложении Ready for Sky.
- Нажмите на «Подключить устройство», далее нажмите на «Найти устройство в сети», выберите устройство и синхронизируйте его с центром умного дома, следуя подсказкам на экране.
Устройство с установленным приложением R4S Gateway либо SkyCenter RSC-11S должны находиться на расстоянии не более 15 м до умных приборов. Обратите внимание, что шлюзы при интеграции с Яндексом, в настоящее время поддерживают 8 (восемь) устройства, по заявлению Redmond.
Объединение аккаунтов Redmond и Яндекс
- Открываем приложение «Яндекс». Во вкладке «Устройства» выбираем пункт «Управление устройствами», нажимаем на + и «Добавить устройство».
- Выбираем в списке пункт «Ready for Sky».
- Ознакамливаемся с инструкцией на экране и нажимаем на «Объединить аккаунты».
- Вводим свои данные от аккаунта Ready for Sky, подтверждаем всё.
- В приложении «Яндекс» нажимаем снизу «обновить список устройств».
Шлюз из ТВ-приставки (нестандартное решение)
Если нет ненужного Android-телефона\планшета под установку приложения, а покупать отдельный аппаратный шлюз нет желания и средств, то можно установить программный гейтвей на Android-приставку или ТВ. При этом обратите внимание:
- Если ваша приставка\ТВ при выключении отключает Bluetooth-интерфейс — будут сбои в работе, либо никогда не отключайте приставку.
- Если приставка\ТВ имеет «родной» Bluetooth-пульт, то высока вероятность, что приложение гейтвея будет работать постоянно.
Если скачивание из Google Play недоступно - здесь можно скачать APK файл (Файл SHA1-хэша: 9660dd7e58515f8f1f77b23296ffa3d43f365fca) для установки напрямую. Старые версии: 2.0.11
Шлюз на ESP без облака Redmond (хардкорное решение)
Вынесено в отдельную инструкцию «MQTT-шлюз для Redmond своими руками». Метод позволяет обойтись не только без гейтвея, но и вообще без облака Redmond.
Видео-инструкция
Интерфейс приложения Яндекс немного изменился, так что можно параллельно читать текстовую инструкцию выше.
Доступные для интеграции устройства
| Модель | Где можно купить | Характеристики, особенности |
|---|---|---|
| Вентилятор RAF-5005S | магазин Redmond | |
| Гриль RGM-M810S | магазин Redmond | |
| Кофеварка RCM-M1505S-E | магазин Redmond | |
| Кофеварка RСM-1508S | multivarka.pro | |
| Кофеварка RCM-M1509S | магазин Redmond | |
| Кофеварка RCM-M1519S | магазин Redmond | |
| Мультипекарь RMB-M657/1S | магазин Redmond | |
| Мультипекарь RMB-M658/3S | магазин Redmond | |
| Мультипекарь RMB-M659/3S | магазин Redmond | |
| Обогреватель RFH-C4522S | магазин Redmond | |
| Обогреватель RFH-C4519S | магазин Redmond | |
| Обогреватель RCH-7001S | магазин Redmond | |
| Обогреватель RCH-7002S | магазин Redmond | |
| Обогреватель RCH-7003S | магазин Redmond | |
| Конвектор RCH-4529S | магазин Redmond | |
| Конвектор RCH-4530S | магазин Redmond | |
| Конвектор RCH-4525S | магазин Redmond | |
| Конвектор RCH-4526S | магазин Redmond | |
| Конвектор RCH-4527S | магазин Redmond | |
| Конвектор RCH-4528S | магазин Redmond | |
| Теплый пол RSF-171S | магазин Redmond | |
| Розетка RSP-100S | магазин Redmond | |
| Розетка RSP-103S | магазин Redmond | |
| Увлажнитель SkyDew RFH-3310S | магазин Redmond | |
| Увлажнитель RHF-3317S | магазин Redmond | |
| Увлажнитель RHF-3318S | магазин Redmond | |
| Цоколь RSP-202S | магазин Redmond | |
| Чайник RK-M170S-E | магазин Redmond | |
| Чайник RK-M171S | магазин Redmond | |
| Чайник RK-M173S-E | магазин Redmond | |
| Чайник RK-G200S | магазин Redmond | |
| Чайник RK-G201S | магазин Redmond | |
| Чайник RK-G202S | магазин Redmond | |
| Чайник RK-G203S | магазин Redmond | |
| Чайник RK-G210S | магазин Redmond | |
| Чайник RK-G211S | магазин Redmond | |
| Чайник RK-G212S | магазин Redmond | |
| Чайник RK-G213S | магазин Redmond | |
| Чайник RK-G214S | магазин Redmond | |
| Чайник RK-M216S | магазин Redmond | |
| Чайник RK-G240S | магазин Redmond |
Возможные проблемы и их решение
Устройства перестают управляться
Бывает, что устройства перестают управляться через Яндекс, при этом родное приложение продолжает работу. В этом случае просто переподключите шлюз:
- SkyCenter RSC-11S вытащить из розетки и вставить через пару секунд;
- устройство с программным гейтвеем лучше полностью перезагрузить (перезапуск Bluetooth и WiFi помогают не всегда).
Не подключаются устройства Sky Guard
Интеграция в Умный Дом Яндекса работает через приложение Ready for Sky и несовместима с устройствами линейки Sky Guard:
- Wi-Fi розеткой RSP-102S-E,
- герконовым датчиком RG-G31S,
- датчиком движения RG-D31S,
- розетками RSP-R1S и RSP-R2S,
- датчиком дыма RSD-01S.
MQTT-шлюз для Redmond своими руками
Мы не несём никакой ответственности за правильное или неправильное применение, или неприменение, и/или неспособность применить данное руководство.
Телефон вызова экстренных служб — 112.
Описание проблемы
Как известно, техника Redmond работает по протоколу bluetooth и поэтому требует наличия отдельного устройства (аппаратный гейтвей, или выделенный Android телефон\планшет с установленным ПО Redmond; некоторые используют в качестве базы ТВ-приставки на базе Андроид). Такое решение имеет ряд минусов:
- Все «прелести» работы bluetooth, особенно на больших расстояниях или за несколькими стенами и/или перекрытиями;
- Дополнительные затраты на шлюз (3000+р, что ради чайника экономически невыгодно, учитывая и стоимость чайника);
- Программный android-шлюз часто работает нестабильно. Да и не всегда есть лишний смартфон или приставка;
- Периодически отваливается и само облако Редмонд.
Инструкция описывает самодельный шлюз размером со спичечный коробок со стоимостью около 300 рублей. Прошивка поддерживает до трех устройств redmond. При этом отпадает необходимость как в стандартных гейтвей-устройствах и программах, так и в самом облаке Redmond!
Требования и ресурсы
- Плата ESP32 с поддержкой Wi-Fi и Bluetooth (например, такая; продавец не проплатил)), можете купить аналог в любом другом месте);
- Прошивка (ссылка на гит);
- MQTT-сервер. Автор с удовольствием использует ioBroker со своим MQTT, который уже работает в паре с Алисой. Можете также выбрать любой удобный вариант;
- Чайник Редмонд (в него вторгаться не нужно, он просто есть);
- Прямые руки, и немного минут в Windows.
Прошивка и настройка платы
В интернете достаточно много статей и видео о порядке прошивки ESP32 (например, на Амперке), чтобы не повторять эти инструкции здесь.
На этом шаге сделайте бэкап родной прошивки платы.
В git-репозитории из предыдущего пункта подробно описан порядок действий. Если коротко, то:
- Подключить плату к ПК и прошить файл fr4sGate.bin с git, перезагрузить плату;
- Создать Wi-Fi сеть (на ноуте/смартфоне) с именем r4s и паролем 12345678;
- Найти в списке подключенных устройств плату, открыть её в браузере по IP-адресу;
- Перейти на вкладку settings, внести:
- Настройки вашего Wi-Fi,
- Название и модель чайника,
- Параметры вашего MQTT-сервера.
Плата перезагрузится, и подключится на ваш стандартный домашний Wi-Fi. Находим адрес платы, и снова переходим в веб-интерфейс.
У автора на последней версии прошивки чайник подключился к плате сам.
Порядок действий по инструкции:
- Зажать кнопку на чайнике;
- Отправить плату в перезагрузку кнопкой ‘reboot’ в веб-интерфейсе.
Сколько держать кнопку на чайнике - не уточняется. Можно поэкспериментировать с подключением в родном приложении (оценить, сколько жать и с какой интенсивностью).
Теперь в веб-интерфейсе на вкладке main можно увидеть, как плата обнаруживает чайник. На этой же вкладке расположены:
- Версия прошивки;
- Uptime (время непрерывной работы) платы;
- Статус устройства (подключён или нет);
- Сетевой адрес платы;
- Статус подключения к MQTT-серверу;
обнаружение в iobroker MQTT
После того, как чайник определился и вы указали параметры MQTT, в iobroker/mqtt отобразятся стейты:
MQTT-топики (они же iobroker-стейты) для чайника (из описания прошивки):
| Стейт (топик) | Значения, описание |
|---|---|
| r4s/devaddr/cmd/state | 0/off/false выключение, 1/on/true кипячение, 2. 100 — кипячение и подогрев (число в градусах Цельсия) |
| r4s/devaddr/cmd/heat_temp | 0 выключение, 1. 100 подогрев (число в градусах Цельсия) |
| r4s/devaddr/cmd/nightlight | 0/off/false выключение ночника, 1/on/true — включение |
| r4s/devaddr/cmd/nightlight_red | 0..255 Уровень красного в ночнике |
| r4s/devaddr/cmd/nightlight_green | 0..255 Уровень зеленого в ночнике |
| r4s/devaddr/cmd/nightlight_blue | 0..255 Уровень синего в ночнике |
| r4s/devaddr/rsp/ | Датчики: текущее состояние, температура, rssi итд |
На практике автору оказалось достаточно одного топика (on/off для включения или отключения чайника).
Как настроить шлюз Redmond
Redmond — известный производитель бытовой техники, который предлагает широкий ассортимент устройств, включая гейтвеи. Гейтвей Redmond — это устройство, которое позволяет подключить вашу домашнюю сеть к интернету и обеспечить стабильную работу современных умных устройств.
Настройка гейтвея Redmond может показаться сложной задачей для неподготовленного пользователя, однако с нашей подробной инструкцией вы сможете справиться с этой задачей легко и быстро.
Важно отметить, что настройка гейтвея Redmond может немного отличаться в зависимости от модели устройства, поэтому перед началом процесса рекомендуется ознакомиться с документацией, прилагаемой к вашей модели гейтвея.
Для начала настройки гейтвея Redmond вам понадобится доступ к его веб-интерфейсу. Для этого подключите гейтвей к вашему роутеру с помощью сетевого кабеля и введите IP-адрес устройства в адресную строку браузера. Как правило, IP-адрес указан в документации к гейтвею или может быть найден с помощью сетевого сканера или программы управления сетью.
Подключение гейтвея Redmond к сети
Для успешной работы гейтвея Redmond необходимо правильно подключить его к сети. Вот пошаговая инструкция, которая поможет вам выполнить это задание:
Шаг 1: Распакуйте гейтвей Redmond и найдите все необходимые компоненты, включая сетевой кабель и блок питания.
Шаг 2: Подключите один конец сетевого кабеля к гейтвею Redmond, а другой конец — к сетевому порту на вашем маршрутизаторе или модеме.
Шаг 3: Подключите блок питания к гейтвею Redmond и вставьте его в розетку. Убедитесь, что гейтвей включен.
Шаг 4: После включения гейтвея, при необходимости, введите пароль администратора или выполните другие действия, указанные в инструкции к гейтвею.
Шаг 5: Дождитесь, пока гейтвей Redmond подключится к вашей сети. Это может занять несколько минут.
Шаг 6: Проверьте, что гейтвей успешно подключен к сети, проверив наличие световых индикаторов на передней панели гейтвея.
Шаг 7: Подключитесь к веб-интерфейсу гейтвея Redmond, введя IP-адрес гейтвея в адресной строке браузера. Используйте предоставленные учетные данные для входа.
Шаг 8: После успешного входа в веб-интерфейс, выполните необходимые настройки сети, о которых подробно рассказывается в инструкции к гейтвею.
Следуя этой инструкции, вы успешно подключите гейтвей Redmond к сети и сможете настроить его для дальнейшего использования.
Выбор местоположения гейтвея
Перед установкой гейтвея необходимо выбрать оптимальное место, где он будет размещен. Для этого рекомендуется учитывать следующие факторы:
1. Покрытие сети:
Гейтвей Redmond должен быть размещен в месте с хорошим сигналом сети. Если у вас есть несколько уровней в доме или офисе, то лучшее место для гейтвея будет на центральном этаже, чтобы сигнал был достаточно сильным на всех уровнях.
2. Расстояние от устройств:
Разместите гейтвей Redmond на оптимальном расстоянии от устройств, которые будут к нему подключены. Это поможет избежать проблем с подключением и обеспечит более стабильное соединение.
3. Избегайте помех:
Избегайте установки гейтвея Redmond рядом с другими электронными устройствами, которые могут создавать помехи. Такие устройства, как микроволновая печь, беспроводные телефоны и Bluetooth-устройства, могут ослабить сигнал гейтвея и привести к неполадкам в работе сети.
Учитывая эти факторы, выберите подходящее место для размещения гейтвея Redmond. Это поможет обеспечить стабильную работу сети и удобное подключение всех устройств.
Подключение к электропитанию
При подключении гейтвея Redmond к электропитанию необходимо следовать некоторым рекомендациям:
- Убедитесь, что напряжение в вашей электросети соответствует указанному на устройстве.
- Проверьте, чтобы розетка, к которой вы собираетесь подключить гейтвей, была заземлена.
- Проверьте состояние сетевого кабеля и разъема. Убедитесь, что они не повреждены.
- Вставьте вилку кабеля в розетку и удостоверьтесь, что подключение произошло надежно.
- Убедитесь, что кнопка включения/выключения на задней панели гейтвея установлена в положение «включено».
После проведения всех необходимых мероприятий гейтвей готов к работе и может быть подключен к другим устройствам для настройки и использования.
Подключение гейтвея к роутеру
Для того чтобы гейтвей Redmond работал корректно, необходимо подключить его к роутеру. Ниже приведены подробные инструкции, как это сделать:
- Убедитесь, что ваш роутер включен и функционирует корректно.
- Подключите с помощью Ethernet-кабеля один из портов роутера к порту WAN гейтвея Redmond.
- Убедитесь, что соединение между роутером и гейтвеем установлено правильно с помощью проверки светодиодного индикатора на обоих устройствах. Если индикаторы горят, значит соединение установлено правильно.
- Проверьте настройки роутера, чтобы убедиться, что гейтвей Redmond получает IP-адрес автоматически через DHCP-сервер роутера.
- Проверьте настройки роутера, чтобы убедиться, что гейтвей Redmond имеет доступ к Интернету через роутер.
- Если все настройки и подключения выполнены правильно, ваш гейтвей Redmond должен корректно функционировать и иметь доступ к Интернету.
Обратите внимание, что настройка гейтвея может отличаться в зависимости от модели роутера и гейтвея, поэтому представленные инструкции являются общими и могут быть субъективными. В случае возникновения сложностей, рекомендуется обратиться к руководству по эксплуатации устройств или к специалисту.
Установка приложения на мобильное устройство
Чтобы установить приложение, следуйте инструкциям ниже:
- Откройте App Store или Google Play на своем мобильном устройстве.
- Найдите приложение «Redmond Gateway» в поисковой строке.
- Нажмите на кнопку «Установить» или «Загрузить».
- Дождитесь завершения установки приложения.
- Откройте установленное приложение.
- Введите данные учетной записи (логин и пароль), которые были созданы в процессе настройки гейтвея.
- Подтвердите вход в приложение.
Теперь вы можете использовать приложение на своем мобильном устройстве для управления гейтвеем Redmond. Вы сможете контролировать подключенные устройства, настраивать сценарии автоматизации и получать уведомления о важных событиях.
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
ESP32 Ready4Sky (R4S) Gateway for Redmond+ devices
License
alutov/ESP32-R4sGate-for-Redmond
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
89ad8ec Nov 17, 2023
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
November 17, 2023 07:06
November 17, 2023 07:05
November 17, 2023 18:56
November 17, 2023 07:07
November 12, 2023 11:32
December 7, 2022 10:15
June 9, 2022 20:59
December 24, 2022 18:56
July 9, 2020 04:38
September 21, 2021 08:18
July 9, 2020 04:38
November 12, 2023 14:34
September 16, 2020 06:45
November 16, 2022 00:22
November 12, 2023 10:59
November 16, 2022 00:22
README.md
ESP32 Ready4Sky (R4S) шлюз для устройств Redmond+
Скрипт на базе PHP сервера в локальной сети с доступом к интернету для показа погоды на экране шлюза.
В версиях, начиная с 2022.06.03, изменены топики устройств в шлюзе в номером 0 с «r4s/#» на «r4s0/#». В новых версиях топики в «r4s/#» используются для отслеживания меток несколькими шлюзами. При обновлении со старых версий нужно включить BLE Monitor в настройках (шлюз удаляет содержимое «r4s/#» только при включенном мониторе), выбрав Passive, Active или Auto, отметить пункты Hass Discovery и Delete Mqtt Topics и сохранить настройки. После перезагрузки шлюз удалит лишние топики и создаст их заново. Затем, при необходимости, BLE Monitor можно отключить. После чего поправить устройства в автоматизациях, скриптах и т.п.
Текущая версия 2023.11.12 для ESP32 и ESP32C3.
- 2023.11.12. Проект собран с использованием esp-idf версии 4.4.6. Добавлена поддержка Delonghi ECAM650.75. Мелкие исправления.
- 2023.10.05. Поле Mqtt сервера увеличено до 64 символов.
- 2023.09.28. Поправлена процедура таймера. Увеличен тайм-аут I2C. Добавлена проверка CRC при чтении SCD4x.
- 2023.09.23. Оптимизация и мелкие исправления. Свободной оперативной памяти стало больше примерно на 20кбайт.
- 2023.08.22. Добавлена поддержка экранов на ST7789. Мелкие исправления.
- 2023.08.04. Изменены имена объектов в Home Assistant Mqtt Discovery для совместимости с версией 2023.8.0. Для корректного изменения имен желательно после обновления выбрать в настройках Delete Mqtt Topics. Добавлена поддержка датчика движения HLK-LD2410B и датчика дверей Redmond RSO-31S. Ресурс батареи последнего в режиме постоянного соединения пока не тестировал). Исправления по Galcon. Добавлен вывод уровня батареи в счетчиках Элехант.
- 2023.07.08. Для портов 1-5 изменена процедура вывода в режиме open drain. Изменена процедура чтения для устройств Redmond. Интервал опроса метеостанции и датчиков дыма увеличен до 3 минут. Мелкие исправления.
- 2023.06.10. Для портов 1-5 режим Inv Out заменен на Out od(Out open drain) и выбирается отдельно для каждого выхода.
- 2023.05.15. В счетчике Элехант(Elehant) state_class изменен с measurements на total_increasing. Это позволяет добавить этот счетчик в раздел Энергия Home Assistant.
- 2023.05.14. Добавлена поддержка сенсоров SGP4x(0x59). Для вычисления VOC используется библиотека Sensirion. Добавлена возможность инвертирования выходов портов 1-5.
- 2023.04.30. Поправлено включение экрана M5Stack Tough при работе от батареи.
- 2023.04.29. Добавлена поддержка SkyDew RHF-3310S.
- 2023.04.22. В BLE монитор шлюза добавлена поддержка счетчиков Элехант(Elehant).
- 2023.04.01. Мелкие исправления.
- 2023.02.23. Добавлена поддержка сенсоров SHT4x(0x44, 0x45), SCD4x(0x62). Мелкие исправления.
- 2023.02.13. Добавлена поддержка шлюзом сенсора SGP30(0x58), BLE монитором устройства Qingping Air Monitor Lite(CGDN1). Общее время работы чайника выводится в секундах. Мелкие исправления.
- 2023.01.23. Данные в Mqtt LWT топик (r4sx/status) записываются с флагом Retain. Добавлена иконка favicon.ico.
- 2023.01.21. Поправлено выделение памяти в процедуре Hass Discovery. Актуально для версий 2023.01.17 и 2023.01.18.
- 2023.01.18. Добавлен вывод версии подключенных устройств Redmond и Mikettle в web и Home Assistant. Поправлена авторизация Redmond.
- 2023.01.17. Добавлен вывод на экран напряжения и тока из json строки по метрикам Voltage и Current (строка энергомониторинга Tasmota).
- 2023.01.05. Добавлено получение NTP сервера по DHCP.
Шлюз ESP32 r4sGate в минимальной конфигурации (только ESP32 или ESP32C3 с источником питания 3.3v) позволяет подключать BLE-совместимые устройства Redmond, чайники Xiaomi MiKettle и некоторые другие устройства к системе умный дом (Home Assistant, OpenHab, ioBroker, MajorDoMo и т.д.) по протоколу MQTT. Изначально проект был только под Redmond, сейчас добавляются и другие устройства. Отсюда и плюс в названии проекта.
- Это по факту стандартный протокол систем умного дома. Другое дело, как он реализован. От встроенного MQTT сервера в системе ioBroker, где все, что происходит в MQTT, сразу отображается в админ интерфейсе, до внешнего брокера в Home Assistant, где для настройки иногда приходится пользоваться сторонними утилитами. В последнем, правда, MQTT Discovery сильно упрощает интеграцию устройств в систему.
- В MQTT устройства могут обмениваться данными и между собой, а не только с сервером умного дома. В шлюзе можно настроить отображение на экране показаний основных датчиков в доме. На аргумент, что одни устройства могут бесконтрольно переписывать данные других замечу, что в нормальных брокерах существует система разделенного доступа (ACL). Хотя на вопрос, а зачем вообще заводить в систему устройства, которым нет доверия, у меня ответа нет.
- В MQTT могут обмениваться информацией устройства, вообще не знающие друг о друге ничего, кроме топика, где они должны встретиться. Это используется для определения максимального уровня сигнала от метки/маяка среди нескольких шлюзов, и шлюза, принимающего самый сильный сигнал.
- Поддержка MQTT включена в среду разработки esp-idf и не требует подключения сторонних библиотек. После неудачных попыток доработать очень неплохой проект olehs на arduino стал сторонником чистого esp-idf.
Список поддерживаемых устройств:
Электрочайники:
- Redmond SkyKettle RK-M170S
- Redmond SkyKettle RK-M173S / RK-M171S / RTP-M810S
- Redmond SkyKettle RK-G200S / RK-G204S / RK-G210S / RK-G211S / RK-G212S / RK-G214S / RK-M216S / RK-M139S
- Redmond SkyKettle RK-G240S / RK-G204S / RK-G210S / RK-G211S / RK-G212S / RK-G214S / RK-M216S / RK-M139S
- Xiaomi MiKettle YM-K1501(Int) — ProductId 275
- Xiaomi MiKettle YM-K1501(HK) — ProductId 131
- Xiaomi MiKettle V-SK152(Int) — ProductId 1116
Мультиварки
- Redmond SkyCooker RMC-M224S
- Redmond SkyCooker RMC-M800S
- Redmond SkyCooker RMC-M903S
- Redmond SkyCooker RMC-M92S
- Redmond SkyCooker RMC-M961S
Кофеварки
Кофемашины
- Delonghi ECAM650.75 (Возможно и другие модели серии Primadonna Elite)
Розетки
- Redmond SkyPort RSP-103S / RSP-100S
Конвекторы электрические
- Redmond SkyHeat RCH-7001S / RCH-7002S / RCH-7003S
- Redmond SkyHeat RCH-4529S (управляется как SkyPort 103S)
Климатические станции
Увлажнители воздуха
Датчики
- Redmond SkySmoke RSS-61S — датчик дыма
- Redmond SkyOpen RSO-31 — датчик открытия дверей
- Hilink HLK-LD2410B — датчик движения и присутствия
Контроллеры полива
- Galcon GL9001A / Green Apple GATB010-03
Драйверы штор/жалюзи
Шлюз поддерживает 5 одновременных BLE соединений. Управление устройствами возможно и из web интерфейса шлюза. Предусмотрена простая защита web интерфейса паролем от Raerten. Для этого строку виде login:password нужно зашифровать в Base 64 и затем вписать ее в поле Basic Auth в настройках. Строка пароля выводится в лог при старте шлюза.
Поддерживается Home Assistant Mqtt Discovery. Для включения нужно отметить Hass Discovery в настройках. Предусмотрена возможность удаления всех созданных шлюзом данных в Mqtt и устройств в Home Assistant. Для этого нужно выбрать во вкладке Setting опцию Delete Mqtt topics и затем нажать Save setting. После перезагрузки шлюза будут заново созданы только подключенные к шлюзу устройства. Рекомендуется при первом подключении шлюза и реконфигурации с удалением устройств.
Простой вариант интеграции чайника из Home Assistant в умный дом Яндекса — использовать сущность климата.
И назвать его словом чайник. Доступны будут все команды устройства термостат. Например, команда включи чайник (режим auto, включение кипячение или кипячение с последующим подогревом, если до этого был включен подогрев), выключи чайник (выключает все), установи температуру чайника 40° (если не 0° и не 100° включает подогрев, режим heat, если 0° — выключает, если же температура 100°, включается кипячение, режим auto) либо включи обогрев (включает подогрев с последней установленной температурой). И, наконец, команда включи охлаждение — включает подсветку, режим cool. Не очень красиво, но как есть. Можно спросить, что там с чайником — термостат чайник выключен и какая температура чайника — скажет текущую температуру.
Поддерживается вычисление количества воды в чайнике при нагреве в интервале 65-85°C и более 3°C с момента включения чайника.
Не требуется никаких доработок чайника. Вычисляется на основе затраченной энергии и разности температур. Вычисленное значение сбрасывается при снятии чайника с подставки. Опция работает только в чайниках со статистикой. КПД чайника изначально принят 80%. Точность так себе, у меня выходит где-то ~0.2 литра. Для повышения точности предусмотрен режим корректировки значения КПД. Для этого нужно залить в чайник 1л воды и выбрать в web-интерфейсе Boil 1l on. Когда режим отработает, нужно зайти в режим настроек. Новое значение будет выведено сразу за типом устройства. Записать новое значение в nvram можно командой Save setting. Как мне думается, получить большую точность нереально, так как КПД чайника со временем меняется, например, с появлением накипи, и, что хуже, затраченная энергия не измеряется, а просто вычисляется процессором чайника исходя из номинальной мощности нагревателя и времени его работы. Отклонение питающего напряжения при работе от значения при калибровке вносит заметную погрешность, зависимость там квадратичная. У меня при кипячении чайником RK-M216S 1.7 литра воды при напряжении на входе в дом 200-204V в итоге вычисляется 1.8 литра, при напряжении 210-214V выходит 1.6 литра. При калибровке очевидно было что-то среднее.
BLE монитор шлюза можно использовать для отслеживания до 24 BLE устройств меток/(маяков) со статическим MAC адресом. Выводится наличие/отсутствие метки(маяка) и rssi. Поддерживаются BLE маяки приложения Home Assistant на смартфонах (привязка по uuid), термометры Xiaomi Mijia 2 с прошивкой от atc1441 в режиме custom и прошивкой от pvvx в режиме custom, Xiaomi Mi Scale, Qingping Air Monitor Lite(CGDN1), счетчики Elehant, а также Samsung Smart Tag.
Предусмотрено 10 портов ввода-вывода, 5 из них можно использовать для управления внешними устройствами(режим Out) и чтения их состояния(режим In). Три порта можно настроить как кнопки для включения — выключения подключенных BLE устройств(режим Sw, при этом состояние кнопок в mqtt не выводится), четвертый порт — как кнопку обновления картинки с камеры. При конфигурации в режиме входа включается pullup, если это возможно (номер пина меньше 34). Еще 2 порта используются шиной I2C, а каждый из 3-х оставшихся портов можно использовать как выход с широтно — импульсной модуляцией (PWM), или же как вход для подключения или одного датчика DS18B20 с прямым питанием, или одного датчика DHT22/AM2302 (7 и 8 порт). Процедуры чтения упрощены, контрольная сумма не читается и не проверяется, данные округляются до одного знака после запятой. Если шлюз оборудован звуковым излучателем, то, подключив к нему выход PWM (в m5stack basic это gpio 25), можно организовать вывод звукового сигнала. Изменяя скважность импульсов, можно регулировать громкость. Частота фиксирована и равна 3.136 kHz. Шина I2C поддерживает датчики SHT3x/SHT4X(адреса 0x44, 0x45), AHT20(0x38), HTU21(0x40), BMP280/BME280/680/688(0x76, 0x77, 688 пока не проверен), SGP30(0x58), SGP4x(0x59), SCD4x(0x62), а также RTC DS3231(0x68) и контроллер батареи IP5306(0x75). Предусмотрено сохранение данных калибровки SGP30 в NVRAM и восстановление их при старте шлюза. Для этого нужно отметить пункт AQ base в настройках. Для вычисления VOC в SGP4x используется библиотека Sensirion. Часы используются для хранения даты и времени с NTP сервера, датчик температуры выводится в Mqtt. Контроллер IP5306 установлен в m5stack и ttgo-t4 (SCL 22, SDA 21), позволяет определять уровень батареи с шагом 25% и ее режим (Discarging / Charging / Charged). При питании от батареи яркость экрана уменьшается в 16 раз. Шлюз поддерживает также контроллер питания AXP192 и RTC PCF8563, что позволяет ему работать на M5Stack Tough, а также поддерживает ADC тензодатчиков HX711. Результат измерения с HX711 можно выводить как в килограммах, так и в процентах, в зависимости от калибровки. HX711 опрашивается с интервалом 4 секунды, остальные датчики с интервалом 12 секунд. Шлюз допускает горячее подключение всех сенсоров. Датчики 18B20 и DHT22 появляются в Mqtt и Home Assistant сразу после старта шлюза, даже если они не подключены, а I2C сенсоры по мере обнаружения их на шине в течение 2-х циклов опроса (24 секунды).
Есть также поддержка IR передатчика (IR Tx, 6 порт).
Поддерживаются протоколы NEC (8 и 16 битный адрес) RC5 (для работы в режиме RC5ext нужно инвертировать 6 бит команды), RC6, Samsung, Sony SIRC (12, 15 и 20 бит), Panasonic. Управлять можно как из интерфейса Home Assistant и отдельных топиков адреса, команды и протокола, так и прямой записью в топик r4sx/ir6code (где x — номер шлюза) строки из 8 hex символов 0-9,a-f, например, 090a1c3d, где 09 — протокол(01-nec, 02-necx16, 03-rc5, 04-rc6, 05-samsung, 06-sircx12, 07-sircx15, 08-sircx20, 09-panasonic), 0a1c — адрес, 3d -команда.
Что проверено (интересовала команда включения питания):
NEC: pioneer vsx-830, power: addr 165, cmd 28, code 0100a51c
NECx16: lg dvd dks-2000h, power: addr 11565, cmd 48, code 022d2d30
RC6: philips 40pfs6609, power: addr 0, cmd 12, code 0400000c
SAMSUNG: ue32n5300, power: addr 7, cmd 2, code 05000702
SIRCx12: sony cmt-sx7, power: addr:16, cmd: 21, code 06001015
SIRCx20: sony ubp-x800 power: addr 7258, cmd 21, code 081c5a15
PANASONIC: sa-pm20 power: addr 2588, cmd 61, code 090a1c3d
PANASONIC: dmp-ub900 power: addr 2816, cmd 61, code 090b003d
Проверял все на Atom lite, в нем есть IR LED на 12 gpio. Пока не проверены RC5 и SIRCx15.
С целью расширения возможностей шлюза возможно подключение TFT экрана 320 * 240 на чипах ili9341, ili9342 и ST7789. На экран выводится текущее время, дата, а также температура, напряжение и ток в доме (не помешает при питании от генератора), состояние (синий- выкл., красный — вкл.) и температура на выходе котла, температура и влажность на улице. Все берется с Mqtt. Рядом с датой цветом выводится состояние BLE устройств, 1 . 5 — с первого по пятое. Серый — не на связи или не определено, синий — выключено, красный — включено, желтый — подогрев, белый — установлена программа. Подробнее состояние и некоторые параметры подключенных BLE устройств по очереди отображаются в нижней строке. Есть возможность периодического или по запросу кнопкой вывода на экран картинки в формате jpeg, например, с камеры. Картинки разрешением по горизонтали выше 320 выводятся в масштабе 1:2. Размер буфера для загрузки картинки можно менять в пределах 20-65 килобайт. Яркость экрана можно изменять по Mqtt. Можно также на экран выводить погоду в текстовом вида с сайта wttr.in или просто текст, записывая его в Mqtt топик r4sx/jpg_url. Получилось что-то похожее на часы с термометром. Достаточно глянуть на экран, чтобы убедиться, все ли в порядке в доме, что там сегодня на улице.

Картинка 1. Комплектующие для сборки шлюза.
Если цель запустить шлюз с минимальными затратами, придется покупать запчасти, затем собирать из них шлюз. Я использовал ESP32 WROOM ESP-32 4 Мб с встроенной антенной (слева внизу) или ESP32 WROOM ESP-32U 4 Мб с внешней (правее первой). Цена вопроса $2.5. Потом паял микросхему на адаптер-плату($0.3) и далее на макетную плату. Подойдет также ESP32C3, у меня это ESP32C3-12F. Из-за аппаратных ограничений этой микросхемы шлюз использует порт8 только как выход с широтно — импульсной модуляцией (PWM). Cвободной оперативной памяти больше примерно на 28 килобайт. И даже при подключенном экране у ESP32C3-12F остается еще 6 свободных gpio. Источник питания на 3.3 Hi-Link($2-$4). Я их брал по цене $1.65. Можно обойтись без пайки, если использовать esp32-wroom-devkit(внизу в центре, $14). Правда, эта плата сильно избыточна для проекта, можно взять попроще за $3.54. В нем esp32 идет вместе с платой, на которой есть еще преобразователи с 5в на 3.3в, USB-RS232 и стандартный разъем мини-USB. Через него можно питать esp32, используя пятивольтовое зарядное устройство от смартфона, и программировать прямо с компьютера без всяких переходников. И справа на фото 3.2″ 320 * 240 TFT экран($18), который я использовал в шлюзе. Можно использовать и совместимые готовые устройства как с экраном (TTGO T-Watcher BTC Ticker, M5Stack BASIC, M5Stack Tough), так и без (m5atom lite).
3. Настройка шлюза
Для запуска шлюза нужно запрограммировать ESP32. Для прошивки можно использовать программу flash_download_tools. Файл fr4sGate.bin в папке build это уже собранный бинарник для esp32 @160MHz с памятью 4 Мбайт, DIO загрузчиком и прошивается одним файлом с адреса 0x0000 в режиме DIO. Если же DIO загрузчик не стартует, можно использовать файл fqr4sGate.bin с загрузчиком QIO и программировать его в режиме QIO. Как я понял, большинство esp32 можно программировать в любом режиме, но были случаи, что шлюз работал только при прошивке его файлом fqr4sGate.bin в режиме QIO. Файл r4sGate.bin используется для обновления прошивки через web интерфейс. Файлы для программирования ESP32C3 в папке C3.
Затем нужно создать точку доступа на смартфоне с ssid r4s и паролем 12345678, подождать, пока esp32 не подключится к нему, найти в параметрах точки доступа подключенное устройство r4s0Gate и его IP, ввести этот адрес в веб-браузере и далее в web во вкладке Setting установить остальные параметры. После чего точка доступа больше не нужна. Esp32 будет пытаться подключиться к сети r4s только при недоступности основной сети, например, при неправильном пароле. Если не удается подключиться и к гостевой сети, esp32 перезагружается. Вариант с гостевой сетью в отличие от общепринятой практики запуска точки доступа на esp32, как мне кажется, удобнее, так как в случае падения по каким-то причинам Wi-Fi роутера (а он может быть выделенным только для iot устройств) остальной Wi-Fi не засоряется дружно вплывшими esp32.
Далее нужно ввести имя или MAC адрес Redmond устройства и привязать его к шлюзу. Поиск устройств запускается только тогда, когда есть хотя бы одно определенное, но не соединенное устройство, либо активен BLE монитор. Если имя устройства точно не известно (а редмонды не всегда светятся по BLE как модель один в один), то для начала сканирования нужно ввести в поле Name в настройках любое имя, а потом заменить его найденным при сканировании и выбрать в настройках ближайший тип устройства (поле TYPE, например, для чайников от RK-G(M)200S до RK-G(M)240S протокол один и тот же, можно выбрать как RK-G200S, так и RK-G240S). Нужно учитывать, что не все устройства передают имя при пассивном сканировании (например, Xiaomi Mikettle, AM43 Blinds). В любом случае лучше вводить в поле имени MAC адрес, можно как с двоеточиями, так и без. Найти и скопировать адрес можно BLE Last found name/address на главной страничке или на странице BLE monitor. Далее для привязки нужно нажать и удерживать кнопку + на чайнике или таймер на мультиварке до тех пор, пока устройство не войдет в режим привязки и через некоторое время соединится со шлюзом. Жалюзи AM43 требуют еще и ввода пин кода (Passkey) для соединения.
Предусмотрена возможность подключения к одному MQTT серверу нескольких шлюзов. Для этого нужно в каждом шлюзе установить свой r4sGate Number. Шлюз с номером 0 будет писать в топик r4s0/devaddr/. шлюз с номером 1 — r4s1/devaddr/. и т.д. Нужно только учесть, что запрос на авторизацию при привязке зависит от номера шлюза и от номера соединения в шлюзе. Это позволяет привязать 2 одинаковых чайника или мультиварки к 2 разным шлюзам или к 2 разным соединениям в пределах одного шлюза. Если же рядом работают два шлюза с одинаковыми параметрами, подключенные к разным системам умного дома (например, сосед за стенкой), для исключения возможности подключения устройства к шлюзу соседа можно использовать опцию авторизации устройств с использованием MAC адреса шлюза, выбрав в настройках Use MAC in BLE Authentication. После чего сбросить на устройствах все привязки и затем привязать их к шлюзу заново.
Для подключения к Mqtt брокеру нужно ввести его адрес и порт, а также логин и пароль. Если шлюз работает с Home Assistant в паре с mosquitto брокером, стоит использовать опцию Hass Discovery. Перед ее использованием рекомендую удалить в Mqtt брокере все топики с r4s, для чего выбрать в настройках Delete Mqtt topics. Если же система не поддерживает Mqtt Discovery, придется разбираться с Mqtt.
Подробнее по Mqtt. У меня шлюз подключен к ioBroker. Мои настройки MQTT брокера ниже на картинке 3.

Картинка 3. Мои Mqtt настройки.
Снят флаг retain, чтобы брокер не запоминал, а считывал состояние устройств при соединении. В Home Assistant установленный в нем и/или Mqtt брокере флаг retain может приводить к самопроизвольному включению и выключению устройства. Также установлен флаг публикации при подписке, что позволяет не вводить все топики вручную. Иногда при публикации сразу большого числа подписок ioBroker почему-то делает некоторые из них с защитой от записи :-), есть у меня такой глюк. Приходится их удалять и перезапускать Mqtt адаптер, чтобы они появились опять.
Mqtt топики для чайника (см. картинку 4 ниже):
Значения уровней запоминаются в шлюзе и передаются на чайник при включении подсветки.

Картинка 4. Мои Mqtt топики для чайника.
Mqtt топики для мультиварки (см. картинку 5 ниже):
Параметры delay_hour и delay_min запоминаются в шлюзе и передаются при установке программы, режима или подогрева, а потому устанавливаются перед установкой программы, режима или автоподогрева. При выборе программы устанавливаются температура и время работы программы по умолчанию, после установки mode еще раз корректируются. После установки программы и режима можно при необходимости скорректировать время и температуру. Этот порядок установки параметров обусловлен тем, что по Mqtt нельзя сразу установить одной командой все параметры, если они находятся в разных топиках. При установке же через web все параметры ставятся одной командой. И значения температуры и времени по умолчанию для каждой программы и режима устанавливаются через web только если перед этим они были равны 0. Программа мультиповар пока не поддерживается, я не вижу смысла. При записи нуля в prog на мультиварку посылается команда выключения, что полезно для сброса программы.

Картинка 5. Мои Mqtt топики для мультиварки.
Mqtt топики для кофеварки:
Значения времени отложенного старта запоминаются в шлюзе и передаются на кофеварку при включении этого режима.
Mqtt топики для розетки:
Начиная с версии 2020.10.27 появилась возможность использовать совмещенные топики для команд и ответов. Опция включается в настройках. Мне это пригодилось при интеграции устройств в Google Home с помощью драйвера iot iobroker-а. Как я понял, этот драйвер не принимает раздельные топики команд/ответов. Кроме того, так как Google Home понимает true / false вместо ON / OFF , то нужно в настройках драйвера iot Conversation to Google Home = function (value) <> ввести строку вида switch (value) . Если же автозамена недоступна, то начиная с версии 2020.11.07 можно использовать опцию **true / false** Response . Опция не работает совместно с Hass Discovery, там она не нужна.
Устройствами можно управлять также и в веб интерфейсе шлюза. Примеры главной страницы и страницы настроек ниже на картинках 6 и 7.

Картинка 6. Главная страничка.

Картинка 7. Страничка настроек.
Монитор позволяет отслеживать метки(маяки) со статическими MAC адресами. Выводится наличие/отсутствие метки(маяка) и rssi.
Дополнительно поддерживаются:
- BLE маяки приложения Home Assistant на смартфонах (привязка по uuid, тайм-аут у меня 60 секунд)
- Термометры Xiaomi Mijia 2 с прошивкой от atc1441 в режиме custom и прошивкой от pvvx в режиме custom (400 секунд)
- Весы Xiaomi Mi Scale (400 секунд)
- Qingping Air Monitor Lite(CGDN1) (400 секунд)
- Счетчики воды и газа Elehant (400 секунд)
- Samsung Smart Tag (120 секунд).
Для активации монитора нужно во вкладке Setting установить в опции BLE Monitoring значения Active или Passive для активного или пассивного сканирования и нажать Save setting. Активный сканер дает больше информации, но расходует больше энергии на сканируемых устройствах. Для сканирования меток рекомендуется пассивный режим. Нужно учитывать, что в режиме Auto при поиске устройств перед соединением сканер всегда работает в активном режиме, а потом переходит в пассивный режим.
После установки опции в меню появится вкладка BLE Monitor, открыв которую, можно увидеть найденные устройства. В поле Gap выводится временной интервал между двумя последними пришедшими пакетами, в поле Last время с момента прихода последнего пакета. Тайм-аут по умолчанию (если в поле Timeout пусто) 300 секунд, после чего устройство считается потерянным, а его данные удаляются из таблицы. В дальнейшем эта строка может быть перезаписана данными с другого устройства. Для вывода данных в Mqtt в поле Timeout нужно ввести ненулевое значение и подтвердить ввод, нажав Ok. Все значения сохранятся в энергонезависимой памяти, а Mqtt Discovery передаст все в Home Assistant. Хотя сканирование идет постоянно, но при установке значения Timeout нужно учитывать, что для поддержания соединений тоже нужно время, в течение которого возможны пропуски пакетов. Лишние данные в Mqtt и Home Assistant можно удалить, выбрав при включенном BLE мониторе во вкладке Setting опцию Delete Mqtt topics и нажав Save setting.
Samsung Smart Tag, не привязанные к аккаунту SmartThings, для отслеживания не пригодны, так как через несколько минут отключаются. Рекламное сообщение привязанного к аккаунту Smart Tag содержит статический UUID 0xFD5A, динамический MAC адрес и шифрованный идентификатор, из-за наличия в нем RND байт меняющийся вместе с MAC адресом. Остальные поля (статус, счетчик рекламных сообщений, регион, состояние батареи) не уникальны. Рекламное сообщение содержит также цифровую подпись. Стандартные BLE трекеры, насколько мне известно, способны опознать наличие этих меток по UUID, но не способны однозначно идентифицировать каждую метку, если их больше одной. Шлюз использует проверку цифровой подписи рекламного сообщения для идентификации этих меток(маяков), что требует ввода ключа. После ввода ключ проверяется и, если все нормально, нужно ввести значение тайм-аута. Только после ввода тайм-аута и нажатия Ok ключ и тайм-аут запоминаются в NVS (Non-volatile storage — энергонезависимая память).
Как получить ключ.
Ключ (Signing Key) представляет собой ASCII строку из 64 символов (это 32 байта в шестнадцатеричном виде, 16 байт ключа шифрования AES128CBC и 16 байт начального вектора). Действует от момента привязки Smart Tag к аккаунту SmartThings и до момента отвязки от аккаунта или возврата устройства к заводским установкам. Генерируется и меткой Smart Tag, и сервером SmartThings, по каналу связи не передается. Первые 16 байт используются шлюзом как идентификатор устройства в системе умного дома. Для генерации ключа нужно записать лог Bluetooth HCI в момент привязки Smart Tag к аккаунту SmartThings. Если метка уже привязана, перед записью лога ее нужно удалить из аккаунта. Для привязки к аккаунту нужно устройство Galaxy c версией android не ниже 8.0. Я использовал Galaxy S7. Прежде всего нужно включить режим разработчика. Открываем Настройки > Сведения о телефоне > Сведения о ПО и 8 (кажется) раз нажимаем номер сборки. Может потребоваться ввести пин код телефона. В настройках должно появиться меню Параметры разработчика. Заходим в меню и включаем Журнал отслеживания Bluetooth. Далее я на всякий случай выключал и включал Bluetooth, затем перегружал телефон. Заходим в приложение SmartThings и добавляем устройство Smart Tag. Затем опять идем в Настройки > Параметры разработчика и выбираем Создать отчет об ошибках > Интерактивный отчет. Через некоторое время придет уведомление о созданном отчете. Далее его нужно сохранить на компьютере с windows. Я выбирал сохранить в приложении telegram в папке Избранное, а затем уже в telegram на компьютере сохранил архив. Затем нужно извлечь из архива (папка FS/data/log/bt/) файлы btsnoop_hci.log и btsnoop_hci.log.last. В одном из этих файлов должен быть лог привязки. Далее в папку с этими файлами загружаем архив с консольной утилитой stsk и достаем программу из архива. На всякий случай отмечу, что вирусов в архиве нет, а размер программы 28160 байт. Открываем командную строку windows, заходим в папку с файлами и набираем stsk btsnoop_hci.log и stsk btsnoop_hci.log.last. Программа выведет найденные Smart Tag и сгенерирует ключи для них. Последний ключ будет скопирован в буфер обмена windows:

Картинка 8. Программа stsk.
Программа не обрабатывает разбитые на части пакеты данных, соответственно, если встречает такой пакет, то не находит в логе ничего или выдает ошибку. Столкнулся с этим пока только один раз на s21. Возможно это просто сбой, т.к wireshark тоже не совсем корректно восстановил сбойный пакет. И пока не нашел алгоритма опознания и сборки таких пакетов данных. В этом случае нужно повторить всю процедуру еще раз.

Картинка 9. Страничка BLE Monitor.

Добавлено определение лучшего сигнала от метки(маяка) среди нескольких шлюзов. Алгоритм работает так. Каждый шлюз мониторит топик r4s/DevId/rssi. Если у него сигнал от метки(маяка) с большим уровнем, он прописывает свой уровень в этот топик, а также свой номер в топик r4s/DevId/gtnum. После чего шлюз периодически, раз в 6 секунд сохраняет свой уровень сигнала в топике, то есть становится ведущим. Остальные шлюзы проверяют уровень и есть ли его обновление. Если какой-то шлюз обнаруживает отсутствие обновления уровня более 30 секунд, или же его уровень больше, он становится ведущим. Лучший уровень и номер шлюза можно увидеть во второй строчке RSSI на странице BLE монитора. В сущностях каждого устройства тоже есть лучший уровень и номер шлюза:
Картинка 10. Сущности метки(маяка) в Home Assistant.
5. Поддержка экрана
В первой версии шлюза оставался запас как оперативной (~100кБайт), так и программируемой (~400кБайт) свободной памяти, что позволяло расширить возможности прошивки, в частности, добавить поддержку экрана. К тому же у меня уже была собранная esp32 с экраном 3.2″ 320×240 на чипе ili9341, работающая с прошивкой с сайта wifi-iot. Возможно и использование для шлюза уже готовых устройств на чипах ili9341, ili9342 или ST7789. В шлюзе я использовал только необходимые процедуры из Bodmer, адаптированные не совсем хорошо, но как есть для esp-iot. Пины для поключения экрана по умолчанию: MOSI-23, MISO-25, CLK-19, CS-16, DC-17, RST-18, LED-21. Пины можно переназначить в настройках. Если PWR, RST, LED установить 0, то шлюз эти пины использовать не будет. Есть также опция поворота экрана на 180°, а также возможность регулировки яркости дисплея по Mqtt, иcпользуя топик r4s/screen. Программа проверяет наличие экрана на шине SPI при старте. Предусмотрена возможность вывода на экран и картинки в формате jpeg. Для этого нужно указать url картинки. У моей камеры url такой: http://192.168.1.7/auto.jpg?usr=admin&pwd=admin. Картинка грузится в буфер размером 20-65 килобайт в оперативной памяти. Время обновления и размер буфера можно установить в настройках. Есть возможность загрузки картинки по https. Проверка сертификата отключена. Есть возможность управления параметрами загрузки картинки по Mqtt, используя топики r4sx/jpg_url и r4sx/jpg_time. Если в Mqtt эти топики не прописаны, а также после сохранения настроек, эти параметры копируются из настроек в Mqtt. Установка нулевого интервала обновления возвращает кота на экран. Длина буфера ссылки пока 384 байта. Добавлены загрузка и отображение в текстовом виде погоды с сайта wttr.in. В принципе, это может любой сайт, отдающий текст и допускающий форматирование. Если ссылка не содержит строки http:// или https://, то шлюз считает это сообщение простым текстом и отображает на экране. Доступно 2 шрифта и 10 вариантов цветов. Управляющие символы: \ \ или \n — перевод строки, \F — шрифт 26 пикселей и перевод строки, \f — шрифт 16 пикселей и перевод строки, \0 . \9 — цвета. Поддерживается кириллица, проверял, правда, только из mosquitto. Он поддерживает юникод по факту, как другие брокеры, не знаю. Пример вывода изображения на экран на картинке 11.

Картинка 11. Изображение.
На картинке 12 пример вывода на экран Mqtt погоды с сайта wttr.in:

Картинка 12. Погода.
На картинке 13 пример вывода на экран Mqtt строки (символ градуса можно вывести на экран используя обратный апостроф):
\F\0` English \1color \2text\3 example\n\4Русский \5цветной \6текст\n\7text1 \8text2 \9text3\f\0` English \1color \2text\3 example\n\4Русский \5цветной \6текст\n\7text1 \8text2 \9text3

Картинка 13. Текст.
Стоит отметить, что сама TFT плата влияет на распространение как WiFi, так и BLE. И даже если антенна esp32 выглядывает из-под экрана, чувствительнось такого бутерброда заметно меньше обычной esp32. Рекомендую использовать с экраном вариант esp32 с внешней антенной. У меня в шлюзе с экраном замена esp32 на вариант с разъемом и установка внешней антенны дала прирост уровней WIFI и BLE примерно на 15-20dBm.
Если же экран не нужен, то нужно после программирования и настройки esp32 подсоединить ее к источнику питания и спрятать где-нибудь на кухне.
6. Совместимые устройства
Если хочется запустить шлюз максимально быстро, без пайки, да еще и с приличным корпусом, стоит присмотреться к совместимым устройствам. Их нужно только перепрограммировать. Ниже перечислены только проверенные мной устройства. Для прошивки использовалась программа flash_download_tools.

Картинка 14. TTGO T-Watcher.

Я проверял работоспособность шлюза на TTGO T4 версии 1.3. Прошивается он через встроенный USB разъем, перед прошивкой устройства нужно соединить контакты 6 и 7 (gpio0 и gnd) в нижнем ряду разъема (картинка 15). Возможна прошивка и без установки перемычек, зависит от программы. Настройки экрана для версии 1.3: 12-MISO, 23-MOSI, 18-CLK, 27-CS, 32-DC, 5-RES, 4-LED, 0-PWR, и для версии 1.2: 12-MISO, 23-MOSI, 18-CLK, 27-CS, 26-DC, 5-RES, 4-LED, 0-PWR. В версии 1.2 нет управления включением и выключением экрана. Кнопки сверху вниз 38-Port1, 37-Port2, 39-Port3. Шина I2C: SCL-22, SDA-21.
Картинка 15. Соединить 6 и 7 пины разъема перед прошивкой TTGO T-Watcher.

Картинка 16. M5Stack BASIC Kit.
Как я понял, старые версии M5Stack Basic шли с экраном на ili9341, и на этих версиях работала и старая версия шлюза. Настройки экрана для этой версии: 19-MISO, 23-MOSI, 18-CLK, 14-CS, 27-DC, 33-RES, 32-LED, 0-PWR. Новые версии уже идут с экраном на ili9342. Начиная с версии 2021.10.29 добавлена поддержка экрана на ili9342. Я проверял работоспособность шлюза на новой версии M5Stack BASIC Kit. Прошивается он через встроенный USB разъем, перед прошивкой устройства нужно соединить последний контакт в верхнем ряду и 4 в нижнем ряду (gnd и gpio0) разъема (картинка 17). Возможна прошивка и без установки перемычек, зависит от программы. Настройки экрана для новой версии: 23-MISO, 23-MOSI, 18-CLK, 14-CS, 27-DC, 33-RES, 32-LED, 0-PWR. Кнопки слева направо 39-Port1, 38-Port2, 37-Port3. Шина I2C: SCL-22, SDA-21.
Настройки для M5Stack Tough: 23-MISO, 23-MOSI, 18-CLK, 5-CS, 15-DC, 44-RES, 47-LED, 46-PWR. Шина I2C: SCL-22, SDA-21. Без I2C экран не запустится.

Картинка 17. Соединить последний контакт в верхнем ряду и 4 в нижнем ряду (gnd и gpio0) перед прошивкой M5Stack BASIC Kit.

Картинка 18. ATOM-LITE-ESP32-DEVELOPMENT-KIT.
Прошивается атом по usb без установки перемычек. Кнопку использовал для включения-выключения одного из устройств (39-Port1), светодиод пока в прошивке не задействован. IR LED на 12 gpio можно использовать для дистанционного управления. Устройство компактное (24 * 24 * 10 mm), devkit esp32 по размерам больше.
7. Сборка проекта и лицензия
Для сборки бинарных файлов использовал Espressif IoT Development Framework..
Пока использую версию esp-idf версии 4.4. Особых проблем не замечал пока, кроме I2C, которую закрыли в версии 4.4.2. Однако, собрав проект в версии 4.4.2 обнаружил, что при прочих равных условиях свободной оперативной памяти стало меньше на 3.5-4 килобайта (68к против 71-72к). В версии 4.4.3 памяти стало еще на 2к меньше (66к). Потому остановился на версии 4.4, поправив в ней 2 файла(для ESP32 и ESP32C3): ..\Espressif\frameworks\esp-idf-v4.4\components\driver\i2c.c и ..\Espressif\frameworks\esp-idf-v4.4\components\soc\esp32c3\include\soc\soc_caps.h Файлы вместе с оригинальными версиями в архиве. Для сборки проекта под ESP32C3 используются файлы sdkconfig и partition.bin из папки C3.
Добавлена лицензия MIT. Добавлена конфигурация для сборки в среде PlatformIO, спасибо bvp, его сообщение здесь.
Это платформа для сборки прошивок для микроконтроллеров. Управляет инструментарием сборки, и зависимостями проекта. Всё нужное скачает сама. Со списком поддерживаемых платформ можно ознакомиться тут, а фреймворков — тут.
platformio.ini — файл конфигурации для PlatformIO Собрать так — pio run -t build или просто pio run Загрузить прошивку — pio run -t upload Потребуется только поправить upload_port и monitor_port . Для Win32 значение будет вида COM4 (поставить свой номер порта, на котором находится прошивальщик). Для Linux — будет /dev/ttyUSB0 (так же поставить свой номер порта, на котором находится прошивальщик). Для macOS — как в прилагаемом примере.
В файле описываются правила форматирования кода, согласно которым код приводится к нужному стилю. Необходим установленный clang-format .