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

Получение данных из Arduino в MojorDoMo

Добавлено: Пн сен 16, 2013 3:51 pm
kbnn
Люди добрые, ну объясните пожалуйста.
Есть Arduino с Ethernet Shieldом и сенсором температуры. Есть MojorDoMo.
Как сделать, что бы MojorDoMo получала температуры из Arduino?

PS. Вот интересный проект, но не хватает примеров реализации.

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Пн сен 16, 2013 10:40 pm
LutsenkoDenis
Если кратко то...
Majordomo
Создать класс, объект с методом и свойства класса. Описание тут: http://smartliving.ru/Main/BasicsObjects
Arduino:
Получить данные с датчика и вызвать метод класса. Обсуждение с примерами. http://smartliving.ru/forum/viewtopic.p ... 6&start=10
Хороший пример с комментами тут: https://github.com/sochkasov/majordomo- ... roller.ino

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Вт сен 17, 2013 4:14 pm
sergejey
Вот ещё в копилку -- подключение Arduino без ethernet-shield-а и передача данных в MajorDoMo: http://smartliving.ru/Main/ArduinoDirect

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Ср сен 18, 2013 7:43 am
kbnn
LutsenkoDenis писал(а):Если кратко то...
Majordomo
Создать класс, объект с методом и свойства класса. Описание тут: http://smartliving.ru/Main/BasicsObjects
Arduino:
Получить данные с датчика и вызвать метод класса. Обсуждение с примерами. http://smartliving.ru/forum/viewtopic.p ... 6&start=10
Хороший пример с комментами тут: https://github.com/sochkasov/majordomo- ... roller.ino
Огромное спасибо. Получилось.

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Вт сен 24, 2013 10:59 am
dmw
http://smartliving.ru/Main/ArduinoDirect - тут в статье описывается возможность только для Windows систем, а как сделать для Ubuntu?

Пока использую библиотеку php_serial.class (файл php_serial.class.php сложил в папку /www/lib).
PHP скрипт:

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

<?php 
include "./lib/php_serial.class.php"; 
$serial = new phpSerial;
//Путь к Arduino 
$serial->deviceSet("/dev/ttyACM0");
//Это стандарт
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
sleep (4);
//Читаем ответ Arduino
$read = $serial->readPort();
echo "Data: " . $read . "\n";
?> 
работает, т.е. выдает первые строки при инициализации Arduino и завершает работу.
Как сделать чтобы он мог постоянно висеть в памяти и мониторить все что выдает arduino в serial?

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Вт сен 24, 2013 11:19 am
sergejey

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

//Читаем ответ Arduino
$read = $serial->readPort();
echo "Data: " . $read . "\n";
меняем на

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

//Читаем ответ Arduino
while(1) {
 $read = $serial->readPort();
 echo "Data: " . $read . "\n";
}

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Вт сен 24, 2013 1:20 pm
dmw
Спасибо, действительно работает. Однако процессор загружается с обычных 18% до 99,4%.
Поставил задержку в 50 миллисекунд, вроде полегчало, теперь загрузка 19%:

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

<?php 
include "./lib/php_serial.class.php"; 
$serial = new phpSerial;
//Путь к Arduino 
$serial->deviceSet("/dev/ttyACM0");
//Это стандарт
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
//Читаем ответ Arduino
while(1) {
 usleep(50000); //Задержка 50 миллисекунд
 $read = $serial->readPort();
 if ($read<>"") {
  echo "Data: " . $read . "\n";
 }
}
Или оптимальней будет попробовать интегрировать этот кусок в главный цикл cycle.php? Как это безболезненно сделать?

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Вт сен 24, 2013 2:15 pm
sergejey
dmw писал(а):Спасибо, действительно работает. Однако процессор загружается с обычных 18% до 99,4%.
Поставил задержку в 50 миллисекунд, вроде полегчало, теперь загрузка 19%:

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

<?php 
include "./lib/php_serial.class.php"; 
$serial = new phpSerial;
//Путь к Arduino 
$serial->deviceSet("/dev/ttyACM0");
//Это стандарт
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
//Читаем ответ Arduino
while(1) {
 usleep(50000); //Задержка 50 миллисекунд
 $read = $serial->readPort();
 if ($read<>"") {
  echo "Data: " . $read . "\n";
 }
}
Или оптимальней будет попробовать интегрировать этот кусок в главный цикл cycle.php? Как это безболезненно сделать?

Всё правильно, с задержкой оно, конечно, меньше нагружать будет.
Интегрировать с запуском главного цикла очень легко -- просто положить этот скрипт в папку ./scripts/ и назвать cycle_arduino.php (название можно любое, главное что б с cycle_ начиналось). В таком случае, основной цикл запустит этот скрипт паралельно с остальными циклами сразу после проверки того, что база данных доступна.

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Ср апр 12, 2017 8:36 am
kabir
Доброго времени суток, прочитал всю ветку, но так и не понял, как настроить MDM для получения данных о температуре и управления реле.

Orange pi pc (Установлен MDM Diet)
Arduino UNO (Прошивка https://github.com/sochkasov/majordomo- ... rWebServer)
Через веб-интерфейс вижу температуру.

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

Re: Получение данных из Arduino в MojorDoMo

Добавлено: Вс ноя 05, 2017 8:38 pm
Петр
kabir, у меня аналогичная проблема...
Но я так понял, что на форуме все заняты "высокими материями" и не очень готовы помогать новичкам :(