- Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32
- Русские Блоги
- Универсальная реализация домашнего шлюза BLE в WIFI
- Универсальная реализация домашнего шлюза BLE в WIFI
- HOME Модель шлюза
- Введение в службу BLE Gateway
- Функциональная блок-схема шлюза
- Интеллектуальная рекомендация
- Модель производителя и потребителя
- Доверенные идеи дизайна
- Apache добавляет виртуальную машину
- Я хочу сделать письменное резюме тестового Андроидом
- Python использует технологию перехвата для взлома https, получения имени пользователя и пароля для входа!
Bluetooth шлюз для умного дома, за копейки и за 5 минут работы, на ESP32
Всем привет. Если помните в обзоре на часы Mijia я упоминал, что для подключения часов к Home Assistant можно воспользоваться проектом под названием bt-mqtt-broker. Практика показала, что данный сервис весьма и весьма нестабильный. Периодически Bluetooth на сервере намертво зависал, и приходилось дёргать службу. В общем после очередного зависания, решил поискать, что можно еще сделать, и нашел решение за 300 рублей, которое предельно просто реализовать, без паяльника и прочих прелестей.
Решение это — плата разработчика на ESP32 , а также проект под названием ESPHome .
Приезжает плата в обычном антистатическом пакете, и, к слову, в мягком почтовом пакете. Для защиты на ножки был нацеплен мягкий материал. Доехала к счастью платка целая и невредимая.
На плате указан производитель – Az-Delivery.
Внешне и по размерам она очень сильно напоминает Arduino Nano. Гребенки контактов, для экспериментов с макетными платами – сразу распаяны. Микроконтроллер тут установлен — от Espressif – ESP32-WROOM-32D.
Питание и подключение к компьютеру осуществляется при помощи MircoUSB порта. Обратите внимание, что при заказе данной платы возможно 2 варианта – со встроенной антенной и без неё, но с возможностью подключения внешней. Плата работает одновременно и с WiFi и c Bluetooth.
Перейдем, собственно, к созданию шлюза из этой платы.
Потребуется компьютер с Linux, в моём случае – Ubuntu 20.04.
Как всегда сперва лучше обновиться:
sudo apt update sudo apt upgrade
Если вдруг у вас не стоит Python или pip3 – установите их:
sudo apt install python3 python3-pip
Дальше ставим esphome при помощи pip:
sudo pip3 install esphome
А также пакеты для работы веб интерфейса (но можно и без него обойтись, используя только команды, подробности описаны на сайте esptool), скорее всего они установятся во время установки esphome, но на всякий случай
sudo pip3 install tornado esptool
sudo esphome config/ dashboard
config/ — это папка, относительно вашего текущего местоположения в терминале, куда будут складываться ваши конфиги.
Далее переходим по адресу – 127.0.0.1:6052 (или по адресу вашего компьютера, если заходите не с него), и создаем тут новый проект.
Задаём имя будущего шлюза
Выбираем из списка нашу плату, если такой нет в списке, то можно попробовать выбрать что-то с похожим названием, или generic. В моём случае при выборе Generic esp32 всё прекрасно заработало.
На следующем шаге вводим имя WiFi сети и пароль от нее, а также пароль для обновлений по воздуху и для доступа к шлюзу со стороны Home Assistant.
Жмем submit, и возвращаемся на главный экран.
Тут будет видно, что появился новый конфиг для нашей платы. Нужно его отредактировать, чтобы он научился обрабатывать данные с ваших устройств. Ниже пример куска конфига для подключения часов Xiaomi:
esp32_ble_tracker:
scan_parameters:
active: false
sensor:
— platform: xiaomi_lywsd02
mac_address: e7:2e:00:f1:4c:95
temperature:
name: «Xiaomi Clock Temperature»
humidity:
name: «Xiaomi Clock Humidity»
Обратите внимание на параметр active:false – есть подозрение, что если его не указывать, то он по умолчанию в состоянии true, и как следствие может негативно влиять на разряд батареи в устройствах, но в то же время, когда режим работы пассивный – некоторые функции могут работать не корректно. Также, к сожалению для моих часов не передаются данные о заряде батареек. Остальное, как мне кажется, в комментариях не нуждается.
Вообще на сайте ESPHome можно найти великое множество примеров для разных устройств. Так что можете там поискать для вашего.
Сохраняем конфиг, закрываем и жмем validate. Если проверка пройдена, то остается только залить прошивку в микроконтроллер.
Подключаем плату к USB и переводим её в режим прошивки, для этого жмем на ней на кнопку boot и не отпуская эту клавишу однократно нажимаем на cn, или en, в общем вторую кнопку =). В правом верхнем углу появится новый порт, выбираем его и жмем upload. Дожидаемся загрузки и когда пойдут логи связанные с обнаружением Bluetooth устройств можно жать на Stop всё отключать и уносить самодельный шлюз в нужное место.
В будущем, прошитые девайсы можно обновлять по воздуху (OTA), с данной платой я пробовал – всё замечательно работает. Но на форумах часто встречал жалобы, что с той или иной платой других производителей – данная функция нормально не работает.
Остается только добавить интеграцию ESPHome в Home Assistant, дальше всё подтянется автоматически. В смысле подтянется ваш ESP32 как устройство, с объектами которые были прописаны в конфиге (в моем случае температурой и влажностью). Занимательно, что имена объектов точно такие же, как были заданы в конфиге.
Пользуюсь этим самодельным шлюзом уже несколько недель, и ни одной проблемы с ним пока не возникло. Работает как часы. Правда стоит оговориться, что у меня к нему подключено только одно устройство, не исключено, что что-то может пойти не так, если добавить на одну еспишку великую гору устройств.
Русские Блоги
Универсальная реализация домашнего шлюза BLE в WIFI
Универсальная реализация домашнего шлюза BLE в WIFI
С увеличением количества датчиков BLE обработка и анализ больших данных стали важным требованием. На рынке существует множество решений BLE to WIFI Gateway, и все они специфичны.
Платформа и конкретная микросхема, например схема TI. Шлюз собирает данные, сообщаемые узлом BLE, инкапсулирует данные в определенный формат и загружает их на облачный сервер. Удаленный или фоновый терминал может отслеживать или подсчитывать данные. Примерный образец показан на рисунке ниже.
Собранные данные инкапсулируются в формат JSON и загружаются на сервер MQTT / облако IOE / ALIcloud по протоколу mqtt.
Мой текст не очень хорош, и он кажется относительно грубым. Я позаимствовал несколько изображений у пользователей сети. Надеюсь, эта статья сыграет роль каменщика.
Если у вас есть какие-либо вопросы или потребности, свяжитесь со мной напрямую.
HOME Модель шлюза
Схема реализации, упомянутая в этой статье, не ограничивает аппаратную платформу и программную платформу. Код легко переносится на другие платформы.В настоящее время проверка прошла успешно на x86, openwrt и платформах.
В этом эксперименте используется
Платформа — платформа маршрутизации Qualcomm Dakota 4029 / ПК,
BLE-приемник csr4.0 BLE USB-приемник, поддержка Bluetooth-оборудования может быть реализована
Стек протоколов Bluetooth: bluze5.0
Программно-реализованные функции
1. Нет особых требований к оборудованию.
2. Поддержка linux, openwrt
3. Используя библиотеку протоколов Bluetooth BlueZ 5.0, она портирована на x86, mips, arm и другие платформы.
4. Поддержка нескольких устройств Ble, звездообразная сеть, поддержка 1-парного многорежимного режима.
5. Реализация языка C
6. Динамически добавляйте устройства,
7. Поддержите JASON
8. Поддержка службы MQTT.
9. Поддержка конфигурации cli
Введение в службу BLE Gateway
Для обеспечения универсальности была выбрана платформа BLuez Bluetooth.
Функциональная блок-схема шлюза
Данные свалили на интерфейс bluetooth.
Gateway service
1. Программа службы шлюза BLE будет активно подключаться к терминалу BLE, добавленному в список предпочтений (в паре).
Эту операцию можно реализовать с помощью файла конфигурации или с помощью команды cli, действия сопряжения.
[whitelist] dev1=BC:6A:29:C0:DE:29 dev2=00:02:5B:00:B9:17 dev3=00:02:5B:33:B9:17
- Программа обслуживания шлюза Ble, связывается с окружающими узлами и регистрирует функции обратного вызова, обратного вызова, уведомления и обратного вызова,
Чтобы добиться универсальности, эта служебная программа только собирает и получает данные, и в настоящее время в службе нет фильтрации. Служба инкапсулирует все значения атрибутов под дескриптором на сервере gatt в формат jason и загружает сообщение с данными на сервер.Все данные обрабатываются на стороне облака или на локальном сервере.
[cls_server] # Файл конфигурации Знак равенства может содержать или не содержать пробелов. ip=192.168.1.1 #port=61623 port=1883
- Загрузить данные в брокер Mqtt
В настоящее время в сервисе реализован только самый популярный протокол передачи mqtt IoT, а другие протоколы можно настраивать и добавлять. - Удаленный терминал, фоновая обработка данных терминала.
Здесь просто для демонстрации данных через клиентское программное обеспечение MQTT на мобильном телефоне. Внутренние данные отображаются следующим образом:
Интеллектуальная рекомендация
Модель производителя и потребителя
Модель производителя и потребителя Эта статья в основном следует за статьейСинхронизация потоков и взаимное исключениеПродолжайте изучать проблему синхронизации потоков, мьютексы, условные переменные.
Доверенные идеи дизайна
Доверенные идеи дизайна существоватьПредыдущая статьяСреди них мы кратко понимаем механизм ввода в эксплуатацию, поэтому давайте посмотрим на дизайнерские идеи доверенности. Overview Я думаю, что вы и.
Apache добавляет виртуальную машину
1. Файл конфигурации Apache httpd.conf, vhosts.conf 2. Добавьте виртуальную машину под VHOSTS.CONF DocumentRoot «D:\www\mxhy\backend\web» .
Я хочу сделать письменное резюме тестового Андроидом
Два: Как повысить конверсию Binary → десятичное Метод: Количество двоичных чисел от низкого до высокого (т.е. от правых слева), веса 0 — го бита 2 0 раз, вес первого бита 2, вес второго бита 2 в .
Python использует технологию перехвата для взлома https, получения имени пользователя и пароля для входа!
По сравнению с протоколом http отличительной чертой https является его безопасность. Коммуникационное содержимое протокола http может быть перехвачено обычным сниффером, но содержимое снифферов.