• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 датчик сначала показывал старые данный и потом обновил на новые (в списки устройств), в виджете все еще показывает старую температуру и влажность. Ну вообще откат назад безболезненный не может быть это факт, стоит лучше об этом написать =}
 
Сверху Снизу