Мега в качестве агрегатора с разных серверов
- Войдите на сайт для отправки комментариев
Пт, 30/11/2018 - 01:28
Здравствуйте уважаемые коллеги.
ввиду невозможности редактирования стартового сообщения продолжу далее
Здравствуйте уважаемые коллеги.
ввиду невозможности редактирования стартового сообщения продолжу далее
У меня есть 1-2-3-много серверов , поднятых на esp8266, которые отдают состояние датчиков в csv строке каждый.
Неужели для каждого из них надо поднимать
char
server1[] =
"192.168.35.1"
;
char
server2[] =
"192.168.35.2"
;
char
server3[] =
"192.168.35.3"
;
if
(client1.connect(server1, 80)).....
if
(client2.connect(server2, 80)).....
if
(client3.connect(server3, 80)).....
if
(client1.available()) .....
if
(client2.available()) .....
if
(client3.available()) .....
Плодить объекты client не надо. Достаточно одному подсовывать в connect() разные адреса.
два ключевых слова - массивы и циклв
А почему не наоборот? ESP собрала данные и скидывает на один единственный сервер, как в народном мониторинге например
А у Вас нет ли примера , как подсовывать?
я конечно же попробовал по-очереди кидать запрос в один объект. Отрабатывает только первый, что закономерно, так как закинутый запрос потом некоторое время ждет отклика.
Поразмышлял не у копьютера, получилась такая вот логика...
Видимо надо кидать запрос к певому серверу , выставлять флаг и ждать ответа от него, крутясь в луупе, по приходу обрабатывать и сбрасывать флаг. Так как у меня все запускается псевдопроцессами изитаймера, то раз в секунду например в псевдопроцессе анализировать, был ли обработан отклик и соответственно запрашивать следующий или перезапрашивать текущий.
ua6em- мне нужна возможность посмотреть каждую ESP по-отдельности.
ua6em- мне нужна возможность посмотреть каждую ESP по-отдельности.
всё равно не понял, каждая ESP имеет свой ID в базе, по нему и смотреть можно
Возможность зайти на нее браузером напрямую, без агрегатора необходима.
Возможность зайти на нее браузером напрямую, без агрегатора необходима.
и в чем противоречие?
Если вам нужны одновременные коннекты, то, конечно, без массива объектов client не обойтись - это так. Только можно поизящней их загнать в массив и при открытии нового соединения смотреть, какой из них свободен. Но тут уже не 10 строчек - более замороченная логика выходить.
нуууу... пока как то так, пока без обработки таймаутов, но уже с перебором серверов
наверно надо городить очередь статусов с учетом таймаутов в массиве структур.
Можно так. Или сразу массив IPAddress завести. println() его умеет печатать. Али в массиве структур держать с дополнительными параметрами соединения - портом, логином, паролем...
Да, можно. Спасибо. Еоот массив ip пока для пробы. Но там вся подсетка моя и последняя триада совпадает с номером машины и счетчиком вызова. Потому массива дя ip не будет. Он станет вычисляться в порядке очередности вызовов. Пока придумываю кольцевой массив статусов и способы его перебора, обновления и использования. И для полноценного тестирования (раскопал еще две esp8266-12) спаяю еще два модуля. Четыре это уже можно отлаживать.
Кстати вопрос немного не по теме, но рядом. Глюк кодировки передаваемой иде при компилляции.
Слетает кодировка вывода в браузер. В преамбуле html стоит utf-8. Однако после открытия программы и компилляции прут крякозябры. Но, если всю программу закинуть в notepad++ и прогнать в другую кодировки и обратнов utf, копипастнуть обратно в иде, то до следующего открытия в иде любой программы все отображается правильно.
может быть это где то в настройках лечится?
Уважаемые коллеги! Извитеее что к Вам абращаюсь. Отзовитесь плз по кодировкам. Оно конечно криво-обходится, но может быть это только я такой "криворуко-косоглазый" ?
Лабел 1: Еще раз... загружаю исходник
компиллирую
сервер отдает в веб крякозябры. преамбула такая между start и end впихивую что то непринципиальное
копипастю весь код в нотепад ++ там перекодирую в анси и снова в ютф
копипастю в иде
работаю нормально с правильным отображением в (как мимнимум) в хроме, компиллирую много раз ...
новая загрузка любого кода из файла в новое окно и снова на Лабел 1 :(
Я бы ответил, но русские символы не сую в прошивки, так что не в курсе.
Лабел 1: Еще раз... загружаю исходник
компиллирую
сервер отдает в веб крякозябры. преамбула такая между start и end впихивую что то непринципиальное
копипастю весь код в нотепад ++ там перекодирую в анси и снова в ютф
копипастю в иде
работаю нормально с правильным отображением в (как мимнимум) в хроме, компиллирую много раз ...
в общем опрос как минимум 4-х модулей происходит стабильно.
данные с модулей отдаются в csv из трех показателей, на агрегаторе пасятся и распихиваются в массив структур.
Также получилось на одной меге поднять сервер, отдающий страницу агрегированных данных с модулей из этого массива, клиента NTP, запись в лог на SF, выгрузку лога и его обнуление, но это уже другая история.
По кодировке выяснилось, что IDE периодически меняет кодировку на UTF-9 (BOM), перекодирование в ноте++ этот глюк исправляет.
и еще одна особенность. если в программе используется обращение по UDP к ntp серверам, то перед запросом необходимо гасить клиент принудительно client.stop();