Программирование
Модератор: immortal
Re: Программирование
sergejey, доброго времени суток.
В настоящий момент пытаюсь разобраться с контроллером-исполнителем. Код, который представлен у Вас (http://smartliving.ru/Main/ArduinoCode2, http://smartliving.ru/Main/ArduinoCode3), у меня не компилируется ни как. Решил переписать его используя некоторые библиотеки (для упрощения понимания).
Перерыл вроде весь сайт не нашел ответа на вопрос, какой формат команд используется для управления исполнительными устройствами.
Я бы хотел получить полностью совместимое с Вашим кодом устройство, по этому прошу описать этот формат. Какие параметры могут передаваться туда и нужно ли в ответ что-то отвечать.
Судя по коду есть несколько команд:
Они соответственно вызывают какие либо процедуры. Например, хочу включить лампочку, которая включается подачей высокого уровня на D3
На контроллер мы должны что отправить?
Так?
Какой метод используется для запроса данных GET или POST?
И еще, я правильно понимаю, что сделанный Вами код может использоваться в контроллере при подключенном контроллере через USB или через Ethernet?
Заранее спасибо.
В настоящий момент пытаюсь разобраться с контроллером-исполнителем. Код, который представлен у Вас (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
На контроллер мы должны что отправить?
Код: Выделить всё
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: Программирование
Контроллер, который я использую для управления, запрограммирован достаточно просто.
Он принимает по http команды в виде GET-запроса, например такого: http://192.168.0.73/?CLICK,2
Вот полный код скрипта, который "кликает" по реле:
Я здесь ответ от контроллера даже не обрабатываю, но вообще контроллер должен отвечать просто OK.
Вместо CLICK может быть другая команда (ON, OFF).
Он принимает по http команды в виде GET-запроса, например такого: http://192.168.0.73/?CLICK,2
Вот полный код скрипта, который "кликает" по реле:
Код: Выделить всё
$url='http://192.168.0.73/?CLICK,2';
getURL($url,0);
Вместо CLICK может быть другая команда (ON, OFF).
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Re: Программирование
Сергей, спасибо за ответ.
Я переписал Ваш код ArduinoCode3 так, что он теперь работает на IDE Arduino 1.0.1. В ближайшее время выложу в открытый доступ, может кому пригодится.
У меня правда получились вызовы немного по другому. Но думаю это не критично, т.к. все равно их руками прописывать в настройках системы.
Теперь, я хочу расширить код, который у меня получился.
На данный момент он умеет:
Для чего Вы используете {"LED", commandsLed, }, оно нужно реально где-то?
Еще, просматривая код ArduinoCode2 я увидел тут:
что при включении светодиода, контроллер посылает на сервер еще запрос /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 пине.
Я переписал Ваш код 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 )
Еще, просматривая код 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");
}
}
для чего это делается?
Я пока не могу до конца разобраться с настройкой кода, выполняемого на сервере. И не могу понять некоторые вещи.
Например, если я делаю управление светом. В интерфейсе есть выключатель "ВКЛЮЧЕНИЕ СВЕТА".
В случае если контроллер подключен, то я нажимаю на эту кнопку, на контроллер посылается команда. На выходе контроллера получаем "1". Все правильно.
Но, я перегружаю контроллер. На заданном выходе я получаю "0". А в интерфейсе все равно отображается, что свет включен. Если я правильно понимаю для этого надо воспользоваться одним из 2-х способов, которые описаны тут http://smartliving.ru/Main/DevIpPower9223 . Но пока я не осилил привязку. Хотя состояние получаю.
Так вот, вопрос вот в чем. Не нужно сделать так, чтобы после каждого вызова команды на контроллере происходило примерно так:
1. Контроллер принял команду 5=ON
2. Делаем digitalWrite(5,HIGH);
3. Отсылаем на сервер что-то вроде /?P5=ON
В этом случае контроллер будет посылать подтверждение того, что он действительно включил "1" на 5 пине.
-
- Сообщения: 867
- Зарегистрирован: Вт янв 17, 2012 12:31 pm
- Благодарил (а): 121 раз
- Поблагодарили: 78 раз
Re: Программирование
код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1
выложите кто нибудь переделанную код под одну из версий....
может какой библиотеки не хватает...
выложите кто нибудь переделанную код под одну из версий....
может какой библиотеки не хватает...
Re: Программирование
Vit, доброго времени суток. Я по той-же причине решил переписать "под себя" код написанный Сергеем. На данный момент сделано 2 рабочие прошивки. Информер и информер-исполнитель. Причем с несколько расширенным функционалом. Единственное, что я не стал делать поддержку подключения контроллера исполнителя через USB. В моем случае - только Ethernet.Vit писал(а):код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1
выложите кто нибудь переделанную код под одну из версий....
может какой библиотеки не хватает...
IDE Arduino 1.0.1
код выложил тут https://github.com/sochkasov/majordomo-arduino
-
- Сообщения: 867
- Зарегистрирован: Вт янв 17, 2012 12:31 pm
- Благодарил (а): 121 раз
- Поблагодарили: 78 раз
Re: Программирование
спасибо, скачал , будем пробовать компилировать и эксперементировать))sochkasov писал(а):Vit, доброго времени суток. Я по той-же причине решил переписать "под себя" код написанный Сергеем. На данный момент сделано 2 рабочие прошивки. Информер и информер-исполнитель. Причем с несколько расширенным функционалом. Единственное, что я не стал делать поддержку подключения контроллера исполнителя через USB. В моем случае - только Ethernet.Vit писал(а):код не компилируется....вываливаются ошибки....пробовал ide arduino 017,022,1.0.1
выложите кто нибудь переделанную код под одну из версий....
может какой библиотеки не хватает...
IDE Arduino 1.0.1
код выложил тут https://github.com/sochkasov/majordomo-arduino
-
- Сообщения: 5
- Зарегистрирован: Пн окт 01, 2012 1:12 pm
- Благодарил (а): 0
- Поблагодарили: 0
Re: Программирование
Всем привет!
sochkasov, спасибо за прошивки. Жду свой клон ардуины, как придет, сразу попробую
sochkasov, спасибо за прошивки. Жду свой клон ардуины, как придет, сразу попробую
- ser009
- Сообщения: 595
- Зарегистрирован: Сб окт 13, 2012 9:55 am
- Благодарил (а): 4 раза
- Поблагодарили: 43 раза
Re: Программирование
Я установил данную прошивку на Mega2560
Заработало.
Помоги дописать прошивку, чтобы были дискретные входа и по 1-wire передавались данные на сервер
Заработало.
Помоги дописать прошивку, чтобы были дискретные входа и по 1-wire передавались данные на сервер
-
- Сообщения: 107
- Зарегистрирован: Сб июн 30, 2012 7:54 am
- Благодарил (а): 0
- Поблагодарили: 14 раз
Re: Программирование
я к стати тоже ищу прошивку к ардуино "эмулятор DS2450" или любого другого АЦП.
может у кого есть? Хочется обрабатывать данные ардуиной и отсылать их по 1-Wire
может у кого есть? Хочется обрабатывать данные ардуиной и отсылать их по 1-Wire