Алексей
Но каждая задача, крутится в своём потоке.
Алексей
Ладно, поток это наверное немного не то. Процесс.
Алексей
:)
Алексей
У потока нет своего стека и памяти.
CRM
Благодарю за развёрнутый ответ
чем вас не устраивает ESPAsyncWebServer, работает асинхроно.
CRM
Ни чем, я не натыкался на него
https://github.com/me-no-dev/ESPAsyncWebServer
CRM
там в составе есть вебсокет,
ya
https://github.com/me-no-dev/ESPAsyncWebServer
Спасибо вечером гляну
EDUARD
Как определить что устройство на связи используя mqtt
Andy
Как определить что устройство на связи используя mqtt
Наловить сетевых пакетов и проанализировать
EDUARD
Наловить сетевых пакетов и проанализировать
нет нужен штатный способ возможно аналог ping
Александр
Как определить что устройство на связи используя mqtt
1. устройство периодически шлет сообщение в топик, keepalive 2. устройство подписывается на топик, при запросе отвечает
Andy
"Штатный способ" для какого инструмента? Для брокера? Для уровня IP?
Mr.Mait
Как определить что устройство на связи используя mqtt
Можно настроить keepAlive и самое главное will message. Например ставишь keepAlive 5 секунд, топик will /devices/offline, а сообщение допустим id устройства. Когда связь обрывается, брокер видит что в течение 5 секунд не было ни пинга, ни сообщений, то брокер пишет прощальное сообщение в топик /devices/offline с сообщением. Удобно очень
Mr.Mait
Keep alive работает так: если устройство долго не шлет сообщение брокеру, то внутри библиотеки у устройства делается пинг до брокера, обнуляя таймер keep alive. Самому руками все это не надо разруливать.
Влад RZ6AT
Подскажите, как в ЕСП32 поменять RTC_FAST_CLK с 8,5 мГц по умолчанию на 10 мГц от кварца 40 мГц, делённое на 4? Гугл не знает...
Влад RZ6AT
Уже нашёл. rtc_clk_fast_freq_set(RTC_FAST_FREQ_XTALD4);
Александр
Всем привет, можно ли для выхода из deep sleep задать два условия пробуждения: по таймеру и по сенсорному пину? По отдельности все работает, если указываю оба условия (esp_sleep_enable_touchpad_wakeup(); и esp_sleep_enable_timer_wakeup() просыпается только по таймеру, на сенсоры не реагирует. Espressif пишет, что комбинировать можно, но примеров не встречал.
Куда выезжаем?
Satoshi
Да кто все эти люди
Ilnar
Да кто все эти люди
Мечтуны похоже🤔😊
alexcher
Как повысить перфу на SHA-256 хэшированиях мелких кусков (по 200 байт примерно)? У mbedtls огромный оверхед, и после легкого ручного инлайна его функций, при хэшировании 256 байт получился прирост производительности в 1.5 раза, а если инлайнить агрессивнее, чувствую, можно и раза в 2-3 поднять перфу
alexcher
Стоит ли вот так инлайнить функции, или это может где-то навредить, а-ля при обновлении сдк и мбедтлс, при смене сдк с есп32 на есп8266?
alexcher
И можно ли как-то компиль заставить это наинлайнить, при том, что официально clang еще не поддерживается, а тред про разрешение LTO для компиляции под есп закрыт с "ну, мы подумаем"
alexcher
Как повысить перфу на SHA-256 хэшированиях мелких кусков (по 200 байт примерно)? У mbedtls огромный оверхед, и после легкого ручного инлайна его функций, при хэшировании 256 байт получился прирост производительности в 1.5 раза, а если инлайнить агрессивнее, чувствую, можно и раза в 2-3 поднять перфу
И да, на 64 байтах оверхед настолько огромный, что libsodium без аппаратной поддержки SHA-256 отрабатывает быстрее mbedtls варианта (с аппаратным ускорением под esp32), и только немногим медленнее моего варианта с легким инлайном
alexcher
И вот как выглядит обычный mbedtls код для хэширования, и мой, с "легким инлайном" где просто вызовы виртуальных методов (хранящихся в ctx) зарезолвлены мной, ручками
alexcher
Mr.Mait
это да, но как получить список активных по этому кипэлайву я так и не нашёл
Хм. Интересный вопрос. Я бы сделал так. Когда устройство подключается к брокеру, то один раз публикует в топик /status/device-id сообщение "1" с Retain. При этом на этом же устройстве настроить Will в тот же топик /status/device-id с сообщением "0" и тоже с Retain. Что в итоге. Когда ты подписываешься на топик /status/# , то получишь все последние сообщения от устройств и можно определить кто сейчас онлайн, а кто нет. А дальше уже программно разруливать кто онлайн, а кто нет. Например завести какой нибудь массив и менять в статусы когда устройство онлайн или нет. Если закрыть программу и открыть, то снова получишь все последние статусы когда подпишешься на топик /status/#
Ruslan
Я сделал пингом и держу базу в редиске
Mr.Mait
Я сделал пингом и держу базу в редиске
Тут фантазия программиста. Я просто ленив что-то делать, решил глянуть изнутри как работает mqtt, там же и узнал про keep alive и то что когда сообщения не публикуются, устройство само пингует к брокеру, чтоб брокер знал что подписчик жив. Тут кстати есть статья http://www.steves-internet-guide.com/mqtt-keep-alive-by-example/
Евгений
Dr Zlo
А просто разгружает проц, бы он мог чем-то ещё заняться
alexcher
Аппаратное ускорение обычно не делает быстрее, хехе
оно делает быстрее, кстати, еще и как, но мбедтлс тонет в собственных абстракциях делая несколько занулений подряд и тонну индиректов
Mr.Mait
Про will не понял, поясни
Last will - типа последнего завещания. Перед тем как коннектится к брокеру, ты можешь у клиента назначить особое сообщение, когда ты теряешь связь. Т.е. назначаешь will топик, will сообщение и возможно если надо, еще и will retain. Потом подключаешься к брокеру, брокер запоминает твое will сообщение. Когда у клиента нет интернета и у брокера срабатывает таймаут keep alive, то брокер шлет это последнее "завещание" клиента в нужный топик с нужным сообщением, какое указал клиент. https://www.hivemq.com/blog/mqtt-essentials-part-9-last-will-and-testament/ У колег бывало путаница с retain и cleanSession. Retain позволяет у брокера в топике сохранить последнее сообщение клиента. Т.е. каждый раз когда ты подписываешься к топику, то всегда гарантировано получаешь последнее сообщение клиента. А вот если не сделать cleanSession, то при подписке к топику, ты получишь пачку старых сообщений. Я если честно, для удобства всегда ставлю флаг очики сессии перед тем как коннектится к брокеру
alexcher
Аппаратное ускорение обычно не делает быстрее, хехе
8.9 секунд на софтварном содиуме против 2.3 секунд на хардварном мбедтлс, хэширование 16536 байт 10'000 раз, ша256
Lucifer
Всем привет. Есть тут пользователи macos? Ни у кого CubeIDE не завалялся?
Евгений
раньше вообще чудеса происходили, я на 486dx2 с 4 мегабайтами склероза речь распознавал и синтезировал )
Мажор какой... Целых 4 мб! Я в 96-м делал автоматический обзвон клиентов с информацией об их задолженности - 486 на 1мб + мопед.
romanetz
Т.е. он способен на шифрование всего трафика без замедления его
Indr1x
да, какие то сказки simm по 512кб что ли :), они от 4х начинались
Ruslan
Мажор какой... Целых 4 мб! Я в 96-м делал автоматический обзвон клиентов с информацией об их задолженности - 486 на 1мб + мопед.
В 96 у меня не было компа вообще, в 97 появился 386-й, правда сразу с 4 мегами ОЗУ (вроде, п не помню)
Serjio
А как же спектрум?
Demondor
А как же спектрум?
"Специалист" из "моделиста конструктора".
Евгений
А как же спектрум?
Ну к примеру я тот самый человек, который спектрумы только видел, а сам на них никогда не работал. Потому что когда они появились, у меня на выбор были ЕС1022 или IBM PC XT. В дневную смену усиленно работали на ес, а в ночную рубились на рсшке.
Dr_Raider
"Специалист" из "моделиста конструктора".
Это прям отдельная эпоха, вспоминаю с удовольствием, перепробовал все, от Радио86рк до всех модификаций спектрума, последняя версия была с ide и флопиком
Demondor
Это прям отдельная эпоха, вспоминаю с удовольствием, перепробовал все, от Радио86рк до всех модификаций спектрума, последняя версия была с ide и флопиком
Сначала на червя, потом плавно переходим на блесну, а потом уж... другие способы ловли. Сначала "Специалист", потом Спектрум "Краснодар", потом "Ленинград 128" и плавный переход на amd к6-2
Dr_Raider
Бля...как вы про червя то завернули...пойти спаять чтоли, гдето видел ленинградку продавали. 😂 Кассетник у меня есть...
Demondor
Бля...как вы про червя то завернули...пойти спаять чтоли, гдето видел ленинградку продавали. 😂 Кассетник у меня есть...
Можно на stm32f407 (распространенная black board), собрать эмулятор. Готовых вариаций вагон.
Игорь
Радио-86РК, "Орион", все "Спектрумы", от классики до "Profi" с CP/M и 1Мб ОЗУ. Весёлые времена, стопки дискет, ассемблер ВМ80, Z80 :)
Andrei
Можно на stm32f407 (распространенная black board), собрать эмулятор. Готовых вариаций вагон.
давайте от темы не отходить, на ЕСП32 платки по 7 долларов продают с ps/2 и vga и на гите эмулятор где то видел )
Demondor
О ципсо вылезло.
О ципсо вылезло.
Да скорее всего в рандоме когда нажал переслать то выбрал группу. Уже не первый раз замечаю.
alexcher
80 мегабайт в секунду почти, ну неслабо
Да, но там очень и очень большой оверхед, который я пытаюсь уменьшить
alexcher
На что?
На вызов функций хэширования у того же мбедтлс
romanetz
Ну так напрямую вызывайте
alexcher
Это слабо проявляется при хэшировании больших кусков данных, а вот для мелких...
alexcher
Ну так напрямую вызывайте
А что значит напрямую
romanetz
esp-idf дёргайте
alexcher
esp-idf дёргайте
То есть апи для хардварного ша2?
Andrey
Сколько сколько?
16 мег. 4 планки по 4мб, 30-пиновые.
16 мег. 4 планки по 4мб, 30-пиновые.
А как ты их юзал? Насколько я помню в 386 защищенный режим был какой-то хуевенький
Andrey
а так все как обычно. Himem.sys и Win 3.1
alexcher
Да, но там очень и очень большой оверхед, который я пытаюсь уменьшить
Например, идет вызов calloc() внутри которого bzero(), сразу после этого мемсет нулями, а после этого установка всех полей аллокнутой структуры ручками, кроме одного
alexcher
То есть 2 зануления там вообще по приколу, и не нужны
это в 286 так было. 386 уже сильно лучше стал
Ну ладно. У меня такой объем был только с 486-ым.
Andrey
Ну ладно. У меня такой объем был только с 486-ым.
когда я дорос до 486, стало еще больше, и пришла NT 4...
alexcher
А вызов каллока не нужен, если не использовать полиморфный объект хэширования из мбедтлс с своими виртуальными функциями, которые вообще не понятно для чего есть