Плагин MegaD
-
Та я эти ссылки наизусть уже знаю, но все равно не понятно
Какой порт после ip указать и нужен он вообще
Какой скрипт? md.php? Или другой?
-
У меня так
-
Порт 80.Какой скрипт?
-
Ну вот теперь понятно, вечерам попробую
Спасибо
-
1. Подскажите как в Cherry привязать 1-wire девайс к устройству? Имею такой лог - куда вписать адрес устройства?
Сейчас адрес устройства "вписан" в номер канала - "33_ff48a6701605", но привязки не происходит.
04.01 13:40:46.979 megad1: localhost => 192.168.11.21 HTTP GET /sec/?pt=33&cmd=list 04.01 13:40:47.037 megad1: localhost <= 192.168.11.21 response: statusCode=200 contentType = text/html 04.01 13:40:47.037 megad1: body: ff48a6701605:2.43;ff779e701604:1.12
2. Можно как-то прояснить на какое время запланирована доработка/переработка плагина? С текущим функционалом не могу полностью перейти на Cherry.
3. Для плагинов функционал копирования можно сделать? Чтобы не заводить все каналы с нуля и типовые настройки?
-
1. Подскажите как в Cherry привязать 1-wire девайс к устройству? Имею такой лог - куда вписать адрес устройства?
Сейчас адрес устройства "вписан" в номер канала - "33_ff48a6701605", но привязки не происходит.
Да, у вас все верно. Адресация каналов такая же как в Berry. При последней доработке (v1.1.6) была внесена ошибка
Вы можете скачать последний релиз (v1.1.7) c гитахаба, там ошибка исправлена:
https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases
Для стандартного обновления выложим чуть позже
2. Можно как-то прояснить на какое время запланирована доработка/переработка плагина? С текущим функционалом не могу полностью перейти на Cherry.
В ближайшее время (учитывая, что сейчас праздники), планируем доработать плагин (вариант, который посылали вам для тестирования)
Там добавлено:
1. Отправка команды плагину из сценария - любые запросы, которые принимает MegaD
2. Функция обработки данных на плагине
3. Восстановление выходов при перезагрузке контроллера
4. Изменен механизм отправки команд - команды включаются в общую очередь
5. Изменен механизм обработка результата - канал переключается при получении результата запроса
6. Обработка ответа busy - такой запрос ставится в очередь на 2 сек
Механизм адресации каналов не меняется, это будет просто обновление плагина.
Так понимаю, вам не хватает I2C каналов. Нужно придумать, как их адресовать в той же парадигме
Также добавили и сейчас тестируем отправку времени на контроллер и некоторые другие мелкие моменты.
Сообщите, какой функционал вам необходим, постараемся добавить.
Что не покрывается в текущем плагине
1. Несколько запросов для получения данных одного канала
2. Один запрос для получения данных нескольких каналов (сейчас можно конечно, например для 1Wire, задать период опроса в одном из каналов, и за счет привязки к порту данные поступают в каналы, для которых нет опроса)
3. Формирование нестандартных команд управления
Для решения этих задач планируется разработать новый плагин для MegaD (megadext), в котором не будет такой привязки к портам, как сейчас.
Каналы будут настраиваться аналогично плагину http (иерархически), а разбор будет задаваться явно.
Новый плагин можно будет использовать наряду со старым. По этому плагину сроки пока не определены.
3. Для плагинов функционал копирования можно сделать? Чтобы не заводить все каналы с нуля и типовые настройки?
Не совсем понятно, каналы ведь копировать можно.
Или вы имеете в виду копирование всех каналов плагина в целом? При подключении еще одной меги?
Сделаем, если это востребовано.
-
Большое спасибо за развернутый ответ! Теперь я пройдусь по пунктам:
Да, у вас все верно. Адресация каналов такая же как в Berry. При последней доработке (v1.1.6) была внесена ошибка
Вы можете скачать последний релиз (v1.1.7) c гитахаба, там ошибка исправлена:
https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases
Для стандартного обновления выложим чуть позже
Все понял, обновлю сейчас и посмотрю (Update - да, действительно в 1.1.7 разбор 1-wire девайсов работает). Поскольку решил постепенно переходить на Cherry, то решил из нее делать хотя бы опрос датчиков без прослушки http-трапов от MegaD.
@intrapro:В ближайшее время (учитывая, что сейчас праздники), планируем доработать плагин (вариант, который посылали вам для тестирования)
Там добавлено:
1. Отправка команды плагину из сценария - любые запросы, которые принимает MegaD
2. Функция обработки данных на плагине
3. Восстановление выходов при перезагрузке контроллера
4. Изменен механизм отправки команд - команды включаются в общую очередь
5. Изменен механизм обработка результата - канал переключается при получении результата запроса
6. Обработка ответа busy - такой запрос ставится в очередь на 2 сек
Все что добавлено я уже протестировал. Из замечаний только по п.2 - не очень удобно редактировать скрипт обработки данных в боковом меню (как вариант, сделать так же как редактируется код html-виджета) и нет возможности изменять интервал опроса как в Berry (опрос датчика с периодичностью раз в 5 минут - 5 опросов через 5 секунд с отбросом крайних и усреднением оставшихся). И интересует более подробно п.4 - что это и зачем?
@intrapro:Механизм адресации каналов не меняется, это будет просто обновление плагина.
Так понимаю, вам не хватает I2C каналов. Нужно придумать, как их адресовать в той же парадигме
Также добавили и сейчас тестируем отправку времени на контроллер и некоторые другие мелкие моменты.
Сообщите, какой функционал вам необходим, постараемся добавить.
I2C каналы сейчас можно сделать (иерархически нельзя как в http-плагине, но все же), но не происходит "обработки" данных в теле:
04.01 19:31:58.684 megad5: 04.01 19:31:58.685 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&scl=34&i2c_dev=htu21d&i2c_par=1 04.01 19:31:58.745 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 04.01 19:31:58.746 megad5: body: 27.16 04.01 19:31:58.747 IH: get [] 04.01 19:31:58.748 IH: set {} 04.01 19:31:58.885 megad5: 04.01 19:31:58.885 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&scl=34&i2c_dev=htu21d 04.01 19:31:58.914 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 04.01 19:31:58.915 megad5: body: 14.58 04.01 19:31:58.916 IH: get [] 04.01 19:31:58.917 IH: set {}
Вот этого, действительно не хватает! Для всех I2C-девайсов есть "отдельный" запрос по каждому параметру, например, http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=1 таким образом считываемый параметр легко привязать к устройству. Не стоит делать реализацию (cmd=get), при которой надо парсить сразу все значения параметров (так выводится в веб-интерфейсе, когда датчик подключен к MegaD "нативно"), придумывая как их привязывать к каналам. Сейчас только, если надо, например, для канала 31 сделать 7 подканалов не единовременно, то они будут разбросаны по разным местам.
По отправке времени на контроллер - это хорошо!
Еще надо:
1. Опционально (check box при настройке плагина) в журнал делать записи о перезагрузке MegaD (st=1).
2. Адекватное поведение виджета плагина. Если остановлен, то STOPPED. Если в работе и MegaD нормально отвечает, то RUN. Если MegaD не отвечает, то NOT ACTIVATED до тех пор пока контроллер не ответит (сейчас если контроллера нет в сети, но плагин запущен происходит дергание STOPPED/RUN).
@intrapro:Что не покрывается в текущем плагине
1. Несколько запросов для получения данных одного канала
2. Один запрос для получения данных нескольких каналов (сейчас можно конечно, например для 1Wire, задать период опроса в одном из каналов, и за счет привязки к порту данные поступают в каналы, для которых нет опроса)
3. Формирование нестандартных команд управления
Вот эти моменты/формулировки честно говоря не до конца понял.
1. Несколько запросов - это надо только для 1-wire когда на одном канале висят разные 1-wire устройства (запрос на конвертацию температуры и запрос на отображение состояния). По сути можно обойтись.
2. Это касаемо "гирлянды" 1-wire устройств на одном канале? Конечно было бы лаконичнее делать один запрос по каналу и получать данные по подканалам, но тоже можно обойтись тем что есть сейчас.
3. Это, как мне кажется, лучше делать с помощью сценариев, благо plugincCommand сейчас есть. Хотя если хочется просто привязать RGB-светильник к каналу, на котором висит RGB-лента, то вероятно так сейчас не получится (чтобы код RGB передавался в get-запрос канала).
Для решения этих задач планируется разработать новый плагин для MegaD (megadext), в котором не будет такой привязки к портам, как сейчас.
Каналы будут настраиваться аналогично плагину http (иерархически), а разбор будет задаваться явно.
Новый плагин можно будет использовать наряду со старым. По этому плагину сроки пока не определены.
Это правильно, но пугает переход на новый плагин… у меня сейчас порядка 200 каналов расписаны!
Не совсем понятно, каналы ведь копировать можно.
Или вы имеете в виду копирование всех каналов плагина в целом? При подключении еще одной меги?
Сделаем, если это востребовано.
Тут имел ввиду именно копирование плагина со всеми имеющимися каналами, например, при добавлении нового MegaD. Сейчас приходится добавлять плагин, вводить IP-настройки и вручную создавать 38 каналов, поскольку они все в итоге оказываются востребованными.
-
По зависанию плагина. Хороший вариант:
04.01 21:37:47.359 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&disp_cmd=1&row=0', type: 'command' } 04.01 21:37:47.371 megad5: command: '/sec/?pt=31&disp_cmd=1&row=0' 04.01 21:37:47.382 megad5: 04.01 21:37:47.382 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&disp_cmd=1&row=0 04.01 21:37:47.492 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 04.01 21:37:47.492 megad5: body: [Back](/sec) P31 <form action="/sec/">Type <select name="pty"><option value="255">NC</option><option value="0">In</option><option value="1">Out</option><option value="3">DSen</option><option value="4" selected="">I2C</option></select> Mode <select name="m"><option value="0">NC</option><option value="1" selected="">SDA</option><option value="2">SCL</option></select> SCL Dev <select name="d"><option value="0">ANY</option><option value="1">HTU21D</option><option value="5">BMP180</option><option value="6">BMx280</option><option value="7">MAX44009</option><option value="2">BH1750</option><option value="3">TSL2591</option><option value="4" selected="">SSD1306</option><option value="20">MCP230XX</option><option value="21">PCA9685</option></select> Bright Clock [I2C Scan](/sec/?pt=31&cmd=scan) </form> 04.01 21:37:47.669 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&text= _㫨æ¥&col=40&row=0', type: 'command' } 04.01 21:37:47.670 megad5: command: '/sec/?pt=31&text= _㫨æ¥&col=40&row=0' 04.01 21:37:47.784 megad5: 04.01 21:37:47.784 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&text= _㫨æ¥&col=40&row=0 04.01 21:37:47.835 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 04.01 21:37:47.836 megad5: body: Done 04.01 21:37:47.872 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&text=-26.0:', type: 'command' } 04.01 21:37:47.875 megad5: command: '/sec/?pt=31&text=-26.0:' 04.01 21:37:47.985 megad5: 04.01 21:37:47.986 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&text=-26.0: 04.01 21:37:47.999 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 04.01 21:37:47.999 megad5: body: Done 04.01 21:37:48.077 IH: plugin command { unit: 'megad5', command: '/sec/?cmd=31:1', type: 'command' } 04.01 21:37:48.080 megad5: command: '/sec/?cmd=31:1'
Вариант с пробелом в command: '/sec/?pt=31&text= 㫨æ¥&col=40&row=0'
04.01 21:38:27.435 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&disp_cmd=1&row=0', type: 'command' } 04.01 21:38:27.445 megad5: command: '/sec/?pt=31&disp_cmd=1&row=0' 04.01 21:38:27.498 megad5: 04.01 21:38:27.499 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&disp_cmd=1&row=0 04.01 21:38:27.608 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 04.01 21:38:27.608 megad5: body: [Back](/sec) P31 <form action="/sec/">Type <select name="pty"><option value="255">NC</option><option value="0">In</option><option value="1">Out</option><option value="3">DSen</option><option value="4" selected="">I2C</option></select> Mode <select name="m"><option value="0">NC</option><option value="1" selected="">SDA</option><option value="2">SCL</option></select> SCL Dev <select name="d"><option value="0">ANY</option><option value="1">HTU21D</option><option value="5">BMP180</option><option value="6">BMx280</option><option value="7">MAX44009</option><option value="2">BH1750</option><option value="3">TSL2591</option><option value="4" selected="">SSD1306</option><option value="20">MCP230XX</option><option value="21">PCA9685</option></select> Bright Clock [I2C Scan](/sec/?pt=31&cmd=scan) </form> 04.01 21:38:27.781 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&text= 㫨æ¥&col=40&row=0', type: 'command' } 04.01 21:38:27.782 megad5: command: '/sec/?pt=31&text= 㫨æ¥&col=40&row=0' 04.01 21:38:27.900 megad5: 04.01 21:38:27.901 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=31&text= 㫨æ¥&col=40&row=0 04.01 21:38:27.903 megad5: ERR (uncaughtException): TypeError: Request path contains unescaped characters at new ClientRequest (_http_client.js:125:13) at request (http.js:39:10) at Object.get (http.js:43:13) at Object.httpGet (/var/lib/intrahouse-c/plugins/megad/lib/httpclient.js:16:6) at Timeout.runOutReq [as _onTimeout] (/var/lib/intrahouse-c/plugins/megad/megad.js:70:16) at ontimeout (timers.js:471:11) at tryOnTimeout (timers.js:306:5) at Timer.listOnTimeout (timers.js:266:5) 04.01 21:38:27.984 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&text=-26.0:', type: 'command' } 04.01 21:38:27.987 megad5: command: '/sec/?pt=31&text=-26.0:' 04.01 21:38:28.190 IH: plugin command { unit: 'megad5', command: '/sec/?cmd=31:1', type: 'command' } 04.01 21:38:28.191 megad5: command: '/sec/?cmd=31:1'
После этого, лог плагина такой:
04.01 21:44:49.253 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&disp_cmd=1&row=0', type: 'command' } 04.01 21:44:49.263 megad5: command: '/sec/?pt=31&disp_cmd=1&row=0' 04.01 21:44:49.633 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&text= _㫨æ¥&col=40&row=0', type: 'command' } 04.01 21:44:49.633 megad5: command: '/sec/?pt=31&text= _㫨æ¥&col=40&row=0' 04.01 21:44:49.836 IH: plugin command { unit: 'megad5', command: '/sec/?pt=31&text=-26.1:', type: 'command' } 04.01 21:44:49.838 megad5: command: '/sec/?pt=31&text=-26.1:' 04.01 21:44:50.041 IH: plugin command { unit: 'megad5', command: '/sec/?cmd=31:1', type: 'command' } 04.01 21:44:50.042 megad5: command: '/sec/?cmd=31:1'
Помогает только остановка/пуск плагина. Очень не хватает кнопки "перезапуск" плагина с целью отладки. А кстати, виджет плагина тоже ничего не показывает…только по косвенным признакам понимаю, что плагин завис. А вдруг он в реальности зависнит! По каким критериям это определить и отправить сообщение администратору?
-
По зависанию плагина….
Получилось смоделировать и перехватить ошибку.
Проблема действительно в пробеле, по правилам нужно его заменить на %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?