Зоопарк из esp - как всех загнать и стойло ? (посчитать)
- Войдите на сайт для отправки комментариев
Добрый день. Столкнулся с одной проблемкой и не совсем понятно как это сделать.
Советом или примером помогите если не трудно.
Описание проблемы. По дому "разбросаны" esp8266 (допустим у всех на борту есть датчики температуры) и они шлют эти данные(очень даже успешно). Но есть еще масса ESP и будет еще больше (которые выполняют свою работу но без внешних признаков- нет на них датчиков - ни чего нет :))
Желательно все это дело мониторить. Можно конечно и ip назначить,можно и ESP промаркировать - не проблема.
Но хотелось чуть проще и без гимора со всякими индификациями.
Алгоритм (или что хотелось бы в итоге получить).
Развернут web сервер (уже). Хотелось бы на нем видеть присудствие или отсудствие тех или иных ESP.
В виде отображение ip адреса esp и любой переменной которая будет в прошивке ESP (допустим ID устройства). Достаточно статической информации. ESP передергнули по питанию - в списке добавилось. Всякие таймеры,обновления списка -пока не надо рассматривать.
В итоге: Подошел к Esp - выкл вкл - на Web морде сервера - прочитал информацию что за зверька ты передергнул. По какому IP адресу она живет :) Я понимаю что это все можно и на роутере посмотреть. Но повторяюсь- не хочу завязыватся с статикой по IP, плюс еще интересна некая информация из переменных с самих ESP.
Практика:
интересует построетние динамической таблицы на сервере, ну и соответственно посылка кода с ESP.
Спасибо.
В чем вопрос-то? Ты бы мог половину таблицы уже реализовать, пока писал этот роман.
вопрос в том что я не web программист к сожалению.
И если создается впячетление что я что то хочу мегонавороченное осуществить и прошивки по 5 листов кода - то это ошибочное мнение.
Обратись к Евгению П он обязательно разрешит тебе реализовать тобой задуманное
вопрос в том что я не web программист к сожалению.
Ну иди учись, в чем проблема-то.
Я использую для esp статичные ip. Проблем с этим нет. Все esp сами веб сервера. Есть и один центральный, на orange pi, LAMP, который периодически опрашивает устройства, собирает статистику и выдаёт веб интерфейс сразу ко всему.
В чем смысл строить таблицы и искать устройства по их включению - для меня загадка. А если свет моргнет, бегать ребутить все esp по кругу будете)))))
вопрос в том что я не web программист к сожалению.
И если создается впячетление что я что то хочу мегонавороченное осуществить и прошивки по 5 листов кода - то это ошибочное мнение.
Вопрос в том, что у тебя там за web-сервер, какую субд используешь, есть ли PHP (какой версии) ну и тд.
Там на самом деле все в разы проще мк.
Ответ на вопрос "как": заставить их отчитываться на веб-сервер после коннекта к вифи и далее по расписанию. Веб-сервер будет формировать список активных и их метрик.
Вот алгоритм не меганавороченный и без пяти страниц писанины.
Большое спасибо.Наверное Вы более точно сформировали моё "ТЗ"
Вся задумка в том что бы на выходе получить динамическую табличку(без всяких SQL),просто активных устройств на данный момент. То есть имея новую ESP включая её в сеть (и "заставляя" её что то делать, допустим рассчитывать время прибытия автобуса на остановку ) - перегрузив её ,ясно понимать что она "живая" и на неё повешана задача $a="расчет времени автобус"
Как по мне глупо не использовать преимущества субд. Но если не хотите - кто я такой навязывать.
имея новую ESP включая её в сеть (и "заставляя" её что то делать, допустим рассчитывать время прибытия автобуса на остановку ) - перегрузив её ,ясно понимать что она "живая" и на неё повешана задача $a="расчет времени автобус"
Гагарин, так вопрос-то в чем? - словами уже описали, теперь в коде начинайте.
Если вы ждете, что кто-то вам готовую систему на форуме выложит - шансы практически нулевые... сами должны понимать, не первый день на этом форуме :)
Если вы ждете, что кто-то вам готовую систему на форуме выложит - шансы практически нулевые...
Да там не сложно, я б написал. Только париться с файлами нет желания, с субд проще.
с субд проще.
намного проще )))
Всем спасибо за внимание.
Вопрос решился.
Ну и соответственно в прошивки ардуино добавляем поссылку удобного для Вас вида:)
http://192.168.88.16/ar.php?ip=192.168.88.5%2&stroka=Температура&pokaz=26&data=05.02.2022..12:45
таймер отсылки информации -на наше усмотрение. У меня при перезагрузки ардуинки и раз в 24 часа.Именно эта строчка а не данные с датчиков.
можно даже ссылку вставить на хронение залитой прошивки для каждой ардуинки.
В итоге получили динамическую таблицу() без всяких SQL и иных заморочек.Очистка таблицы раз в сутки- да и сам проект делался не для сбора данных с датчиков. А именно для настройки и инсталляции кучу ардуинок в разных местах.
осталось добавить код, что если устройство не отмечается в течении N времени удалять из таблицы, а то девайс давно не в сети а в таблице висит, а лучше вниз таблицы перемещать и отметить красным цветом
PS код не смотрел, но судя по таблице с DHCP у тя какая-то хрень получается
Logik уже подсказал вам вариант со статик ip. Которые можно пинговать и по ответу выдавать наличие устройства в сети.
А ещё проще - заставить еспэху отсылать свои данные на телегу. Открыли своего бота и там все ваши устройства с уникальными именами.
Это хрень какая то, а не «динамическая таблица». Нужно передавать уникальный id устройства. В таблице смотреть по нему - Если устройство уже «регистрировалось», то просто обновлять время последнего «общения». Если ещё нет - «зарегистрировать». При выводе на печать анализировать время последнего «общения», если оно больше заданного интервала - помечать устройство как «давно небыли связи». Только парсить свой файл для реализации описанного выше заколебёшься. А с субд - это несколько строк кода.
Но опять таки - Если эта хрень устраивает, то и на здоровье.
. Нужно передавать уникальный id устройства. В таблице смотреть по нему .
Так он уже есть. MAC адрес называется. Сейчас изобретем ТСР поверх ТСР )))
. Нужно передавать уникальный id устройства. В таблице смотреть по нему .
Так он уже есть. MAC адрес называется.
Не суть - лишь бы уникальный.
. Нужно передавать уникальный id устройства. В таблице смотреть по нему .
Так он уже есть. MAC адрес называется.
Не суть - лишь бы уникальный.
оно всё есть для уникальности:
IP уникален ограниченно. Только в том случае, когда микротик по leases выдаёт.
Еще раз спасибо всем кто проявил интерес.
Ребят, да есть у меня и raspberry c умным домом (https://mjdm.ru).
и в телеграмм и на почту шлет что угодно и как угодно. И настроек в нем хоть пятой точкой жуй.
и модули в нем встроенные и заточенные под esp и сбор инфы любой с любых веб страниц. Но это настолько "тяжелая" штука для моих нужд,что мне было проще на коленках написать.
И алгоритм то мне нужен был один всего навсего:
1 прошить ESP и быстро посмотреть результат чего она посылает.Можно даже наверное и через компорт :)
НО.... Хотелось убедится что ESP нормально работает там где она установлена и шлет более менее нормальные данные. А дальше можно смело её заводить в умный дом и любоваться хоть через телеграм хоть через blynk - это уже кому как нравится.
При разных инсталляциях - могут применяться от 10 до 100 esp и иногда бывает такой ковардак,лежит у тебя на столе их штук 20 и все чего то мигают и чего то передают. А тут рубанул по питалову её - и сразу можно посмотреть чем она дышит. Без всяких "заведений.прописывания" в систему умный дом, и подключению к компорту.
p.s. на тестовую таблицу что выкладывал выше,особо не обращайте внимание- на то она и тестовая с тестовой информацией:) Тут дело в принципе работы.Мне совершенно не нужна в ней история.Мне в ней нужна была ,реально мгновенная информация поведения устройства.
Ну ещё раз СПАСИБО.Очень много полезной информации!!!!!
Зачем же удалять, просто хранить время последней телеграммы от ноды.
если оно больше таймаута то подкрашивать
Ребят, да есть у меня и raspberry c умным домом (https://mjdm.ru).
...
Но это настолько "тяжелая" штука для моих нужд,что мне было проще на коленках написать.
Это так кажется.
С точки зрения трудозатрат, а, следовательно, и стоимости проекта намного рациональнее применить как раз это "тяжелое" решение.
А если бы для Вас действительно "было проще на коленках написать", Вы бы на форуме эту тему не создавали.
Вам просто советуют, как решить Вашу проблему наиболее простым и дешевым способом.
это да, но админа надо чем-то занимать, пусть вносит )))
Ребят, да есть у меня и raspberry c умным домом (https://mjdm.ru).
...
Но это настолько "тяжелая" штука для моих нужд,что мне было проще на коленках написать.
Это так кажется.
С точки зрения трудозатрат, а, следовательно, и стоимости проекта намного рациональнее применить как раз это "тяжелое" решение.
А если бы для Вас действительно "было проще на коленках написать", Вы бы на форуме эту тему не создавали.
Вам просто советуют, как решить Вашу проблему наиболее простым и дешевым способом.
Куда же проще. Залить прошивку в ESP и посмотреть на веб ресурсе что она передаёт и какой ip хватанула.
Мне не нужно смотреть историю показаний .Мне нужно часто и много убеждатся что с новой ESP всё нормуль-не поленая,сеть видит,информацию шлет. Короче конвеер.
Задача была именно такая.
"А если бы для Вас действительно "было проще на коленках написать", Вы бы на форуме эту тему не создавали." -человек всегда сталкивается с чем то когда то первый раз.Человек существо любопытное- наверное для этого и придумали форумы ,что бы делится,подсказывать,рассказывать,обучать.
И я совершенно не вижу ни чего плохого, что кто то спрашивает об элементарных вещах.Не голубых кровей.
Куда же проще. Залить прошивку в ESP и посмотреть на веб ресурсе что она передаёт и какой ip хватанула.
самое простое вывести IP в монитор порта
Куда же проще. Залить прошивку в ESP и посмотреть на веб ресурсе что она передаёт и какой ip хватанула.
самое простое вывести IP в монитор порта
Ну это понятно. Но мы не сможем тогда, быстро проверить как себя чувствует ESP там где она географически должна быть.
Куда же проще то, подойти с ESP туда куда надо(в подвал,на крышу,баня,курятник),подать на неё напряжение,и обновить веб страничку на телефоне. и сделать выводы :)
Куда же проще. Залить прошивку в ESP и посмотреть на веб ресурсе что она передаёт и какой ip хватанула.
самое простое вывести IP в монитор порта
Ну это понятно. Но мы не сможем тогда, быстро проверить как себя чувствует ESP там где она географически должна быть.
Куда же проще то, подойти с ESP туда куда надо(в подвал,на крышу,баня,курятник),подать на неё напряжение,и обновить веб страничку на телефоне. и сделать выводы :)
тогда надо RSSI передавать
[/quote]
тогда надо RSSI передавать
[/quote]
Всё что душе угодно Serial.println(WiFi.RSSI());
Копался седня в протоколах и обнаружил интересную для данной темы возможность ESP. Поддерживает многоадресные UDP пакеты. Это когда одно устройство в локалке передает инфу сразу всем, у кого открыт нужный порт.
Если мы хотим составить список всех наших девайсов в сети, достаточно чтоб
1. все они слушали один порт
2. отправить с центрального сервера многоадресный запрос, для него IP устройств не нужно, достаточно чтоб у всех был один и тот же широковещательный адрес.
3. все устройства, получившие запрос должны на него ответить центральному серверу (кстати не обязательно все на один адрес и/или на адрес с которого их спросили - можно и так, но есть интересные варианты).
4.центральный сервер принимает ответы, составляет список идентифицируя устройства по МАС.
Гуглить по beginPacketMulticast - отправка и beginMulticast - прием.
Кстати на таком подходе можно построить и сбор данных воще без IP.
UDP без IP?
Адрес multicast, общий для всех, как и номер порта.
Что такое "воще без IP"?
Если имеется в виду IP-протокол, то без него не обойтись, т.к. UDP базируется на IP.
А если имеется в виду IP-адрес, то без него тоже не обойтись, т.к. в заголовке пакета IP присутствует поле src ip, которое должно быть заполнено.
Даже пример в документации не обходится без IP-адреса ( https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/udp-class.html ) : udp.beginPacketMulticast(addr, port, WiFi.localIP())
без IP адреса или IP протокола? Уточняй! ))) IP адрес - один, multicast, протокол в глубине стека присутствует конечно.
/// udp.beginPacketMulticast(addr, port, WiFi.localIP())
Выделен - адрес самого устройства, он там всегда так (но это не точно)))) . А первый параметр - multicast адрес. Ну порт тоже понятно.. Интересно что для инициации приема порядок адресов меняется udp_.beginMulticast(WiFi.localIP(), ipMulti, 1900);
Мне-то нах уточнять? Я не рассказываю про UDP без IP.
Мне-то нах уточнять? Я не рассказываю про UDP без IP.
о бля... началось...
Если имелось в виду "обойтись без жестко закрепленного за сервером IP-адреса", то так и надо писать - по-человечески. В этом случае , как минимум, два варианта.
Устраивать же multicast-шторм в локалке из ESP-шек - так себе идея.
нет. ни за одним из устройств в обмене не требуется жесткий адрес. что требуется - см #30
при кривых руках и прямых мозгах шторм и на ровном месте устроить можно. Я тя удивлю похоже, но в твоей локалке такое уже работает без esp и штормов.
Ну, короче, я помню, что с тобой спорить бессмысленно - во всех областях спец на всю голову. Поэтому оставляю ТС размышлять самостоятельно.
да, даффай вали, сказать те явно нечего ;) Чего и заходил то?!