EkahauBOM — утилита на Python для генерации Bill of Materials (BOM) из проекта Ekahau (файл .esx).
Скрипт извлекает точки доступа и антенны, группирует по моделям и сохраняет результат в CSV. Минимум магии, максимум пользы.
- Функции
- Архитектура
- Установка
- Быстрый старт
- Использование
- Вывод и структура файлов
- Требования и зависимости
- Ограничения и примечания
- Contributing
- Лицензия
- Roadmap
- Чтение
.esx(ZIP-архив с JSON внутри) - Парсинг списка точек доступа и антенн
- Нормализация имен моделей (для корректной группировки)
- Подсчет количества каждой модели
- Экспорт в CSV:
access_points.csvиantennas.csv
flowchart LR
A[(.esx / ZIP)] --> B[Открыть архив]
B --> C{Извлечь JSON}
C --> D[Парсинг accessPoints.json]
C --> E[Парсинг antennas.json]
D --> F[Нормализация моделей AP]
E --> F[Нормализация моделей антенн]
F --> G[Группировка и подсчет]
G --> H[Экспорт в CSV]
git clone https://github.com/htechno/EkahauBOM.git
cd EkahauBOM
python3 -m venv venv
# Linux / macOS
source venv/bin/activate
# Windows (PowerShell)
# .\venv\Scripts\Activate.ps1
pip install -r requirements.txtЕсли внешний зависимостей нет,
requirements.txtможет быть пустым (или отсутствовать).
python EkahauBOM.py path/to/design.esxРезультат появится в той же директории: два CSV-файла с суммарным списком моделей AP и антенн.
python EkahauBOM.py /path/to/your_project.esxПример вывода в консоли:
Generating BOM from myDesign.esx
--------------------------------------------------
12x Cisco C9120I
3x Cisco C9130E + AIR-ANT2524DW-R
Формат имен зависит от данных в
.esx. Встроенные антенны могут быть указаны в имени AP.
EkahauBOM/
├── EkahauBOM.py
├── requirements.txt # может быть пустым, если нет внешних пакетов
├── LICENSE
└── README.md
После запуска в рабочей директории создаются файлы:
access_points.csv— модели точек доступа и их количествоantennas.csv— модели антенн и их количество
-
Python 3.7+
-
Стандартная библиотека Python (например,
zipfile,json,argparse) обычно достаточна -
Если в код добавлены сторонние пакеты, перечислите их в
requirements.txtвида:pandas>=2.0 tabulate>=0.9и выполните
pip install -r requirements.txt
.esx— это ZIP с JSON-структурами; если Ekahau изменит внутренний формат, может потребоваться доработка парсинга- Нормализация имен моделей минималистична: при «экзотическом» нейминге возможны дубликаты строк, отличающиеся написанием
- CSV экспорт не содержит цен; это именно BOM по моделям, не коммерческая спецификация
- Форкните репозиторий
- Создайте ветку
feature/<краткое-имя> - Покройте изменения простыми тестовыми кейсами/примерами
- Оформите pull request с понятным описанием
Рекомендации к стилю коммитов:
feat:новая функциональностьfix:исправление багаdocs:документацияrefactor:без изменения поведения
Проект распространяется под лицензией MIT. См. файл LICENSE.
- Опциональный экспорт в XLSX
- Проверка совместимости версии
.esxи предупреждения - Мини-GUI (drag-and-drop файла и предпросмотр результата)