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

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

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

Сообщение kbnn » Пн сен 16, 2013 3:51 pm

Люди добрые, ну объясните пожалуйста.
Есть Arduino с Ethernet Shieldом и сенсором температуры. Есть MojorDoMo.
Как сделать, что бы MojorDoMo получала температуры из Arduino?

PS. Вот интересный проект, но не хватает примеров реализации.
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

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

Сообщение LutsenkoDenis » Пн сен 16, 2013 10:40 pm

Если кратко то...
Majordomo
Создать класс, объект с методом и свойства класса. Описание тут: http://smartliving.ru/Main/BasicsObjects
Arduino:
Получить данные с датчика и вызвать метод класса. Обсуждение с примерами. http://smartliving.ru/forum/viewtopic.p ... 6&start=10
Хороший пример с комментами тут: https://github.com/sochkasov/majordomo- ... roller.ino
За это сообщение автора LutsenkoDenis поблагодарили (всего 2):
tsember (Вс фев 15, 2015 2:24 am) • theroin (Пн мар 15, 2021 8:07 am)
Рейтинг: 2.33%
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вт сен 17, 2013 4:14 pm

Вот ещё в копилку -- подключение Arduino без ethernet-shield-а и передача данных в MajorDoMo: http://smartliving.ru/Main/ArduinoDirect

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

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

Сообщение kbnn » Ср сен 18, 2013 7:43 am

LutsenkoDenis писал(а):Если кратко то...
Majordomo
Создать класс, объект с методом и свойства класса. Описание тут: http://smartliving.ru/Main/BasicsObjects
Arduino:
Получить данные с датчика и вызвать метод класса. Обсуждение с примерами. http://smartliving.ru/forum/viewtopic.p ... 6&start=10
Хороший пример с комментами тут: https://github.com/sochkasov/majordomo- ... roller.ino
Огромное спасибо. Получилось.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

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

Сообщение dmw » Вт сен 24, 2013 10:59 am

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

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

Сообщение sergejey » Вт сен 24, 2013 11:19 am

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

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

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

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

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

Сообщение dmw » Вт сен 24, 2013 1:20 pm

Спасибо, действительно работает. Однако процессор загружается с обычных 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? Как это безболезненно сделать?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

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

Сообщение sergejey » Вт сен 24, 2013 2:15 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? Как это безболезненно сделать?

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
kabir
Сообщения: 3
Зарегистрирован: Ср апр 12, 2017 8:19 am
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение kabir » Ср апр 12, 2017 8:36 am

Доброго времени суток, прочитал всю ветку, но так и не понял, как настроить MDM для получения данных о температуре и управления реле.

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

Заранее спасибо...
Петр
Сообщения: 2
Зарегистрирован: Пт сен 29, 2017 5:38 pm
Благодарил (а): 16 раз
Поблагодарили: 0

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

Сообщение Петр » Вс ноя 05, 2017 8:38 pm

kabir, у меня аналогичная проблема...
Но я так понял, что на форуме все заняты "высокими материями" и не очень готовы помогать новичкам :(
Ответить