README.md

Веб-панель управления Agilent/HP E4406A

Веб-приложение на Python 3 + Flask для удалённого управления векторным анализатором сигналов Agilent/HP E4406A VSA Transmitter Tester (GSM, EDGE, W-CDMA и другие измерительные персональности прибора) по локальной сети: запуск измерений, визуализация трасс, экспорт отчётов и автоматизация сценариев измерений на встроенном языке Lua.

Разработка ведётся по методологии TDD с упором на максимальное покрытие тестами (модульные тесты — на мок-имитаторе прибора, интеграционные — на реальном оборудовании). Вся документация и коммуникация по проекту — на русском языке.

Возможности

  • Подключение к прибору по SCPI поверх “raw” TCP-сокета (порт 5025) — без зависимости от проприетарного VISA-рантайма.
  • Выбор измерительной персональности прибора (INSTrument:SELect) и запуск любых её измерений через единый API (CONFigure/MEASure/ FETCh/READ).
  • Каталог всех 11 персональностей прибора (BASIC, GSM, EDGE w/GSM, W-CDMA, cdmaOne, cdma2000, 1xEV-DO, NADC, PDC, iDEN, Service) с именованными (на русском) полями результатов для приоритетных измерений GSM/EDGE, общих измерений (Spectrum/Waveform/Channel Power, Power Statistics CCDF) и всех трёх вариантов ACP.
  • Веб-интерфейс: выбор режима/измерения, таблица результатов, графики трасс (Chart.js, локально — без внешних CDN) с осью X в инженерных единицах (Гц/с/бит), полученных из самого измерения.
  • Пределы (limit lines) и вердикт PASS/FAIL по любому полю результата — как в коммерческом ПО (Keysight BenchVue, R&S) — задаются в веб-интерфейсе, через API или из Lua-скрипта.
  • Снимок экрана прибора в один клик (HCOPy:SDUMp:DATA?).
  • Экспорт отчётов об измерении в PDF, CSV и JSON.
  • Встроенный движок автоматизации измерений на Lua (песочница, без доступа к файловой системе/сети в обход прибора) — с редактором сценариев прямо в веб-интерфейсе.
  • Docker-образ для развёртывания (docker compose up).

Подробнее об архитектуре и обосновании решений — в ARCHITECTURE.md. Обзор реализованного/запланированного — в docs/ROADMAP.md.

Требования

  • Python 3.10+
  • Прибор E4406A, доступный по сети (по умолчанию 192.168.1.210:5025, порт SCPI-RAW)

Быстрый старт

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .

# Адрес прибора (по умолчанию 192.168.1.210:5025, см. ниже)
export E4406A_HOST=192.168.1.210
export E4406A_PORT=5025

python -m flask --app e4406a_web.app:create_app run --host 0.0.0.0 --port 5000

Откройте http://localhost:5000/ в браузере.

Переменные окружения

Переменная По умолчанию Назначение
E4406A_HOST 192.168.1.210 IP-адрес прибора
E4406A_PORT 5025 Порт SCPI-RAW прибора
E4406A_TIMEOUT 10.0 Таймаут ожидания ответа прибора, с

Запуск через Docker

docker compose up --build

Откройте http://localhost:8000/. Адрес прибора задаётся в docker-compose.yml (переменные окружения) или через docker run -e E4406A_HOST=.... Контейнер всегда работает с одним рабочим процессом (gunicorn --workers 1) — прибор поддерживает по сути одну активную удалённую SCPI-сессию, см. комментарий в Dockerfile.

Разработка и тесты

pip install -r requirements-dev.txt

# Модульные и API-тесты (без обращения к реальному прибору)
pytest

# С покрытием
pytest --cov=e4406a_web --cov-report=term-missing

# Интеграционные тесты на реальном приборе (пропускаются автоматически,
# если прибор недоступен в сети)
pytest -m integration

Подробности о структуре тестов, мок-имитаторе прибора и найденных особенностях реальной прошивки — в docs/SCPI_REFERENCE.md и docs/DEV_GUIDE.md.

Документация

Документ Содержание
ARCHITECTURE.md Архитектура, обоснование решений, ссылки на опыт коммерческих продуктов
docs/SCPI_REFERENCE.md Справочник использованных SCPI-команд, найденные особенности прибора
docs/USER_GUIDE.md Руководство пользователя веб-интерфейса
docs/DEV_GUIDE.md Руководство разработчика: структура кода, TDD-процесс, добавление новых измерений
docs/AUTOMATION.md Автоматизация измерений на Lua
docs/ROADMAP.md Реализовано / запланировано

Структура проекта

e4406a_web/
  instrument/   - драйвер прибора: транспорт, SCPI, реестр измерений, сервис
  api/          - Flask REST API
  web/          - веб-интерфейс (шаблоны, статика, JS)
  reports/      - экспорт отчётов (PDF/CSV/JSON)
  automation/   - движок автоматизации на Lua
tests/
  unit/         - модульные тесты (мок-имитатор прибора)
  api/          - тесты Flask API (test_client)
  integration/  - тесты на реальном приборе (маркер integration)
docs/           - документация проекта
Описание
Конвейеры
0 успешных
0 с ошибкой
Разработчики