Ватериус-2: тревога доживает до портала - #462
Merged
Merged
Conversation
Кнопка на Ватериусе-2 одна на два действия, а attiny видит только факт нажатия: длительность меряет ЕСП (button.h, ButtonB2 всегда отдаёт SHORT). Снятие тревог стояло в ветке SHORT прямо в attiny, то есть срабатывало и на долгом нажатии - ровно на том, которым открывают портал. Последствия видны снаружи. Плашку "Обнаружена протечка" со ссылкой снятия на главной портала нельзя было увидеть в принципе: нажатие гасило тревогу раньше, чем ЕСП успевала прочитать флаги. А пока тревога висит, новая на том же входе не поднимается - устройство молчало на повторные замыкания датчика протечки, и снять её было нечем. Теперь на Ватериусе-2 снятие посылает ЕСП маской в кадре 'A' и только за коротким нажатием: alarm_reset_by_button в чистом ядре, три теста на правило. У Классика длительность различает сама attiny - там без изменений, и разнобой версий не ломает ни одну из двух пар. Заодно сообщение о датчике протечки стало короче. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DQy577C8CwJr3uGxQsXyXG
Тест на разобранный дефект целиком, тремя шагами: тревога от датчика пережила долгое нажатие и видна плашкой на главной портала, снятие из портала её гасит, а следующее замыкание датчика снова даёт тревожный сеанс. Первых двух шагов без третьего мало: снятие в портале можно изобразить и не доведя маску до attiny, а молчание устройства на повторные замыкания и было тем, что видел владелец. Датчик перед порталом сушится намеренно - тогда плашка может взяться только от пережившей тревоги, а не от свежей. Заодно в ЕСП: снимок тревог гасим сразу при коротком нажатии, не дожидаясь кадра 'A'. Посылка сеанса собирается из снимка, и без этого кнопка на Ватериусе-2 привозила бы снятую тревогу ещё раз - в отличие от Классика, где снимает сама attiny (E13). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DQy577C8CwJr3uGxQsXyXG
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что не работало
При типе входа «датчик протечки» тревога срабатывала один раз, а дальше устройство молчало на повторные замыкания и снять тревогу было нечем: плашки со снятием на главной портала не появлялось.
Почему
Кнопка на Ватериусе-2 одна на два действия, а attiny видит только факт нажатия — длительность меряет ЕСП (
button.h,ButtonB2всегда отдаётSHORT). Снятие тревог стояло в веткеSHORTпрямо в attiny, значит срабатывало и на долгом нажатии, которым открывают портал. К моменту, когда ЕСП читала флаги, тревоги уже не было, и плашку «Обнаружена протечка» со ссылкой снятия нельзя было увидеть в принципе. А пока тревога висит, новая на том же входе не поднимается (AlarmDetector::raise) — отсюда и молчание на повторные замыкания.У Классика длительность различает сама attiny, там всё работало.
Что сделано
alarm_reset_by_buttonв чистом ядре ЕСП: короткое нажатие снимает всё, долгое не снимает ничего. Зовётся вmain.cppсразу послеwait_button_release, маска уезжает ближайшим кадром'A'.S_ALARM_WETстало короче: «Обнаружена протечка на красном входе. Уберите влагу с датчика и снимите тревогу.»docs/alarms.md: таблица путей снятия теперь различает модели, добавлен разбор почему.Проверки
ESP8266/scripts/run_tests.sh— 740 тестов, обе модели, зелено (3 новых на правило кнопки).Attiny85/scripts/run_tests.sh— 46 тестов, зелено.node ESP8266/scripts/test_strings.js— 25 тестов портала.python3 docs/check_refs.py— 296 ссылок разрешились.Attiny85× (waterius_2, attiny85),ESP8266× (waterius_2, esp01_1m).На живой плате не проверялось: стенд сейчас разобран, а сценарий требует замкнуть датчик, дождаться сеанса и войти в портал долгим нажатием.
🤖 Generated with Claude Code
https://claude.ai/code/session_01DQy577C8CwJr3uGxQsXyXG