Max
Он не гарантирует, что совсем никаких оптимизацией нет. Но он гарантирует, что все записи сделанные под мутексом в одном потоке, будут видны в другом. (я даже доказал это ссылками на memory model). Что касается оптимизаций: игры с компилятором в "угадай, что оптимизируется" никуда не приводят, потому что вы никогда не можете знать все оптимизации, которые умеет компилятор. В стандарте написано, что может вернуть чтение переменной, и при каких условиях оно гарантированно может вернуть только одно "последнее" записанное значение. Этим и надо пользоваться, а думать, что компилятор оптимизирует - это уже гадание.
во-первых у нас тут не stdc++, а bare metal С. во-вторых ничего "взятие семафора в РТОС" не гарантирует, кроме как того, что написано в апи к этому РТОС. во-третьих https://en.cppreference.com/w/c/language/volatile (читаем про observable side effects). happens-before тут ни к чему
Max
хз как там в плюсах с 11го стандарта и далее, но в С модель строго однопоточная. компилятор не понимал, не понимает, и не будет понимать что такое потоки
Max
Вот про гарантии семафора в RTOS - это открытый вопрос. Очень хотелось бы, чтобы там гарантировался synchronizes-with.
synchronized-with не существует как принципа, в Си. откуда ему что-то там гарантировать?
Just a
synchronized-with не существует как принципа, в Си. откуда ему что-то там гарантировать?
В C не существует. А вот я использую RTOS из кода на C++17, и мне бы хотелось, чтобы в нём такая гарантия была при использовании FreeRTOS.
Max
В C не существует. А вот я использую RTOS из кода на C++17, и мне бы хотелось, чтобы в нём такая гарантия была при использовании FreeRTOS.
не будет. и я против. FreeRTOS на С и пускай такой и будет. надо гарантии - пилите плз порт std под FreeRTOS, сообщите мне, я радостью воспользуюсь.
Just a
не будет. и я против. FreeRTOS на С и пускай такой и будет. надо гарантии - пилите плз порт std под FreeRTOS, сообщите мне, я радостью воспользуюсь.
В тулчеине для esp32 есть std::mutex и даже std::thread, работающие поверх pthreads, которые в свою очередь поверх FreeRTOS. Слой совместимости с pthreads вот: https://github.com/espressif/esp-idf/blob/master/components/pthread/pthread.c . И забавно, что, в функциях блокировок/разблокировок никаких синхронизирующих действий, кроме взятия/освобождения семафора, там не делается. Так что, возможно, что и семафор FreeRTOS де-факто даёт такие гарантии.
Max
вот кстати, не очень хороший код для демонстрации: https://godbolt.org/z/4djTG6cjP кстати, камень в мою сторону - если таки инициализировать поток (на none-eabi pthread_create() нет, на x86 видно), то С "понимает", что коллбек дернут, volatile не нужен.
Just a
не ожидал, что С++ спортирован на esp32)
На esp32 с этим всё замечательно. А вот на esp8266 у меня не удалось использовать даже std::optional.
Max
На esp32 с этим всё замечательно. А вот на esp8266 у меня не удалось использовать даже std::optional.
помоему на esp8266 esp-idf не портанут, или там какой-то форк есть?
Max
когда-то давно задавался вопросом, пришлось использовать куски IDF, с весьма печальным результатом. остановился на использовании 8266 как модема
Just a
помоему на esp8266 esp-idf не портанут, или там какой-то форк есть?
Не знаю, я всё же решил для себя использовать esp32, для DIY можно заплатить дополнительные $1.5, чтобы программировать было более приятно 😁
Иосиф Давидович
Доброй ночи. Посоветуйте девборд esp32. Нужна плата с ufl и 2 ADC как можно меньшего размера.
Юрий
Доброй ночи. Посоветуйте девборд esp32. Нужна плата с ufl и 2 ADC как можно меньшего размера.
https://cdn.shopify.com/s/files/1/0122/7558/0986/products/product-image-1122515918_369_1024x1024.jpg?v=1588660846 В таком форм факторе, есть ещё несколько похожих вариантов.
Юрий
А, ufl, я подумал это что-то из периферии😁, тогда даже не знаю, модуль с камерой идёт с ними, но он не такой удобный
Иосиф Давидович
Спасибо большое. По-ходу проще под себя девборду развести.
Юрий
Если важен размер, и нужно мало ног, то pico d4, я вчера кидал фото
Юрий
Вот ещё пушка, можно разъем допаять https://ae04.alicdn.com/kf/H540f95ea0c88466eb35130f6fb964ba5A/TTGO-T7-V1-5-Mini32-ESP32-WROVER-B-PSRAM-Wi-Fi-Bluetooth.jpg
Alians
Добрый, кто что скажет, что кроме MQTT можно использовать для датчиков без статического ip? Не то чтоб он мне не нравился но вдруг ещё есть какие-то практики передачи данных?
Alians
Ну я имел ввиду статику на роутере.
Max
К этому тоже не имеет отношения
Max
Отправлять данные можно хоть по UDP, но популярнее всего MQTT. Либо кастомные протоколы. Есть ещё CoAP.
Max
Но ничего из этого не имеет отношения к статическому или динамическому айпи
Alians
Ну тогда перефразирую вопрос: каким самым простым способом получать удалённо данные с датчиков если нет белого статического ip на роутере к которому они подключенны? 😊
🤙🏻 ℙ𝔸𝕍𝔼𝕃
датчик - сервер - клиент - Датчик открывает соединение до сервера и держит открытым - Клиент справшивает у сервера - Сервер у датчика - Отдает клиенту
Denisio
да, или просто раз в N секунд-минут высирает данные на сервер
Denisio
ddns как вариант
если датчик на GPRS/Edge - у него может не быть белого IP
Denisio
мобильные клиенты в 90% за NAT
Denisio
зачем, если выше написано решение
Y
Либо сервер на vps со статикой
Alians
Ну вобщем бесплатный mqtt сервер рулит😁
Andy
Ну тогда перефразирую вопрос: каким самым простым способом получать удалённо данные с датчиков если нет белого статического ip на роутере к которому они подключенны? 😊
Раз уж начали с MQTT, то сделаю допущения: 1 Датчик простой и не много данных отправляет (не камера к примеру) 2 Датчик не является сервером Поэтому любой протокол позволяющий подключится к серверу и отправить данные
Alians
Esp8266 с термометром и реле. В лесу. Без компа. Только микротик под боком.
Andy
Esp8266 с термометром и реле. В лесу. Без компа. Только микротик под боком.
Вам доступны любые протоколы выше транспортного уровня
Alians
Ну у меня скорее вопрос не по протоколу, а по реализации без собственного сервера. Есть несколько бесплатных учёток на mqtt серверах. Но вдруг есть варианты ещё. Видимо нет. Остается ждать ipv6 😔
Denisio
вот да, чотам ещо не завезли ipv6 в esp32 ?
Alians
Его ещё не завезли моему провайдеру вот это проблема.
Alians
А vpn через роутер? И с другой стороны всеровно нужен или сервер или белая статика
w
да, или просто раз в N секунд-минут высирает данные на сервер
150р стоит виртуалка, заодно впн можно поднять. Дергать значением датчика php скрипт, который прокладет в базу с меткой времени. А там и вебморду нарисовать с графиками и выборкой можно
w
Либо тупо хостинг самый дешёвый с базой
w
И не волнует что там за адрес, какой нат - ничего не волнует
w
Я так есп32кам шлю фотки с принтера, таймлапс собирается на сервере и галерея есть
Y
Я так есп32кам шлю фотки с принтера, таймлапс собирается на сервере и галерея есть
Подскажите, для чего таймлапс? Просто интересно в каких целях используют
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Годно
Alians
Что это за доминошки печатаются?
C
господа, подскажите в каком доке найти references на этот таймер?
C
в esp8266_non_os_sdk_api_reference_en.pdf не нашел ничего подобного
🤙🏻 ℙ𝔸𝕍𝔼𝕃
А прост погуглить?
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Еще как вариант в саму либу заглянуть 💁
Max
Либо бутстрап сервер. Но я бы остановился на DNS ddns тут уже советовали, ниже, я смотрю
Max
Перечитал дискуссию. Делать датчик сервером, который должен принимать подключение - изврат, простите. Это датчик должен инициировать подключение к серверу, а не наоборот Иначе упираемся в NAT и все костыли перебора этих датчиков
Max
Это ж не модбас какой-то
C
Еще как вариант в саму либу заглянуть 💁
точняк, нашел. я чет сразу не допёр, что это внешняя либа. я думал, что это сдк-шная штука
Indr1x
Ну тогда перефразирую вопрос: каким самым простым способом получать удалённо данные с датчиков если нет белого статического ip на роутере к которому они подключенны? 😊
не понятно куда тут притянут белый ip руотера. шлите данные с датчиков в облако\на ваш сервер. зачем вам стучаться к самим датчикам то
CRM
Особенно непонятно накуя градусник с реле в лесу.
Гораздо лучше в лесу дрова, огонь и еда😃
Alians
не понятно куда тут притянут белый ip руотера. шлите данные с датчиков в облако\на ваш сервер. зачем вам стучаться к самим датчикам то
Странно что не понятно. Всё ж логично. Есть датчик на esp и я с телефона хочу смотреть температуру. И самый простой вариант зайти на вебморду по ip.
Alians
Особенно непонятно накуя градусник с реле в лесу.
Мой градусник куда хочу туда и ставлю.
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Странно что не понятно. Всё ж логично. Есть датчик на esp и я с телефона хочу смотреть температуру. И самый простой вариант зайти на вебморду по ip.
Нет это не самый просотй вариант, а если с телефона, то мм на накатить прошивку чтобы он с homeassistant соединился?
Alians
Опять же сервер нам нужен тогда.
Indr1x
Странно что не понятно. Всё ж логично. Есть датчик на esp и я с телефона хочу смотреть температуру. И самый простой вариант зайти на вебморду по ip.
Отпавляйте данные на народный мониторинг, openweathermap, thingspeak или другое облако и смотрите с телефона вдоволь
Alians
Да но там ещё и реле есть. И им надо щёлкать.
🤙🏻 ℙ𝔸𝕍𝔼𝕃
🤙🏻 ℙ𝔸𝕍𝔼𝕃
У меня все заведено через HAP, и статических ip нет, все смотрится и щелкается в любое время откуда угодно💁
Alians
Хаба? Можно чуть подробнее или ссылку на почитать?
🤙🏻 ℙ𝔸𝕍𝔼𝕃
Хаба? Можно чуть подробнее или ссылку на почитать?
https://aliexpress.ru/af/homeassistant-hub.html?d=y&origin=n&SearchText=homeassistant+hub&catId=0&initiative_id=SB_20210908044915
Alians
Ссылка битая но я понял что смотреть. Спасибо.