А если знаешь где роутер стоит - то чего направленную антенну не ставишь? Там дофига + дБ к усилению. Может и мудрить с кодом не понадобиться.
Предчувствовал вопрос про направленную антенну: много металлоконструкций, много ЖБИ столбов, балок и т. д. Трудно найти в моих условиях место с прямой видимостью. А еще антенну случайно могут сдвинуть/уронить/сломать. А ведь требуется удаленный мониторинг 24/7, без участия специалистов. Давайте закроем вопрос со связью? Я уже ответил на него в самом первом сообщении. Прошу поделиться идеями и опытом по коду, и желательно с примерами.
Нет волшебного кода, избавляющего от разрывов связи (кроме клинических случаев).
Есть алгоритмы - уменьшить накладные расходы, чтобы быстрее пролетало в момент нормальной приемо-передачи, организовать буферизацию.
Да ты что?! А в случае всенаправленой антенны как сигнал идёт? Змейкой? Нет, он конечно же может переотражаться от зданий и сооружений, но он приходит и уходит с одной четкой стороны. А антенну можно взять с более «широким углом», тогда и ветер и белье на веревке к мачте привязанное не помеха. Но это если тебе задачу связи решить нужно. А если про код просто «попизд#ть», то:
Да, мы уже выяснили, что буферизации быть. Вы знакомы с какими-нибудь успешными примерами, которые можно проецировать на мою задачу?
Можете просто не отвечать в тред, если вы сегодня не в настроении, вас никто не заставляет
Мне неизвестна реальная радиообстановка в вашем лабиринте, поэтому какие-то примеры прикладывать к ней смысла нет. Как малой кровью выйти из сложившейся ситуации - я написал. Возможно, что у роутера придётся изобразить бридж espnow-ethernet, если принципиально постить данные через веб-сервер.
В целом же это больше эксперимент.
Вы меня неправильно поняли. Я про примеры реализации буфера, а вы снова про связь.
Реализация - FIFO-очередь. Наврядли что-то иное сюда приложить можно. В рамках C++ ардуинных или связный список, пока не кончится память или массив структур.
Отлично, почитаю про кольцевой FIFO. Спасибо.
Вспомнил про интересную инфу о espnow.
Кстати - мало того, что он сам ретрейны устраивает, так ещё и в коллбэк приносит результат доставки. По нему можно определить - выкидывать элемент из очереди или нет.
Я, когда с ним экспериментировал, юзал с pcb антенной через две межкомнатные жзб стены в панельке. Да ещё и кастрюлю на передатчик одевал.
Ничего, пробивало. С потерями, но без ощутимых перерывов в вещании.
Интересный опыт, поизучаю. Спасибо!
А какой размер пакета передаваемой информации ?У меня был пакет в 32 байта. Если пинг с сервером не проходил, то данные писались во внешнюю EEprom ку. 512 К хватало. Как только появлялся пинг, то передавал килобайтными пакетами.
Где-то 64 байта. Да в принципе можно и на флешку модуля писать, у меня она там аж на 16 Мб. Спасибо за ответ.
аналогично сделал, три года ни одного сбоя, везёт, только я POST использую
Вот вам накладные расходы на 10 байт информации, переданных через GET. Считать свои данные - это, конечно, интересно, но нужно учитывать и то, чем они обмазываются.
root@video:~# curl -v http://127.0.0.1/c/empty.html?data=1234567890
* Trying 127.0.0.1:80...
* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET /c/empty.html?data=1234567890 HTTP/1.1
> Host: 127.0.0.1
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: nginx/1.18.0
< Date: Thu, 01 Dec 2022 14:46:06 GMT
< Content-Type: text/html
< Content-Length: 0
< Last-Modified: Thu, 01 Dec 2022 14:45:08 GMT
< Connection: keep-alive
< ETag: "6388bdf4-0"
< Accept-Ranges: bytes
<