Цель: пройти сценарии, отметить результат, скинуть отчёт. Прогресс автоматически сохраняется в браузере (localStorage). Если перешёл на другой телефон / закрыл страницу — открой снова, всё на месте.
Подготовка перед стартом:
sudo supervisorctl restart dialer-ws (без этого rate-limit/dedup не работают).versionCheckdownload.php → APKhost.log есть строки BootReceiver: received ACTION_BOOT_COMPLETED + HostService.start returned okdevice_id, появляется главный экран с пустым спискомhost.log хозяина — максимум 1 строка recv: ble_token_renew в минуту (throttle 60с/bleId)SKIP (cold-start in zone)Когда webhook_mode = "phone" — HTTP-запрос делает приложение на хозяйском телефоне. Сервер только триггерит. Требует хозяин в сети.
host_self_webhook через WS. Хозяин делает HTTP. Webhook secret гостю не утекает. У хозяина в журнале «Гость: X».number_update. У гостя через bundle тоже видно (если шарено).Когда webhook_mode = "server" — HTTP-запрос делает Workerman прямо с VPS. С HMAC-SHA256 подписью. Хозяин может быть offline.
private/wh.log запись. В журнале хозяина — успех.device_status от сервера).hash_hmac('sha256', body_without_signature, secret) === signaturesignature подмножество body. timestamp ± 60 сек от текущего.webhook_url и webhook_secret у гостя НЕТ. Только обозначение «это server-webhook». Сервер сам знает где брать конфиг.В /integrations/ есть готовые конфиги. Минимум по одному запросу на каждую.
integrations/home-assistant/configuration.yaml. Создать webhook со ссылкой на свой HA. Тап.integrations/shelly/README.md. URL = http://shelly-ip/relay/0?turn=onintegrations/tasmota/README.md. URL = http://tasmota/cm?cmnd=Power%20Toggleintegrations/esphome/entrixy-esphome.yamlintegrations/openhab/. Триггер сценария.integrations/curl/test-webhook.shintegrations/flask-test/entrixy.py. URL → ваш Flask./integrations/*/README.md глазами незнакомого с проектом юзераhost.log: ws onOpen status=101host.log гостя: guest[N] ws onOpen ... + guest_okproto=h2 или http/1.1, TLS handshake без ошибокhost.log на стороне Android: AppState.bleSleepByDid[did] = N, окно online window рассчитываетсяsudo supervisorctl restart dialer-wsprivate/wh.log нет ошибок.SELECT COUNT(*) FROM pending_host_msgs;$GLOBALS['apk_url'] в _config.php на http://example.org/test.apk. Открыть /download.php в браузере.host.log видно ws reconnect scheduled in N ms — N растёт: 1000 → 2000 → 4000 → 8000.sess=90000ms и delay снова 1000/private/loadlog/YYYY-MM-DD.tsv на сервереhttps://entrixy.com/admin/load.php в браузереapksigner verify --print-certs entrixy.apkCN=Android Debug, а реальный CN=Entrixy или подобный. Сейчас он debug — это блокирует прод-релиз.build.gradle.kts: isMinifyEnabled = true + proguard rulesandroid:usesCleartextTraffic="false" в манифесте уже стоит — проверить что не отменено.{"error":"unauthorized"}, никаких debug-данных/admin/ без авторизации/admin/load.php тоже должен быть за паролём (сейчас открыт — это блокер).mysqldump folder_dialer | gzip > /backup/db-$(date).sql.gz. Проверить что вчерашний бэкап есть.kill -9 $(pgrep -f workerman)private/wh.log, private/downloads.log не растут вечно[WS] auth OK. Команда «Открыть» из приложения замыкает реле.kill -9.entrixy.com/app/ в Chrome на мобилке. Зарегистрироваться, добавить ключ.private/crashes/ появляется (с дедупом).Скопируй ниже и отправь Claude в чат, либо нажми «Отправить на сервер» — отчёт сохранится в private/test-reports/