Управление с помощью Arduino HTTP gateway без Ethernet

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

Модератор: immortal

Ответить
Neocivic
Сообщения: 72
Зарегистрирован: Вс апр 23, 2017 5:27 pm
Благодарил (а): 25 раз
Поблагодарили: 2 раза

Управление с помощью Arduino HTTP gateway без Ethernet

Сообщение Neocivic » Вс апр 23, 2017 7:00 pm

Добрый день!
Буду признателен, если поможете понять проблему. Я не силён в сетевых протоколах, скорее всего с этим связаны неудачи.

Задача (для освоения и понимания возможностей Majordomo, исходя из имеющегося оборудования):
1. Мигание светодиодом на плате, с помощью выключателя в Mojordomo.

Железо в наличии: Ноутбук на Win10, Arduino Mega 2560, USB-кабель для соединения.

На сайте нашёл статью о подключении Arduino без Ethernet, через USB-шнурок - http://majordomo.smartliving.ru/Main/ArduinoDirect

По инструкции установил Arduino HTTP gateway.

Затем, для эксперимента, решил попробовать отправлять запрос с Arduino в Majordomo, чтобы менять состояние выключателя (на этом и завис). Для этого создал объект "СветодиодАрдуино" класса Relays:

Изображение

Далее скопировал ссылку-метод, которая переключает состояние выключателя:

Изображение

И добавил её (ссылку на переключение) в код, исправив пример из статьи выше (видимо в нём, в моём коде, и есть ошибка). Код отправляет запрос на переключение выключателя, через Arduino HTTP Gateway. Ниже код:

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

int cycle_counter=0;
char buf[300];
char arSv = LOW;

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
  Serial.println(buf); 
}

void setup()
{
 pinMode(13, OUTPUT); // Светодиод ардуино
 digitalWrite(13, arSv);
 Serial.begin(115200); // Скорость консольного порта 115200 (пригодится для отладки)
}

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

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

  Serial.println("Switch Arduino Light");
  sprintf(buf, "GET http://127.0.0.1:80/objects/?object=%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4%D0%90%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE&op=m&m=switch&");
  sendHTTPRequest();
  delay(2000);
  Serial.println("Switch Arduino Light");
  sprintf(buf, "GET http://127.0.0.1:80/objects/?object=%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4%D0%90%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE&op=m&m=switch&");
  sendHTTPRequest();
  delay (2000);
}
В итоге Gateway принимает данные от Arduino, но Majordomo ни как не реагирует. При этом если ссылку отправить через браузер, то всё работает.
Помогите разобраться, в чём проблема. И огромное спасибо!
Ответить