Arduino Mega Server
Модератор: Alex
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
Да самый лучший вариант это сокет, устройство всегда будет знать живой датчик или нет,http этого не может,сокет tcp либо udp в локальной сети без разницы.
Re: Arduino Mega Server
Тогда остался не ясным вопрос. Что бы увидеть UDP пакеты , надо приконнектиться к устройству. В моём случае IP MySensors гейта задан жестко и AMS сначала коннектится к гейту , а затем слушает все ответы. Распарсивать значения уже дело десятое.
А тут предлагают слушать кучу ESP12 с непонятно каким протоколом. И как тогда просто слушать весь траффик без привязки к конкретному устройству ?
А тут предлагают слушать кучу ESP12 с непонятно каким протоколом. И как тогда просто слушать весь траффик без привязки к конкретному устройству ?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: Arduino Mega Server
Сделать по аналогии со шлюзами сяоми. Там используется udp multicast рассылка. Все клиенты шлют сообщения в мультикаст группу. А те, кому надо принимать от них сообщения (МДМ, АМС и т.п.), "подписываются" на эту группу. Очень удобно. У меня два шлюза сяоми, а получать от них данные и управлять ими я могу с 3-4х инстансов МДМ без каких-либо доработок. Главное чтобы все сидели в одной vlan.serghei писал(а): Пн авг 06, 2018 10:51 am А тут предлагают слушать кучу ESP12 с непонятно каким протоколом. И как тогда просто слушать весь траффик без привязки к конкретному устройству ?
Протокол можно самим придумать. У того же сяоми обычный обмен json-сообщениями.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
о там даже пример мультикаста есть.udp multicast
протокол tcp,очень удобно,не то что тормозной http,кстати использует tcp в качестве транспорта.А тут предлагают слушать кучу ESP12 с непонятно каким протоколом
Re: Arduino Mega Server
Действительно удобно. А реализация на AMS есть ? А то получается если гейт включить после ардуины , то пакетов не видно. И это бы решило проблему с реконнектом.skysilver писал(а): Пн авг 06, 2018 11:02 am ... Все клиенты шлют сообщения в мультикаст группу. А те, кому надо принимать от них сообщения (МДМ, АМС и т.п.), "подписываются" на эту группу.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
skysilver
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Контактная информация:
Re: Arduino Mega Server
Нет конечно. Откуда ей взяться.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
очень хорошая реализация udp на 8266
void udp_recv_cb(void *arg, char *pusrdata, unsigned short length)
{
struct espconn *pespconn = (struct espconn *)arg;
}
void udp_sent_cb(void *arg)
{
}
когда придут данные будет вызвана udp_recv_cb
можно обработать данные
когда будет отправлен пакет будет вызвана
udp_sent_cb()
объявляете две функции обратного вызоваvoid udp_init() {
const char dst_ip[4] = {192, 168, 0, 85}; // Server IP
memset(&udp_conn, 0, sizeof(struct espconn));
memset(&udp, 0, sizeof(esp_udp));
udp_conn.proto.udp = &udp;
udp_conn.type = ESPCONN_UDP;
udp_conn.state = ESPCONN_NONE;
os_memcpy(udp_conn.proto.udp->remote_ip, dst_ip, 4); // Remote Server IP
udp_conn.proto.udp->remote_port = 8881;// Remote Server Port
udp_conn.proto.udp->local_port = 8886;//espconn_port();
espconn_regist_sentcb(&udp_conn, udp_sent_cb); // register a udp packet sending callback
espconn_regist_recvcb(&udp_conn, udp_recv_cb);
udp_conn.reverse = NULL;
int status = espconn_create(&udp_conn);
}
void udp_recv_cb(void *arg, char *pusrdata, unsigned short length)
{
struct espconn *pespconn = (struct espconn *)arg;
}
void udp_sent_cb(void *arg)
{
}
когда придут данные будет вызвана udp_recv_cb
можно обработать данные
когда будет отправлен пакет будет вызвана
udp_sent_cb()
не надо никуда приконекчиваться, udp не устанавливает соединения,даже подтверждения не требуется.Тогда остался не ясным вопрос. Что бы увидеть UDP пакеты , надо приконнектиться к устройству
-
svetozar161
- Сообщения: 72
- Зарегистрирован: Пт янв 13, 2017 11:48 pm
Re: Arduino Mega Server
Честно говоря я ничего не понял)) я в этом профан. При прошивке wifi-iot прошивки была выбрана опция передачи GET запросом данных на свой домашний сервер, например majordomo на порт 80
Цитата
"Функция позволяет с установленным интервалом отправлять данные GET запросом на свой домашний сервер. Это может быть сервер MajorDoMo или другая система или свой простенький php скрипт.
Папка с скриптом должна находится по адресу /objects/ , но адрес можно поменять на другой в конструкторе прошивки, например /test.php . Скрипт должен обрабатывать входящие данные согласно метрикам, указанным в конце статьи.
Если на веб сервере используются vhost , то в его настройках необходимо указать vhost с именем homeserver"
Сейчас в мажордомо видно 4 датчика(3 на подходе), которые передают температуру и влажность. Я хочу просто поставить Мегу2560 с прошивкой АМС на управление котлом (у меня 5 лет до этого стоял набор от мастер-кита термостат на далласах, все работало отлично).
Может просто организовать термостат на сервере с мажордомо? Но там нету защиты от глюков системы, все-таки винда и пропадания электричества например в середине февраля ночью)) комп не сможет сам снова запуститься(я еще буду думать об этом).
Так вот, согласно схемы моей сети к месту установки котла подходит витая пара, но протянуть от котла датчики по всей комнате витой парой уже проблематично, поэтому я хотел чтобы АМС видела датчик например в спальне и работала термостатом, в будущем подсоединить к ней уже физически датчик давления теплоносителя, далласы обратки и подачи, счетчик воды, газа и электроэнергии. Вот и все))
з.ы. Хотел сначала поставить прошивку MegaD(не реклама)) ), но оказалось, что там используется контроллер 2561, а на ArduinoMega контроллер 2560. На форуме создатель прошивки пояснил, что на этот контроллер прошивка не встанет и переписывать он не будет. Поэтому искал альтернативу и нашел АМС.
Кто может, помогите разобраться)) Спасибо.
Цитата
"Функция позволяет с установленным интервалом отправлять данные GET запросом на свой домашний сервер. Это может быть сервер MajorDoMo или другая система или свой простенький php скрипт.
Папка с скриптом должна находится по адресу /objects/ , но адрес можно поменять на другой в конструкторе прошивки, например /test.php . Скрипт должен обрабатывать входящие данные согласно метрикам, указанным в конце статьи.
Если на веб сервере используются vhost , то в его настройках необходимо указать vhost с именем homeserver"
Сейчас в мажордомо видно 4 датчика(3 на подходе), которые передают температуру и влажность. Я хочу просто поставить Мегу2560 с прошивкой АМС на управление котлом (у меня 5 лет до этого стоял набор от мастер-кита термостат на далласах, все работало отлично).
Может просто организовать термостат на сервере с мажордомо? Но там нету защиты от глюков системы, все-таки винда и пропадания электричества например в середине февраля ночью)) комп не сможет сам снова запуститься(я еще буду думать об этом).
Так вот, согласно схемы моей сети к месту установки котла подходит витая пара, но протянуть от котла датчики по всей комнате витой парой уже проблематично, поэтому я хотел чтобы АМС видела датчик например в спальне и работала термостатом, в будущем подсоединить к ней уже физически датчик давления теплоносителя, далласы обратки и подачи, счетчик воды, газа и электроэнергии. Вот и все))
з.ы. Хотел сначала поставить прошивку MegaD(не реклама)) ), но оказалось, что там используется контроллер 2561, а на ArduinoMega контроллер 2560. На форуме создатель прошивки пояснил, что на этот контроллер прошивка не встанет и переписывать он не будет. Поэтому искал альтернативу и нашел АМС.
Кто может, помогите разобраться)) Спасибо.
Re: Arduino Mega Server
Да это мы так подбираемся к какому нибудь глобальному решению ( межсобойчик ). В результате мозговой атаки получаются прикольные вещи. Одна страница обновляемых графиков чего стоит.
Судя по рисунку собственно на AMS все это уже реализовано. Температуру меряет ,потребление воды и газа - то же есть на микрухах DS2423. /* Классная штука , но дорогие заразы */.
Давление то же не проблема , но датчики по 13 баксов. Вот с ваттметром посложнее будет. То что есть де-факто - показывает , но с линейностью не справился. Хотя то же через эти же счетчики реализуется.
Это то же просто. Если температуру задать в коде , тоsvetozar161 писал(а): Пн авг 06, 2018 7:42 pm ... я хотел чтобы АМС видела датчик например в спальне и работала термостатом
Код: Выделить всё
#define relePin 04
void testInit(){
pinMode(relePin, OUTPUT);
digitalWrite(relePin, LOW);
}
void testRele(){ // рабочая функция
if(!releSt && current_temp[3] > 40.0){
// if(!releSt && analogRead(35) > 2000.0){
digitalWrite(relePin, HIGH);
timeStamp();
Serial.println(" Rele \"ON\"");
releSt = 1;
}
if(releSt && current_temp[3] < 35.0){
// if(releSt && analogRead(35) < 1500.0){
digitalWrite(relePin, LOW);
timeStamp();
Serial.println(" Rele \"OFF\"");
releSt = 0;
}
}SPOILERSPOILER_SHOW
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
alexsis_76
- Сообщения: 792
- Зарегистрирован: Пт янв 22, 2016 10:08 am
Re: Arduino Mega Server
для начала немножко теории.Практически все устройства в сети работают по пр принципу сервер-клиент,задача сервера состоит в прослушивании порта на предмет входящих соединений(http слушает порт 80 или 8080),клиент может устанавливать соединение к серверу,сервер пассивен и ни чего ни куда передать не может а может только отвечать на запросы которые инициирует клиент,клиентом может являтся любой кто постучится на указанные порты,если вы создаете вебстраничку на esp,то esp будет сервером(хотя это громко сказано) а браузер клиентом,после установления соединения клиент может слать запросы,обычно используют запросы типа GET
GET/test.php?fname=Иван&lname=Иванов где GET-тип запроса,test.php-получатель запроса(тот кто обработает запрос)в данном случае скрипт,
fname=Иван&lname=Иванов парметры запроса(ради которых все собственно и затевалось) передаются после ?
так вот открываете сервер на вашем новоявленном девайсе и слушаете,датчик который хочет передать данные делает подобный запрос а вы парсите его и все довольны,если у датчиков имеются свои веб интерфейсы то можете тянуть прямо оттуда(новоявленный девайс будет клиентом)
GET/test.php?fname=Иван&lname=Иванов где GET-тип запроса,test.php-получатель запроса(тот кто обработает запрос)в данном случае скрипт,
fname=Иван&lname=Иванов парметры запроса(ради которых все собственно и затевалось) передаются после ?
так вот открываете сервер на вашем новоявленном девайсе и слушаете,датчик который хочет передать данные делает подобный запрос а вы парсите его и все довольны,если у датчиков имеются свои веб интерфейсы то можете тянуть прямо оттуда(новоявленный девайс будет клиентом)
Функция позволяет с установленным интервалом отправлять данные GET запросом на свой домашний сервер. Это может быть сервер MajorDoMo или другая система или свой простенький php скрипт