Files
2026-06-29 15:06:48 +03:00

14 KiB
Raw Permalink Blame History

Настройка ButtonTask на готовом устройстве

Инструкция для панели, которая уже установлена и запущена. Процесс установки и деплоя здесь не описан.

Исходное состояние

Параметр Значение по умолчанию
IP устройства 192.168.1.60 (статический, eth0)
Веб-конфигуратор http://192.168.1.60:8080
Пароль веба и панели admin
Кнопка на экране «Вызов клининга»
URL кнопки http://192.168.1.55 (адрес сервиса в вашей сети)
Срабатывание удержание ~800 мс

Убедитесь, что ПК в той же подсети (192.168.1.x) и панель отвечает по IP.


Два способа настройки

Что настраивать Где удобнее
URL, тексты, иконки, цвет, удержание/клик Панель или веб
Правила JSON (расширенная проверка ответа), polling Только веб
Внешний вид (фон, сетка, обводка), сеть, журнал, OTA Только веб
Включить/выключить расширенную проверку (без правил) Панель (переключатель) + веб (правила)

Изменения из веба и с панели пишутся в один файл /opt/buttontask/config/config.json и подхватываются приложением автоматически.


Веб-конфигуратор

Вход

  1. Откройте в браузере: http://192.168.1.60:8080
  2. Пароль: admin (сменить — вкладка «Безопасность»).

Вкладка «Кнопки»

Список кнопок. Для каждой: ✎ Редактировать, ✕ Удалить. Кнопка + Добавить — новая кнопка.

Порядок в списке меняется перетаскиванием (drag-and-drop).

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

Поле Назначение
Подпись Текст под кнопкой на панели
Иконка Файл из /opt/buttontask/icons (загрузка — вкладка «Внешний вид»)
Метод GET или POST
URL Куда уходит запрос, например http://192.168.1.55/api/call
Текст успеха Сообщение при успехе (не подставляйте сюда URL)
Текст ошибки Сообщение при ошибке
Текст ожидания Пока идёт запрос или polling (... по умолчанию)
Цвет кнопки Цвет круга на панели
Срабатывание Удержание (нужно держать палец) или Клик
Длительность удержания 2003000 мс

После Сохранить страница перезагрузится; на панели изменения видны сразу.


Простая кнопка (только HTTP)

Если галочка «Расширенная проверка ответа (JSON)» выключена:

  • успех = HTTP-код меньше 400 (ответ 200, 201…);
  • ошибка = код 400 и выше или сеть недоступна;
  • тело ответа не разбирается.

Подходит, когда сервер просто отвечает 200 OK без важного JSON.

Пример — дефолтная «Вызов клининга»:

  • URL: http://192.168.1.55
  • Текст успеха: Вызов отправлен
  • Текст ошибки: Ошибка
  • Расширенная проверка: выкл.

Расширенная проверка JSON

Включите «Расширенная проверка ответа (JSON)», если сервер возвращает JSON и результат нужно понимать по полям в теле, а не только по коду HTTP.

Как это работает на панели

  1. Нажатие → белая обводка / свечение (ожидание).
  2. По правилам:
    • Принято → зелёная обводка;
    • Ошибка → красная;
    • Ожидание → жёлтое пульсирующее свечение, повтор запросов (polling).
  3. Через несколько секунд подпись и обводка гаснут (по умолчанию ~5 с).

Пока кнопка занята (статус не «готов»), повторное нажатие блокируется.

Блок настроек в вебе

Параметр Описание
Требовать HTTP < 400 При выкл. смотрят только правила JSON, даже если HTTP 500
Если ни одно правило не подошло Что делать с неизвестным ответом (обычно Ошибка)
Правила Таблица: поле → значение → результат → сообщение
Polling Интервал, макс. попыток, общий таймаут — только для результата Ожидание

Строка правила

Колонки (слева направо):

  1. Поле — имя в JSON, точка для вложенности (data.status).
  2. Условие — «равно» или «содержит».
  3. Значение — с чем сравнивать.
  4. РезультатПринято / Ошибка / Ожидание ← важнейшая колонка.
  5. Сообщение — необязательно; иначе берётся текст успеха/ошибки/ожидания.

Частая ошибка: для success = error в колонке результата оставили Принято — панель станет зелёной с текстом «Сбой». Для ошибки нужно Ошибка, для pendingОжидание.

Пример: ответ с полем success

Сервер отвечает: {"success":"ok"} / "pending" / "error".

поле равно результат сообщение
success ok Принято Готово
success pending Ожидание Ждём…
success error Ошибка Сбой

Polling: интервал 2000 мс, попыток 10, таймаут 60000 мс.

Пример: вложенный JSON

URL: http://сервер/nested?status=ready
Ответ: {"data":{"status":"ready"}}

поле равно результат сообщение
data.status ready Принято Принято
data.status busy Ожидание Занято
data.status fail Ошибка Отказ

Пример: эндпоинт /state

URL: http://сервер/state?phase=error
В теле JSON поле называется success, не phase:

{"success":"error","ts":...}

Правило: поле success, значение error, результат Ошибка.

Polling

Используйте, когда первые ответы приходят с "success":"pending", а готовность — с "success":"ok".

  • Каждые intervalMs мс повторяется тот же URL.
  • Останавливается при Принято / Ошибка, по лимиту попыток или таймауту.
  • Перед повторным тестом на тестовом сервере сбросьте счётчик: GET .../reset.

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

Открыть настройки

  1. Нажмите шестерёнку (правый нижний угол).
  2. Введите пароль (admin по умолчанию).

Разделы меню

Раздел Возможности
Кнопки Список, добавить, редактировать, удалить, порядок (≡ перетащить)
Расположение Сетка / список, число колонок, отступы, подписи
Фон Градиент, цвет, картинка
Обводка Цвета и толщина OK/ошибка, свечение
Сеть Просмотр интерфейсов; смена IP — удобнее в вебе
Обновление Текущая версия ПО (OTA — в основном через веб)
Сменить пароль Пароль для панели и веба

Редактор кнопки на панели

Те же поля, что в вебе: подпись, иконка, метод, URL, тексты, цвет, удержание/клик.

Переключатель «Расширенная проверка» только включает/выключает режим. Правила JSON задаются в веб-конфигураторе (подсказка на экране).

Нажатие кнопки на панели

  • Удержание (по умолчанию): удерживайте, пока заполнится кольцо (~800 мс), затем отпустите — уйдёт запрос.
  • Клик: одно касание.

Вкладки веба (кратко)

Внешний вид

  • Расположение — сетка/список, колонки, отступы.
  • Фон — тип, цвета, анимация, фоновое изображение.
  • Обводка — цвета OK/ERR, толщина, радиус свечения.
  • Иконки — загрузка PNG/JPG/SVG в папку иконок.

Сеть

Состояние eth0, режим DHCP/статический IP, шлюз, DNS. После Применить настройки сохраняются в network.json и применяются скриптом сети.

Система

  • Нагрузка CPU/RAM, время.
  • Доступ: ping (ICMP), SSH, порт веба.
  • Журнал нажатий — какая кнопка, URL, результат (OK / ERR / WAIT), время в мс.

Полезно при отладке: если везде OK 200 без WAIT, проверьте колонку результат в правилах.

Обновление

Загрузка пакета .tar.gz (бинарник + веб). Конфиг и иконки в /opt/buttontask/config и icons не затираются.

Безопасность

Смена пароля веба и панели.


Проверка с ПК (необязательно)

Для отладки HTTP без реального сервиса на другой машине в сети:

python3 tools/button-test-server.py --host 0.0.0.0 --port 8765

Примеры URL для кнопки:

URL Поведение
http://<IP-ПК>:8765/ok Простой HTTP 200
http://<IP-ПК>:8765/state?phase=error JSON success: error
http://<IP-ПК>:8765/poll?pending=3 3× pending, затем ok
http://<IP-ПК>:8765/nested?status=ready Вложенное поле data.status

На Windows откройте порт 8765 в брандмауэре. Перед тестом poll: http://<IP-ПК>:8765/reset.


Типичные проблемы

Симптом Причина Что сделать
Всегда зелёный, один запрос Правила с результатом Принято для всех значений Исправить колонку «результат»
Сообщение = URL кнопки URL попал в «Текст успеха» Вписать нормальный текст
Polling не идёт Для pending стоит результат Принято Поставить Ожидание
phase=error, а правило не срабатывает В JSON поле success, не phase Правило по полю success
Веб не открывается Неверный IP / порт / firewall Проверить 192.168.1.60:8080, вкладка «Сеть»
Настройки не видны на панели Не сохранили в вебе Нажать Сохранить в диалоге кнопки

Просмотр конфига на устройстве (SSH)

sudo cat /opt/buttontask/config/config.json

Проверка последнего нажатия:

tail -1 /opt/buttontask/run/button-log.jsonl | python3 -m json.tool

Ожидаемые поля при работающей расширенной проверке: "outcome": "ok" / "error" / "pending", при простом HTTP — "outcome": "http".


Минимальный чеклист для новой кнопки

  1. URL сервиса доступен с панели (ping, HTTP).
  2. Тексты успеха/ошибки/ожидания заполнены осмысленно.
  3. Если нужен JSON — включена расширенная проверка, добавлены правила с правильным результатом.
  4. Для долгих операций — правило Ожидание + блок polling.
  5. Проверка на панели + запись в журнале на вкладке «Система».