Модуль управления Laurent (Лоран)
Модератор: immortal
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Модуль управления Laurent (Лоран)
Так же виснет на этапе ожидания ответа модуля.
Не знаю почему, но пока я дополнял команды байтами (для Arduino)
//byte CRbyte = 13; // HEX 0x0D
//byte LFbyte = 10; // HEX 0x0A
, как написано в документации, ничего не работало. А вот такая конструкция
lclient.println(buf);
delay(100);
(без добавления этих байтов) — заработала.
И ещё. Без добавления задержки delay(100) после посылки команды никакких ответов от модуля тоже не было. Может это как-то поможет.
Не знаю почему, но пока я дополнял команды байтами (для Arduino)
//byte CRbyte = 13; // HEX 0x0D
//byte LFbyte = 10; // HEX 0x0A
, как написано в документации, ничего не работало. А вот такая конструкция
lclient.println(buf);
delay(100);
(без добавления этих байтов) — заработала.
И ещё. Без добавления задержки delay(100) после посылки команды никакких ответов от модуля тоже не было. Может это как-то поможет.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль управления Laurent (Лоран)
продолжаем наши пляски... добавил задержку.
- Вложения
-
- l_test.zip
- (1.23 КБ) 285 скачиваний
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Модуль управления Laurent (Лоран)
Задержка не помогла.
Информация для размышления:
1 — Модуль на любой символ или цепочку символов + ENTER отвечает #ERR, а у нас — молчёк.
2 — возможно здесь [socket_write($socket, $in, strlen($in));] на самом деле ничего не посылается или посылается «не туда»
3 — Вот эта конструкция [ $out = socket_read($socket, 2048, PHP_NORMAL_READ)) ] наглухо висит (чего-то ждёт), даже если её вытащить из цикла.
Информация для размышления:
1 — Модуль на любой символ или цепочку символов + ENTER отвечает #ERR, а у нас — молчёк.
2 — возможно здесь [socket_write($socket, $in, strlen($in));] на самом деле ничего не посылается или посылается «не туда»
3 — Вот эта конструкция [ $out = socket_read($socket, 2048, PHP_NORMAL_READ)) ] наглухо висит (чего-то ждёт), даже если её вытащить из цикла.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль управления Laurent (Лоран)
Давай всё-таки ты сделаешь порт-мэппинг, как я в привате написал, будет быстрее наверное.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Модуль управления Laurent (Лоран)
Welcome!
- Вложения
-
- a3.png (29.2 КБ) 10400 просмотров
-
- a2.png (21.52 КБ) 10400 просмотров
-
- a1.png (8.87 КБ) 10400 просмотров
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль управления Laurent (Лоран)
Alex, уже можно убирать маппинг портов.
Ушло буквально 5 минут, чтобы найти в чем дело. вот что значит иметь доступ к железу ))
Значит так, в аттаче файл laurent.class.php его надо положить в папку ./lib/ и тогда можно пользоваться в сценариях следующей командой:
пример вызова:
после этого в $result будет что-то вроде:
ну и остальные команды будут работать аналогично.
т.е. можно говорить о полноценной поддержки устройства. единственное, что меня смущает, так это то, что команды передаются и получаются результаты, но при этом постоянного соединения с устройством не поддерживается. это значит, что система не узнает мгновенно об изменении на каком-нибудь из датчиков, а только путём периодического опроса состояния. но пока остановимся хотя бы на этом
Ушло буквально 5 минут, чтобы найти в чем дело. вот что значит иметь доступ к железу ))
Значит так, в аттаче файл laurent.class.php его надо положить в папку ./lib/ и тогда можно пользоваться в сценариях следующей командой:
Код: Выделить всё
laurent_command('<адрес устройтсва>', '<команда>', '<пароль к устройству>');
Код: Выделить всё
$result=laurent_command('192.168.2.100', '$KE,INF', 'Laurent');
Код: Выделить всё
#INF,Laurent,La01,J89F-V571-XU43-L308
т.е. можно говорить о полноценной поддержки устройства. единственное, что меня смущает, так это то, что команды передаются и получаются результаты, но при этом постоянного соединения с устройством не поддерживается. это значит, что система не узнает мгновенно об изменении на каком-нибудь из датчиков, а только путём периодического опроса состояния. но пока остановимся хотя бы на этом
- Вложения
-
- laurent.zip
- (536 байт) 319 скачиваний
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Модуль управления Laurent (Лоран)
Да, супер. Попробовал — работает. Но как всегда не обошлось без вопросов .
Посмотрел я код и что-то не понял
$in='$KE'."\r\n";
$in='$KE,PSW,SET,'.$password."\r\n";
$in=$command."\r\n";
Он что, при каждом вызове последовательно посылает 3 команды?
И ещё вопрос. Есть команда $KE,DAT,ON после которой модуль начинает выдавать полную статистику каждую секунду. Во-первых, как ловить эту статистику (там штук 15 различных параметров). И, во-вторых, после подачи этой команды ($KE,DAT,ON) остановить её не удаётся ни из MajorDoMo, ни даже из терминала . Остановить удаётся только из Arduino Ethernet, типа ($KE,DAT,OFF).
Посмотрел я код и что-то не понял
$in='$KE'."\r\n";
$in='$KE,PSW,SET,'.$password."\r\n";
$in=$command."\r\n";
Он что, при каждом вызове последовательно посылает 3 команды?
И ещё вопрос. Есть команда $KE,DAT,ON после которой модуль начинает выдавать полную статистику каждую секунду. Во-первых, как ловить эту статистику (там штук 15 различных параметров). И, во-вторых, после подачи этой команды ($KE,DAT,ON) остановить её не удаётся ни из MajorDoMo, ни даже из терминала . Остановить удаётся только из Arduino Ethernet, типа ($KE,DAT,OFF).
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль управления Laurent (Лоран)
Да, для надёжности. С каждой командой открывается новое tcp-соединение и потом закрывается. Оно, возможно, и избыточно, но мне показалось, что так проще и надёжней.Alex писал(а):Да, супер. Попробовал — работает. Но как всегда не обошлось без вопросов .
Посмотрел я код и что-то не понял
$in='$KE'."\r\n";
$in='$KE,PSW,SET,'.$password."\r\n";
$in=$command."\r\n";
Он что, при каждом вызове последовательно посылает 3 команды?
А нельзя эту статистику получить разово или через другие команды? Текущая реализация не предполагает реакцию, на какие-то события от устройства, т.к. устанавливается соединение только чтобы отправить команду и получить ответ.Alex писал(а): И ещё вопрос. Есть команда $KE,DAT,ON после которой модуль начинает выдавать полную статистику каждую секунду. Во-первых, как ловить эту статистику (там штук 15 различных параметров). И, во-вторых, после подачи этой команды ($KE,DAT,ON) остановить её не удаётся ни из MajorDoMo, ни даже из терминала . Остановить удаётся только из Arduino Ethernet, типа ($KE,DAT,OFF).
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Модуль управления Laurent (Лоран)
На 98% можно получать через другие команды. Но бывают моменты, когда информация только выдаётся только там. Не критично, но можно поставить в список задач.А нельзя эту статистику получить разово или через другие команды?
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Модуль управления Laurent (Лоран)
Можно сделать процедуру, которая будет включать статистику, получать информацию и сразу выключать статистику. Такой вариант подойдёт?Alex писал(а):На 98% можно получать через другие команды. Но бывают моменты, когда информация только выдаётся только там. Не критично, но можно поставить в список задач.А нельзя эту статистику получить разово или через другие команды?
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги