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

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

volaltd

Member
:) Даж не знаю плакать или смеяться...

Дело в том что первый заказанный термометр ехать до меня будет еще 2-3недели и тестить снифферы мне не на чем, поэтому я и не спешу лезти в BLE.
Проблема не в программной реализации со стороны Linux, а в том что совершенно не знаю инструментарий, т.е. что воткнуть в USB чтобы принимать с эфира пакеты. Худо-бедно догадался что для этого можно использовать UBIA, более того что в SDK в примерах есть что-то на эту тему. Сейчас потрачу пару часов на качнуть, установить, глянуть что там китайцы наворочали. В частности не совсем ясен процесс отладки, ваши вливалки годятся вроде бы как только готовые, отлаженные прошивки заливать. Поставить точку останова и глянуть состояния регистров и портов такое не позволяет, эмулятор они там на Эклипсе что-ли сделали. С VS Code это все как-то подружить можно?
Не совсем понятно что там такого 10-ть термометров постоянно могут слать чтобы HA не поспевал все это разгребать. Когда есть шлюз, то он успевает принимать, засылать в MQTT и HA справляется с таким потоком, а вот если без шлюза и без MQTT - завал будет? Окей, а в чем проблема вашего демона на C++ расширить чтобы он в MQTT пихал как это делает шлюз?

Боюсь у нас просто недопонимание возникло, причем по простейшим моментам.
 

pvvx

Активный участник сообщества
Дело в том что первый заказанный термометр ехать до меня будет еще 2-3недели и тестить снифферы мне не на чем, поэтому я и не спешу лезти в BLE.
Вокруг вас наверняка толпа BLE устройств.
Проблема не в программной реализации со стороны Linux, а в том что совершенно не знаю инструментарий, т.е. что воткнуть в USB чтобы принимать с эфира пакеты.
Или реальный CC2540 USB Dongle, но у меня такого нет. Есть только прошивка для подделки на модуле JDY-10 закупленных по 80 рупь...
Худо-бедно догадался что для этого можно использовать UBIA, более того что в SDK в примерах есть что-то на эту тему. Сейчас потрачу пару часов на качнуть, установить, глянуть что там китайцы наворочали. В частности не совсем ясен процесс отладки, ваши вливалки годятся вроде бы как только готовые, отлаженные прошивки заливать. Поставить точку останова и глянуть состояния регистров и портов такое не позволяет, эмулятор они там на Эклипсе что-ли сделали. С VS Code это все как-то подружить можно?
Сами разводите монстров.
Код к снифферу в OpenWRT написал в текстовом редакторе и на какой-то плате с OpenWRT странслировал...
Не совсем понятно что там такого 10-ть термометров постоянно могут слать чтобы HA не поспевал все это разгребать.
Обычно тормозит MQTT.
Когда есть шлюз, то он успевает принимать, засылать в MQTT и HA справляется с таким потоком, а вот если без шлюза и без MQTT - завал будет?
В шлюзе в MQTT данные обновляются раз в час.
Окей, а в чем проблема вашего демона на C++ расширить чтобы он в MQTT пихал как это делает шлюз?
Мне не нужен монстр MQTT.
С sniffer-а данные нужно разпарсить и пихнуть в свою базу, а к ней свой Web с редактором сценариев. Итого думаю выйдет на пару сотен килобайт и какой SoC на 200 МГц c 16 MB RAM справится с сотнями устройств.
К примеру в такой впихнуть:
Eport_Pro-EP10.jpg
 

pvvx

Активный участник сообщества
Да, но всё остальное, включая Web, базы и прочее - это уже будут конфиденциальные вещи, т.к. будут построены на уже отработанных вещах с коммерческих проектов от выпускаемых нашей фирмой пром. установок.
Какие-то тесты возможно кину в паблик...
 

pvvx

Активный участник сообщества
Аналогично подключается и CC2531 USB Dongle для ZigBee, но в данном случае мне проще слепить что на TLSR8253 в модуле TB-04/TB-03F или даже на самом термометре с TLSR825x...
Это как-то проще, чем искать куда влезет "HA" и какой SSD ей надо, чтобы дыру за месяц не протерла.
 

volaltd

Member
Так HA - это и есть sqlite + готовый web + редактор сценариев на yaml :) И это именно тот случай когда оптимальнее взять малину и не стараться на одной 8051 реализовать и печать термопринтером, и LCD, и сетку из нескольких терминалов, и FPGA по JTAG обновлять, и карточки читать и обмен данным через модем и DialUp. Потому как человеко-жизни выходят в разы дороже, чем даже x86 сервер для этого применить.

Вот жеж все уже есть: на JDY-10 и вашей прошивке собираем приемник BLE, из вашего-же Linux-сниффера читаем stdout и на питоне парсим, либо прямо с юсб ловим данные в питон, обновляем сразу состояние Sensor Entity в HA при получении данных с термометра, идентифицируя экземляры по MAC. MQTT у меня и не используется как-бы вообще. Единственное чего не доставало - формат обмена с CC2540 USB Dongle :)

Из всех Domotiz именно HA меньше всего умучивает SD карты.
Давайте уж я наобещаю кинуть в паблик интеграционный итог :)

PDF на 8266, 8253, 8251 все по 300страниц, SDK требует покопаться, если не использовать готовый USB CDC, а делать эмуляцию PL2303, то ой-ой, дебажить похоже только через отправку строчек в UART, боюсь ваша оценка в 2-3часа была сильно оптимистичной... Eclipse как IDE в сравнении с VS Code так себе. Эстимейт для новичика будет 2-3месяца точно.
 

pvvx

Активный участник сообщества
Так HA - это и есть sqlite + готовый web + редактор сценариев на yaml :) И это именно тот случай когда оптимальнее взять малину и не стараться на одной 8051 реализовать и печать термопринтером, и LCD, и сетку из нескольких терминалов, и FPGA по JTAG обновлять, и карточки читать и обмен данным через модем и DialUp. Потому как человеко-жизни выходят в разы дороже, чем даже x86 сервер для этого применить.
"Малина" не конкурент - оно жрет немерянно и требует очень много времени на установку с изучением "HA", отлавливание багов, переписывания всего с нуля для обеспечения резервирования и привода системы к рабочему варианту без перезагрузок и зависаний... т.е. пару лет ковыряться, а за это время уже все стандарты связи сменяться.
Вот жеж все уже есть: на JDY-10 и вашей прошивке собираем приемник BLE, из вашего-же Linux-сниффера читаем stdout и на питоне парсим, либо прямо с юсб ловим данные в питон, обновляем сразу состояние Sensor Entity в HA при получении данных с термометра, идентифицируя экземляры по MAC.
А зачем оно было выкинуто мной в паблик?
Чтобы вы написали что и так уже есть, да очень давно?
Из всех Domotiz именно HA меньше всего умучивает SD карты.
Две недели вместо одной?
PDF на 8266, 8253, 8251 все по 300страниц, SDK требует покопаться, если не использовать готовый USB CDC, а делать эмуляцию PL2303, то ой-ой, дебажить похоже только через отправку строчек в UART, боюсь ваша оценка в 2-3часа была сильно оптимистичной...
Я лет десять не включал отладки c показом кода и регистров CPU. Это не для человека, а для машины. Вы бы ещё предложили дырочки в перфокартах считать...
Eclipse как IDE в сравнении с VS Code так себе.
У VS Code своя лицензия и условия использования. Почитайте на досуге. Тем более она тормозит с раскраской когда набирается код. Для заторможенных может и пойдет... Отличий у VSC от Eclipse не наблюдается, кроме меньшего кол-ва поддерживаемых языков, плагинов и т.д. в VCS.
Эстимейт для новичика будет 2-3месяца точно.
Как-бы HA уже мурыжат давно и нифига нема... Какие ещё месяцы? Там годы :)
 

pvvx

Активный участник сообщества
Я кажется понял, по чему вы используете низкоуровневые отладчики.
Код у вас громадный, записать новый в чип быстро не можете... По этому ковыряетсь в том что есть...
printf("писать быстрее, чем понять в каком регистре в отладчике какая-то", переменная). А пошить новый код - это в среднем до 10 сек практически на всех современных чипах. Не успеваешь даже подумать, что там вписал в printf, который в пару мегабит вываливается...
Тем более на BLE чипах отладчики не работают - чип спит 99.9 времени, а интерфейс не обучили подхватывать его просыпания и усыпания...
 

pvvx

Активный участник сообщества
Переключение контекста, т.е. процесса (аналог vfork) у ядра Ryzen 7 на WSL около 83 мкс. i7-7820HK с оптимизированной Linux Mint - 67 мкс.
Если передавать по байту из процесса в процесс, то получаем предельную скорость порядка не более 15 килобайт в секунду. В "HA" этих пере-приключений тысячи на один байт.
 

volaltd

Member
У VS Code своя лицензия и условия использования. Почитайте на досуге. Тем более она тормозит с раскраской когда набирается код. Для заторможенных может и пойдет... Отличий у VSC от Eclipse не наблюдается, кроме меньшего кол-ва поддерживаемых языков, плагинов и т.д. в VCS.

И что же вас смущает в "You may use any number of copies of the software to develop and test your applications, including deployment within your internal corporate network." ?
 

volaltd

Member
Я кажется понял, по чему вы используете низкоуровневые отладчики.
Потому что в нашей деревне больший спрос на DevOps и Веб-программистов, мне гораздо больше пользы от единого редактора с подсветкой открывающихся и закрывающихся скобок, чем от RTT.
Вас вероятно с переключениями снова занесло в область промышленной электроники, мне же всего-лишь нужно чтобы велик в подвале от повышенной влажности не ржавел, при месяцах разработки затраты в разы превысят ценность от внедрения изделия.

Еще раз спасибо за решение с BLE!
 

pvvx

Активный участник сообщества
Потому что в нашей деревне больший спрос на DevOps и Веб-программистов, мне гораздо больше пользы от единого редактора с подсветкой открывающихся и закрывающихся скобок, чем от RTT.
Вас вероятно с переключениями снова занесло в область промышленной электроники, мне же всего-лишь нужно чтобы велик в подвале от повышенной влажности не ржавел, при месяцах разработки затраты в разы превысят ценность от внедрения изделия.
К DevOps низкоуровневая отладка отношения не имеет. Как раз правильная организация логов и прочей дури создает независимость от используемых чипов и их внутренних архитектур ALU.
Я вот так и не знаю есть ли у CPU TLSR регистры и сколько там шин к памяти и данным. И что там конкретно за архитектура у ALU - мипс/фипс или арм, или помесь. Только примерно, в части организации процесса загрузки кода и кэширования с Flash. И это никак не мешает работать с ними и их периферией.
Да и в любой организации ведущий делает только наброски и указывает направления, а не занимается притиркой и уборкой (помещения). На то есть сфера обслуживания - толпа леммингов.
А велики от ржавчины чистят неэффективные менеджеры и заботятся об этом "кулибины" (в худшем смысле проявлений).
И не стоит путать хобби и ваши желания выудить прибыль из пустого места.
 

pvvx

Активный участник сообщества
@volaltd - Ваша любимая VSCode преследует цели отработать на леммингах другой платный продукт, а не удовлетворить разнообразие решений с выработкой оптимума. Таких целей даже не ставится. В итоге у неё всегда позиция догоняющего.
 

pvvx

Активный участник сообщества
А теперь прочитайте внимательно лицензию и оцените на каком уровне установлена интеграция в DevOps вашей организации:

Вы не можете
  • реконструировать, декомпилировать или дизассемблировать программное обеспечение или иным образом пытаться получить исходный код программного обеспечения, за исключением случаев и исключительно в той степени, которая требуется условиями лицензирования третьей стороны, регулирующими использование определенных компонентов с открытым исходным кодом, которые могут быть включены в программное обеспечение;
  • удалять, минимизировать, блокировать или изменять любые уведомления Microsoft или ее поставщиков в программном обеспечении;
  • использовать программное обеспечение любым способом, противоречащим закону;
  • делиться, публиковать, сдавать в аренду или сдавать программное обеспечение либо предоставлять программное обеспечение как отдельное предложение для использования другими лицами.
Т.е. запрещено встраивание стыковки с вашей системой DevOps – разрешено исключительно через согласование с Микрософт и ожидание от них решений. Т.е. полная зависимость от иглы.
В итоге и ваш продукт такой-же закомплексованный и не имеет никакой ценности, т.к. типовой.
 

pvvx

Активный участник сообщества
Собрал ESPHome, прописав в него всего 3 датчика.
Пропуск пакетов катастрофический:
1618240087619.png
Шаг, смена данных в рекламе у датчиков 10 секунд -> за пол часа должно быть по 180 точек на каждом графике.

Судя по debug логу, это чудо ESPHome, за пол часа смогло принять всего менее 1000 реклам от всех окружающих BLE устройств, которые находятся поблизости.
А их много - обычный USB-BT брелок в компе или Android телефон говорит, что список за несколько десятков всегда есть.

1000 реклам - за пол часа это 1800 секунд, т.е. ESP32 в ESPHome может принять и обработать всего половику BLE "рекламы" в секунду :)
 

volaltd

Member
pvxx,

Отладка мне бы пригодилась для реализации эмуляции PL2303 на TLSR, уж извините USB в режиме CDC и других, привиденных в SDK не устраивает. В нерутованной мобилке с Android такие VID PID думаю последовательный порт не организуют и через терминалку слать байтики не позволят. Предпочитаю ставить точку останова и смотреть все необходимые мне переменные, структуры, экземляры классов и использую такой подход что на C# под веб, что на C/C++ под STM32. Регистры имелись ввиду переферийные, а не процессорные если что...

Вся VS Code в исходниках лежит на гитхабе: https://github.com/Microsoft/vscode
Ничего реверсить не нужно, интеграция с внешними средствами осуществляется через плагины либо лежащие в папке .vscode конфиги на JSON, в частности кросс-компиляция с помощью gcc и отладка через gdb является стандартным случаем. ARM поддерживается. VS Code - это вообще по сути мощный текстовый редактор, мало где есть мультистрочное редактирование к примеру, структуры заполнять - милое дело ей.

Все эти стандартные лозунги что кто-то на ком-то что-то оттачивает, кто-то прячет коммерцию - не более чем стадия отрицания нового у вас. Дальше идет стадия принятия в которой вы таки дойдете посмотреть что такое VS Code и с большой вероятностью оцените. Можно Win, Mac, Linux и все будет 1 в 1.

На Eclipse сделан SDK и разработка под QNX, имел возможность поработать ранее.

Жить с разработки под embedded я закончил лет так 15-ть назад, за RTT спасибо, но есть на что потратить время с больше пользой.
 

volaltd

Member
Судя по debug логу, это чудо ESPHome, за пол часа смогло принять всего менее 1000 реклам от всех окружающих BLE устройств, которые находятся поблизости.
А их много - обычный USB-BT брелок в компе или Android телефон говорит, что список за несколько десятков всегда есть.

1000 реклам - за пол часа это 1800 секунд, т.е. ESP32 в ESPHome может принять и обработать всего половику BLE "рекламы" в секунду :)
Лично меня больше беспокоит что JDY-10 с PCB антенной из распределительного щитка в коридоре через пару стенок может иметь очень не устойчивый прием, а USB модуль с CC2540 и внешней антеной стоит уже умножить на 6 на алишке.
 
Сверху Снизу