• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

pvvx

Активный участник сообщества
Можете доказать, что драйвер USB меньше, чем драйвер uART?
Можете доказать чем же протокол и реализация USB проще протокола и реализации uART?
Передача блока в USB:
C:
       /* Write data to USB fifo */
       for (i = 0; i < len; i++) register_usb_ep_dat(CDC_TX_EPNUM) = txBuf[i];
    /* Write ACK */
    register_usb_ep_ctrl(CDC_TX_EPNUM) = FLD_EP_DAT_ACK;
Прием аналогичен - чтение размера принятого блока из регистра буфера/fifo EPNUM и выставление флага в регистре управления этой "point" - считано.
:p
И этих ящиков-point у USB контроллера несколько.
 

pvvx

Активный участник сообщества
Передача в BLE, с polling опросом драйвера:
C:
                if(блок_length) // требуется передача?
                    if(blc_ll_getTxFifoNumber() < 10) // есть свободное место в буферах драйвера для передачи?
                        bls_att_pushIndicateData(NN_дескриптора_ящика, (u8 *) &буфер_блока, блок_length);
И блок приходит в приемник таким-же, с синхронизацией начала и размера.
nikolz - для вас это непостижимая сложность! :) :)
 

pvvx

Активный участник сообщества
И для тех кто не шарит как работает стандартный шлюз BLE-HTTP/S и сочиняет отсебятину (этим любят заниматься Ардуинщики, чтобы было несовместимо ни с кем):

Шлюз имеет "ящики":
  • Ящик http_control_point uuid="2ABA" HTTP используется для инициирования запроса на отправку сообщения HTTP-запроса от устройства, поддерживающего службу HTTP-прокси, действующего как HTTP-клиент, и HTTP-сервер. Указывает что это за запрос: HTTP/HTTPS GET, HEAD, POST, PUT, DELETE или Request Cancel (uint8)
  • Ящик http_entity_body uuid="2AB9" тела объекта HTTP. Cодержит содержимое тела сообщения в Transfer Encoding формате (utf8s).
  • Ящик http_status_code" uuid = " 2AB8 " кода состояния HTTP содержит код состояния (uint16) + Статус данных (uint8)
  • Ящик https_security uuid="2ABB" Известная подлинность сертификата HTTP-сервера для URI? (boolean)
  • Ящик URI uuid="2AB6" URI, который будет использоваться в HTTP-запросе (utf8s)
  • И т.д.
В итоге работа BLE устройства со стандартным шлюзом BLE-HTTP/S проще чем у ESP в Arduino и сводится к запихиванию адреса (URI), тела сообщения и кода команды HTTP в ящики шлюза. Ожидается и принимается ответ, но можно включить и notifу - оповещение...
 

pvvx

Активный участник сообщества
4) Вы радуетесь, что средний ток у Вас получился 10 мка.
Если сравнивать с Wifi, то надо приравнять мощности и получим тоже самое.
Какие 'мощности' приравнивать вы там собрались? Мощность вашей дури?
Это по расстоянию для связи примерно то-же самое.
По назначению разница в порядки.
WiFi ныне это для передачи потока за 4804 Мбит/с для средней по стоимости категории роутера...
BLE для передачи не более 100 килобайт в сек.
Во столько и отличается потребление.
А почему бы не добавить сюда еще и средний ток смартфона, который принимает каждую секунду эти данные?
У смартфона есть другие варианты приема данных с датчиков?
Во вторых приемник, к примеру на алогичном чипе, потребляет всего до 7 мА при постоянном безразрывном приеме и обработке.
Это вам не ESP с токами приема к 100 мА.
А если не принимает, то зачем это все передавать?
А чтобы другое устройство принимало данные в режиме real-time.
Сложность протокола BLE не в том, что кто-то его не изучил,
А в том что для передачи температуры со скоростью 2 Мбит/сек надо передать 64 бита т е затратить 32 мкс
и передавать эту температуру каждую секунду нет смысла.
Во первых обсуждаемый датчик не передает температуру каждую секунду.
По этому вы о чем? Опять о ваших фантазиях?
Если посчитаете, то получите что кпд универсальных протоколов таких как BLE примерно 1%,
т е затраты энергии такими устройствами раз в 100 больше, чем требуется для передачи полезной информации.
Это и есть критерий их сложности т е бессмысленной траты энергии и времени.
Опять какая-то 'сложность' у nikolz.
Где бессмысленная трата энергии?
Имеем сотню разнообразных датчиков, каждый передает данные и свои метрики - идентификаторы от какого датчика и что за данные.
Лишних байт в передаче нет. Где вы их увидели? Опять в своих фантазиях?
По вашим же критериям КПД универсальных протоколов получается более 100% - как у теплового насоса, даже более.
 

topa_spb

New member
Прошил, но теперь не подключается к Mi Home выдает ошибка 102
Откатиться назад не получается

01:52:49: Searching for devices
01:53:30: Connecting to: ATC_B44420
01:53:34: Detected custom Firmware
01:53:34: Hardware Version: LYWSD03MMC.
01:53:34: Software Version: 2.0, Custom config: [7, 0, 0, 0, 40, 4, 191, 124, 49, 56, 60]
01:53:40: Disconnected.
01:53:48: File was selected, size: 85924 bytes
01:53:48: Count: 5371
01:53:50: Start DFU
01:53:50: Update error: TypeError: Cannot read property 'writeValue' of null

Причем после соединение появляются поля доп настроек и исчезают практически сразу.
 

topa_spb

New member
Вытащил батарейку, отложил, вернул подключился, mi home не работает так же, но пришел коннект web посмотрел настройки можно отправлять, но откатиться так и не получается.

03:13:57: Start DFU
03:14:13: Update error: NotSupportedError: GATT operation failed for unknown reason.
03:14:13: Disconnected.
 

topa_spb

New member
Вообщем методом проб и ошибок, понял, что проблема связана с интервалом обновлением данных, выставил 10 минут, откатил на родную, через mi home обновил до последней прошивки, да только к хабу теперь коннекта нет у него, теперь это просто блютуз станция погодная без возможности подключиться к хабу
 

pvvx

Активный участник сообщества
А с Mi Home custom прошивка не работает, но работает со всеми "Вумными домами" и с ESP32 без соединения - на считывании данных из маяков, которые при default настройках обновляются каждые 10 сек.
Mi Home читает данные с интервалом 10 минут и они зашифрованы bindkey, а когда вы смотрите показания в Mi Home батарейка выжирается или телефоном или шлюзом на соединении...
Custom прошивка может считать все ключи Mi Home и восстановить их, а затем можно вернуть оригинальную прошивку и она будет дальше работать в Mi Home.
Соединение может отваливаться при работе с древним адаптером BT4.0 в телефоне. Так-же бывают гнилые или совсем севшие батарейки CR2032, не способные отдавать стандартный для них ток. Но на маяк-рекламу их ещё хватает, но не на соединение...
 

pvvx

Активный участник сообщества
Соединение может отваливаться при работе с древним адаптером BT4.0 в телефоне. Так-же бывают гнилые или совсем севшие батарейки CR2032, не способные отдавать стандартный для них ток. Но на маяк-рекламу их ещё хватает, но не на начало соединения, когда опрашиваются все UUID... потом ток меньше чем при рекламе-маяках.
 

pvvx

Активный участник сообщества
Из-за сложностей выуживания bindkey у пользователей для Mi Home и за расточительное поведение с батарейкой, длительные интервалы между показаниями, требования соединения для стороннего ПО и настройки соединения с диким потреблением, совместимость с Mi Home не поддерживается.
 

pvvx

Активный участник сообщества
Вообщем методом проб и ошибок, понял, что проблема связана с интервалом обновлением данных, выставил 10 минут, откатил на родную, через mi home обновил до последней прошивки, да только к хабу теперь коннекта нет у него, теперь это просто блютуз станция погодная без возможности подключиться к хабу
Заново зарегистрируйте в Mi Home.
Теперь любой 'школьник' прошьет вам в термометр что захочет, т.к. прошивальщик ОТА есть у всех, а пароль на соединение вы можете поставить только в custom прошивке.
 

topa_spb

New member
Заново зарегистрируйте в Mi Home.
Теперь любой 'школьник' прошьет вам в термометр что захочет, т.к. прошивальщик ОТА есть у всех, а пароль на соединение вы можете поставить только в custom прошивке.
Ну убив пару часов так и не получилось восстановить работу датчика с Xiaomi Hub 3 данные обновляются только когда я открываю приложение Mi Home как будто свзять прямая, но при этом выводятся показатели как будто через хаб, вообщем получился носорог, хорошо у меня еще парочку таких, а этот теперь будет обычным датчиком.
 

pvvx

Активный участник сообщества
Ну убив пару часов так и не получилось восстановить работу датчика с Xiaomi Hub 3 данные обновляются только когда я открываю приложение Mi Home как будто свзять прямая, но при этом выводятся показатели как будто через хаб, вообщем получился носорог, хорошо у меня еще парочку таких, а этот теперь будет обычным датчиком.
Я эти операции делал более 20 раз для проверок всё ли правильно. Чтобы работал шлюз надо ткнуть его носом в mi-home и записать в одной комнате... Тогда сразу прирастет.
Но если поставите PIN-code и смените MAC - все кто знал это устройство прибалдят надолго, обычно до перезагрузки :)
 

topa_spb

New member
Я эти операции делал более 20 раз для проверок всё ли правильно. Чтобы работал шлюз надо ткнуть его носом в mi-home и записать в одной комнате... Тогда сразу прирастет.
Но если поставите PIN-code и смените MAC - все кто знал это устройство прибалдят надолго, обычно до перезагрузки :)
Ну я не пытаюсь как-то вас обвинить или доказать, просто говорю, что я перезагружал и сам датчик вынимал батарейку на долго, переподключал, переподключал шлюз, делал это в разных порядках, но не помогает, да в Mi Home показания есть на списки устройств (без шлюза там их нет, только когда в датчик заходишь), но открываешь сам датчик там сначала резво показывается то же что и в списки устройств, а потом обновляется на данные как на экране датчика, жму назад, там все так же аля 26 и 41, захожу в датчик в нем 24 и 52, спустя какое-то время он обновляет общие данные. Не знаю с чем связано, я откатывался на оригинальную прошивку много раз ошибок не было, да и в целом там накатывается заводская, а потом уже обновляется через mi home по поводу мак адреса тут ничего сказать не могу, ну пока так.
 

pvvx

Активный участник сообщества
Ну я не пытаюсь как-то вас обвинить или доказать, просто говорю, что я перезагружал и сам датчик вынимал батарейку на долго, переподключал, переподключал шлюз, делал это в разных порядках, но не помогает, да в Mi Home показания есть на списки устройств (без шлюза там их нет, только когда в датчик заходишь), но открываешь сам датчик там сначала резво показывается то же что и в списки устройств, а потом обновляется на данные как на экране датчика, жму назад, там все так же аля 26 и 41, захожу в датчик в нем 24 и 52, спустя какое-то время он обновляет общие данные. Не знаю с чем связано, я откатывался на оригинальную прошивку много раз ошибок не было, да и в целом там накатывается заводская, а потом уже обновляется через mi home по поводу мак адреса тут ничего сказать не могу, ну пока так.
Вытаскивание батарейки в 90% случаев бесполезно. И за 2 сек там всё разряжается полностью, т.к. Xiaomi пожадничала конденсаторов, а оставила пустые монтажные места под них...
Вы удаляли устройство из mi-home? А то программа пытается по старому MAC подсунуть старый bindkey и не соображает, что он сменился TelinkMiFlasher-ом.
 

topa_spb

New member
Вытаскивание батарейки в 90% случаев бесполезно. И за 2 сек там всё разряжается полностью, т.к. Xiaomi пожадничала конденсаторов, а оставила пустые монтажные места под них...
Вы удаляли устройство из mi-home? А то программа пытается по старому MAC подсунуть старый bindkey и не соображает, что он сменился TelinkMiFlasher-ом.
Конечно удалял, хаб резетил, я же говорю вроде сделал уже все возможные варианты =}
 

pvvx

Активный участник сообщества
Попробовал. Тормозит сервак xiaomi. 20 минут потребовалось тискать программу mi-home и датчик подключился к шлюзу.
 

pvvx

Активный участник сообщества
Это что-то... После прошивки на оригинал и удаления устройства в mi-home соединение происходило сразу, но кружок не замыкался. Потом, после нескольких выключений-включений на телефоне BT, mi-home вообще отказалась связываться с датчиком, но на нем горел значок связи... Полез в настройки BT - там соединенного устройства нет. Запустил NRF-Connect - там датчик сидит в bind устройствах! Т.е. mi-home повязала датчик но до своего сервака не достучалась и так всё и бросила. Удалил связь в NRF-Connect. Снова в mi-home... не может до конца пройти. И снова...наконец проскочило.
Лезем в шлюз - там датчика нема. Убывал mi-home, отключал всё что только можно - шлюз не видит новый датчик. Но с какой-то попытки манипуляций тыркания всего подряд в mi-home и включения выключения BT на телефоне она сказала - включите BT. Включил - показала значения. Отключил BT в телефоне и полез в шлюз - а там уже сидит новый датчик и всё ок.
Это непостижимая логика.
 

topa_spb

New member
Это что-то... После прошивки на оригинал и удаления устройства в mi-home соединение происходило сразу, но кружок не замыкался. Потом, после нескольких выключений-включений на телефоне BT, mi-home вообще отказалась связываться с датчиком, но на нем горел значок связи... Полез в настройки BT - там соединенного устройства нет. Запустил NRF-Connect - там датчик сидит в bind устройствах! Т.е. mi-home повязала датчик но до своего сервака не достучалась и так всё и бросила. Удалил связь в NRF-Connect. Снова в mi-home... не может до конца пройти. И снова...наконец проскочило.
Лезем в шлюз - там датчика нема. Убывал mi-home, отключал всё что только можно - шлюз не видит новый датчик. Но с какой-то попытки манипуляций тыркания всего подряд в mi-home и включения выключения BT на телефоне она сказала - включите BT. Включил - показала значения. Отключил BT в телефоне и полез в шлюз - а там уже сидит новый датчик и всё ок.
Это непостижимая логика.
А у вас шлюз какой?
 

topa_spb

New member
У меня ios выключил блютуз, зашел в Mi Home датчик сначала показывал старые данный и потом обновил на новые (в списки устройств), в виджете все еще показывает старую температуру и влажность. Ну вообще откат назад безболезненный не может быть это факт, стоит лучше об этом написать =}
 
Сверху Снизу