доброго времени суток,
Я занимаюсь мкроконтроллерами, в php и http программирование только начинающий. Есть у меня железо, где используются платы от ардуино, но софт для микроконтроллеров написан на С в оболочке AVRStudio 4. Как вы смотрите чтобы адаптировать этот проект под ваш? Если правильно понимаю, команды извне главный сервер на компе воспринимает только вот таким способом?
железо на ардуино+С
Модератор: immortal
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: железо на ардуино+С
Добрый день,
Очень интересное железо. События извне могут поступать как http запросы, как описано по той ссылке. Но, в принципе, можно сделать любой интерфейс, было бы желание
Очень интересное железо. События извне могут поступать как http запросы, как описано по той ссылке. Но, в принципе, можно сделать любой интерфейс, было бы желание

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 38
- Зарегистрирован: Сб дек 01, 2012 9:05 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: железо на ардуино+С
один из вариантов :
у меня контролер управляющий светом/звуком, принимающий события от ик датчиков и кнопок общается с сервером через tcp , так вот я сделал чтобы по команде с сервера он выдавал все свои параметры в виде "ROOM_L=0&HALL_L=0&TOAL_L=0&BATH_L=0&KTCH_L=0&ROOM_A=1"
далее запускается небольшой php скрипт который висит и в цикле раз в пару секунд опрашивает контролер, далее через parse_str разбивает ответ от мк в переменные, а переменные в свою очередь записываются напрямую в базу данных mysql по своим ячейкам
PS: скрипт уровня "быдлокод" ) но все работает, xx - номер ячейки в таблице pvalues
PPS: управление из majordomo происходит как команда в порт мк типа "e01" "d01" где e/d - вкл/выкл , а 01 номер порта для управления
у меня контролер управляющий светом/звуком, принимающий события от ик датчиков и кнопок общается с сервером через tcp , так вот я сделал чтобы по команде с сервера он выдавал все свои параметры в виде "ROOM_L=0&HALL_L=0&TOAL_L=0&BATH_L=0&KTCH_L=0&ROOM_A=1"
далее запускается небольшой php скрипт который висит и в цикле раз в пару секунд опрашивает контролер, далее через parse_str разбивает ответ от мк в переменные, а переменные в свою очередь записываются напрямую в базу данных mysql по своим ячейкам
PS: скрипт уровня "быдлокод" ) но все работает, xx - номер ячейки в таблице pvalues
Код: Выделить всё
#!/usr/bin/php
<?
include_once('/var/www/config.php');
while (1 == 1) {
$fp = fsockopen("my_controler_host", 4444); if (!$fp) {echo "$errstr ($errno)n"; exit();}
fwrite($fp, "l"); $content = fgets($fp); parse_str($content); fclose($fp);
$mysqli = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if (mysqli_connect_errno()) {echo "Подключение невозможно: ".mysqli_connect_error();}
$mysqli->query("set character_set_client='utf8';"); $mysqli->query("set character_set_results='utf8';"); $mysqli->query("set collation_connection='utf8_general_ci';");
$mysqli->query("UPDATE ihome.pvalues SET VALUE = ".$ROOM_L." WHERE pvalues.ID = xx;");
$mysqli->query("UPDATE ihome.pvalues SET VALUE = ".$HALL_L." WHERE pvalues.ID = xx;");
$mysqli->query("UPDATE ihome.pvalues SET VALUE = ".$ROOM_A." WHERE pvalues.ID = xx;");
$mysqli->query("UPDATE ihome.pvalues SET VALUE = ".$HALL_A." WHERE pvalues.ID = xx;");
$mysqli->close();
sleep(2);
}
?>
Re: железо на ардуино+С
Немного доработал железо. Теперь можно в строку message вводить строку типа "192.168.0.2/objects/?object=sensorMovement&op=m&m=statusChanged+&" и при определенном действии (в зависимости от сенсора это нажатие или движение или температура и т.д.) будет вызываться соответствующий скрипт на сервере. Максимальная длина строки = 70 символов.
Re: железо на ардуино+С
но теперь модуль либо посылает сообщения непосредственно другому модулю, либо на сервер. Чтобы работало и то и то, думаю сделать чтобы каждое сообщение от модуля к модулю дублировалось на сервер, т.е. сервер будет слушать сеть и писать все сообщения в лог и на определенные как-нибудь реагировать.
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: железо на ардуино+С
Прямое общение между модулями это здорово. Я сам думал, что железяки должны сами между собой общаться для критических функций, а сервер для мониторигра и более сложных сценариев.stepani писал(а):но теперь модуль либо посылает сообщения непосредственно другому модулю, либо на сервер. Чтобы работало и то и то, думаю сделать чтобы каждое сообщение от модуля к модулю дублировалось на сервер, т.е. сервер будет слушать сеть и писать все сообщения в лог и на определенные как-нибудь реагировать.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги