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

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

Модератор: immortal

Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

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

Странно, что в чат ничего не попадает, потому что 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);
За это сообщение автора Chainik поблагодарил:
seregaural (Пн дек 24, 2018 7:35 am)
Рейтинг: 1.16%
seregaural
Сообщения: 24
Зарегистрирован: Чт ноя 29, 2018 6:44 am
Благодарил (а): 3 раза
Поблагодарили: 0

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

Сообщение seregaural » Пн дек 24, 2018 7:36 am

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

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

Сообщение seregaural » Пн дек 24, 2018 11:09 am

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

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

Сообщение Chainik » Пн дек 24, 2018 11:29 am

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
Благодарил (а): 3 раза
Поблагодарили: 0

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

Сообщение seregaural » Чт дек 27, 2018 8:58 am

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

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

Сообщение seregaural » Чт дек 27, 2018 12:48 pm

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$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
Благодарил (а): 3 раза
Поблагодарили: 0

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

Сообщение seregaural » Чт дек 27, 2018 1:49 pm

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

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

//Получаем список значений (адрес, пароль, порт, разумеется, ваши)
$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
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

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

Сообщение Chainik » Чт дек 27, 2018 7:41 pm

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

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

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

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

Сообщение seregaural » Пт дек 28, 2018 6:27 am

дело было в 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
Откуда: Минск
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение cheese » Пт дек 28, 2018 11:04 am

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

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

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

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