[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: [Модуль] MegaD (megad)

Сообщение seregaural » Сб дек 22, 2018 7:25 pm

Спасибо, что не бросаете в беде ))) Два датчика на этот момент на 33 порту меги ff64e5511704:60.37;ff6dc3521704:10.31
Создал метод GetValue, в нем код
СпойлерПоказать
//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("192.168.0.14/sec/?pt=33&cmd=list");
//Если шина в момент запроса значений занята их конвертацией, то дополнительно имеет смысл перезапустить метод, выждав небольшую паузу
if ($Val == "Busy") {
setTimeOut($this->object_title,'callMethod($this->object_title.".GetValue");',1);
return"";
}

$Address = $this->getProperty('SensorAddress');
$T = substr($Val,$Address,5);
$this->setProperty('Value',$T);
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: [Модуль] MegaD (megad)

Сообщение seregaural » Сб дек 22, 2018 7:27 pm

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=32&cmd=list");
$T1 = substr($Val,"eedb39231601:",5);
$T2 = substr($Val,"ffdb02541604:",5);
sg('Ваш_объект.Ваше_свойство_для_Т1', $T1);
sg('Ваш_объект.Ваше_свойство_для_Т2', $T2);
Это другой вариант решения? его тоже пробовал. Не получилось
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: [Модуль] MegaD (megad)

Сообщение seregaural » Сб дек 22, 2018 7:29 pm

Метод или скрипт - пока мало опыта, что бы понять, что лучше в моем случае
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Сб дек 22, 2018 7:38 pm

Давайте остановимся пока на последнем варианте, т.к. он проще. Для начала надо поправить в коде адреса датчиков на ваши (ну и номер порта проверьте), т.е.:

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
$T1 = substr($Val,"ff64e5511704:",5);
$T2 = substr($Val,"ff6dc3521704:",5);
Say("T1=".$T1);
Say("T2=".$T2);
sg('Ваш_объект.Ваше_свойство_для_Т1', $T1);
sg('Ваш_объект.Ваше_свойство_для_Т2', $T2);
Во вторых, вместо "Ваш_объект.Ваше_свойство_для_Т1" и "Ваш_объект.Ваше_свойство_для_Т2" надо вписать ваши Объект.свойства, в которые должны писаться значения с датчиков.

Предлагаю пока создать тестовый скрипт. Так проще будет. Как добьемся результата, можно будет уже "сочинять" постоянные объекты и методы.

Что выдается в чат после исполнения скрипта (т.е. правильные ли значения с датчиков)?
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: [Модуль] MegaD (megad)

Сообщение seregaural » Сб дек 22, 2018 7:54 pm

СпойлерПоказать
Warning: substr() expects parameter 2 to be integer, string given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(150) : eval()'d code on line 3 Warning: substr() expects parameter 2 to be integer, string given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(150) : eval()'d code on line 4
собственно на этом и загвоздка. А может я в корне все неправльн делаю :?:
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Сб дек 22, 2018 8:06 pm

Мда... что-то в синтаксисе по функции substr. У меня та же ошибка. В общем, надо добиться того, чтобы вытаскивать из ответа Меги значение с конкретного датчика. Сейчас погуглим...
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Сб дек 22, 2018 8:55 pm

Прошу прощения, что "подсунул" косячный код... Дело в том, что я и в первый раз писал его без проверки.
В общем, "глубокое бурение" помогло и сейчас этой ошибки уже быть не должно.

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
preg_match('~ff64e5511704:(.*?);~',$Val,$T1); 
$T2 = substr($Val,-5);
Say("T1=".$T1[1]);
Say("T2=".$T2);
sg('Ваш_объект.Ваше_свойство_для_Т1', $T1);
sg('Ваш_объект.Ваше_свойство_для_Т2', $T2);
Что по поводу после исполнения скрипта пишет в чате и появляются ли значения в соответствующих Объект.Свойствах?
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: [Модуль] MegaD (megad)

Сообщение seregaural » Сб дек 22, 2018 9:23 pm

СпойлерПоказать
Warning: strlen() expects parameter 1 to be string, array given in C:\_majordomo\htdocs\lib\caching.class.php on line 19
в объект.свойства значение "array"
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Сб дек 22, 2018 9:34 pm

Попробуйте заменить в коде $T1 на $T1[1]

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

sg('Ваш_объект.Ваше_свойство_для_Т1', $T1[1]);
Что пишет в чате, появляются ли значения температуры в Объект.Свойствах?
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: [Модуль] MegaD (megad)

Сообщение seregaural » Сб дек 22, 2018 9:43 pm

в чате пусто, в объект.свойства все великолепно, температура прописывается. а как дописать код, если у меня будет допустим 10 датчиков?
Ответить