• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

TLSR8251 + LCD + термометр = LYWSD03MMC XIAOMI Bluetooth термометр

pvvx

Активный участник сообщества
А где температура, влажность, батарея и т.д.?
1675382497777.png
Это как раз LongRange
 

sL0n1k

Member
Во, интересно ))
Значит у него адверт не 181a, а Xiomi, а там нет данных таких )
 

pvvx

Активный участник сообщества
"А написать своё при прямой работе с BT адаптером может любой"

так не бывает на андроиде, я поправил Qt чтобы он видел, но это все канонически - на Java, через канонический API,
так что, тут я ничего не проприетарил ))
Китайцы давно лепят приложения на Android, которые работают только на специфических версиях смартов с их BLE датчиками.
У вас есть уверенность, что ваше приложение заработает на всех смартах выпущенных за последние 5 лет (это основной парк у пользователей)?
Ну, хотите, давайте на HA запустим long, если так он на нем нужен))
Только можно на пятом апельсине, вроде нашлась на него карта с 5.2
Мне это не нужно - я могу написать прием LongRange и прочего практически на любом чипе с BLE и воткнуть его в комп хоть с MSDOS :)
 

sL0n1k

Member
Китайцы давно лепят приложения на Android, которые работают только на специфических версиях смартов с их BLE датчиками.
У вас есть уверенность, что ваше приложение заработает на всех смартах выпущенных за последние 5 лет (это основной парк у пользователей)?
Мне это не нужно - я могу написать прием LongRange и прочего практически на любом чипе с BLE.
А вот это правильно, я тоже за это, тем более особо то и напрягаться не надо - уже все написано )))
 

pvvx

Активный участник сообщества
На UUID 181a ещё присоседился кент с датчиком влажности для цветов. Но ныне он перешел на BTHome.
Более никаких вариантов в UUID 181A не наблюдается.
 

sL0n1k

Member
ясно, там после uida mac девайса должен совпадать с самим маком иначе я его ингорю,
точнее там есть инфо, что он проигнорен, но она не вывелась, завтра исправлю, но разве у вас есть таки адверты тоже ?
 

pvvx

Активный участник сообщества
ясно, там после uida mac девайса должен совпадать с самим маком иначе я его ингорю,
точнее там есть инфо, что он проигнорен, но она не вывелась, завтра исправлю, но разве у вас есть таки адверты тоже ?
Тут наверно хватит разгребать баги, т.к. движок форума не очень удобен для этого.
Имеется два формата UUID 181A. Отличаются по длине данных.
Немец ATC1441 использует другого "индейца" - старший-младший байт, не принятый в BLE.
У меня другой формат с UUID 181A.
 

pvvx

Активный участник сообщества
Оба поддерживаются в текущих термометрах. Но далее, как и указал, скорее всего останется BTHome v1 и далее.
Всё это делается постепенно, чтобы писатели внешнего ПО успели изменить и у пользователей не нарушалась поддержка.
Игнорируется только ESPHome из-за множества глюков и нестабильности.
 

sL0n1k

Member
Не, там что-то другое.
Мак с которого это прилетело: A4:C1:38:0B:5E:ED
А после Uida лежит вот это: 40:97:C3 D1 D6: 68

Может шифрованное что-то?
 

pvvx

Активный участник сообщества
C:
/* Encrypted custom beacon structs */
// https://github.com/pvvx/ATC_MiThermometer/issues/94#issuecomment-842846036
typedef struct __attribute__((packed)) _adv_cust_head_t {
    uint8_t        size;        //@0 = 14
    uint8_t        uid;        //@1 = 0x16, 16-bit UUID https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/
    uint16_t    UUID;        //@2..3 = GATT Service 0x181A Environmental Sensing (little-endian)
    uint8_t        counter;    //@4 0..0xff Measurement count, Serial number, used for de-duplication, different event or attribute reporting requires different Frame Counter
} adv_cust_head_t, * padv_cust_head_t;

typedef struct __attribute__((packed)) _adv_cust_data_t {
    int16_t        temp;        //@0
    uint16_t    humi;        //@2
    uint8_t        bat;        //@4
    uint8_t        trg;        //@5
} adv_cust_data_t, * padv_cust_data_t;

typedef struct __attribute__((packed)) _adv_cust_enc_t {
    adv_cust_head_t head;    //@0..4
    adv_cust_data_t data;    //@5..10
    uint8_t        mic[4];        //@11..14
} adv_cust_enc_t, * padv_cust_enc_t;
Значит забыл галочку "шифровано" снять :)
Размер 14 0x181A - это шифрованное моё
Размер 11 0x181A - это шифрованное ATC1441
 

sL0n1k

Member
Если у вас есть BLE-снифер под рукой, все-таки я бы глянул на полный адверт-пакет (то что прилетает с hci),
так чтобы видеть, как китайцы это сделали, потому как есть вариации. Частично из академического интереса.)
У меня есть, правда, в одном экземпляре и пока задействован под другие цели)
Но глянуть хочется, ну очень интересно)
Луше WireShark формат
 

sL0n1k

Member
да и еще, самое интересное - гляньте на какой скорости происходит коннект с теми девайсами, которые с Longe Range advert-ом
это можно и нордиком увидеть, там в логе это должно быть видно
 
Сверху Снизу