Плагин MegaD



  • @sergeyygr:

    Доброе утро! А как на счет реализации диммера и управления RGB? Скоро будет?

    Добрый вечер, будет точно в этом году 🙂



  • @Alex_Jet:

    I2C каналы сейчас можно сделать …, но не происходит "обработки" данных в теле

    ...

    Вот этого, действительно не хватает! Для всех I2C-девайсов есть "отдельный" запрос по каждому параметру, например, http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=1 таким образом считываемый параметр легко привязать к устройству. Не стоит делать реализацию (cmd=get), при которой надо парсить сразу все значения параметров (так выводится в веб-интерфейсе, когда датчик подключен к MegaD "нативно"), придумывая как их привязывать к каналам. Сейчас только, если надо, например, для канала 31 сделать 7 подканалов не единовременно, то они будут разбросаны по разным местам.

    На гитхабе опубликован новый релиз 1.1.8 https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases

    Попробуйте, там такие запросы отрабатываются.

    Нужно назначить ID канала без привязки к порту, например: i2c_temp, i2c_31_temp, 310_temp - да как угодно, только чтобы начало адреса не было связано с портами 0-38, иначе плагин пытается вытащить данные из cmd=all строки.

    Также в новом релизе добавлены параметры:

    1. Отправлять время на контроллер - для опциональной отправки

    Время отправляется при старте плагина и при получении st=1 от контроллера

    2.Интервал отправки запросов (мсек)

    @Alex_Jet:

    И интересует более подробно п.4 - что это и зачем?

    В новом релизе плагина изменен механизм отправки команд.

    В предыдущей версии следующий запрос очереди опроса не отправлялся чаще 200 мсек, но пришедшая команда управления шла напрямую. Теперь все команды управления включаются в общую очередь - естественно в начало.

    В новой версии также добавлена возможность настроить интервал отправки запросов (200 мсек по умолчанию).

    То есть сейчас гарантируется, что обращения к контроллеру происходят не чаще заданного интервала, включая управление (получается не более 5 запросов в сек для 200 мсек)

    @Alex_Jet:

    Поскольку решил постепенно переходить на Cherry, то решил из нее делать хотя бы опрос датчиков без прослушки http-трапов от MegaD.

    Почему? Слушающий сервер ведь абсолютно как в Berry. Или?

    @Alex_Jet:

    Еще надо:

    1. Опционально (check box при настройке плагина) в журнал делать записи о перезагрузке MegaD (st=1).

    2. Адекватное поведение виджета плагина. Если остановлен, то STOPPED. Если в работе и MegaD нормально отвечает, то RUN. Если MegaD не отвечает, то NOT ACTIVATED до тех пор пока контроллер не ответит (сейчас если контроллера нет в сети, но плагин запущен происходит дергание STOPPED/RUN).

    Это относится к серверной части, обновление сделаем после праздников - возможно к середине месяца.



  • @Alex_Jet:

    Обновления, связанные с каналами MegaD-2561 в режиме DSEN/1WBUS и OUT/DS2413. На оба таких канала можно одновременно подключить как DS18B20, так и DS2413 - по несколько штук в том числе! В общем случае, при запросе вида http://192.168.0.14/sec/?pt=32&cmd=list будет выдано следующее:

    > aad6a070000:25.43;79c439000000:OFF/ON
    > 
    

    Отличия настроек каналов DSEN/1WBUS и OUT/DS2413:

    1. DSEN/1WBUS - контроллер сам посылает запрос на конвертацию температуры. Поэтому при переходе по ссылке Device List (или запросе http://192.168.0.14/sec/?pt=32&cmd=list) по адресам датчиков температуры будет выдано действительное значение температур, а по адресам DS2413 - состояние их портов:

    > aad6a070000:25.43;85a56a070000:32.43;79c439000000:OFF/OFF;c6c439000000:ON/ON
    > 
    

    2. OUT/DS2413 - контроллер не посылает запрос на конвертацию температуры, а в веб-интерфейсе контроллера есть кнопки ON/OFF для включения/отключения портов А и В DS2413. При этом если подключено несколько DS2413, то из веб-интерфейса контроллера будут включаться/выключаться порты всех DS2413 (соответственно - А или В). Раздельно можно включать только с помощью сервера - обращаясь к контроллеру с конкретным адресом:

    > http://192.168.0.14/sec/?cmd=32A:1&addr=c6c439000000
    > 
    

    При переходе по ссылке Device List (или запросе http://192.168.0.14/sec/?pt=32&cmd=list) по адресам датчиков температуры будет выдано значение температур до их конвертации, а по адресам DS2413 - состояние их портов:

    > aad6a070000:85.00;85a56a070000:85.00;79c439000000:OFF/OFF;c6c439000000:ON/ON
    > 
    

    Для данного случае чтобы получить действительные значения температур с датчиков необходимо перед считыванием состояния порта посылать команду на конвертацию температуры:

    > http://192.168.0.14/sec/?pt=32&cmd=conv
    > 
    

    Поскольку данные к каналам будут привязываться по адресам устройств, а запрос необходимо выполнять всего лишь раз, то логично в одном канале производить запрос на конвертацию температур, а в другом запрос по значениям. То есть для всей кучки из 100500 датчиков, подключенных к порту MegaD-2561 с режимом OUT/DS2413 нужно будет два запроса - на конвертацию температуры и запрос значений.

    На гитхабе опубликован новый релиз плагина с поддержкой DS2413:

    https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.9

    Каналы DS18B20 формируются как обычно: 32_aad6a070000

    Для DS2413 нужно создать два канала для портов А и B: 32_79c439000000_A, 32_79c439000000_B

    Время опроса для запроса /sec/?pt=32&cmd=list нужно как обычно выставить только в одном из каналов!

    Больше для каналов реле никакой настройки не требуется, команды управления будут сформированы автоматически



  • @intrapro:

    Нужно назначить ID канала без привязки к порту, например: i2c_temp, i2c_31_temp, 310_temp - да как угодно, только чтобы начало адреса не было связано с портами 0-38, иначе плагин пытается вытащить данные из cmd=all строки.

    А если номер канала обозначен как 30_1? Судя по логу привязка правильная получается. И в парсинге cmd=all этих каналов нет. Кстати, на MegaD-2561 каналов 38 шт. - от 0 до 37.

    06.01 23:40:36.127 megad2: 
    06.01 23:40:36.128 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d&i2c_par=1
    06.01 23:40:36.183 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    06.01 23:40:36.184 megad2:  body: 24.35
    06.01 23:40:36.185 IH: get [{"id":"30_1","value":"24.35"}]
    06.01 23:40:36.185 IH: set {"STEMP1_01":{"aval":"24.35","err":0}}
    06.01 23:40:36.327 megad2: 
    06.01 23:40:36.328 megad2: localhost => 192.168.11.22 HTTP GET /sec/?pt=34&scl=35&i2c_dev=htu21d
    06.01 23:40:36.353 megad2: localhost <= 192.168.11.22  response: statusCode=200 contentType = text/html
    06.01 23:40:36.354 megad2:  body: 24.08
    06.01 23:40:36.355 IH: get [{"id":"30_2","value":"24.08"}]
    06.01 23:40:36.355 IH: set {"SHUMIDITY1_01":{"aval":"24.08","err":0}}
    
    

    @intrapro:

    Также в новом релизе добавлены параметры:

    1. Отправлять время на контроллер - для опциональной отправки

    Время отправляется при старте плагина и при получении st=1 от контроллера

    Класс! Только почему в конце 282??? Это милисекунды? А должен быть день недели:

    06.01 23:48:49.431 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cf=7&stime=23:48:49:282
    
    

    Автор MegaD пишет: "Формат ЧЧ:ММ:СС:ДН, то есть 15:30:00:5 - последняя цифра - день недели…"

    @intrapro:

    То есть сейчас гарантируется, что обращения к контроллеру происходят не чаще заданного интервала, включая управление (получается не более 5 запросов в сек для 200 мсек)

    Это хорошо! Может быть у меня уйдут проблемы спонтанной перезагрузки двух контроллеров.

    @intrapro:

    Почему? Слушающий сервер ведь абсолютно как в Berry. Или?

    Пока не было функционала, который вы сейчас добавили, я не мог в контроллерах прописать адрес нового сервера. Соответственно http пакеты, которые контроллеры формируют самостоятельно, принимал только старый сервер. Делать постоянный http-polling контроллеров как-то не комильфо в плоской сети. Ну а нарезать VLAN с access-портами и несколько сетей - все руки не доходят.

    @intrapro:

    Это относится к серверной части, обновление сделаем после праздников - возможно к середине месяца.

    Отлично! И огромное спасибо за доработки! Мне уже можно переходить на Cherry 😄



  • @Alex_Jet:

    А если номер канала обозначен как 30_1? Судя по логу привязка правильная получается. И в парсинге cmd=all этих каналов нет.

    Ну и прекрасно, поскольку сами проверяем на эмуляторе, точно не знаем, что там будет в cmd=all для i2c.

    @Alex_Jet:

    Класс! Только почему в конце 282??? Это милисекунды? А должен быть день недели:

    > 06.01 23:48:49.431 megad2: localhost => 192.168.11.22 HTTP GET /sec/?cf=7&stime=23:48:49:282
    > 
    

    Автор MegaD пишет: "Формат ЧЧ:ММ:СС:ДН, то есть 15:30:00:5 - последняя цифра - день недели…"

    Что тогда обозначает cf? А можно ссылку, где описан этот запрос

    @Alex_Jet:

    И огромное спасибо за доработки! Мне уже можно переходить на Cherry 😄

    Надеемся, что Cherry заслужит ваше доверие, как и Berry 🙂

    Всех с Рождеством, друзья!



  • @intrapro:

    Ну и прекрасно, поскольку сами проверяем на эмуляторе, точно не знаем, что там будет в cmd=all для i2c.

    А с Андреем по поводу сотрудничества не связывались? 😉

    @intrapro:

    Что тогда обозначает cf? А можно ссылку, где описан этот запрос

    cf=7 - это "конфигурационная таблица №7" в коде прошивки микроконтроллера. Ссылка на "даташит" - https://www.ab-log.ru/smart-house/ethernet/megad-2561, на странице сделайте поиск по словосочетанию "синхронизировать время".

    @intrapro:

    Всех с Рождеством, друзья!

    Аналогично поздравляю Вас с Рождеством и всех соучастников тоже 🙂 !



  • Момент по расширениям в плагине. "Расширение" - /mod_megad.php?pt=7. Однако счетчик считает 2 раза:

    08.01 00:03:04.213 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&cnt=9&mdid=
    08.01 00:03:04.214 IH: get [{"id":"7","value":3989.510000000001}]
    08.01 00:03:04.214 IH: set {"METER1_01":{"aval":3989.510000000001,"err":0}}
    08.01 00:03:04.216 megad4: 192.168.11.24 <= localhost:11024 
    08.01 00:03:05.208 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=2&cnt=9&mdid=
    08.01 00:03:05.209 IH: get [{"id":"7","value":3989.5200000000013}]
    08.01 00:03:05.209 IH: set {"METER1_01":{"aval":3989.5200000000013,"err":0}}
    08.01 00:03:05.210 megad4: 192.168.11.24 <= localhost:11024 
    
    

    В Berry при такой настройке считал только 1 раз. "Удержание" (m=2) не считалось.



  • Еще проблема по "Расширения". Делаю запрос на другой контроллер MegaD - "http://192.168.11.24/sec/?cmd=15:2", запрос исполняется (свет включается/выключается), но как сообщить серверу что изменилось состояние канала на другом контроллере, а не на том от которого приходит команда???

    09.01 00:04:05.314 megad1: 192.168.11.21 => localhost:11021 HTTP GET /mod_megad.php?pt=0&click=2&cnt=8&mdid=
    09.01 00:04:05.314 IH: get []
    09.01 00:04:05.315 IH: set {}
    09.01 00:04:05.315 megad1: 192.168.11.21 <= localhost:11021 
    09.01 00:04:05.315 megad1: 
    09.01 00:04:05.316 megad1: localhost => 192.168.11.24 HTTP GET /sec/?cmd=15:2
    09.01 00:04:05.321 megad1: localhost <= 192.168.11.24  response: statusCode=200 contentType = text/html
    09.01 00:04:05.321 megad1:  body: Done
    
    

    Может быть в этом месте нужно не текстовое поле, а выпадающий список со всеми плагинами + произвольный запрос, при выборе которого появляется текстовое поле для ввода url?



  • Вопрос по счетчикам в MegaD… вроде все сделал по инструкции, но значения счетчика не приходят, причем в логах значения показываются. Где может быть ошибка?

    11.01 01:49:24.857 megad2: 
    11.01 01:49:24.857 megad2: localhost => 10.255.255.60 HTTP GET /sec/?pt=17&cmd=get
    11.01 01:49:24.863 megad2: localhost <= 10.255.255.60  response: statusCode=200 contentType = text/html
    11.01 01:49:24.863 megad2:  body: ON/300
    11.01 01:49:24.863 IH: get []
    11.01 01:49:24.864 IH: set {}
    
    

    И вопрос по сохранению значений: kernelchip хранит значение счетчиков в энергонезависимой памяти, а megad скидывает их при перезагрузке. Это решаемый вопрос? Как не потерять показания счетчика при отключении питания megad?



  • @homa:

    Вопрос по счетчикам в MegaD… вроде все сделал по инструкции, но значения счетчика не приходят, причем в логах значения показываются. Где может быть ошибка?

    > 11.01 01:49:24.857 megad2: 
    > 11.01 01:49:24.857 megad2: localhost => 10.255.255.60 HTTP GET /sec/?pt=17&cmd=get
    > 11.01 01:49:24.863 megad2: localhost <= 10.255.255.60  response: statusCode=200 contentType = text/html
    > 11.01 01:49:24.863 megad2:  body: ON/300
    > 11.01 01:49:24.863 IH: get []
    > 11.01 01:49:24.864 IH: set {}
    > 
    

    И вопрос по сохранению значений: kernelchip хранит значение счетчиков в энергонезависимой памяти, а megad скидывает их при перезагрузке. Это решаемый вопрос? Как не потерять показания счетчика при отключении питания megad?

    homa, а что вы сделали по инструкции? По вашему логу не видно, что от megad пришел get-запрос вида "/mod_megad.php?pt=7&cnt=9&mdid=", а видно, что вы опрашиваете контроллер средствами сервера, когда сам контроллер должен сообщать серверу о срабатывании контактов счетчика. Посмотрите мой лог двумя постами выше и какое "расширение" (звучит да действительно криво) надо прописать в плагине. Как раз описываю не верную работу плагина по "засчитыванию" показаний счетчика.

    По поводу сброса показаний в MegaD после перезагрузки - зачем их хранить в энергонезависимой памяти когда всему голова сам сервер?



  • @Alex_Jet:

    @homa:

    Вопрос по счетчикам в MegaD… вроде все сделал по инструкции, но значения счетчика не приходят, причем в логах значения показываются. Где может быть ошибка?

    > > 11.01 01:49:24.857 megad2: 
    > > 11.01 01:49:24.857 megad2: localhost => 10.255.255.60 HTTP GET /sec/?pt=17&cmd=get
    > > 11.01 01:49:24.863 megad2: localhost <= 10.255.255.60  response: statusCode=200 contentType = text/html
    > > 11.01 01:49:24.863 megad2:  body: ON/300
    > > 11.01 01:49:24.863 IH: get []
    > > 11.01 01:49:24.864 IH: set {}
    > > 
    

    И вопрос по сохранению значений: kernelchip хранит значение счетчиков в энергонезависимой памяти, а megad скидывает их при перезагрузке. Это решаемый вопрос? Как не потерять показания счетчика при отключении питания megad?

    homa, а что вы сделали по инструкции? По вашему логу не видно, что от megad пришел get-запрос вида "/mod_megad.php?pt=7&cnt=9&mdid=", а видно, что вы опрашиваете контроллер средствами сервера, когда сам контроллер должен сообщать серверу о срабатывании контактов счетчика. Посмотрите мой лог двумя постами выше и какое "расширение" (звучит да действительно криво) надо прописать в плагине. Как раз описываю не верную работу плагина по "засчитыванию" показаний счетчика.

    По поводу сброса показаний в MegaD после перезагрузки - зачем их хранить в энергонезависимой памяти когда всему голова сам сервер?

    Добрый день! Опрос делаю средствами сервера, т.к. состояния почему-то сами не приходят, точнее не отображаются, хотя в логах я вижу показания датчиков и счетчиков. Согласен, что получать состояние при изменении значительно лучше, чем постоянный опрос. Расширение у Вас действительно написано не так как предлагается в инструкции. Сейчас я не у контроллера, не могу физически замкнуть контакты и попробовать, но мне кажется опрос средствами сервера тоже должен работать, а у меня там 0. Текущие (по инструкции) настройки на скринах.

    По хранению показаний - на MegaD пока не пробовал как работает счетчик, но, например, если обнуляется счетчик в KernelChip, то он покажет 0 и в IH, если в MegaD реализовано сохранение текущего значения на сервере - то нужно срочно переходить с KernelChip на MegaD)))
    md.JPG
    md1.JPG
    md2.JPG



  • @homa:

    По хранению показаний - на MegaD пока не пробовал как работает счетчик, но, например, если обнуляется счетчик в KernelChip, то он покажет 0 и в IH, если в MegaD реализовано сохранение текущего значения на сервере - то нужно срочно переходить с KernelChip на MegaD)))

    Подскажите. В KernelChip счетчик энергонезависимый? Если да, то переходить не стоит.

    Мы долго искали энергонезависимые счетчики импульсов. Пробовали 4-канальные счетчики импульсов от Тепловодохран. Работают нормально но цена 😢

    Сейчас нашли еще один интересный девайс: https://shop.nag.ru/catalog/00007.Avtomatizatsiya-i-monitoring-/05629.ERD-Kontrollery/20485.SNR-ERD-4s#downloads

    Там есть 5шт дискретных входов/выходов, которые могут использоваться как 32 битные энергонезависимые (до 5 дней) счетчики.

    Плюс шина 1-wire, плюс rs485, плюс POE, плюс MQTT. Надо будет попробовать.



  • @intrahouse:

    @homa:

    По хранению показаний - на MegaD пока не пробовал как работает счетчик, но, например, если обнуляется счетчик в KernelChip, то он покажет 0 и в IH, если в MegaD реализовано сохранение текущего значения на сервере - то нужно срочно переходить с KernelChip на MegaD)))

    Подскажите. В KernelChip счетчик энергонезависимый? Если да, то переходить не стоит.

    Мы долго искали энергонезависимые счетчики импульсов. Пробовали 4-канальные счетчики импульсов от Тепловодохран. Работают нормально но цена 😢

    Сейчас нашли еще один интересный девайс: https://shop.nag.ru/catalog/00007.Avtomatizatsiya-i-monitoring-/05629.ERD-Kontrollery/20485.SNR-ERD-4s#downloads

    Там есть 5шт дискретных входов/выходов, которые могут использоваться как 32 битные энергонезависимые (до 5 дней) счетчики.

    Плюс шина 1-wire, плюс rs485, плюс POE, плюс MQTT. Надо будет попробовать.

    В KernelChip энергонезависимый, но есть нюансы. Я описывал их в ветке по KernelChip: https://frm.intrahouse.ru/viewtopic.php?f=18&t=5313&start=20 предпоследний пост. Кроме того при достижении максимума - 32767 он умеет считать количество полных циклов счетчика.

    PS вопрос с MegaD тем не менее актуален, помогите разобраться)



  • @homa:

    @Alex_Jet:

    @homa:

    Вопрос по счетчикам в MegaD… вроде все сделал по инструкции, но значения счетчика не приходят, причем в логах значения показываются. Где может быть ошибка?

    > > > 11.01 01:49:24.857 megad2: 
    > > > 11.01 01:49:24.857 megad2: localhost => 10.255.255.60 HTTP GET /sec/?pt=17&cmd=get
    > > > 11.01 01:49:24.863 megad2: localhost <= 10.255.255.60  response: statusCode=200 contentType = text/html
    > > > 11.01 01:49:24.863 megad2:  body: ON/300
    > > > 11.01 01:49:24.863 IH: get []
    > > > 11.01 01:49:24.864 IH: set {}
    > > > 
    

    И вопрос по сохранению значений: kernelchip хранит значение счетчиков в энергонезависимой памяти, а megad скидывает их при перезагрузке. Это решаемый вопрос? Как не потерять показания счетчика при отключении питания megad?

    homa, а что вы сделали по инструкции? По вашему логу не видно, что от megad пришел get-запрос вида "/mod_megad.php?pt=7&cnt=9&mdid=", а видно, что вы опрашиваете контроллер средствами сервера, когда сам контроллер должен сообщать серверу о срабатывании контактов счетчика. Посмотрите мой лог двумя постами выше и какое "расширение" (звучит да действительно криво) надо прописать в плагине. Как раз описываю не верную работу плагина по "засчитыванию" показаний счетчика.

    По поводу сброса показаний в MegaD после перезагрузки - зачем их хранить в энергонезависимой памяти когда всему голова сам сервер?

    Добрый день! Опрос делаю средствами сервера, т.к. состояния почему-то сами не приходят, точнее не отображаются, хотя в логах я вижу показания датчиков и счетчиков. Согласен, что получать состояние при изменении значительно лучше, чем постоянный опрос. Расширение у Вас действительно написано не так как предлагается в инструкции. Сейчас я не у контроллера, не могу физически замкнуть контакты и попробовать, но мне кажется опрос средствами сервера тоже должен работать, а у меня там 0. Текущие (по инструкции) настройки на скринах.

    По хранению показаний - на MegaD пока не пробовал как работает счетчик, но, например, если обнуляется счетчик в KernelChip, то он покажет 0 и в IH, если в MegaD реализовано сохранение текущего значения на сервере - то нужно срочно переходить с KernelChip на MegaD)))

    Добрый день!

    Опрашивать счетчик не надо, так как MegaD показания не хранит, нужно взять с нее только импульс при сработке. В данном случае показания хранит сервер IH.

    Когда сервер отключен, импульсы, естественно, будут пропущены.

    У вас все верно сделано кроме периода опроса.

    Также нужно проверить - верно ли записано сообщение с контроллера - имя скрипта и настройка сработки - чтобы сообщение приходило 1 раз

    Резюмируем 🙂 Чтобы сделать импульсный счетчик на MegaD нужно:

    1. Создать канал, например, 17 с типом Meter. Период опроса = 0

    2. В блоке "Расширения" прописать сообщение контроллера, которое присылается при сработке входа

    В поле "Установить значения каналов" прописать 17=CNT или 17=COUNT

    В поле Вес импульса = коэффициент (по умолчанию 1)

    В этом случае значение считается по формуле: предыдущее значение +1*коэффициент



  • @intrapro:

    @homa:

    @Alex_Jet:

    homa, а что вы сделали по инструкции? По вашему логу не видно, что от megad пришел get-запрос вида "/mod_megad.php?pt=7&cnt=9&mdid=", а видно, что вы опрашиваете контроллер средствами сервера, когда сам контроллер должен сообщать серверу о срабатывании контактов счетчика. Посмотрите мой лог двумя постами выше и какое "расширение" (звучит да действительно криво) надо прописать в плагине. Как раз описываю не верную работу плагина по "засчитыванию" показаний счетчика.

    По поводу сброса показаний в MegaD после перезагрузки - зачем их хранить в энергонезависимой памяти когда всему голова сам сервер?

    Добрый день! Опрос делаю средствами сервера, т.к. состояния почему-то сами не приходят, точнее не отображаются, хотя в логах я вижу показания датчиков и счетчиков. Согласен, что получать состояние при изменении значительно лучше, чем постоянный опрос. Расширение у Вас действительно написано не так как предлагается в инструкции. Сейчас я не у контроллера, не могу физически замкнуть контакты и попробовать, но мне кажется опрос средствами сервера тоже должен работать, а у меня там 0. Текущие (по инструкции) настройки на скринах.

    По хранению показаний - на MegaD пока не пробовал как работает счетчик, но, например, если обнуляется счетчик в KernelChip, то он покажет 0 и в IH, если в MegaD реализовано сохранение текущего значения на сервере - то нужно срочно переходить с KernelChip на MegaD)))

    Добрый день!

    Опрашивать счетчик не надо, так как MegaD показания не хранит, нужно взять с нее только импульс при сработке. В данном случае показания хранит сервер IH.

    Когда сервер отключен, импульсы, естественно, будут пропущены.

    У вас все верно сделано кроме периода опроса.

    Также нужно проверить - верно ли записано сообщение с сервера - имя скрипта и настройка сработки - чтобы сообщение приходило 1 раз

    Резюмируем 🙂 Чтобы сделать импульсный счетчик на MegaD нужно:

    1. Создать канал, например, 17 с типом Meter. Период опроса = 0

    2. В блоке "Расширения" прописать сообщение контроллера, которое присылается при сработке входа

    В поле "Установить значения каналов" прописать 17=CNT или 17=COUNT

    В поле Вес импульса = коэффициент (по умолчанию 1)

    В этом случае значение считается по формуле: предыдущее значение +1*коэффициент

    Да вот весь вечер вчера пытался… период опроса пробовал ставить 0, результат тот же. После 17 смогу прислать логи с периодом опроса=0, но если сейчас выставить период опроса=0 на датчиках температуры и влажности, то показания обновляться не будут...

    Попробовал 17=CNT, но физически нет возможность замкнуть контакты, при установки счетчика MegaD вручную командой http://10.255.255.60/sec/?pt=17&cnt=3 значение в IH не передалось. Может какая-то проблема в "слушающем" порту? Пробовал менять порт, результат тотже. Если подключиться на порт 8081 телнетом, то соединение сбрасывается после отправки одного любого символа. Это нормально?



  • Если всем устройствам поставить период опроса=0, то ничего не происходит, но если перезагрузить мегу в логах:

    11.01 11:22:11.533 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?st=1
    11.01 11:22:11.533 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:11.543 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=0&cnt=1
    11.01 11:22:11.543 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:11.564 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=1&cnt=1
    11.01 11:22:11.564 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:11.576 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=2&cnt=1
    11.01 11:22:11.576 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:11.587 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=17&cnt=1
    11.01 11:22:11.588 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:11.597 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=28&cnt=1
    11.01 11:22:11.598 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:11.689 megad2: 
    11.01 11:22:11.690 megad2: localhost => 10.255.255.60 HTTP GET /sec/?cmd=all
    11.01 11:22:11.983 megad2: localhost <= 10.255.255.60  response: statusCode=200 contentType = text/html
    11.01 11:22:11.984 megad2:  body: ON/1;ON/1;ON/1;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;OFF/0;OFF/0;ON/1;OFF/0;OFF/0;OFF/0;OFF/0;OFF;temp:26.87/press:739.78/hum:14.685;OFF;temp:22.94/hum:16.17;OFF;OFF;ON/1;ON;OFF;temp:26.30/hum:13.81;OFF;temp:22.84/hum:20.07;OFF;temp:23.10/hum:16.93;ON;ON
    11.01 11:22:11.985 IH: get [{"id":"15","value":"0"},{"id":"16","value":"0"},{"id":"28","value":"1"},{"id":"23_1","value":"26.87"},{"id":"23_2","value":"739.78"},{"id":"23_3","value":"14.685"},{"id":"25_1","value":"22.94"},{"id":"25_2","value":"16.17"},{"id":"31_1","value":"26.3"},{"id":"31_2","value":"13.81"},{"id":"33_1","value":"22.84"},{"id":"33_2","value":"20.07"},{"id":"35_1","value":"23.1"},{"id":"35_2","value":"16.93"}]
    11.01 11:22:11.985 IH: set {"SLEAKAGE2":{"dval":"0","err":0},"SLEAKAGE1":{"dval":"0","err":0},"UNIT_SENSOR3":{"dval":"1","err":0},"STEMP2":{"aval":"26.87","err":0},"SENSORA1":{"aval":"739.78","err":0},"SHUMIDITY1":{"aval":"14.685","err":0},"STEMP3":{"aval":"22.94","err":0},"SHUMIDITY2":{"aval":"16.17","err":0},"STEMP6":{"aval":"26.3","err":0},"SHUMIDITY5":{"aval":"13.81","err":0},"STEMP5":{"aval":"22.84","err":0},"SHUMIDITY4":{"aval":"20.07","err":0},"STEMP4":{"aval":"23.1","err":0},"SHUMIDITY3":{"aval":"16.93","err":0}}
    11.01 11:22:12.535 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=28&m=2&cnt=1
    11.01 11:22:12.536 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:12.547 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=0&m=2&cnt=1
    11.01 11:22:12.547 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:12.559 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=1&m=2&cnt=1
    11.01 11:22:12.559 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:12.570 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=2&m=2&cnt=1
    11.01 11:22:12.570 megad2: 10.255.255.60 <= localhost:8081 
    11.01 11:22:12.581 megad2: 10.255.255.60 => localhost:8081 HTTP GET /?pt=17&m=2&cnt=1
    11.01 11:22:12.581 megad2: 10.255.255.60 <= localhost:8081 
    
    

    После этого снова тишина. Ни один датчик не отправляет изменения состояния, счетчик в нуле не смотря на то, что вроде как пришло состояние "1" (сейчас контакт на нем замкнут, таким образом при перезагрузке в интерфейсе меги счетчик=1")



  • @homa:

    Если всем устройствам поставить период опроса=0, то ничего не происходит, но если перезагрузить мегу в логах:

    После этого снова тишина. Ни один датчик не отправляет изменения состояния, счетчик в нуле не смотря на то, что вроде как пришло состояние "1" (сейчас контакт на нем замкнут, таким образом при перезагрузке в интерфейсе меги счетчик=1")

    То есть со слушающим портом все нормально.

    А что у вас в прописано в Script на Megad? mod_megad.php?

    Это имя должно совпадать с началом запроса в Расширения

    Оно у вас похоже пустое



  • @intrapro:

    @homa:

    Если всем устройствам поставить период опроса=0, то ничего не происходит, но если перезагрузить мегу в логах:

    После этого снова тишина. Ни один датчик не отправляет изменения состояния, счетчик в нуле не смотря на то, что вроде как пришло состояние "1" (сейчас контакт на нем замкнут, таким образом при перезагрузке в интерфейсе меги счетчик=1")

    То есть со слушающим портом все нормально.

    А что у вас в прописано в Script на Megad? mod_megad.php?

    Это имя должно совпадать с началом запроса в Расширения

    Ничего не было прописано))) прописал, заработало. Спасибо. В инструкции нет об этом ничего, а инструкцию от меги видимо прочитал не внимательно. Действительно считает один импульс за два. Я так понял пока не решено?



  • @homa:

    Да вот весь вечер вчера пытался… период опроса пробовал ставить 0, результат тот же. После 17 смогу прислать логи с периодом опроса=0, но если сейчас выставить период опроса=0 на датчиках температуры и влажности, то показания обновляться не будут...

    Попробовал 17=CNT, но физически нет возможность замкнуть контакты, при установки счетчика MegaD вручную командой http://10.255.255.60/sec/?pt=17&cnt=3 значение в IH не передалось. Может какая-то проблема в "слушающем" порту? Пробовал менять порт, результат тотже. Если подключиться на порт 8081 телнетом, то соединение сбрасывается после отправки одного любого символа. Это нормально?

    Что-то вы как-то совсем не разобрались как работает сам MegaD и где какие настройки нужно сделать в плагине megad iH.

    Датчики активные (1-wire, i2c, dht) нужно опрашивать сервером принудительно с каким-то периодом опроса! То есть в их каналах прописывать нужные вам периоды опроса. Для пассивных датчиков (СМК, ДИП, протечик, разные герконы и т.д. - датчики с "сухими контактами") нужно правильно настроить сам контроллер (первое - это настройка режима канала IN - P/R/P&R, второе - это название скрипта в сетевых настройках контроллера, который формально будет обрабатывать сообщения от контроллера на сервере). Если все сделано правильно, то в логе плагина вы должны увидеть строчку типа:

    11.01 15:44:56.373 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&cnt=5366&mdid=
    
    

    Если датчик замкнулся на время меньшее 1 сек и строчку:

    11.01 15:44:57.368 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=2&cnt=5366&mdid=
    
    

    Если датчик замкнулся на время большее 1 сек (об этом говорит m=2). Если канал датчика настроен еще и на размыкание, то должна прийти строчка вида (обратите внимание на m=1):

    11.01 15:44:58.368 megad4: 192.168.11.24 => localhost:11024 HTTP GET /mod_megad.php?pt=7&m=1&cnt=5366&mdid=
    
    

    По вашим логам видно, что на контроллере не прописано имя скрипта в сетевых настройках. В моем же логе вы должны увидеть скрипт с именем "mod_megad.php". В остальном - следуйте инструкциям разработчиков, которые приведены выше.



  • Коллеги! Действительно, допилите плагин в части работы со счетчиком и удаленными контроллерами. Мои посты:

    https://frm.intrahouse.ru/viewtopic.php?f=18&t=5312&start=100#p8469 и https://frm.intrahouse.ru/viewtopic.php?f=18&t=5312&start=100#p8491. А то почти уже отключил Berry, а тут нужный функционал не верно работает:(


Авторизуйтесь, чтобы ответить