Страница 1 из 3

Программирование

Добавлено: Ср авг 22, 2012 11:25 pm
sergejey
Обсуждение страницы Программирование

Re: Программирование

Добавлено: Ср сен 12, 2012 9:25 am
sochkasov
sergejey, доброго времени суток.
В настоящий момент пытаюсь разобраться с контроллером-исполнителем. Код, который представлен у Вас (http://smartliving.ru/Main/ArduinoCode2, http://smartliving.ru/Main/ArduinoCode3), у меня не компилируется ни как. Решил переписать его используя некоторые библиотеки (для упрощения понимания).
Перерыл вроде весь сайт не нашел ответа на вопрос, какой формат команд используется для управления исполнительными устройствами.
Я бы хотел получить полностью совместимое с Вашим кодом устройство, по этому прошу описать этот формат. Какие параметры могут передаваться туда и нужно ли в ответ что-то отвечать.

Судя по коду есть несколько команд:

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

  {"HELP",    commandsHelp,}, // выдать список комманд
  {"LED",     commandsLed, }, // Установить яркость свечения светодиода на заранее заданном аналоговом порту
  {"ON",     commandsOn, },  // включить устройство на цифровом порту X
  {"OFF",     commandsOff, },  // выключить устройство на цифровом порту X
  {"STATE",     commandsState, }, // получить состояние порта (уровень на порту X)
  {"CLICK",     commandsClick, }, // кратковременно (1сек) подать высокий уровень на цифровой порт X
  {"LCLICK",     commandsLClick, } // кратковременно (3сек) подать высокий уровень на цифровой порт X
Они соответственно вызывают какие либо процедуры. Например, хочу включить лампочку, которая включается подачей высокого уровня на D3
На контроллер мы должны что отправить?

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

http://username:password@X.X.X.X/?3=ON
Так?

Какой метод используется для запроса данных GET или POST?

И еще, я правильно понимаю, что сделанный Вами код может использоваться в контроллере при подключенном контроллере через USB или через Ethernet?

Заранее спасибо.

Re: Программирование

Добавлено: Чт сен 13, 2012 11:21 am
sergejey
Контроллер, который я использую для управления, запрограммирован достаточно просто.
Он принимает по http команды в виде GET-запроса, например такого: http://192.168.0.73/?CLICK,2

Вот полный код скрипта, который "кликает" по реле:

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

$url='http://192.168.0.73/?CLICK,2';
getURL($url,0);
Я здесь ответ от контроллера даже не обрабатываю, но вообще контроллер должен отвечать просто OK.

Вместо CLICK может быть другая команда (ON, OFF).

Re: Программирование

Добавлено: Вт сен 18, 2012 11:08 am
sochkasov
Сергей, спасибо за ответ.

Я переписал Ваш код ArduinoCode3 так, что он теперь работает на IDE Arduino 1.0.1. В ближайшее время выложу в открытый доступ, может кому пригодится.
У меня правда получились вызовы немного по другому. Но думаю это не критично, т.к. все равно их руками прописывать в настройках системы.

Теперь, я хочу расширить код, который у меня получился.
На данный момент он умеет:

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

  {"ON",     commandsOn, }, // Устанавливает "1" на заданном цифровом порту (вызов http://xx.xx.xx.xx/?8=ON )
  {"OFF",     commandsOff, }, // Устанавливает "0" на заданном цифровом порту (вызов http://xx.xx.xx.xx/?8=OFF )
  {"STATE",     commandsState, }, // Получить состояние всех цифровых портов (вызов http://xx.xx.xx.xx/?8=STATE ) (Пример вывода P3=0;P4=0;P5=0;P6=0;P7=0;P8=1;P9=1;)
  {"STATUS",     commandsStatus, }, // Получить состояние цифрового порта (1 или 0) (вызов http://xx.xx.xx.xx/?8=STATUS )
  {"CLICK",     commandsClick, }, // Кратковременная "1" на порту 1сек (время настраивается) (вызов http://xx.xx.xx.xx/?8=CLICK )
  {"LCLICK",     commandsLClick, }, // Кратковременная "1" на порту 3сек (время настраивается) (вызов http://xx.xx.xx.xx/?8=LCLICK )
Для чего Вы используете {"LED", commandsLed, }, оно нужно реально где-то?

Еще, просматривая код ArduinoCode2 я увидел тут:

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

void commandsLed(void) {
  printLine("LED command received.");
  sendHTTPRequest("/objects/?object=ThisComputer&op=m&m=StartUp&");
  if (gParamValue >=0 && gParamValue <= 255) {
    analogWrite(ledPin, gParamValue);
  }
  else {
    printLine("wrong parameter value");
  }
}
что при включении светодиода, контроллер посылает на сервер еще запрос /objects/?object=ThisComputer&op=m&m=StartUp
для чего это делается?

Я пока не могу до конца разобраться с настройкой кода, выполняемого на сервере. И не могу понять некоторые вещи.
Например, если я делаю управление светом. В интерфейсе есть выключатель "ВКЛЮЧЕНИЕ СВЕТА".
В случае если контроллер подключен, то я нажимаю на эту кнопку, на контроллер посылается команда. На выходе контроллера получаем "1". Все правильно.
Но, я перегружаю контроллер. На заданном выходе я получаю "0". А в интерфейсе все равно отображается, что свет включен. Если я правильно понимаю для этого надо воспользоваться одним из 2-х способов, которые описаны тут http://smartliving.ru/Main/DevIpPower9223 . Но пока я не осилил привязку. Хотя состояние получаю.

Так вот, вопрос вот в чем. Не нужно сделать так, чтобы после каждого вызова команды на контроллере происходило примерно так:

1. Контроллер принял команду 5=ON
2. Делаем digitalWrite(5,HIGH);
3. Отсылаем на сервер что-то вроде /?P5=ON
В этом случае контроллер будет посылать подтверждение того, что он действительно включил "1" на 5 пине.

Re: Программирование

Добавлено: Сб сен 22, 2012 1:23 pm
Vit
код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1

выложите кто нибудь переделанную код под одну из версий....

может какой библиотеки не хватает...

Re: Программирование

Добавлено: Сб сен 22, 2012 10:02 pm
sochkasov
Vit писал(а):код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1

выложите кто нибудь переделанную код под одну из версий....

может какой библиотеки не хватает...
Vit, доброго времени суток. Я по той-же причине решил переписать "под себя" код написанный Сергеем. На данный момент сделано 2 рабочие прошивки. Информер и информер-исполнитель. Причем с несколько расширенным функционалом. Единственное, что я не стал делать поддержку подключения контроллера исполнителя через USB. В моем случае - только Ethernet.
IDE Arduino 1.0.1

код выложил тут https://github.com/sochkasov/majordomo-arduino

Re: Программирование

Добавлено: Вс сен 23, 2012 2:10 pm
Vit
sochkasov писал(а):
Vit писал(а):код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1

выложите кто нибудь переделанную код под одну из версий....

может какой библиотеки не хватает...
Vit, доброго времени суток. Я по той-же причине решил переписать "под себя" код написанный Сергеем. На данный момент сделано 2 рабочие прошивки. Информер и информер-исполнитель. Причем с несколько расширенным функционалом. Единственное, что я не стал делать поддержку подключения контроллера исполнителя через USB. В моем случае - только Ethernet.
IDE Arduino 1.0.1

код выложил тут https://github.com/sochkasov/majordomo-arduino
спасибо, скачал , будем пробовать компилировать и эксперементировать))

Re: Программирование

Добавлено: Чт окт 04, 2012 9:22 am
lighthouse
Всем привет!
sochkasov, спасибо за прошивки. Жду свой клон ардуины, как придет, сразу попробую :)

Re: Программирование

Добавлено: Вт ноя 20, 2012 7:17 am
ser009
Я установил данную прошивку на Mega2560
Заработало.

Помоги дописать прошивку, чтобы были дискретные входа и по 1-wire передавались данные на сервер

Re: Программирование

Добавлено: Вт ноя 20, 2012 8:30 am
BATONS
я к стати тоже ищу прошивку к ардуино "эмулятор DS2450" или любого другого АЦП.
может у кого есть? Хочется обрабатывать данные ардуиной и отсылать их по 1-Wire