Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение Divan » Вс май 10, 2020 10:27 pm

Получилось подключиться. Установил такие параметры и сделал как вы и сказали.
Выставьте Core Debug Level в Debug иначе ничего не пишет в консоль
И в r4scfg.h раскоменчены
//----------- R4S Settings
#define R4S_LOG_EXCHANGE
#define R4S_G200S_SUPPORT
СпойлерПоказать
Безымянный.jpg
Безымянный.jpg (64.52 КБ) 3006 просмотров
Теперь следующий вопрос.
Как найти devid, не это разве Characteristic: uuid?

Код: Выделить всё

[D][BLEAdvertisedDevice.cpp:424] setRSSI(): - setRSSI(): rssi: -67
[D][BLEAdvertisedDevice.cpp:253] parseAdvertisement(): Type: 0x09 (), length: 8, data: xxxxxxxxxxxxxxxxxxxx
[D][BLEAdvertisedDevice.cpp:413] setName(): - setName(): name: RK-G240S
[D][BLEAdvertisedDevice.cpp:253] parseAdvertisement(): Type: 0x01 (), length: 1, data: 06
[D][BLEAdvertisedDevice.cpp:253] parseAdvertisement(): Type: 0xff (), length: 10, data: xxxxxxxxxxxxxxxxxxxx
[D][BLEAdvertisedDevice.cpp:401] setManufacturerData(): - manufacturer data: xxxxxxxxxxxxxxxxxxxx
[D][BLEAdvertisedDevice.cpp:253] parseAdvertisement(): Type: 0xff (), length: 11, data: xxxxxxxxxxxxxxxxxxxx
[D][BLEAdvertisedDevice.cpp:401] setManufacturerData(): - manufacturer data: xxxxxxxxxxxxxxxxxxxx
[D][BLE.cpp:42] onResult(): BLE Advertised Device found : Name: RK-G240S, Address: xx:xx:xx:xx:xx:xx, manufacturer data: xxxxxxxxxxxxxxxxxxxx
[I][BLE.cpp:45] onResult(): Found our device at address : xx:xx:xx:xx:xx:xx
[D][BLEScan.cpp:259] stop(): >> stop()
[D][BLEScan.cpp:271] stop(): << stop()
[I][BLE.cpp:152] scanDevices(): Starting device scan...
[D][BLEScan.cpp:204] start(): >> start(duration=10)
[D][BLEClient.cpp:464] handleGAPEvent(): BLEClient ... handling GAP event!
[D][FreeRTOS.cpp:165] take(): Semaphore taking: name: ScanEnd (0xXXXXXXXX), owner: <N/A> for start
[D][FreeRTOS.cpp:174] take(): Semaphore taken:  name: ScanEnd (0xXXXXXXXX), owner: start
[D][BLEScan.cpp:236] start(): << start()
[D][BLERemoteCharacteristic.cpp:169] gattClientEventHandler(): Invoking callback for notification on characteristic Characteristic: uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, handle: 11 0xb, props: broadcast: 0, read: 0, write_nr: 0, write: 0, notify: 1, indicate: 0, auth: 0
[D][R4S.cpp:42] r4sCommand(): << 556d060000280001180f000000000000800000aa
[D][BLERemoteCharacteristic.cpp:550] writeValue(): >> writeValue(), length: 4
[D][FreeRTOS.cpp:165] take(): Semaphore taking: name: WriteCharEvt (0xXXXXXXXX), owner: <N/A> for writeValue
[D][FreeRTOS.cpp:174] take(): Semaphore taken:  name: WriteCharEvt (0xXXXXXXXX), owner: writeValue
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEClient.cpp:165] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLERemoteCharacteristic.cpp:577] writeValue(): << writeValue
[D][R4S.cpp:24] r4sWrite(): >> 556e06aa
На данный момент я не знаю как настраивать MQTT. Модуль и сервер MQTT поставил. Что дальше делать? В шапке я так и не понял, что и куда надо вставлять. Как нужно все это делать. Покажите на примере в скриншотах.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение Divan » Пн май 11, 2020 2:33 am

Получилось ).

У меня изначально в модуль MQTT не подтягивались данные, поставил программу MQTT.fx. MQTT -брокер увидел, запустил скан и получил данные с чайника, а после этого уже подтянулось в mjdm.
СпойлерПоказать
Безымянный-1.jpg
Безымянный-1.jpg (125.07 КБ) 2982 просмотра
СпойлерПоказать
Безымянный-2.jpg
Безымянный-2.jpg (133.54 КБ) 2982 просмотра
Осталось разобраться, как включать чайник, как выставлять температуру. Как это делать?
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение Divan » Сб май 16, 2020 11:20 pm

Свершилось ), наконец-то допилили скетч для управления чайником Redmond. Благодарим участника DmitriyVa, он исправил скетч, но еще предстоит его доработать. Нужны желающие, кто будет тестировать и помогать править код. Есть некоторые проблемы, к примеру отваливается связь через некоторое время, это может быть через 5-10-90 минут.

Скетч работает с чайниками:
REDMOND SkyKettle M171S
REDMOND SkyKettle G200S
REDMOND SkyKettle G210S
REDMOND SkyKettle G240S

Какие функции работают?
1) Кипячение
2) Кипячение и подогрев, выставляем нужную температуру от 30 до 100 градусов
3) Подогрев, выставляем нужную температуру от 30 до 100 градусов
4) Вкл\выкл ночник
5) Получение информации от чайника, например температура чайника, какая функция включена, статус онлайн\оффлайн
6) Можно установить свой цвет для ночника (читаем инструкцию Настройка скетча r4sGate для чайника)
СпойлерПоказать
// boilOrLight scale_from rand rgb1 scale_mid rand rgb_mid scale_to rand rgb2
static uint8_t nl_settings[] = {1, 0, 38, 255, 0, 0, 50, 38, 255, 0, 0, 100, 38, 255, 0, 0};
Выделенные красные фрагменты задают цвет в формате R,G,B. Т.е. Можно сделать любой оттенок из 16 миллионов))) Можно задать 3 разных фрагмента и будут переливы.
Посмотреть видео, как работает управление чайником с помощью Алисы можно здесь

Для управления чайником с помощью Алисы, необходимо установить модуль Yandex Home, найти его можно в маркете, в разделе Взаимодействие
СпойлерПоказать
Yandex Home.JPG
Yandex Home.JPG (23.05 КБ) 2922 просмотра
Как настроить модуль Yandex Home, читаем здесь и здесь

Если не удалось сделать по инструкции выше или есть другая причина, то читаем здесь

После того, как все настроите, в самом модуле создаем чайник и привязываем к свойствам объекта. Управление ограничено самим модулем, нельзя выставить две функции кипячение и подогрев и подогрев, поэтому я выбрал пока одну функцию подогрев с выбором температуры. Возможно автор модуля в будущем расширит возможность.
СпойлерПоказать
Чайник в модуле.JPG
Чайник в модуле.JPG (15.44 КБ) 2922 просмотра
Настройки чайника в модуле Yandex Home.JPG
Настройки чайника в модуле Yandex Home.JPG (64.53 КБ) 2922 просмотра

Скетч
r4sGate-v4.zip
(10.97 КБ) 123 скачивания

Объект чайника
Объект R4SKettle.zip
(1.37 КБ) 126 скачиваний

Инструкции в двух форматах, если в PDF не будет изображения, то есть файлы в word
Инструкции в word.zip
(858.35 КБ) 110 скачиваний
Инструкции в PDF.zip
(757.72 КБ) 124 скачивания
За это сообщение автора Divan поблагодарили (всего 2):
znachok88 (Сб май 16, 2020 11:25 pm) • DmitriyVa (Чт май 21, 2020 11:53 am)
Рейтинг: 2.33%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
exo
Сообщения: 40
Зарегистрирован: Вт апр 11, 2017 11:06 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение exo » Вт май 26, 2020 6:31 pm

Да я тоже допилил. разобрался почему не видел чайник, думал на тему здесь забили, потому и не стал ничего писать.
прописал жестко мак(чайник то у меня один), после этого он стал его цеплять.
Перевел проект в Platformio. Немного исправил механику, (ориентировал на подогрев в самом скетче) для работы с Homebridge. Вывел его туда как термостат. И подключил его к Яндексу через NodeRed. как чайник.
но так же отваливается через некоторое время. думаю надо ставить wathcdog перегруз через минут 20. Надо разбираться как делать, руки не доходят.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение Divan » Вт май 26, 2020 6:54 pm

Попробуйте этот скетч r4sGate_v7, тут все переработано, добавили перезапуск BLE. У меня плата ESP32 Dev Module и до скетча r4sGate_v7 BLE также отваливался часто, а WiFi работает стабильно. Сейчас у меня BLE стал лучше держаться связь с чайником, точнее дольше чем обычно. Сделал сброс на чайнике, держать +/- более 10 секунд, должны мигнуть все 4 светодиода и по новой сделал сопряжение.
Вложения
r4sGate_v7.zip
(11.14 КБ) 101 скачивание
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
exo
Сообщения: 40
Зарегистрирован: Вт апр 11, 2017 11:06 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение exo » Ср май 27, 2020 5:42 am

А не понятно кто отваливается ? Чайник или еспшка ?
exo
Сообщения: 40
Зарегистрирован: Вт апр 11, 2017 11:06 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение exo » Ср май 27, 2020 5:47 am

А не понятно кто отваливается ? Чайник или еспшка ?
весь модуль BLE написан на основе базового сниппета BLE, а с ним проблем гора.

с этими параметрами разбирались ? или это не то ?
static uint8_t bleConnectRetries = 1; // Device connect retries before going offline
static uint8_t bleConnectRetriesBeforeRescan = 4; // Device reconnect retries before starting new scan

я переписывал код на подогрев. получилось костыльно но работало.
т.е. при смене температуры подогрева нужно послать отмену состояния 04 всегда, не определяя статус), сменить поменять таргет 05 и снова включить 03.
Для кипячения посыл 04 перед включения без определения статуса (это очень долго)
Это можно вставить в код ? Просто в новой версии названия поменяли, я начинаю блудить.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение Divan » Ср май 27, 2020 12:21 pm

exo писал(а):
Ср май 27, 2020 5:42 am
А не понятно кто отваливается ? Чайник или еспшка ?
Очень хороший вопрос. Есть мысль, просто залить скетч BLE server и связать смартфон для проверки. Если связь не будет отваливаться, значит это чайник отваливается.

это вставил

Код: Выделить всё

static uint8_t bleConnectRetries = 1; // Device connect retries before going offline
static uint8_t bleConnectRetriesBeforeRescan = 4; // Device reconnect retries before starting new scan
сюда
СпойлерПоказать
скетч r4sGate.jpg
скетч r4sGate.jpg (119.86 КБ) 2761 просмотр
перезалил скетч, наблюдаю, посмотрим как скоро отвалится )

Удобная программа Монитор порта про
1) Соединение с платой
2) Перезапуск платы, не нужно физически нажимать на кнопку EN на самой плате, что очень удобно
СпойлерПоказать
Монитор порта про 2.jpg
Монитор порта про 2.jpg (223.61 КБ) 2761 просмотр
Если отвалится, то по сути надо встроить wathcdog, как это делать я не знаю, если поможете, то буду благодарен.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение Divan » Ср май 27, 2020 12:24 pm

exo писал(а):
Ср май 27, 2020 5:47 am
весь модуль BLE написан на основе базового сниппета BLE, а с ним проблем гора.
Вы сможете для эксперимента переписать в скетче сниппет BLE? Я за то, чтобы попробовать все варианты ).
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
exo
Сообщения: 40
Зарегистрирован: Вт апр 11, 2017 11:06 am
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Шлюз на базе ESP32 для R4S-устройств (Ready for Sky/Nordic)

Сообщение exo » Ср май 27, 2020 2:19 pm

static uint8_t bleConnectRetries = 1; // Device connect retries before going offline
static uint8_t bleConnectRetriesBeforeRescan = 4; // Device reconnect retries before starting new scan
это было в скетче, :)) я про параметры, выкрутить на макс, посмотреть что будет. я думаю это значение параметра "состояния в онлайн", статус потом выкидывает в мкутт, на физический коннект влиять не может.
Плата esp32 умеет засыпать, не это ли провоцирует проблему.
Ответить