• Система автоматизации с открытым исходным кодом на базе 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-ом
это можно и нордиком увидеть, там в логе это должно быть видно
 
Сверху Снизу