Arduino Mega Server

Модератор: Alex

skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Arduino Mega Server

Сообщение skysilver » Пн авг 06, 2018 11:02 am

serghei писал(а):
Пн авг 06, 2018 10:51 am
А тут предлагают слушать кучу ESP12 с непонятно каким протоколом. И как тогда просто слушать весь траффик без привязки к конкретному устройству ?
Сделать по аналогии со шлюзами сяоми. Там используется udp multicast рассылка. Все клиенты шлют сообщения в мультикаст группу. А те, кому надо принимать от них сообщения (МДМ, АМС и т.п.), "подписываются" на эту группу. Очень удобно. У меня два шлюза сяоми, а получать от них данные и управлять ими я могу с 3-4х инстансов МДМ без каких-либо доработок. Главное чтобы все сидели в одной vlan.

Протокол можно самим придумать. У того же сяоми обычный обмен json-сообщениями.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server

Сообщение alexsis_76 » Пн авг 06, 2018 11:08 am

udp multicast
о там даже пример мультикаста есть.
А тут предлагают слушать кучу ESP12 с непонятно каким протоколом
протокол tcp,очень удобно,не то что тормозной http,кстати использует tcp в качестве транспорта.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Пн авг 06, 2018 12:45 pm

skysilver писал(а):
Пн авг 06, 2018 11:02 am
... Все клиенты шлют сообщения в мультикаст группу. А те, кому надо принимать от них сообщения (МДМ, АМС и т.п.), "подписываются" на эту группу.
Действительно удобно. А реализация на AMS есть ? А то получается если гейт включить после ардуины , то пакетов не видно. И это бы решило проблему с реконнектом.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Arduino Mega Server

Сообщение skysilver » Пн авг 06, 2018 12:57 pm

serghei писал(а):
Пн авг 06, 2018 12:45 pm
Действительно удобно. А реализация на AMS есть ?
Нет конечно. Откуда ей взяться. :) Код не особо сложный будет. Исходники протокола можно взять у модуля Xiaomi Home.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server

Сообщение alexsis_76 » Пн авг 06, 2018 3:04 pm

очень хорошая реализация udp на 8266
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
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение svetozar161 » Пн авг 06, 2018 7:42 pm

Честно говоря я ничего не понял)) я в этом профан. При прошивке wifi-iot прошивки была выбрана опция передачи GET запросом данных на свой домашний сервер, например majordomo на порт 80
Цитата
"Функция позволяет с установленным интервалом отправлять данные GET запросом на свой домашний сервер. Это может быть сервер MajorDoMo или другая система или свой простенький php скрипт.
Папка с скриптом должна находится по адресу /objects/ , но адрес можно поменять на другой в конструкторе прошивки, например /test.php . Скрипт должен обрабатывать входящие данные согласно метрикам, указанным в конце статьи.
Если на веб сервере используются vhost , то в его настройках необходимо указать vhost с именем homeserver"

Сейчас в мажордомо видно 4 датчика(3 на подходе), которые передают температуру и влажность.
слаботочка UTP5 cat.png
слаботочка UTP5 cat.png (33.59 КБ) 3965 просмотров
Я хочу просто поставить Мегу2560 с прошивкой АМС на управление котлом (у меня 5 лет до этого стоял набор от мастер-кита термостат на далласах, все работало отлично).
Может просто организовать термостат на сервере с мажордомо? Но там нету защиты от глюков системы, все-таки винда и пропадания электричества например в середине февраля ночью)) комп не сможет сам снова запуститься(я еще буду думать об этом).
Вложение слаботочка UTP5 cat.png больше недоступно

Так вот, согласно схемы моей сети к месту установки котла подходит витая пара, но протянуть от котла датчики по всей комнате витой парой уже проблематично, поэтому я хотел чтобы АМС видела датчик например в спальне и работала термостатом, в будущем подсоединить к ней уже физически датчик давления теплоносителя, далласы обратки и подачи, счетчик воды, газа и электроэнергии. Вот и все))
з.ы. Хотел сначала поставить прошивку MegaD(не реклама)) ), но оказалось, что там используется контроллер 2561, а на ArduinoMega контроллер 2560. На форуме создатель прошивки пояснил, что на этот контроллер прошивка не встанет и переписывать он не будет. Поэтому искал альтернативу и нашел АМС.
Кто может, помогите разобраться)) Спасибо.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Пн авг 06, 2018 10:52 pm

svetozar161 писал(а):
Пн авг 06, 2018 7:42 pm
Честно говоря я ничего не понял))
Да это мы так подбираемся к какому нибудь глобальному решению ( межсобойчик ). В результате мозговой атаки получаются прикольные вещи. Одна страница обновляемых графиков чего стоит.
svetozar161 писал(а):
Пн авг 06, 2018 7:42 pm
....Поэтому искал альтернативу и нашел АМС.
Судя по рисунку собственно на 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;
  }
}
Там же к стати и регулирование по аналоговому сигналу. Получается так
СпойлерПоказать
Screenshot_2018-08-06 ESP32 SD - Arduino Mega Server.png
Screenshot_2018-08-06 ESP32 SD - Arduino Mega Server.png (14.08 КБ) 3950 просмотров
Пока думаю как размножить на 4 реле.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server

Сообщение alexsis_76 » Вт авг 07, 2018 1:52 am

для начала немножко теории.Практически все устройства в сети работают по пр принципу сервер-клиент,задача сервера состоит в прослушивании порта на предмет входящих соединений(http слушает порт 80 или 8080),клиент может устанавливать соединение к серверу,сервер пассивен и ни чего ни куда передать не может а может только отвечать на запросы которые инициирует клиент,клиентом может являтся любой кто постучится на указанные порты,если вы создаете вебстраничку на esp,то esp будет сервером(хотя это громко сказано) а браузер клиентом,после установления соединения клиент может слать запросы,обычно используют запросы типа GET
GET/test.php?fname=Иван&lname=Иванов где GET-тип запроса,test.php-получатель запроса(тот кто обработает запрос)в данном случае скрипт,
fname=Иван&lname=Иванов парметры запроса(ради которых все собственно и затевалось) передаются после ?
так вот открываете сервер на вашем новоявленном девайсе и слушаете,датчик который хочет передать данные делает подобный запрос а вы парсите его и все довольны,если у датчиков имеются свои веб интерфейсы то можете тянуть прямо оттуда(новоявленный девайс будет клиентом)
Функция позволяет с установленным интервалом отправлять данные GET запросом на свой домашний сервер. Это может быть сервер MajorDoMo или другая система или свой простенький php скрипт
ученик
Сообщения: 230
Зарегистрирован: Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Re: Arduino Mega Server

Сообщение ученик » Вт авг 07, 2018 2:34 pm

Есть кто воспользовался новой 17 версией АМС для Меги?
Хотел обновится и заодно добавить реализацию управления реле
1 вопрос возможность передавать и принимать данные MD?
2 вопрос
в АМС контакт D3 отдан для подключение реле
как управлять этим реле со стороны MD?
Какие изменения необходимо внести в новой версии
такие-же как и в предыдущей?
присваиваемый IP,Адрес MD.
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Вт авг 07, 2018 3:32 pm

Пока только запустил с W5500. Слишком много надо переносить кода. И после ESP32 даже 8 сокетов не спасают.
1 Все то же самое , Что и в 016. Только статус дописать надо

Код: Выделить всё

#ifdef MAJORDOMO_FEATURE


char majorMegaObject[] = "ncMega02";
char majorCommObject[] = "comm_mega02";

byte MAJOR_IP[] = {192, 168, 2, 108};// Адрес Алисы
#define MAJOR_PORT 80
EthernetClient mclient;
2 Реле можно прицепить на любой пин. Если воспользоваться рекомендациями Vladragor, то и управлять можно со сцены.
За это сообщение автора serghei поблагодарил:
ученик (Вт авг 07, 2018 3:36 pm)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить