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 создайте объект «Вебхук»:
- URL:
https://YOUR_HOST/webhook— приёмник за nginx с TLS-сертификатом (Let's Encrypt).
Простой http:// годится только внутри домашней сети и только в режиме «С вашего телефона».
- Секрет: тот же, что в
SECRETвentrixy.py.
Что делает
- Принимает POST с JSON:
{action, object_id, timestamp, nonce, signature}. - Проверяет подпись HMAC-SHA256 (сравнение за постоянное время).
- Отклоняет запрос, если его время отличается от текущего больше чем на 5 минут.
- Запоминает nonce на те же 5 минут и отклоняет повтор того же запроса.
- На
action=openиaction=closeвызываетon_command(). По умолчанию она
пишет в лог; замените её своей логикой: HTTP-вызов, GPIO, shell-команда или вызов webhook Home Assistant внутри сети (примеры в комментариях кода).
- Отвечает
{"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.