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

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

Модератор: immortal

sergejey
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение sergejey » Ср авг 22, 2012 11:25 pm

Обсуждение страницы Программирование
sochkasov
Сообщения: 21
Зарегистрирован: Ср июл 25, 2012 4:15 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение sochkasov » Ср сен 12, 2012 9:25 am

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?

Заранее спасибо.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Чт сен 13, 2012 11:21 am

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

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

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

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

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
sochkasov
Сообщения: 21
Зарегистрирован: Ср июл 25, 2012 4:15 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение sochkasov » Вт сен 18, 2012 11:08 am

Сергей, спасибо за ответ.

Я переписал Ваш код 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 пине.
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Сб сен 22, 2012 1:23 pm

код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1

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

может какой библиотеки не хватает...
sochkasov
Сообщения: 21
Зарегистрирован: Ср июл 25, 2012 4:15 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение sochkasov » Сб сен 22, 2012 10:02 pm

Vit писал(а):код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1

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

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

код выложил тут https://github.com/sochkasov/majordomo-arduino
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Вс сен 23, 2012 2:10 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
спасибо, скачал , будем пробовать компилировать и эксперементировать))
lighthouse
Сообщения: 5
Зарегистрирован: Пн окт 01, 2012 1:12 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение lighthouse » Чт окт 04, 2012 9:22 am

Всем привет!
sochkasov, спасибо за прошивки. Жду свой клон ардуины, как придет, сразу попробую :)
Аватара пользователя
ser009
Сообщения: 595
Зарегистрирован: Сб окт 13, 2012 9:55 am
Благодарил (а): 4 раза
Поблагодарили: 43 раза

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

Сообщение ser009 » Вт ноя 20, 2012 7:17 am

Я установил данную прошивку на Mega2560
Заработало.

Помоги дописать прошивку, чтобы были дискретные входа и по 1-wire передавались данные на сервер
BATONS
Сообщения: 107
Зарегистрирован: Сб июн 30, 2012 7:54 am
Благодарил (а): 0
Поблагодарили: 14 раз

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

Сообщение BATONS » Вт ноя 20, 2012 8:30 am

я к стати тоже ищу прошивку к ардуино "эмулятор DS2450" или любого другого АЦП.
может у кого есть? Хочется обрабатывать данные ардуиной и отсылать их по 1-Wire
Ответить