Прошивка MegaD-2561 (релизы, обсуждения, предложения)
-
- Сообщения: 75
- Зарегистрирован: 30 авг 2015, 21:44
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Andrey_B, спасибо за быстрый ответ.
Пока не удалось решить проблему, но могу чуть подробнее описать поведение Меги при разных настройках srv-loop и Act.
При установленном srv-loop наблюдается описанная выше ситуация.
При снятом srv-loop - каждое нажатие на кнопку успешно замечается сервером, но при этом результат аналогичный: порт 7 включается и тут же отключается, т.е. похоже что все-таки 7:2 обрабатывается при нажатии дважды, один раз самой Мегой по полю Act, а второй раз - прилетевшей командой "7:2" от сервера.
Сделал поле Act пустым при снятом srv-loop.
Первое нажатие на кнопку ни к чему не приводит, каждое последующее - переключает порт 7, т.е. в этом случае работает только "7:2"" от сервера.
Сделал поле Act пустым при установленном srv-loop.
Любое нажатие на кнопку работает нормально - переключает порт 7, т.е. в этом случае работает только "7:2"" от сервера.
Т.е. это нормально работающий режим, но в этом случае когда сервер отключен - порт 7, естественно, не переключается.
Пока не удалось решить проблему, но могу чуть подробнее описать поведение Меги при разных настройках srv-loop и Act.
При установленном srv-loop наблюдается описанная выше ситуация.
При снятом srv-loop - каждое нажатие на кнопку успешно замечается сервером, но при этом результат аналогичный: порт 7 включается и тут же отключается, т.е. похоже что все-таки 7:2 обрабатывается при нажатии дважды, один раз самой Мегой по полю Act, а второй раз - прилетевшей командой "7:2" от сервера.
Сделал поле Act пустым при снятом srv-loop.
Первое нажатие на кнопку ни к чему не приводит, каждое последующее - переключает порт 7, т.е. в этом случае работает только "7:2"" от сервера.
Сделал поле Act пустым при установленном srv-loop.
Любое нажатие на кнопку работает нормально - переключает порт 7, т.е. в этом случае работает только "7:2"" от сервера.
Т.е. это нормально работающий режим, но в этом случае когда сервер отключен - порт 7, естественно, не переключается.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
При допиливании плагина MegaD для iH. Обратили внимание на следующее:
- если от контроллера на сервер прилетает request типа mod_megad.php?pt=16, то сервер обрабатывает команду и возвращает ответ, контроллер производит действие:
- если от контроллера на сервер прилетает request типа mod_megad.php?st=1, то сервер обрабатывает команду и возвращает ответ, однако контроллер не производит действие:
В чем может быть проблема?
Еще интересен такой момент - когда контроллеру даем команду по 80-му порту, то он непременно возвращает Done (см.лог ниже), в других случаях нет (см. выше):
- если от контроллера на сервер прилетает request типа mod_megad.php?pt=16, то сервер обрабатывает команду и возвращает ответ, контроллер производит действие:
Код: Выделить всё
29.01 20:54:43.0650 192.168.12.21 => localhost:10021 HTTP GET /mod_megad.php?pt=16&cnt=1
29.01 20:54:43.0652 MG3?23=TG&
29.01 20:54:43.0653 192.168.12.21 <= localhost:10021 23:2
29.01 20:54:46.0124 192.168.12.21 => localhost:10021 HTTP GET /mod_megad.php?pt=17&cnt=1
29.01 20:54:46.0125 MG3?24=TG&
29.01 20:54:46.0126 192.168.12.21 <= localhost:10021 24:2
Код: Выделить всё
29.01 11:31:39.0545 192.168.12.21 => localhost:10021 HTTP GET /mod_megad.php?st=1
29.01 11:31:39.0553 MG3?22=1&
29.01 11:31:39.0554 192.168.12.21 <= localhost:10021 22:1
Еще интересен такой момент - когда контроллеру даем команду по 80-му порту, то он непременно возвращает Done (см.лог ниже), в других случаях нет (см. выше):
Код: Выделить всё
29.01 11:39:24.0895 192.168.12.21 => localhost:10021 HTTP GET /mod_megad.php?st=1
29.01 11:39:24.0900 192.168.12.21 <= localhost:10021
29.01 11:39:24.0911 Redirect to MG3
29.01 11:39:24.0913 localhost => 192.168.12.21:80 HTTP GET /sec/?cmd=22:1
29.01 11:39:24.0915 MG3?22=1&
29.01 11:39:24.0935 localhost <= 192.168.12.21:80 HTTP Done
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Alex_Jet, контроллер действительно не выполняет команды сервера по "событию" st=1. Так запрограммировано.
Эту логику можно изменить. Не помню чем именно я руководствовался, когда сделал именно так.
Эту логику можно изменить. Не помню чем именно я руководствовался, когда сделал именно так.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
filippovsky, в вашем случае явно имеют место какие-то локальные нюансы сетевых настроек (вы пишете, что используете PPTP, то есть сервер где-то не рядом.).
Ничего из описанного вами у меня не проявляется.
Устройство выполняет Act по таймауту. Вы описываете ситуацию, похожую на то, что пакет от сервера приходит с большой задержкой. Поэтому выполняется и Act и команда сервера.
Вопрос к вашей конфигурации - почему пакет приходит на устройство с задержкой? Нужно смотреть дамп трафика.
Ничего из описанного вами у меня не проявляется.
Устройство выполняет Act по таймауту. Вы описываете ситуацию, похожую на то, что пакет от сервера приходит с большой задержкой. Поэтому выполняется и Act и команда сервера.
Вопрос к вашей конфигурации - почему пакет приходит на устройство с задержкой? Нужно смотреть дамп трафика.
-
- Сообщения: 75
- Зарегистрирован: 30 авг 2015, 21:44
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Andrey_B, спасибо, буду исследовать.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Понятно. Для меня это поведение было странным, поскольку при вводе функционала RTC Вы предлагали при приеме сервером st=1 отправлять пакет для установки внутренних часов MegaD. Выходит этот функционал при использовании входящего порта сервера отличного от 80 также не работает (сам не проверял). Если обратите внимание на 3-й лог в моем предыдущем посте, то увидите "хак" - контроллер по порту 10021 отправляет st=1 серверу, сервер при приеме этого сообщения обращается по 80-му порту к контроллеру с командой и при этом контроллер выполняет ее!Andrey_B писал(а):Alex_Jet, контроллер действительно не выполняет команды сервера по "событию" st=1. Так запрограммировано.
Эту логику можно изменить. Не помню чем именно я руководствовался, когда сделал именно так.
Будет ли какой-нибудь комментарий по поводу возвращения Done только по 80-му порту? Можно этот функционал ассигнировать ко всем портам, которые могут использоваться при работе сервера с MegaD?
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Alex_Jet, необходимо напомнить базовые принципы работы устройства.
Если говорить очень упрощенно и грубо, то HTTP-протокол работает по принципу: "запрос-ответ". Не "запрос-запрос", не "ответ-запрос" и не "ответ-ответ". Это важно.
Одна сторона отправляет, скажем, "GET-запрос". Другая сторона возвращает некоторые данные.
Когда контроллер связывается с сервером, он отправляет GET-запрос (в запросе присутствует некоторая полезная информация, например, st=1, pt=0 и т.д.)
Сервер отвечает ему "командами" самого устройства. Например: "7:2".
Никакое другое управление устройством через такие ответы невозможно (не заложено в прошивку). Только команды управления выходами. Не конфигурирование, не изменение параметров, только управление выходами через стандартные команды. И это логично. Мало ли какой "мусор" решит вернуть сервер по ошибке... Переключение выходов - это не то же самое, что изменение пароля и IP-адреса.
В ответе сервер не может послать устройству GET-запрос. А именно они используются для всего остального.
Таким образом.
Управлять выходами контроллера можно двумя способами.
1. В ответах на GET-запросы. Сработал вход, устройство отправило серверу ?pt=0, а в ответ сервер отвечает: "7:2"
2. GET-запросами к самому контроллеру. В этом случае сервер отправляет устройству GET-запрос вида: "?cmd=7:2" (а контроллер, к слову, возвращает ответ "Done").
Настраивать устройство можно только через GET-запросы от сервера.
Теперь вернемся к вашему сообщению.
Сервер не может в ответе st=1 установить часы в MegaD. Для этого ему нужно отправить контроллеру GET-запрос.
Это легко. Алгоритм следующий:
1. Получили st=1
2. Закрыли текущее TCP-соединение
3. Открыли новое TCP-соединение и отправили HTTP GET контроллеру на установку часов.
Точно также можно на "событие" st=1 и управлять выходами. Не ответом, а отдельным запросом, который отправляется сразу после закрытия TCP-сессии. По скорости эти, кстати, практически одинаково. Разница в микросекундах.
Вот, почему обработка команд на st=1 в целом не так уж и важна.
При чем здесь порты я не понял. В чем заключается "хак" также не понятно.
И контроллер и устройство могут работать с 80 портом. Никаких ограничений по этому поводу нет абсолютно.
Ответ "Done" и порт никак не связаны.
"Done" устройство возвращает ТОЛЬКО на GET-запросы от сервера на выполнение команд, например, "?cmd=7:2"
Если команды сервер отправлены в ответе на запрос самого устройства (например, ?pt=0), то оно просто выполняет команды и ничего не возвращает, ибо ничего вернуть в рамках протокола HTTP оно и не может.
Как проверить, выполнены ли команды? Ну, сам факт корректного закрытия TCP-сессии со стороны устройства будет говорить, что все прошло успешно. Но на уровне приложения такую проверку сделать трудно. Поэтому, если очень хочется, можно сразу же после отправки команд и закрытия TCP-сессии, проверить состояние порта новым GET-запросом вида ?pt=0&cmd=get. Тогда вы точно будете уверены, что выход находится в нужном состоянии.
Тогда схема взаимодействия примерно такая:
1. Получили ?pt=0 (или st=1 или неважно что)
2. Ответили: "7:2"
3. Закрыли TCP-соединение (это на уровне приложения сделать можно. В PHP, например, это делается с помощью функции flush())
4. Отправили запрос: ?pt=0&cmd=get
5. Получили "ON". Все ясно. Порт включен.
Если говорить очень упрощенно и грубо, то HTTP-протокол работает по принципу: "запрос-ответ". Не "запрос-запрос", не "ответ-запрос" и не "ответ-ответ". Это важно.
Одна сторона отправляет, скажем, "GET-запрос". Другая сторона возвращает некоторые данные.
Когда контроллер связывается с сервером, он отправляет GET-запрос (в запросе присутствует некоторая полезная информация, например, st=1, pt=0 и т.д.)
Сервер отвечает ему "командами" самого устройства. Например: "7:2".
Никакое другое управление устройством через такие ответы невозможно (не заложено в прошивку). Только команды управления выходами. Не конфигурирование, не изменение параметров, только управление выходами через стандартные команды. И это логично. Мало ли какой "мусор" решит вернуть сервер по ошибке... Переключение выходов - это не то же самое, что изменение пароля и IP-адреса.
В ответе сервер не может послать устройству GET-запрос. А именно они используются для всего остального.
Таким образом.
Управлять выходами контроллера можно двумя способами.
1. В ответах на GET-запросы. Сработал вход, устройство отправило серверу ?pt=0, а в ответ сервер отвечает: "7:2"
2. GET-запросами к самому контроллеру. В этом случае сервер отправляет устройству GET-запрос вида: "?cmd=7:2" (а контроллер, к слову, возвращает ответ "Done").
Настраивать устройство можно только через GET-запросы от сервера.
Теперь вернемся к вашему сообщению.
Сервер не может в ответе st=1 установить часы в MegaD. Для этого ему нужно отправить контроллеру GET-запрос.
Это легко. Алгоритм следующий:
1. Получили st=1
2. Закрыли текущее TCP-соединение
3. Открыли новое TCP-соединение и отправили HTTP GET контроллеру на установку часов.
Точно также можно на "событие" st=1 и управлять выходами. Не ответом, а отдельным запросом, который отправляется сразу после закрытия TCP-сессии. По скорости эти, кстати, практически одинаково. Разница в микросекундах.
Вот, почему обработка команд на st=1 в целом не так уж и важна.
При чем здесь порты я не понял. В чем заключается "хак" также не понятно.
И контроллер и устройство могут работать с 80 портом. Никаких ограничений по этому поводу нет абсолютно.
Ответ "Done" и порт никак не связаны.
"Done" устройство возвращает ТОЛЬКО на GET-запросы от сервера на выполнение команд, например, "?cmd=7:2"
Если команды сервер отправлены в ответе на запрос самого устройства (например, ?pt=0), то оно просто выполняет команды и ничего не возвращает, ибо ничего вернуть в рамках протокола HTTP оно и не может.
Как проверить, выполнены ли команды? Ну, сам факт корректного закрытия TCP-сессии со стороны устройства будет говорить, что все прошло успешно. Но на уровне приложения такую проверку сделать трудно. Поэтому, если очень хочется, можно сразу же после отправки команд и закрытия TCP-сессии, проверить состояние порта новым GET-запросом вида ?pt=0&cmd=get. Тогда вы точно будете уверены, что выход находится в нужном состоянии.
Тогда схема взаимодействия примерно такая:
1. Получили ?pt=0 (или st=1 или неважно что)
2. Ответили: "7:2"
3. Закрыли TCP-соединение (это на уровне приложения сделать можно. В PHP, например, это делается с помощью функции flush())
4. Отправили запрос: ?pt=0&cmd=get
5. Получили "ON". Все ясно. Порт включен.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Андрей, большое спасибо за разъяснения! Много вопросов разрешились сами собой. Спасибо за небольшой ликбез по TCP-соединениям...у меня как-то не находилось возможности почитать и вникнуть в глубь данной темы.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Andrey_B, возможно мой вопрос озвучивался ранее, но спрошу еще разок: сколько датчиков DS18B20 можно повесить шиной на MegaD-2561 для стабильной работы? Спасибо!
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
matikus, на этот вопрос трудно ответить однозначно. С одной стороны количество датчиков ограничено размеров сетевого буфера, с другой стороны качеством кабельной инфраструктуры и правильностью подключения.
Если говорить о применении шины в "домашних" условиях, то возможностей контроллера и витой пары на скрутках может и должно хватить. Но практика главный критерий истины. А значит могут быть нюансы. Я лично больше 10 датчиков на одном порту не тестировал. Шина в доме не везде и не всегда удобна. Часто проще, надежнее, а для неподготовленных пользователей и понятнее подключать датчики по схеме 1 порт - 1 датчик.
Если говорить о применении шины в "домашних" условиях, то возможностей контроллера и витой пары на скрутках может и должно хватить. Но практика главный критерий истины. А значит могут быть нюансы. Я лично больше 10 датчиков на одном порту не тестировал. Шина в доме не везде и не всегда удобна. Часто проще, надежнее, а для неподготовленных пользователей и понятнее подключать датчики по схеме 1 порт - 1 датчик.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
http://ab-log.ru/files/File/megad-2561/ ... a9-hex.zip
- Добавлены новые команды для управления диммируемыми выходами. (в тестовом режиме)
Лирическое отступление.
Напомню, что контроллер поддерживает три вида специальных команд в сценариях: +, - и ~
Все эти команды работают только при взаимодействии с "кнопками" в режиме удержания.
Например, если в Act прописано: 12:+, то при удержании кнопки яркость/мощность будет увеличиваться. Также работает команда "-".
Команда "~" позволяет управлять яркостью одной клавишей.
Плавно менять яркость с помощью сервера можно было двумя способами.
1. С помощью отправки серии пакетов с запросом виде cmd=yy:xxx, где yy - номер порта, а xxx - значение ШИМ (PWM).
2. С использованием опции smooth, с помощью которой можно было отправить только один пакет с заданной яркостью (например, cmd=12:255), а контроллер самостоятельно увеличивал/уменьшал яркость в зависимости от заданного в этой опции значения скорости.
Новые команды дополняют и расширяют заложенные функции.
Команда "^" запускает процесс увеличения яркости. Например: 12:^
Команда "v" запускает процесс уменьшения яркости. Например: 12:v
В отличие от "+-~" эти команды может использовать сервер.
Таким образом, сервер не задает конечное значение яркости, а запускает процесс изменения.
Эти же команды можно использовать в сценариях. Причем в отличие от "+-~" новые команды можно комбинировать с другими. Например: 12:^;7:2
Но и это еще не все. В этой же команде можно передавать скорость изменения яркости от 1 до 9. Пример: 12:^2 (чем меньше цифра, тем быстрее происходит изменение. По умолчанию: 5)
Для того, чтобы остановить процесс изменения яркости достаточно снова выполнить одну из команд "^" или "v".
Эти команды расширяют возможности сервера для управления диммируемыми каналами.
В автономном режиме (без сервера) эти команды можно использовать с двумя кнопками, когда нажатие на одну кнопку будет изменять яркость в одну сторону (без необходимости удержания), а нажатие на вторую кнопку в другую сторону.
- Добавлены новые команды для управления диммируемыми выходами. (в тестовом режиме)
Лирическое отступление.
Напомню, что контроллер поддерживает три вида специальных команд в сценариях: +, - и ~
Все эти команды работают только при взаимодействии с "кнопками" в режиме удержания.
Например, если в Act прописано: 12:+, то при удержании кнопки яркость/мощность будет увеличиваться. Также работает команда "-".
Команда "~" позволяет управлять яркостью одной клавишей.
Плавно менять яркость с помощью сервера можно было двумя способами.
1. С помощью отправки серии пакетов с запросом виде cmd=yy:xxx, где yy - номер порта, а xxx - значение ШИМ (PWM).
2. С использованием опции smooth, с помощью которой можно было отправить только один пакет с заданной яркостью (например, cmd=12:255), а контроллер самостоятельно увеличивал/уменьшал яркость в зависимости от заданного в этой опции значения скорости.
Новые команды дополняют и расширяют заложенные функции.
Команда "^" запускает процесс увеличения яркости. Например: 12:^
Команда "v" запускает процесс уменьшения яркости. Например: 12:v
В отличие от "+-~" эти команды может использовать сервер.
Таким образом, сервер не задает конечное значение яркости, а запускает процесс изменения.
Эти же команды можно использовать в сценариях. Причем в отличие от "+-~" новые команды можно комбинировать с другими. Например: 12:^;7:2
Но и это еще не все. В этой же команде можно передавать скорость изменения яркости от 1 до 9. Пример: 12:^2 (чем меньше цифра, тем быстрее происходит изменение. По умолчанию: 5)
Для того, чтобы остановить процесс изменения яркости достаточно снова выполнить одну из команд "^" или "v".
Эти команды расширяют возможности сервера для управления диммируемыми каналами.
В автономном режиме (без сервера) эти команды можно использовать с двумя кнопками, когда нажатие на одну кнопку будет изменять яркость в одну сторону (без необходимости удержания), а нажатие на вторую кнопку в другую сторону.
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Andrey_B, предложение: добавить в прошивку возможность использования протокола Wiegand 26.
Поясню, для чего. Вот сейчас есть режим "контроллер доступа" - замечательно и удобно. Снаружи ставим недорогой считыватель, отдающий данные по протоколу Dallas, внутри мега "рулит" замком. Также рулим замком с сервера, и знаем - какой брелок запросил разрешение. Функционал отличный! Но на мой взгляд удобнее иметь снаружи не только считыватель Proximity/EM Marine и т.п., а ещё и клавиатуру - код набрал - и прошел.. На уровне прошивки/сервера нетрудно отметать / фиксировать попытки перебора.
Есть, конечно, считыватели с выходом Dallas, и клавиатурой, но или я плохо искал, или их и правда очень мало, и они в основном внутренние. Есть конвертеры Wiegand 26 <-> Dallas 1990A, но стоят они малость негуманно.
Почему поднимаю эту тему - я долгое время использовал внешний контроллер с клавиатурой/считывателем RFID брелков. Удобно. Но после того как хулиганьё его разбили (был хоть и металлический, но то хорошего камня мало что спасет), и я его демонтировал - я обнаружил что замок отомкнулся как только я пошевелил устройство - замкнуло что-то в контроллере, а из него выходила команда на открытие замка.. Хорошо что хулиганы, а не воры.
Сейчас использую считыватель Dallas, и решение об отмыкании замка принимается внутри, только клавиатуры я лишился. И уже был один случай, когда пришлось искать терминал, чтобы отомкнуть замок - так как калитка захлопнулась, а брелки дома остались.
Поясню, для чего. Вот сейчас есть режим "контроллер доступа" - замечательно и удобно. Снаружи ставим недорогой считыватель, отдающий данные по протоколу Dallas, внутри мега "рулит" замком. Также рулим замком с сервера, и знаем - какой брелок запросил разрешение. Функционал отличный! Но на мой взгляд удобнее иметь снаружи не только считыватель Proximity/EM Marine и т.п., а ещё и клавиатуру - код набрал - и прошел.. На уровне прошивки/сервера нетрудно отметать / фиксировать попытки перебора.
Есть, конечно, считыватели с выходом Dallas, и клавиатурой, но или я плохо искал, или их и правда очень мало, и они в основном внутренние. Есть конвертеры Wiegand 26 <-> Dallas 1990A, но стоят они малость негуманно.
Почему поднимаю эту тему - я долгое время использовал внешний контроллер с клавиатурой/считывателем RFID брелков. Удобно. Но после того как хулиганьё его разбили (был хоть и металлический, но то хорошего камня мало что спасет), и я его демонтировал - я обнаружил что замок отомкнулся как только я пошевелил устройство - замкнуло что-то в контроллере, а из него выходила команда на открытие замка.. Хорошо что хулиганы, а не воры.
Сейчас использую считыватель Dallas, и решение об отмыкании замка принимается внутри, только клавиатуры я лишился. И уже был один случай, когда пришлось искать терминал, чтобы отомкнуть замок - так как калитка захлопнулась, а брелки дома остались.
Последний раз редактировалось kod.begemot 07 фев 2017, 20:55, всего редактировалось 1 раз.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
kod.begemot, реализация Wiegand 26 планируется. В скором времени проведу тестирование работы с кодовой панелью.
Кстати, конвертор Wiegand-TM стоит порядка 1300 руб. Вполне гуманная стоимость.
Кстати, конвертор Wiegand-TM стоит порядка 1300 руб. Вполне гуманная стоимость.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
http://ab-log.ru/files/File/megad-2561/ ... a1-hex.zip
- Добавлена поддержка протокола MQTT (в тестовом режиме!). Обновление со сбросом настроек.
В сетевых настройках появилась новая опция "SRV Type", которая может принимать значения: HTTP или MQTT
После старта устройство соединяется с сервером и подписывается на топик: megad/14/cmd
Здесь 14 - последний байт IP адреса устройства. Если прописан MegadID, то используется он.
В данный момент при срабатывании входа устройство публикует информацию в топике: megad/14
Принцип формирования описан выше
Передача информации происходит в JSON-формате
Соответственно "сервер", подписанный на megad/14 и получивший информацию о событии, публикует сообщение в топике megad/14/cmd
Формат этого сообщения пока прежний и соответствует стандартным командам сценариев: 7:2;8:2 (пример)
В качестве "брокера" можно использовать mosquitto.
В качестве "сервера" можно использовать PHP-скрипт с библиотекой phpMQTT.php
Вот грубый пример такого "сервера".
Подчеркиваю, что статус этой версии: глубокая бета.
- Добавлена поддержка протокола MQTT (в тестовом режиме!). Обновление со сбросом настроек.
В сетевых настройках появилась новая опция "SRV Type", которая может принимать значения: HTTP или MQTT
После старта устройство соединяется с сервером и подписывается на топик: megad/14/cmd
Здесь 14 - последний байт IP адреса устройства. Если прописан MegadID, то используется он.
Код: Выделить всё
1486454199: New connection from 192.168.0.14 on port 1883.
1486454199: New client connected from 192.168.0.14 as megad-14 (c1, k30).
1486454199: Sending CONNACK to megad-14 (0, 0)
1486454200: Received SUBSCRIBE from megad-14
1486454200: megad/14/cmd (QoS 0)
1486454200: megad-14 0 megad/14/cmd
1486454200: Sending SUBACK to megad-14
Принцип формирования описан выше
Код: Выделить всё
1486454392: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
Код: Выделить всё
{"port":"0","cnt":"1"}
Формат этого сообщения пока прежний и соответствует стандартным командам сценариев: 7:2;8:2 (пример)
Код: Выделить всё
1486454501: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
1486454501: Sending PUBLISH to server (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
1486454501: Received PUBLISH from server (d0, q0, r0, m0, 'megad/14/cmd', ... (7 bytes))
1486454501: Sending PUBLISH to megad-14 (d0, q0, r0, m0, 'megad/14/cmd', ... (7 bytes))
В качестве "сервера" можно использовать PHP-скрипт с библиотекой phpMQTT.php
Вот грубый пример такого "сервера".
Код: Выделить всё
<?php
require("phpMQTT.php");
$mqtt = new phpMQTT("192.168.0.250", 1883, "server");
if(!$mqtt->connect()){
exit(1);
}
$topics['megad/14'] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);
while($mqtt->proc()){}
$mqtt->close();
function procmsg($topic,$msg){
global $mqtt;
echo "Msg Recieved: ".date("r")."\nTopic:{$topic}\n$msg\n";
$mqtt->publish("megad/14/cmd","8:2;7:2",0);
}
?>
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
У меня аж дыхание перехватило... Я сначала думал темой ошибся и зашел в "ESP8266 MegaD api ", а нет... все верно в "Прошивка MegaD-2561".
Огромное Спасибо!!!
Огромное Спасибо!!!
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Спасибо большое за надежду касаемо Weigand!!
Я согласен, это - вполне гуманная сумма на общем фоне затрат. Как раз равна стоимости неплохого электромаханического замка. Вот только без замка не обойтись, а без конвертера - хотелось бы А в моём случае, когда только в пределах двора планирую переоснастить такими системами 4 двери + калитку (взамен простых контроллеров) получается уже сумма заметная.Andrey_B писал(а):...
Кстати, конвертор Wiegand-TM стоит порядка 1300 руб. Вполне гуманная стоимость.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Все круто, но есть один момент. Датчик HTU21D показывает нормальные значения. Но значения выводятся вот такие:
Температура "25.00", влажность "hum:23.00".
Какбы это убрать этот "hum:"? Чтобы по влажности выводило только цифру. А то, к примеру в majordomo, свойство температуры - цифры, а свойство влажности - "hum:"цифры.
Не могли бы Вы исправить это в новой прошивке?
Ну и еще прошу за BMP180.
Да и в принципе, ИМХО, было бы круто сделать "нативную" поддержку I2C датчиков, подключение которых описывается на сайте. Как по мне, то человек сначала изучает, как и что можно сделать не имея навыков в программировании, на сайте. Соответственно перед покупкой megad-2561 я долго все читал, и заказал, в основном датчики с нативной поддержкой.
Температура "25.00", влажность "hum:23.00".
Какбы это убрать этот "hum:"? Чтобы по влажности выводило только цифру. А то, к примеру в majordomo, свойство температуры - цифры, а свойство влажности - "hum:"цифры.
Не могли бы Вы исправить это в новой прошивке?
Ну и еще прошу за BMP180.
Да и в принципе, ИМХО, было бы круто сделать "нативную" поддержку I2C датчиков, подключение которых описывается на сайте. Как по мне, то человек сначала изучает, как и что можно сделать не имея навыков в программировании, на сайте. Соответственно перед покупкой megad-2561 я долго все читал, и заказал, в основном датчики с нативной поддержкой.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
cheese, обработка выдачи - дело сервера и серверного ПО. Нельзя просто так менять формат выдачи, так как это может поломать работу других серверных программ.
Особенность BMP180 заключается в том, что необходимо хранить в памяти или при каждом обращении получать (что не оптимально со всех точек зрения) калибровочные коэффициенты. Но с другой стороны датчик атмосферного давления нужен всего один на всю систему. С этой точки зрения "нативную" поддержку BMP180 можно реализовать при условии, что к контроллеру будет подключен только один датчик. Очень жаль тратить ресурсы на хранение калибровочных коэффициентов для каждого порта, когда в этом нет никакой необходимости.
Особенность BMP180 заключается в том, что необходимо хранить в памяти или при каждом обращении получать (что не оптимально со всех точек зрения) калибровочные коэффициенты. Но с другой стороны датчик атмосферного давления нужен всего один на всю систему. С этой точки зрения "нативную" поддержку BMP180 можно реализовать при условии, что к контроллеру будет подключен только один датчик. Очень жаль тратить ресурсы на хранение калибровочных коэффициентов для каждого порта, когда в этом нет никакой необходимости.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Подскажите, какой самый простой путь вернуть управление девайсом, если прошился но новую версию, но без сброса настроек(?
По сети стало недосутпно, при запуске посылает в сеть два странных арп запроса:
14:27:08.580360 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 168.110.254.192 tell 192.168.110.14, length 46
14:27:08.745148 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 168.110.254.192 tell 192.168.110.14, length 46
По сети стало недосутпно, при запуске посылает в сеть два странных арп запроса:
14:27:08.580360 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 168.110.254.192 tell 192.168.110.14, length 46
14:27:08.745148 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 168.110.254.192 tell 192.168.110.14, length 46
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
hawkeye, если контроллер второй ревизии, то можно сбросить настройки в заводские с помощью кнопок, расположенных рядом с разъемом XT2.
Если контроллер первой ревизии, то с помощью скрипта megad-2561-cfg.php
См. прошивка в режиме восстановления
http://ab-log.ru/smart-house/ethernet/m ... re-upgrade
Только нужно добавить ключ --ee
Если контроллер первой ревизии, то с помощью скрипта megad-2561-cfg.php
См. прошивка в режиме восстановления
http://ab-log.ru/smart-house/ethernet/m ... re-upgrade
Только нужно добавить ключ --ee