Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Должна быть унификация - однократное нажатие - параметр m=1, удерживание параметр m=2, но в выдаче этот параметр всегда должен быть - иначе алгоритм считывания не прописывается. Нет параметра - ошибка.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Исторически так сложилось, что:
- без параметра "m" -> нажатие
- "m=1" -> отжатие
- "m=2" -> удержание
Логика была простая. Зачем передавать лишние данные, когда "сервер" и так разберется?
if ( empty($_GET['m']) )
echo "Нажатие"";
Вообще это довольно забавно, когда маленькое устройство, тратя на это свои ресурсы и передавая в общем-то бесполезную информацию, должно подстраивать свою выдачу под сервер, который потенциально все умеет, но как бы не царское это дело... Устройство, конечно, не переломится передавать "m=0" при работе по MQTT. Просто напомню, что протокол якобы позиционируется как "экономичный" транспорт для IoT в сравнении с HTTP, а по факту получается по-разному...
- без параметра "m" -> нажатие
- "m=1" -> отжатие
- "m=2" -> удержание
Логика была простая. Зачем передавать лишние данные, когда "сервер" и так разберется?
if ( empty($_GET['m']) )
echo "Нажатие"";
Вообще это довольно забавно, когда маленькое устройство, тратя на это свои ресурсы и передавая в общем-то бесполезную информацию, должно подстраивать свою выдачу под сервер, который потенциально все умеет, но как бы не царское это дело... Устройство, конечно, не переломится передавать "m=0" при работе по MQTT. Просто напомню, что протокол якобы позиционируется как "экономичный" транспорт для IoT в сравнении с HTTP, а по факту получается по-разному...
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
m=1 зарезервировано для сигнала о размыкании, это написано в инструкции. Возможно, для унификации имело бы смысл прописать m=0 в момент срабатывания входа, но это значение и так получается в процессе приведения переменной m к типу, а эта процедура является обязательной к применению
Андрей, мне кажется, empty($_GET['m']) это не очень надёжный метод, settype как-то спокойнее, особенно если со встречной проверкой. Мало ли что пришлют в этой "m"
Андрей, мне кажется, empty($_GET['m']) это не очень надёжный метод, settype как-то спокойнее, особенно если со встречной проверкой. Мало ли что пришлют в этой "m"
Последний раз редактировалось alex946 25 янв 2018, 15:20, всего редактировалось 1 раз.
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Значение должно быть всегда, если есть событие.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Не совсем так. Неудобной и даже опасной является только такая ситуация, при которой отсутствие переменной в GET-запросе (в данном случае m) и её присутствие с нулевым значением обозначают разные сигналы от контроллера. Другие же случаи особого значения не имеют. Ну, может быть, в реализации MQTT это ещё может как-то сыграть (тут ещё не разобрался в вопросе)
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Все зависит от кода парсинга. В некоторых языках отсутствующая переменная и нулевая - одно и то же, в некоторых - нет.
Если язык разделяет эти понятия (или не дает обработать как одно), то для отсутствующей надо писать отдельный код, для значений - отдельный. Код начинает выглядит по разному возникает неоднообразность.
В целом это не страшно и не фатально. Хотя гарантированное наличие значения сильно упростит код. С другой стороны при приеме чего то из внешнего источника - проверка корректности значений (в т.ч. и их наличия) - все равно обязана быть.
Поэтому насчет m=0 - думаю было бы хорошо, но не особо важно. Важнее, как уже заметили выше, что бы отсутствие m и m=0 не начали означать разные вещи. Вне зависимости от HTTP или MQTT.
Если язык разделяет эти понятия (или не дает обработать как одно), то для отсутствующей надо писать отдельный код, для значений - отдельный. Код начинает выглядит по разному возникает неоднообразность.
В целом это не страшно и не фатально. Хотя гарантированное наличие значения сильно упростит код. С другой стороны при приеме чего то из внешнего источника - проверка корректности значений (в т.ч. и их наличия) - все равно обязана быть.
Поэтому насчет m=0 - думаю было бы хорошо, но не особо важно. Важнее, как уже заметили выше, что бы отсутствие m и m=0 не начали означать разные вещи. Вне зависимости от HTTP или MQTT.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
А так кстати не хочет работать почему-то.
Вы правы, наличие или отсутствие не начали означать разные вещи, но для кода было бы лучше унификация, если нет m в выдаче, то лучше уж m=0 начать выдавать. Во всяком случае опенхаб перестанет ошибками сыпать
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Проверил, работает.Andrey_B писал(а): ↑23 янв 2018, 17:39..Теперь можно вывести текст (подпись) мелко
Вот так: http://192.168.0.14/sec/?pt=31&text=test&col=0&row=0
Здесь col и row - координаты (колонка, ряд), откуда выводить текст.
Непонятно только как правильно очищать строку: ...text=_____________________________________&col=0&row=0 очищает только около 40% строки, поэтому приходится делать в три запроса:
...text=_________________________&col=0&row=0
...text=_________________________&col=40&row=0
...text=_________________________&col=80&row=0
С уважением, Игорь
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
https://ab-log.ru/files/File/megad-2561 ... a2-hex.zip
Попробуйте так.
http://192.168.0.14/sec/?pt=31&disp_cmd=1&row=0
где row - ряд, который нужно очистить.
Попробуйте так.
http://192.168.0.14/sec/?pt=31&disp_cmd=1&row=0
где row - ряд, который нужно очистить.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Хорошо что есть история, но когда в текущем моменте не начинают работать вроде как простые вещи, и их воплощение становится сложным - не есть хорошо. Народ ропщет: https://www.ab-log.ru/forum/viewtopic.p ... =80#p31060Andrey_B писал(а): ↑24 янв 2018, 18:45Исторически так сложилось, что:
- без параметра "m" -> нажатие
- "m=1" -> отжатие
- "m=2" -> удержание
Устройство, конечно, не переломится передавать "m=0" при работе по MQTT. Просто напомню, что протокол якобы позиционируется как "экономичный" транспорт для IoT в сравнении с HTTP, а по факту получается по-разному...
Может быть уже добавить m0?
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Тут уже писали, но напишу ещё раз: при обновлении с 4.22b9 на 4.23b3 получил:
Writing firmware... FAULT
Please update firmware in recovery mode (-f -e)
Соответственно пришлось шить в аварийном режиме.
Writing firmware... FAULT
Please update firmware in recovery mode (-f -e)
Соответственно пришлось шить в аварийном режиме.
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
У меня был ранее баг с задержками включения света из-за некорректной для меги настройки nginx (из-за Chunked transfer encoding), потому решил чразу спросить (может что ещё не досматриваю...)
Сейчас дошло время до ioBroker-а, переключил меги на него и получаю такую картину:
иногда при щелчке выключателем свет загарается с задержкой до 5 секунд. Это воспроизводится не каждый раз, но если щелкать, то легко воспроизводится.
Записал дамп на сервере, вижу, что событие срабатывания кнопки на сервер прилетает, ответ мгновенный,
тут же посылается команда на включение порта, мега мгновенно отвечает "Done", но свет зажигается спустя 4-5 секунд.
Собственно прошу, если есть время, посмотреть дамп. Из него не видно задержки, но она реально была!
Сейчас дошло время до ioBroker-а, переключил меги на него и получаю такую картину:
иногда при щелчке выключателем свет загарается с задержкой до 5 секунд. Это воспроизводится не каждый раз, но если щелкать, то легко воспроизводится.
Записал дамп на сервере, вижу, что событие срабатывания кнопки на сервер прилетает, ответ мгновенный,
тут же посылается команда на включение порта, мега мгновенно отвечает "Done", но свет зажигается спустя 4-5 секунд.
Собственно прошу, если есть время, посмотреть дамп. Из него не видно задержки, но она реально была!
- Вложения
-
- a.zip
- (962 байт) 93 скачивания
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Из дампа видно, что выключатель подключен к одному контроллеру, а команда на включение света (а точнее на установку значения 30 для ШИМ порта) отправляется другому контроллеру.
Никаких задержек в дампе не видно. Куда в действительности подключена лампа, на которой происходит задержка?
Никаких задержек в дампе не видно. Куда в действительности подключена лампа, на которой происходит задержка?
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Taurus Да, в nginx c php-fpm. После рекомендаций Андрея всё стало шикарно.
Andrey Вы всё правильно поняли. Кнопка на 14-ом контроллере. Лампа на 15 контроллере на порту 30.
Собственно такая же ситуация и по отдельности с каждым из контроллеров. кнопка на 15ом и лампа на 15ом. Пока всё отправлялось на сервер с nginx, который просто отвечал 'd' всё было 100% быстро.
Возникновение задержек произошло при переезде на ioBroker.
В реальном времени смотрю tcpdump и дергаю кнопку - подтверждение включения лампы на сервер приходит, а лампа загорается через несколько (до 5 секунд).
Andrey Вы всё правильно поняли. Кнопка на 14-ом контроллере. Лампа на 15 контроллере на порту 30.
Собственно такая же ситуация и по отдельности с каждым из контроллеров. кнопка на 15ом и лампа на 15ом. Пока всё отправлялось на сервер с nginx, который просто отвечал 'd' всё было 100% быстро.
Возникновение задержек произошло при переезде на ioBroker.
В реальном времени смотрю tcpdump и дергаю кнопку - подтверждение включения лампы на сервер приходит, а лампа загорается через несколько (до 5 секунд).
Re: Прошивка MegaD-2561 (релизы, обсуждения, предложения)
Нужны скриншоты сетевых настроек обоих контроллеров.
Нужны скриншоты входа P0, к которому подключен выключатель на 14-м контроллере и выхода P12, куда подключена лампа на 15-м контроллере.
Дело тут явно в настройках.
Нужны скриншоты входа P0, к которому подключен выключатель на 14-м контроллере и выхода P12, куда подключена лампа на 15-м контроллере.
Дело тут явно в настройках.