2.4.37: кнопка-тумблер чинит сервисы, интервал юстировки заработал
Кнопка гасила сервис и больше не включала
Если кнопка корпуса настроена на переключение сервиса, у которого init-скрипт написан без procd — например passwall2 — она работала в одну сторону: первое нажатие выключало, все следующие выключали снова.
Причина в самом OpenWrt: у такого скрипта команды status не существует, и /etc/rc.common молча подменяет её справкой, выходя с нулём. Наша проверка «запущен ли сервис» смотрела на этот код возврата и всегда получала «работает» — значит тумблер всегда шёл по ветке «остановить».
Теперь status спрашиваем только там, где он настоящий (есть procd либо собственный status в скрипте), а остальным судим по признаку «включён»: тумблер сам держит его в паре со стартом и остановкой.
Тем же болела карточка служб на панели: passwall2 в ней всегда горел работающим.
Если кнопка уже успела снять автозапуск, вернуть его разово:
/etc/init.d/passwall2 enable
/etc/init.d/passwall2 startЮстировка: поле «Интервал» наконец работает
Поле меняло частоту запросов, но не свежесть данных: допуск кэша был жёстко четыре секунды, а фоновый сборщик обновлял снимок не чаще раза в семь. Поставив 2 секунды, вы получали те же цифры дважды и реальное обновление раз в 6–7 секунд — крутить антенну по такой обратной связи невозможно.
Теперь допуск равен выбранному интервалу. Замер на живом роутере с Quectel EC21, тик раз в две секунды:
было: 4 свежих обновления за 12 секунд (каждый второй тик — те же цифры)
стало: 6 свежих обновлений за 12 секунд
Полный опрос модема стоит около 0.85 секунды, так что это и есть практический потолок: поставите меньше — частота осядет на реальную скорость опроса, а не сломается. За этим следит новая защита от наложения запросов: тик пропускается, пока предыдущий ответ не пришёл. Без неё на коротком интервале запросы копились очередью и рвались по тридцатисекундному таймауту.
Инструкция для сторонних сервисов
Документ о том, как забирать метрики в умный дом, на внешний дисплей или в свой скрипт, сведён в один канон. Добавлены правила для потребителя, которых раньше не было: порог свежести в 90 секунд, запрет кэшировать поверх, «публикатор MQTT должен быть один», частота чтения. И отдельно — что делать, если рядом работает свой агрегатор со своими метриками.
Ссылка на инструкцию вынесена в начало всех трёх ридми, а не спрятана пунктом в списке возможностей.