Плагин MegaD
-
По зависанию плагина….
Получилось смоделировать и перехватить ошибку.
Проблема действительно в пробеле, по правилам нужно его заменить на %20. Но это вряд ли понравится MegaD
Теперь плагин не зависает, а выводит сообщение об ошибке и продолжает работать.
Более конструктивного решения не вижу. Замену пробела на _ думаю надо делать в сценарии
04.01 20:31:56.554 megad1: localhost => 192.168.0.42 HTTP GET /sec/?pt=31&text= 㫨æ¥&col=40&row=0 04.01 20:31:56.555 megad1: Http request error: Request path contains unescaped characters 04.01 20:31:58.957 megad1: 04.01 20:31:58.959 megad1: localhost => 192.168.0.42 HTTP GET /sec/?pt=33&cmd=list 04.01 20:31:58.968 megad1: localhost <= 192.168.0.42 response: statusCode=200 contentType = text/html; charset=utf-8 04.01 20:31:58.970 megad1: body: ff48a6701605:21;ff779e701604:12 04.01 20:31:58.971 IH: get [{"id":"33_ff48a6701605","value":"21"}]
Контролировать плагины с сервера на случай зависания - добавим в обновление системы после праздников.
-
По зависанию плагина….
Получилось смоделировать и перехватить ошибку.
Проблема действительно в пробеле, по правилам нужно его заменить на %20. Но это вряд ли понравится MegaD
<quote>> Здесь мы видим, что скрипт в зависимости от количества цифр добавляет символ "s", который означает "space" (пробел). Шрифт, который заложен в контроллер моноширинный, поэтому температура отображается всегда ровно, цифры не прыгают и не смещаются.
Символ "" также означает пробел, то в отличие от "s" (пробел, равный ширине символа), символ "" кодирует пробел, равный половине ширины цифры. Это можно использовать для выравнивания текста.
Без претензий, но меня смущает почему разработчики мегаД пошли таким путем, сообщение в cp886, вместо пробела _ а не %20, вроде как запросы идут по http, там близки такие вещи UTF8, encodeURIComponent
-
@dev:
Без претензий, но меня смущает почему разработчики мегаД пошли таким путем, сообщение в cp886, вместо пробела _ а не %20, вроде как запросы идут по http, там близки такие вещи UTF8, encodeURIComponent
Разработчик ответил тут - https://www.ab-log.ru/forum/viewtopic.php?f=1&t=1195&sid=27b893a284a49a2abfcec7f75e5d6cb2&start=2480#p35049
Я так понимаю вся проблема - в экономии flash-памяти.
-
Доброе утро! А как на счет реализации диммера и управления RGB? Скоро будет?
Добрый вечер, будет точно в этом году
-
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.Интервал отправки запросов (мсек)
И интересует более подробно п.4 - что это и зачем?
В новом релизе плагина изменен механизм отправки команд.
В предыдущей версии следующий запрос очереди опроса не отправлялся чаще 200 мсек, но пришедшая команда управления шла напрямую. Теперь все команды управления включаются в общую очередь - естественно в начало.
В новой версии также добавлена возможность настроить интервал отправки запросов (200 мсек по умолчанию).
То есть сейчас гарантируется, что обращения к контроллеру происходят не чаще заданного интервала, включая управление (получается не более 5 запросов в сек для 200 мсек)
Поскольку решил постепенно переходить на Cherry, то решил из нее делать хотя бы опрос датчиков без прослушки http-трапов от MegaD.
Почему? Слушающий сервер ведь абсолютно как в Berry. Или?
Еще надо:
1. Опционально (check box при настройке плагина) в журнал делать записи о перезагрузке MegaD (st=1).
2. Адекватное поведение виджета плагина. Если остановлен, то STOPPED. Если в работе и MegaD нормально отвечает, то RUN. Если MegaD не отвечает, то NOT ACTIVATED до тех пор пока контроллер не ответит (сейчас если контроллера нет в сети, но плагин запущен происходит дергание STOPPED/RUN).
Это относится к серверной части, обновление сделаем после праздников - возможно к середине месяца.
-
Обновления, связанные с каналами 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 нужно как обычно выставить только в одном из каналов!
Больше для каналов реле никакой настройки не требуется, команды управления будут сформированы автоматически
-
Нужно назначить 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}}
Также в новом релизе добавлены параметры:
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 - последняя цифра - день недели…"
То есть сейчас гарантируется, что обращения к контроллеру происходят не чаще заданного интервала, включая управление (получается не более 5 запросов в сек для 200 мсек)
Это хорошо! Может быть у меня уйдут проблемы спонтанной перезагрузки двух контроллеров.
Почему? Слушающий сервер ведь абсолютно как в Berry. Или?
Пока не было функционала, который вы сейчас добавили, я не мог в контроллерах прописать адрес нового сервера. Соответственно http пакеты, которые контроллеры формируют самостоятельно, принимал только старый сервер. Делать постоянный http-polling контроллеров как-то не комильфо в плоской сети. Ну а нарезать VLAN с access-портами и несколько сетей - все руки не доходят.
Это относится к серверной части, обновление сделаем после праздников - возможно к середине месяца.
Отлично! И огромное спасибо за доработки! Мне уже можно переходить на Cherry
-
А если номер канала обозначен как 30_1? Судя по логу привязка правильная получается. И в парсинге cmd=all этих каналов нет.
Ну и прекрасно, поскольку сами проверяем на эмуляторе, точно не знаем, что там будет в cmd=all для i2c.
Класс! Только почему в конце 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? А можно ссылку, где описан этот запрос
И огромное спасибо за доработки! Мне уже можно переходить на Cherry
Надеемся, что Cherry заслужит ваше доверие, как и Berry
Всех с Рождеством, друзья!
-
Ну и прекрасно, поскольку сами проверяем на эмуляторе, точно не знаем, что там будет в cmd=all для i2c.
А с Андреем по поводу сотрудничества не связывались?
Что тогда обозначает cf? А можно ссылку, где описан этот запрос
cf=7 - это "конфигурационная таблица №7" в коде прошивки микроконтроллера. Ссылка на "даташит" - https://www.ab-log.ru/smart-house/ethernet/megad-2561, на странице сделайте поиск по словосочетанию "синхронизировать время".
Всех с Рождеством, друзья!
Аналогично поздравляю Вас с Рождеством и всех соучастников тоже !
-
Момент по расширениям в плагине. "Расширение" - /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?
-
Вопрос по счетчикам в 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 после перезагрузки - зачем их хранить в энергонезависимой памяти когда всему голова сам сервер?
-
Вопрос по счетчикам в 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 пока не пробовал как работает счетчик, но, например, если обнуляется счетчик в 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:
По хранению показаний - на 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 тем не менее актуален, помогите разобраться)
-
Вопрос по счетчикам в 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*коэффициент
-
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")
-
Если всем устройствам поставить период опроса=0, то ничего не происходит, но если перезагрузить мегу в логах:
После этого снова тишина. Ни один датчик не отправляет изменения состояния, счетчик в нуле не смотря на то, что вроде как пришло состояние "1" (сейчас контакт на нем замкнут, таким образом при перезагрузке в интерфейсе меги счетчик=1")
То есть со слушающим портом все нормально.
А что у вас в прописано в Script на Megad? mod_megad.php?
Это имя должно совпадать с началом запроса в Расширения
Оно у вас похоже пустое