b bekozумный дом

На стене

Руководство панели

Панель на стене: комнаты, плитки устройств, режимы дома. Панель — пульт и приборная доска, а не мозг: команды она шлёт, состояние показывает, а автоматика и вся конфигурация живут в хабе. Что панель показывает, решает администратор дома в админке; панель хранит только вид.

Панель — это страница /wall того же приложения дома, а не отдельная программа. Поэтому на стену годится почти любой экран: Android-планшет, старый ноутбук, iPad, мини-ПК с телевизором. Интерфейс обновляется сам вместе с домом — ставить новый APK ради новой кнопки больше не нужно.

  • Панель говорит только с хабом. Она спрашивает у него дом целиком и слушает события; каким протоколом подключено устройство — забота хаба.
  • Работает без интернета. Панель разговаривает с хабом в домашней сети напрямую; к релею уходит, только если до хаба не дозвонилась.
  • Быстрый интерфейс. Панель рассчитана на слабое железо: минимум перерисовок, никаких тяжёлых эффектов.
  • Любой экран. Нужен браузер. Android-оболочка Bekoz добавляет к нему то, чего браузер не умеет: автозапуск, киоск, гашение экрана и яркость.
  • Несколько панелей — одна конфигурация. Панелям можно применить одну и ту же конфигурацию: тогда они клоны, и правка вида на одной появляется на остальных.
Общая документация Bekoz — bekoz.ru/docs: там про хаб, кабинет, приложение, админку и Алису. Здесь — только панель.

Первый запуск

Подключение

Код из админки

  1. В админке дома: Панели → «Подключить панель» → имя панели (например kitchen) → шестизначный код. Код живёт 15 минут и срабатывает один раз.
  2. На панели, на экране «Подключение к дому», введите код и нажмите Подключить. Адреса хаба и релея и ключ панель получит сама.
  3. Дом без интернета — нажмите «Дом без интернета? Указать адрес хаба» и введите адрес вида 192.168.1.10: код обменяется у самого хаба.
  4. Панель уже настроена и её нужно перевесить на другой дом — тот же код вводится в Настройки → Подключение → «Подключить по коду».

Имя панели — это имя железки: одно имя — одна панель. Новый код для того же имени перевыпускает её ключ.

Подключённая панель пустая, пока администратор не применит ей конфигурацию (Панели → панель → «Конфигурация»). Конфигурация — это разрешённые устройства и сцены, настройки экрана, раскладка, PIN и киоск.

Бейджи «Не в сети» на плитках работают, только если в zigbee2mqtt включён availability: true.

Строка подключения

Настройки → Подключение → «Настроить вручную» → «Строка подключения»: канал, адреса, ключ и ID панели упаковываются в одну строку вида BEKOZ1:…. Ту же строку показывает админка при выпуске кода — для ручного ввода или ADB.

  • Скопировать — строка попадает в буфер обмена; храните её как пароль.
  • Из буфера — на новой панели вставьте строку: она подключится, а остальное приедет с хаба само. Полное восстановление в один шаг.
Строка содержит ключ панели открытым текстом. И ещё: старая сборка приложения не прочитает конфигурацию с неизвестными ей типами устройств — обновляйте панели, прежде чем заводить новые типы.

Железо

Как повесить панель на стену

Адрес панели — /wall: в домашней сети это http://<адрес хаба>:3000/wall, снаружи — https://app.bekoz.ru/wall. Открыли, ввели код из админки — стена готова. Дальше вопрос только в том, чем эту страницу держать открытой.

Android: оболочка Bekoz

Лучший вариант для настоящей стены. Приложение com.munrexio.bekoz — тонкая оболочка: она показывает ту же страницу и добавляет к ней то, чего у браузера нет.

  • Автозапуск после включения питания и перезапуск после сбоя.
  • Киоск — из панели не выйти; с Device Owner это неубиваемый режим.
  • Экран и яркость — панель гаснет ночью и просыпается от касания.
  • Тихое обновление самой оболочки из админки дома.
  • Запасной экран, если дом не отвечает, и своя диагностика.

Оболочка сама ищет страницу: сначала хаб в домашней сети, потом app.bekoz.ru. Дом без интернета и интернет без дома — оба случая рабочие.

Планшет, ноутбук, мини-ПК с телевизором

  1. Откройте /wall в браузере и введите код из админки.
  2. Разверните на весь экран: Меню → На весь экран (или F11).
  3. В настройках устройства отключите сон экрана — страница просит систему не гасить его сама, но операционная система это иногда переопределяет.

Чего в браузере не будет: яркости, киоска и обновления оболочки. Настройки об этом честно говорят и лишних кнопок не показывают. Всё остальное — комнаты, плитки, шторки, камеры, заставка, гашение экрана плёнкой — работает.

iPad

  1. Откройте /wall в Safari.
  2. Поделиться → На экран «Домой» — появится значок, страница откроется без хрома браузера.
  3. Настройки → Универсальный доступ → Гид-доступ — включите; тройное нажатие боковой кнопки запирает iPad на этой странице.
  4. Настройки → Экран и яркость → Автоблокировка → Никогда.

Fully Kiosk Browser

Готовая киоск-обёртка для Android, если ставить оболочку Bekoz не хочется. Стартовый адрес — /wall; включите Keep Screen On, Kiosk Mode и Screensaver в самом Fully. Страница его узнаёт и отдаёт ему экран и яркость; обновления оболочки в этом варианте нет — Fully обновляется сам.

Панель видна дому как настоящая железка: присутствие, назначенная конфигурация, вид экрана. Несколько стен с одной конфигурацией остаются клонами, как и раньше.

Каждый день

Экран

Экран на стене и приложение в телефоне — один и тот же экран: те же комнаты, те же плитки, та же раскладка и одно поведение. Разное у них только число колонок (его решает ширина экрана) и то, что нужно именно стене: заставка, гашение экрана, PIN настроек.

Комнаты и жесты

  • Свайп влево и вправо — соседняя комната; комната едет за пальцем.
  • Вертикальная прокрутка — плитки внутри комнаты.
  • Комнаты — на широком экране списком слева, на узком (стена 480×480, телефон) полосой внизу, под большим пальцем.
  • Сверху — меню ☰, часы и кнопки режимов дома.
  • Меню ☰: тема, связь с домом, поиск устройства или сцены, что в доме просит внимания, «Камеры», «Раскладка экрана». На стене — ещё «Погасить экран» и «Настройки стены», у жильца — уведомления на телефон, выбор экрана и выход.

Плитки

  • Касание плитки — карточка устройства. Сцена от касания запускается.
  • Кнопка питания на плитке — включить и выключить, не открывая карточку.
  • Высокая плитка показывает больше: ползунок яркости у лампы (сдвинули — погашенная лампа включится с этой яркостью), окно шторы, которое тянут пальцем, крупную температуру у датчика и климата. Низкая плитка — одна строка: значок, имя, кнопка.
  • Размер «Авто» выбирает экран: камере, шторе, климату, лампе с яркостью и датчику — высокая, остальным — низкая. Плитка не меняет размер, когда устройство включили или выключили.
  • Штора на высокой плитке — окно во всю плитку, кнопки под ним: полотно тянут пальцем за край или жёлтую ручку на нём (у рулонной — язычок на нижней планке, у штор — на внутренних краях), пока тянете, в середине виден процент. На низкой плитке значок сам показывает, насколько закрыто окно, а кнопка рядом открывает или закрывает; на широкой — кнопки «открыть», «стоп» и «закрыть».

Правка экрана

Меню ☰ → «Раскладка экрана». Плитки остаются на своих местах, поверх — ручки:

  • Ручка ⠿ — потянуть плитку на новое место.
  • Список — размер: Авто · Компактная · Широкая · Высокая · Большая.
  • Крестик — убрать плитку с экрана. Убранные стоят в конце комнаты погашенными, «Вернуть» ставит обратно. Устройство при этом остаётся в доме: Алиса, автоматизации и другие экраны его видят.
  • «Готово» внизу — выход из правки.

Раскладка — часть конфигурации экрана и одна на все устройства: переставили плитку в телефоне — она переехала и на стене с этой конфигурацией, и наоборот. Какие устройства и сцены вообще могут быть на экране, их имена и комнаты решает админка дома. Если у стены задан PIN, правка на ней открывается после PIN.

Карточка устройства

Открывается касанием плитки; содержимое зависит от типа:

  • Состояние и «Обновлено» — когда устройство последний раз выходило на связь, заряд батареи и мощность, если устройство их сообщает.
  • Свет — включить и выключить, яркость, температура света (если лампа умеет), таймер выключения.
  • Розетка — питание, мощность и энергия, таймер выключения.
  • Датчик — все показания.
  • Штора — открыть, стоп, закрыть, положение. Климат — уставка и режимы. Замок — запереть и открыть. Медиа — транспорт и громкость. Камера — живое изображение на весь экран.
  • Настройки устройства — всё, что хаб объявил сверх типа: скорость вентилятора, ионизация, подсветка, целевая влажность, световые сцены. Режимы — кнопками, тумблеры — переключателем, диапазоны — ползунком в границах самого устройства (лампа 2700–6500 K, тёплый пол до 70 °C).

Что показывает панель

Устройства

Устройства живут в реестре дома — один раз на дом, в админке (Дом → Устройства): там их находят в zigbee2mqtt, добавляют своими топиками, подхватывают у адаптеров или импортируют из личного Яндекса. Панель их только показывает: добавить или удалить устройство с панели нельзя.

ТипЧто умеет на панели
LIGHTВкл/выкл, яркость, температура света, цвет — панель показывает только то, что устройство реально отдаёт в состоянии.
SWITCHВкл/выкл; если устройство шлёт метеринг (power/energy/voltage) — показания и график мощности.
SENSORТолько чтение: температура, влажность, давление, CO₂, освещённость, контакт, движение, дым, газ, протечка, батарея. Открытый контакт и движение подсвечиваются.
COVERОткрыть, закрыть, стоп, положение 0–100. У штор из Яндекса «Стопа» нет — Яндекс его не умеет.
SCENEКнопка-триггер: касание запускает сцену дома. Состояния нет.
CLIMATEТекущая температура, уставка, режим (off/heat/auto/cool), индикация нагрева.
LOCKЗапереть и открыть; открытие всегда через подтверждение.
MEDIAPlay, pause, next, previous, stop, громкость, название трека.
CAMERARTSP-поток на весь экран; на плитке — снапшот раз в 15 с, если задан snapshotUrl. Работает не по MQTT.

Одним касанием

Сцены

Сцена — снимок состояний: свет с яркостью и температурой, розетки, положение штор. Сцены дома заводят в админке (Дом → Сцены, а также в конфигурации панели, где есть захват текущих состояний), панель их показывает плиткой в своей комнате — касание воспроизводит снимок.

Отдельно от них у ламп в карточке есть быстрые сцены (Ярко, Тёплый, Ночник, Закат, Кино) — это просто заготовленные яркость и цвет, они ничего не сохраняют.

Что панель ещё умеет

Возможности

Режимы дома

Кнопки сверху экрана. Какие именно — решает дом: режимы заводят в админке (Дом → Режимы), там же их называют, выбирают иконку и порядок. Новый дом начинает с привычных Дома · Ушли · Ночь · Гости, но это просто первые четыре — можно завести свой «Уборка» или «На работе». Какие из них показывает экран, выбирают в конфигурации (Конфигурации → экран → Экран → Режимы дома); сняли все — полосы кнопок нет.

  • Касание кнопки публикует bekoz/<panelId>/mode/set{"mode":"<id режима>"}.
  • Активный режим подтверждает хаб (retained в bekoz/<panelId>/mode) — панель подсвечивает кнопку.
  • Что режим делает — решают автоматизации дома: «когда режим стал „Ушли“ — выключить весь свет». Их заводят на странице «Автоматизации» в админке или словами через дворецкого. Режим без автоматизации — просто подсвеченная кнопка.

Таймер выключения

В карточке света и розетки — 5 / 15 / 30 / 60 мин и «Отменить». Панель только публикует запрос, а отсчёт ведёт хаб: таймер переживает и зависание панели, и перезапуск ядра — он записан в базе.

  • Один таймер на устройство: новый заменяет прежний, «Отменить» снимает.
  • Если хаб лежал дольше часа, просроченный таймер не срабатывает — об этом остаётся запись в журнале.
  • Сложнее, чем «выключить через N минут», делается автоматизацией с паузой: «включи свет в коридоре и через 10 минут выключи».

Ночной режим

Настройки стены → Оформление: «Тёмная ночью по расписанию» и окно «Начало … Конец», например 22:00–07:00. Ночью стена переходит на тёмную тему, а яркость экрана (в оболочке Bekoz) падает до ночного уровня из конфигурации.

Скринсейвер и погода

  • Включается в Настройки стены → Экран; срабатывает после простоя (от 30 секунд до 10 минут), касание будит. Там же — через сколько гасить экран совсем и какой датчик движения его будит.
  • Показывает часы и, если включить, погоду (Open-Meteo, без ключа; город ищется по названию).
  • Сводка проблем — до трёх строк: устройство не в сети, открытый контакт, движение, батарея ≤ 20 %, датчик молчит дольше 12 часов. Появляются только при отклонениях.
  • Панель можно будить и усыплять извне (топик screen у хаба) — например, от датчика движения в прихожей.

Состояние дома

Первое, что видно в меню ☰: список того, что просит внимания, — кто не в сети, у кого батарея ≤ 20 %, какие датчики молчат дольше 12 часов, что открыто. Касание открывает карточку устройства. Тот же список — на заставке стены.

Алерты и домофон

  • Алерт — баннер поверх всего, будит экран: протечка, дверь открыта, стирка закончилась. Публикуется в bekoz/<panelId>/alert, уровни info / warn / crit, со звуком и таймаутом или до касания.
  • Камеры — экран «Камеры» в меню показывает все разом, касание открывает на весь экран.
  • Домофон — сообщение в bekoz/<panelId>/doorbell будит панель, открывает камеру на весь экран и показывает кнопку «Открыть замок».

Раз и надолго

Настройки панели

  • Оформление — тема, готовые темы (Океан, Неон, Лимон, Стекло), тёмная ночью, фон с вуалью и прозрачность плиток.
  • Экран — заставка и её тайм-аут, гашение экрана, датчик движения, который будит.
  • Погода — город для заставки.
  • Подключение — ID панели, адрес, по которому держится связь, диагностика, «Отвязать от дома».
  • Режим киоска — полноэкранный режим с блокировкой выхода. С Device Owner (провижининг через adb) — неубиваемый lock task и скрытые системные панели; без него деградирует до обычного закрепления экрана.
  • PIN настроек — защита от детей и случайных гостей. Приезжает из конфигурации, общий для панелей с одной конфигурацией.
  • Диагностика — живой поток событий дома (последние 200) с фильтром и адресом, по которому сейчас держится связь. Пишется, только пока экран открыт.

Настройки живут в конфигурации панели, а не в памяти устройства: они переживают переустановку оболочки, видны в админке и одинаковы у всех стен с этой конфигурацией.

Обновляется оболочка: администратор публикует версию на странице Обновления в админке и отправляет её выбранным панелям. Панель скачивает файл с хаба, проверяет размер, хэш и подпись и устанавливает. Сам интерфейс стены обновляется вместе с домом — для него APK не нужен.

Для интеграторов

Контракт дома (MQTT)

Полная машинная спецификация — файл MQTT.md в поставке Bekoz (единый источник правды). Здесь короткая версия. Если ID панели пуст, префикс топиков — просто bekoz/….

Сама панель этих топиков не читает и не пишет — она говорит с хабом напрямую. Топики ниже — контракт дома для автоматизаций и чужих интеграций: публикует и слушает их хаб, а до панели он довозит события сам.

Сервисные топики панели

ТопикКто комуPayload и смысл
…/availability retainedхаб → всеonline, пока у панели жива связь с хабом, offline после обрыва. Отдельного heartbeat нет: живость стережёт само соединение.
…/screen retainedхаб → всеБодрствует экран или спит. Панель работает датчиком присутствия.
…/screen/setвсе → панельРазбудить или усыпить. Можно с комнатой или камерой: {"state":"ON","room":"Прихожая"}.
…/alertвсе → панель{"text":"Протечка!","level":"info|warn|crit","timeout":30,"sound":true} — баннер поверх всего.
…/doorbellвсе → панель{"camera":"<id|имя>","lock":"<id|имя>","sound":true} — звонок: камера и кнопка замка. Не retained.
…/mode retainedхаб → панельАктивный режим дома — панель подсвечивает кнопку.
…/mode/setвсе → хабПереключить режим дома извне.
…/timer/setвсе → хаб{"topic":"<командный топик>","payload":{"state":"OFF"},"minutes":15} — выполнить payload через N минут; "minutes":0 отменяет.

Payload устройств

Состояние читается из state-топика, команды публикуются в <state>/set. Формат единый для z2m и своих топиков:

# LIGHT — состояние
{"state":"ON","brightness":180,"color_temp":350,"color":{"hex":"#FFE02C"}}
# LIGHT — команды
{"state":"OFF"} · {"state":"ON","brightness":128} · {"state":"ON","color_temp":454}

# SWITCH (+ метеринг в состоянии, если устройство его шлёт)
{"state":"ON","power":42,"energy":1.5,"voltage":230}

# SENSOR — только состояние, любые из полей
{"temperature":21.5,"humidity":48,"co2":800,"illuminance_lux":120,
 "contact":true,"occupancy":false,"battery":90}

# COVER
{"position":75} · {"state":"OPEN|CLOSE|STOP"}

# CLIMATE
{"local_temperature":21.5,"current_heating_setpoint":22,
 "system_mode":"heat","running_state":"heat"}

# LOCK
{"state":"LOCK|UNLOCK"}

# MEDIA
{"state":"PLAYING","volume":35,"title":"…","artist":"…"}
# команды: {"state":"PLAY|PAUSE|NEXT|PREVIOUS|STOP"} · {"volume":50}

Конфигурация

  • Снимок в bekoz/<panelId>/configпроекция реестра дома: хаб собирает его из устройств, комнат и сцен дома и конфигурации, назначенной панели. Панели с одной конфигурацией получают одинаковые снимки; панель без конфигурации — пустой.
  • Панель — не соавтор реестра. Она отдаёт хабу только вид экрана, PIN и киоск; устройства и сцены заводятся в админке и приезжают снимком с хаба.
  • Не синхронизируются реквизиты дома, ID панели, файл обоев и история датчиков — первые два переносятся строкой подключения.

Не только Zigbee

Своё железо

Устройство, которого нет в zigbee2mqtt, попадает в дом двумя путями. Оба заводятся в админке, панель их не различает.

  • Свои топики. У устройства указывается state-топик и командный топик, формат payload тот же. Важно: состояние само не возвращается — его должно публиковать само устройство или мост. Пока в state-топике ничего нет, панель показывает прочерк.
  • Адаптер. Обычный процесс, который владеет железкой или сервисом и показывает их устройствами в топиках bekoz/adapters/<id>/…. В поставке — Python-SDK и супервизор, который подхватывает папку адаптера; адаптер падает в одиночку и не роняет хаб. Подробности — ADAPTERS.md.

Node-RED для Bekoz не нужен: режимы, таймеры и автоматизации ведёт хаб. Если он у вас уже есть — пусть живёт рядом с хабом и делает своё; панель об этом ничего не знает.

Что обычно хочется сделать и где это делается теперь:

  • Пробуждение по движению — автоматизация дома: датчик сработал → публикация в bekoz/<panelId>/screen/set.
  • «Панель офлайн» — за этим следит сам хаб: уведомления настраиваются в админке, Настройки → Уведомления.
  • Баннер на стене — действие автоматизации, публикующее в bekoz/<panelId>/alert.

Когда что-то не так

Частые вопросы

Панель подключилась, а экран пустой
Ей ещё не применили конфигурацию: админка → Панели → панель → «Конфигурация».
Плитка «висит» в старом состоянии
Откройте карточку долгим тапом: строка «Обновлено …» покажет, когда устройство выходило на связь. Давно — проверьте батарею и сеть устройства. У движения и контакта там же видно, с какого момента держится состояние.
На плитках нет бейджа «Не в сети», хотя лампа обесточена
Включите availability в zigbee2mqtt (availability: true) — панель читает zigbee2mqtt/<name>/availability.
Кнопки режимов не подсвечиваются
Активный режим подтверждает хаб retained-сообщением. Проверьте, что хаб на связи и что тумблер «Режимы дома» включён в Настройки → Экран.
Таймер не сработал
Отсчёт ведёт хаб, и он переживает перезапуск. Проверьте, что хаб на связи и что в запросе стоит командный топик устройства — по другому таймер не сработает.
Своё устройство не обновляет состояние
Панель показывает то, что лежит в state-топике. Публиковать состояние должно само устройство, мост или адаптер: команда в …/set сама по себе состояния не меняет.
Как понять, что панель зависла
В админке, на странице «Панели», видно, кто в сети. Автоматизации могут подписаться на bekoz/<panelId>/availability: хаб держит там online, пока панель на связи, и ставит offline сразу после обрыва.
Как перенести панель на новое устройство
Выпустите код на то же имя панели в админке и введите его на новой железке — она заберёт адреса, ключ и конфигурацию сама. Без интернета выручит строка подключения. Заново выбрать придётся только обои — это локальный файл.
Несколько панелей показывают разное
Проверьте в админке, что им применена одна и та же конфигурация. Панели с разными конфигурациями и должны показывать разное — это и есть смысл конфигураций.