| .. | |||
| device | 2 days ago | ||
| devices | 2 days ago | ||
| pids | 2 days ago | ||
| .gitignore | 2 days ago | ||
| README.md | 2 days ago | ||
| cli.py | 2 days ago | ||
| emulator.py | 2 days ago | ||
| requirements.txt | 2 days ago | ||
| state.py | 2 days ago | ||
Эмуляторы устройств умного дома на Python + Flask. Полностью повторяют REST-контракт реальных ESP8266/ESP32 устройств.
set_state (on/off).POST /events/new на сервер.cd tools/virtual_devices python3 -m venv .venv source .venv/bin/activate # или .venv\Scripts\activate на Windows pip install -r requirements.txt
# Создать виртуальное реле python cli.py create --type relay --alias virt_relay --name "Virtual Relay" --port 9001 # Создать виртуальные кнопки python cli.py create --type button --alias virt_btn --name "Virtual Buttons" --port 9002 # Запустить эмулятор python cli.py start --alias virt_relay python cli.py start --alias virt_btn # Список устройств python cli.py list # Остановить python cli.py stop --alias virt_relay # Статус (JSON) python cli.py status --alias virt_relay # Нажать кнопку (для button-типа) python cli.py click --alias virt_btn --channel 0 # Удалить устройство python cli.py remove --alias virt_relay
# Убедитесь, что сервер доступен по нужному URL python cli.py register --alias virt_relay --server-url http://smart-home-serv.local
Команда register:
/about эмулятора (должен быть setup)POST /api/v1/devices/setup/new-device на серверnormalКаждый эмулятор предоставляет UI на корневом URL:
http://127.0.0.1:9001/
| Method | Path | Auth | Описание |
|---|---|---|---|
| GET | /about |
— | Информация об устройстве |
| GET | /status |
Bearer | Состояние каналов |
| POST | /action |
Bearer | Управление (set_state, simulate_click) |
| POST | /set_token |
— (setup) / Bearer (normal) | Установка токена |
| POST | /reset |
Bearer | Сброс в setup |
| GET | /channels_schema |
Bearer (или — в setup) | Схема каналов |
| POST | /simulate-event |
— | Debug: ручной триггер события |
virtual_devices/ ├── cli.py # Управление устройствами ├── emulator.py # Flask-приложение эмулятора ├── state.py # Хранение состояния (JSON) ├── device/ │ ├── base.py # Базовый класс устройства │ ├── relay.py # Реле │ └── button.py # Кнопки ├── templates/ │ └── control.html # UI (inline в emulator.py) ├── devices/ # Состояния (*.json, .gitignore) └── pids/ # PID-файлы запущенных процессов
Для поддержки IP:port в device_ip при регистрации:
server/SHServ/Controllers/DevicesRESTAPIController.php — валидация setup_new_device теперь разбирает host:port и валидирует только host.