Skip to content

Ватериус-2: тревога доживает до портала - #462

Merged
dontsovcmc merged 2 commits into
devfrom
wet_alarm_silent
Sep 21, 2026
Merged

dontsovcmc merged 2 commits into
devfrom
wet_alarm_silent

Conversation

@dontsovcmc

Copy link
Copy Markdown
Owner

Что не работало

При типе входа «датчик протечки» тревога срабатывала один раз, а дальше устройство молчало на повторные замыкания и снять тревогу было нечем: плашки со снятием на главной портала не появлялось.

Почему

Кнопка на Ватериусе-2 одна на два действия, а attiny видит только факт нажатия — длительность меряет ЕСП (button.h, ButtonB2 всегда отдаёт SHORT). Снятие тревог стояло в ветке SHORT прямо в attiny, значит срабатывало и на долгом нажатии, которым открывают портал. К моменту, когда ЕСП читала флаги, тревоги уже не было, и плашку «Обнаружена протечка» со ссылкой снятия нельзя было увидеть в принципе. А пока тревога висит, новая на том же входе не поднимается (AlarmDetector::raise) — отсюда и молчание на повторные замыкания.

У Классика длительность различает сама attiny, там всё работало.

Что сделано

  • alarm_reset_by_button в чистом ядре ЕСП: короткое нажатие снимает всё, долгое не снимает ничего. Зовётся в main.cpp сразу после wait_button_release, маска уезжает ближайшим кадром 'A'.
  • attiny на Ватериусе-2 больше не снимает тревоги сама; у Классика ветка не тронута.
  • Сообщение S_ALARM_WET стало короче: «Обнаружена протечка на красном входе. Уберите влагу с датчика и снимите тревогу.»
  • Версии: ЕСП 2.0.51, attiny 45, записи в обеих историях. Разнобой версий безопасен в обе стороны: старая ЕСП с новой attiny теряет снятие кнопкой, но получает рабочую плашку; новая ЕСП со старой attiny ведёт себя как сегодня.
  • 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

dontsovcmc and others added 2 commits September 21, 2026 03:24
Кнопка на Ватериусе-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
@dontsovcmc
dontsovcmc merged commit ee16b6b into dev Sep 21, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant