majkl84 писал(а):
Не давно я подключал не сколько датчиков на один интерфейс и тоже значения были бредовые убрал привязку в MGM в устройствах и все стало ок.
Не много не понял, вы без дописывания своих скриптов получали значения температурных датчиков на одной шине с меги?
Я пропустил весь разговор про подключение датчиков температуры на один канал меги, с настройкой 1wbus, но хотел бы высказаться и послушать замечания.
В общем, у меня все заработало:
1) Создан Класс "шина №1" и у него свойства по количеству датчиков. У класса один объект "Датчики_шины1" с наследуемыми свойствами класса которые обновляются через метод, в котором разбирается ответ:
Код: Выделить всё
$listTemps = file_get_contents("http://192.168.1.10/***/?pt=31&cmd=list");
Шин планируется 3.
2) Далее есть скрипт с циклом на две минуты с 20 сек. слипами между перезапусками метода.
3) В кроне идет его перезапуск каждые 2 минуты.
Информеры на сцене меняются, графики рисуются. Пока все сложно метод + сценарий + крон, но мне так проще отследить косяки и расширять функционал в начале настройки.
Замечания:
1) Мега опрашивает шину раз в 30сек. Если происходит совпадение запроса с опросом шины, то прилетает как раз ответ «Busy».
Вывод тут такой, 30 секундная инерция с обновлением показаний может быть критична в контроле системы отопления, надо будет дополнительно это обдумать.
И если критично? опрашивать шину принудительно - «
http://192.168.0.14/sec/?pt=32&cmd=conv».
2) Я считаю не стоит перегружать метод «onNewMinute» своими задачами, из названия понятно? что метод должен выполняться за минуту и не более.
Идеально было бы запуск в отдельном потоке через: runScriptSafe($id,$data);, но у меня вис скрипт «onNewMinute» хоть и с именем сценария, хоть с id сценария.
Что не так:
,
По опросу мегой датчиков DS18B20 висящих по одному на порту с настройкой 1w:
1) Они будут менять значения если в настройках меги стоит галочка на «srv-loop».
2) Не смог найти пока информации как часто мега отправляет состояния портов, но по изменению информера выходит примерно 1 раз в минуту.
Получается в случае если скорость обновления должна быть меньше минуты:
1) Менять в прошивке меги времени отправки состояния портов.
2) В модуле MegaD создавать методы по опросу портов меги.
3) Создавать сценарий и вешать его в крон. (Подскажите строку запроса по которой можно узнать показания термодатчика с меги).