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

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

Модератор: immortal

Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

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

Сообщение Chainik »

Странно, что в чат ничего не попадает, потому что Say должен был написать хотя бы "T1=" и "T2="...
Если у вас будет 10 датчиков, то насколько я понимаю, должно быть так:

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
preg_match('~ff64e5511704:(.*?);~',$Val,$T1);
preg_match('~ff6dc3521704:(.*?);~',$Val,$T2);
preg_match('~333333333333:(.*?);~',$Val,$T3);
//и т.д.
preg_match('~999999999999:(.*?);~',$Val,$T9);
$T10 = substr($Val,-5);
sg('Ваш_объект.Ваше_свойство_для_Т1', $T1[1]);
sg('Ваш_объект.Ваше_свойство_для_Т2', $T2[2]);
sg('Ваш_объект.Ваше_свойство_для_Т3', $T3[3]);
//и т.д.
sg('Ваш_объект.Ваше_свойство_для_Т9', $T9[9]);
sg('Ваш_объект.Ваше_свойство_для_Т10', $T10);
А так даже будет более универсально:

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
$T1 = substr(strstr($Val, 'ff64e5511704:'), 13, 5);
$T2 = substr(strstr($Val, 'ff6dc3521704:'), 13, 5);
$T3 = substr(strstr($Val, '333333333333:'), 13, 5);
//и т.д.
$T10 = substr(strstr($Val, 101010101010:'), 13, 5);
sg('Ваш_объект.Ваше_свойство_для_Т1', $T1);
sg('Ваш_объект.Ваше_свойство_для_Т2', $T2);
sg('Ваш_объект.Ваше_свойство_для_Т3', $T3);
//и т.д.
sg('Ваш_объект.Ваше_свойство_для_Т10', $T10);
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am

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

Сообщение seregaural »

Спасибо, не только заставил всё работать, но и сам немного разобрался в логике majordomo
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am

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

Сообщение seregaural »

и еще вопрос остался. Я так понимаю иногда шина занята. В свойствах объекта в таком случае очищает поле. На графике это показывает как 0 С
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

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

Сообщение Chainik »

seregaural писал(а): Пн дек 24, 2018 11:09 am и еще вопрос остался. Я так понимаю иногда шина занята. В свойствах объекта в таком случае очищает поле. На графике это показывает как 0 С
Ну да, шина может быть занята конвертацией. В этом случае (как написано в инструкции) она возвращает "Busy". Т.е. надо в скрипте учесть и обработать такой ответ от нее.

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
if ($Val == "Busy") {
setTimeOut('myTimer_RepeatedRequest','runScript("Имя_вашего_(данного)_скрипта");',1);
return"";
}
$T1 = substr(strstr($Val, 'ff64e5511704:'), 13, 5);
//и т.д. ...
Сам, правда, не пробовал вешать датчики шиной и с описанным явлением не сталкивался. Но по идее, предложенный вариант должен помочь. При получении ответа "Busy" исполняемый скрипт перезапускает сам себя через секунду (а на конвертацию, вроде бы, уходит 0,85 сек.).
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am

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

Сообщение seregaural »

всё равно возврщает пустые значения
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am

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

Сообщение seregaural »

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
$T1 = substr(strstr($Val, 'ff64e5511704:'), 13, 5);
$T2 = substr(strstr($Val, 'ff6dc3521704:'), 13, 5);

if ($Val == "busy") {
setTimeOut('myTimer_RepeatedRequest','runScript("MegaD33DS18B20");',1);
return"";
}

Say("T1=".$T1);
Say("T2=".$T2);


sg('MegaD_33.t_kotel', $T1);
sg('MegaD_33.t_garage', $T2);
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am

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

Сообщение seregaural »

решил так попробовать, посмотрим как пойдет

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
$T1 = substr(strstr($Val, 'ff64e5511704:'), 13, 5);
$T2 = substr(strstr($Val, 'ff6dc3521704:'), 13, 5);

if ($Val == "busy") {
 
}
else {
sg('MegaD_33.t_kotel', $T1);
sg('MegaD_33.t_garage', $T2);
}




Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

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

Сообщение Chainik »

Добавьте Say после проверки на busy. Т.е.

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

//..
if ($Val == "busy" or $Val == "Busy") {
Say($Val);
}
//...
В таком случае сможете понять, совпадает ли пустое значение с моментом возвращения Busy или появление пустых значений связано с чем-то другим.
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am

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

Сообщение seregaural »

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

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$Val = file_get_contents("http://192.168.0.14/sec/?pt=33&cmd=list");
$T1 = substr(strstr($Val, 'ff64e5511704:'), 13, 5);
$T2 = substr(strstr($Val, 'ff6dc3521704:'), 13, 5);

if ($Val == "busy") {
sg('MegaD_33.t_kotel', $70);
sg('MegaD_33.t_garage', $50);
} else {
sg('MegaD_33.t_kotel', $T1);
sg('MegaD_33.t_garage', $T2);
Say("T1=".$T1);
Say("T2=".$T2);
}
Странным остлось, что включил в код выдавать конкретные значения, когда busy. Так вот через wifi, все равно были пустые значения, а через провод, прописывались 70 и50, как и указано в коде. Дело во времени ожидания ответа? :?:
cheese
Сообщения: 8
Зарегистрирован: Чт окт 29, 2015 10:57 am
Откуда: Минск

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

Сообщение cheese »

Господа, есть проблема с которой не могу совладать больше года.
Если установить majordomo в каталог отличный от /var/www (к примеру в /var/www/abc), то не видит ни одну Мегу в сети. Даже если добавляешь вручную.
А если, ничего не меняя, перенести majordomo в каталог /var/www, то все в порядке.

Сетевые настройки одинаковые, majordomo работает отлично в любом каталоге.

Что может быть?

P.S. Устанавливаю в отдельный каталог, потому что на серваке должно крутиться несколько систем.
И данная проблема происходит с чистой установки линукса и majodomo. Использовались ubuntu 18.04 и Debian 9,1,2,3,4,5
Ответить