Arduino+EthernetW5100+MDM

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

AlexF5
Сообщения: 7
Зарегистрирован: Ср сен 14, 2016 12:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Arduino+EthernetW5100+MDM

Сообщение AlexF5 » Ср сен 14, 2016 12:49 pm

Добрый день! Пожалуйста, подскажите, как создать связку в сабже?
Я уже измучался! Задача:
Есть датчик давления и температуры, есть релюха. Нужно: с вебки управлять релюшкой и получать данные с датчика.
Получать и отправлять через ethernet . Получать данные MDM успешно получилось, но управлять релюшкой - ни в какую! И найти на форуме как то не совсем получается. Если я правильно понимаю, то для передачи на MDM данных - необходимо объявить ethernet shield - клиентом. А если получать, то сервером. А совместить как? Буду очень благодарен! Сильно не пинайте...только учусь)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino+EthernetW5100+MDM

Сообщение nick7zmail » Ср сен 14, 2016 1:18 pm

Почитай темку Arduino Mega Server...
Там большинство уже реализовано...и довольно неплохая отдельная вэб-морда)).
http://majordomo.smartliving.ru/forum/v ... =19&t=2347
http://hi-lab.ru/arduino-mega-server
И всё это на связке arduino+ethernetW5100 - просто впечатляет.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
AlexF5
Сообщения: 7
Зарегистрирован: Ср сен 14, 2016 12:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Arduino+EthernetW5100+MDM

Сообщение AlexF5 » Ср сен 14, 2016 1:36 pm

nick7zmail писал(а):Почитай темку Arduino Mega Server...
Там большинство уже реализовано...и довольно неплохая отдельная вэб-морда)).
http://majordomo.smartliving.ru/forum/v ... =19&t=2347
http://hi-lab.ru/arduino-mega-server
И всё это на связке arduino+ethernetW5100 - просто впечатляет.
Спасибо за совет, натыкался на этот проект, читал. Но мне нужно на Uno, а в некоторых местах и на nano...а у них с памятью плохо)
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino+EthernetW5100+MDM

Сообщение serghei » Ср сен 14, 2016 1:42 pm

Посмотри ветку "power monitor" . В конце темы есть исправленный скетч. Влезает на Нано и уно. Можешь вырезать измерение токов и вставить в свой проект только процедуру запросов. А вот как передавать команды обратно из МД на АМС - самого интересует.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
AlexF5
Сообщения: 7
Зарегистрирован: Ср сен 14, 2016 12:39 pm
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Arduino+EthernetW5100+MDM

Сообщение AlexF5 » Ср сен 14, 2016 2:08 pm

serghei писал(а):Посмотри ветку "power monitor" . В конце темы есть исправленный скетч. Влезает на Нано и уно. Можешь вырезать измерение токов и вставить в свой проект только процедуру запросов. А вот как передавать команды обратно из МД на АМС - самого интересует.
Так передавать показания счетчиков на МД:
СпойлерПоказать
#include <Ethernet.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <Adafruit_GFX.h>
#include <SPI.h>



// MAC-адрес нашего устройства
byte mac[] = { 0x00, 0x2A, 0xF6, 0x12, 0x68, 0xFC };
// ip-адрес устройства
byte ip[] = { 192, 168, 0, 73 };
// ip-адрес удалённого сервера
byte server[] = { 192, 168, 0, 243 }; // измените на свой

//Adafruit_PCD8544 display = Adafruit_PCD8544(7, 8, 9, 10, 11);
Adafruit_BMP085 bmp;


int cycle_counter=0;
int releState=0;
int relePin = 6;
int old_garage=0;
int old_pressure1=0;
int press1=0;
int old_entry=0;
int incomingInt = 0;
int old_movement_1=0;
int old_movement_2=0;
int current_temp1=0;
int old_temperature1=0;
int old_button_1=0;
int old_button_2=0;

char buf[80];
EthernetClient rclient; // 80-порт.

void sendHTTPRequest() {
  Serial.println(buf); 
  if (rclient.connect(server,80)) { 
   Serial.println("OK"); 
   rclient.println(buf);
   rclient.println("Host: 192.168.0.17");
   rclient.println();   
   delay(2000);
   rclient.stop();
  } else {
   Serial.println("FAILED");     
  }

}

void setup()
{
  
  Ethernet.begin(mac, ip);
 Serial.begin(115200);
  if (!bmp.begin()) {
  Serial.println("Could not find a valid BMP085 sensor, check wiring!");
  while (1) {}
  }

 // Скорость консольного порта 115200 (пригодится для отладки)
pinMode(relePin, OUTPUT);

}

void loop()
{

    

   int valid_sensor=0;

  delay(100); // задержка в 0.1 сек.  
  cycle_counter++;

  if (cycle_counter>600) {
    cycle_counter=0;
  }    


 // TEMP SENSOR 1
 
  float current_temp1=0;
  Serial.println("Temper");
 current_temp1=bmp.readTemperature(); // получаем температуру
   Serial.println(current_temp1);
      
   
  if ((old_temperature1!=(int)current_temp1))  {
   int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
   sprintf(buf, "GET /objects/?object=sensorRoom&op=m&m=tempChanged&t=%02d.%02d HTTP/1.0", (int)current_temp1, abs(temp1));   
   sendHTTPRequest();

}
 old_temperature1=(int)current_temp1;  


  float current_press1=0;
  Serial.println("Press");
 current_press1=(bmp.readPressure())/133.1; // получаем температуру
   Serial.println(current_press1);
      
   

  if ((old_pressure1!=(int)current_press1))  {
   //int press1 = (current_press1 - (int)current_press1) * 100; // выделяем дробную часть
   sprintf(buf, "GET /objects/?object=pressRoom&op=m&m=pressChanged&t=%03d HTTP/1.0", (int)current_press1);   
   sendHTTPRequest();

}
 old_pressure1=(int)current_press1;  


}
Это реализация передачи. А вот как слушать ардуиной информацию от МД? Может быть если поднять веб-сервер с кнопками и МД будет их проставлять..Но это какое то извращение ИМХО.
За это сообщение автора AlexF5 поблагодарил:
serghei (Ср сен 14, 2016 2:51 pm)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino+EthernetW5100+MDM

Сообщение nick7zmail » Ср сен 14, 2016 2:43 pm

AlexF5 писал(а): Это реализация передачи. А вот как слушать ардуиной информацию от МД? Может быть если поднять веб-сервер с кнопками и МД будет их проставлять..Но это какое то извращение ИМХО.
Для "слушанья" можно кусок кода с AMS как раз стырить))
Только вместо команд которые там выводятся - построить запрос типа - arduino.ip/?cmd=some_data1&some_data2....ну или как там этот код запросов пишется...а из мд - делать запросы, к примеру ежеменутно (либо принудительно, если нужно релюшкой щелкать) через getUrl(). Some_data -как раз параметры, которые передавать надо....
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino+EthernetW5100+MDM

Сообщение serghei » Ср сен 14, 2016 2:56 pm

У меня сейчас получилось передать команду из АМС на удаленный сенсор и щелкать релюшкой (правда по радио) + отображать состояние на веб странице. А вот как эту процедуру воткнуть в МД - не представляю. Да и писать код надо на PHP....
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino+EthernetW5100+MDM

Сообщение nick7zmail » Ср сен 14, 2016 3:59 pm

serghei писал(а):У меня сейчас получилось передать команду из АМС на удаленный сенсор и щелкать релюшкой (правда по радио) + отображать состояние на веб странице. А вот как эту процедуру воткнуть в МД - не представляю. Да и писать код надо на PHP....
Какой ссылкой "щелкается" релюшка?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino+EthernetW5100+MDM

Сообщение serghei » Ср сен 14, 2016 5:14 pm

АМС сенсору передает команду SET_RELAY. Должны быть две взаимные части на АМС и сенсоре. Все передается через NRF24 по радио. Ты запустил эту сеть? Полный код для пяти сенсоров Алекс высылает по запросу на почту. У меня завелось с пол оборота и в итоге получил картинку как он выкладывал. Конкретно команда выглядит наверное так
СпойлерПоказать

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

void makePacketGetRelay()    {makePacket(&sendGetRelay,    TYPE_REQUEST, GET_RELAY,     255, "", "");}
void makePacketSetRelay()    {makePacket(&sendSetRelay,    TYPE_COMMAND, SET_RELAY,     255, "", String(sendSetRelay.action));}

Тут специфический случай - В МД все по другому....


А вообще вопрос жутко интересный - как АМС отдает числа в МД я понял , а вот какой код надо написать в обратную сторону , чтобы сказать в микрофон ( а еще лучше в телефон ) - Алиса включи что либо -- команда ушла в АМС и по радио до сенсора и в итоге сработало реле. Две трети пути понятно - а дальше нет...
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino+EthernetW5100+MDM

Сообщение nick7zmail » Ср сен 14, 2016 5:49 pm

serghei писал(а): А вообще вопрос жутко интересный - как АМС отдает числа в МД я понял , а вот какой код надо написать в обратную сторону , чтобы сказать в микрофон ( а еще лучше в телефон ) - Алиса включи что либо -- команда ушла в АМС и по радио до сенсора и в итоге сработало реле. Две трети пути понятно - а дальше нет...
Я не это имел ввиду. Из браузера какую команду надо ардуинке послать, чтоб реле щелкнуло?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить