❮  Интеграции

Entrixy → Python Flask

Готовый пример подключения к Entrixy. Формат вебхука — entrixy.com/webhook.

Минимальный приёмник вебхука на Flask. Подходит для Linux- и macOS-серверов, NAS с Python и Raspberry Pi. Его же удобно ставить мостом перед системой, которая сама подпись не проверяет, например перед Home Assistant.

Запуск

pip install -r requirements.txt
python3 entrixy.py

Сервер слушает 0.0.0.0:8080. Адрес приёмника: POST /webhook.

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

В Entrixy создайте объект «Вебхук»:

Простой http:// годится только внутри домашней сети и только в режиме «С вашего телефона».

Что делает

  1. Принимает POST с JSON: {action, object_id, timestamp, nonce, signature}.
  2. Проверяет подпись HMAC-SHA256 (сравнение за постоянное время).
  3. Отклоняет запрос, если его время отличается от текущего больше чем на 5 минут.
  4. Запоминает nonce на те же 5 минут и отклоняет повтор того же запроса.
  5. На action=open и action=close вызывает on_command(). По умолчанию она

пишет в лог; замените её своей логикой: HTTP-вызов, GPIO, shell-команда или вызов webhook Home Assistant внутри сети (примеры в комментариях кода).

  1. Отвечает {"level":"success","message":"Opened"} — приложение покажет результат.

Отвергнутый запрос получает 401 и {"level":"danger"}.

Для постоянной работы

Не запускайте app.run() как постоянный сервис. Используйте gunicorn с одним процессом — список nonce хранится в памяти процесса:

pip install gunicorn
gunicorn -w 1 -b 127.0.0.1:8080 entrixy:app

Перед ним — nginx с TLS-сертификатом, и systemd-юнит для автозапуска. Если нужно несколько процессов, перенесите список nonce в общее хранилище, например в Redis.

Тест

После запуска отправьте запрос с правильной подписью скриптом из /integrations/curl/. Ответ {"level":"success",...} и HTTP 200 — подпись принята. Тот же запрос второй раз получит 401.