6c170fe1a2d6bdd2d7c79433127da7b0ef91b62b
Rostpoliplast — Линия переработки лома во вторичный гранулят
Система автоматизации линии переработки полимерного лома с контролем этапов, телеметрией и QR-сканированием.
Архитектура
┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Датчики │──▶│ Edge GW │──▶│ MQTT │──▶│ Backend │
│ (IO-Link) │ │ (ESP32) │ │ Broker │ │ (Go) │
└─────────────┘ └──────────┘ └──────────┘ └──────────┘
│
┌─────┴─────┐
│ InfluxDB │
│ Grafana │
└───────────┘
Backend API
Запуск
cd backend
docker-compose up -d
Swagger: http://localhost:8080/swagger/index.html
Эндпоинты
Тюки (Bales)
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/v1/bales |
Список всех тюков |
GET |
/api/v1/bales/:id |
Тюк по ID |
POST |
/api/v1/bales |
Создать тюк (+ RabbitMQ task) |
PUT |
/api/v1/bales/:id |
Обновить тюк |
DELETE |
/api/v1/bales/:id |
Удалить тюк |
POST |
/api/v1/bales?type=standard |
Создать по типу (QR flow) |
Типы тюков (Bale Types)
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/v1/bale-types |
Список типов |
GET |
/api/v1/bale-types/:id |
Тип по ID |
GET |
/api/v1/bale-types/qr/:id |
QR-код для маркировки |
POST |
/api/v1/bale-types |
Создать тип |
PUT |
/api/v1/bale-types/:id |
Обновить тип |
DELETE |
/api/v1/bale-types/:id |
Удалить тип |
Линия (Line) — НОВОЕ
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/v1/line/stages |
Все этапы линии |
GET |
/api/v1/line/stages/:id |
Этап по ID |
POST |
/api/v1/line/stages |
Добавить этап |
PUT |
/api/v1/line/stages/:id |
Обновить этап |
DELETE |
/api/v1/line/stages/:id |
Удалить этап |
GET |
/api/v1/line/stats |
Статистика линии |
Датчики (Sensors) — НОВОЕ
| Метод | Путь | Описание |
|---|---|---|
POST |
/api/v1/sensors/readings |
Показание датчика |
GET |
/api/v1/sensors/readings/stage/:id |
История по этапу |
События (Events) — НОВОЕ
| Метод | Путь | Описание |
|---|---|---|
POST |
/api/v1/events |
Событие на линии |
GET |
/api/v1/events/stage/:id |
События по этапу |
Очередь (Queue)
| Метод | Путь | Описание |
|---|---|---|
GET |
/api/v1/queue/next |
Следующая задача |
Примеры запросов
# Получить этапы линии
curl http://localhost:8080/api/v1/line/stages
# Отправить показание датчика
curl -X POST http://localhost:8080/api/v1/sensors/readings \
-H "Content-Type: application/json" \
-d '{"stage_id": 1, "sensor": "vibration", "value": 42.5, "unit": "mm/s"}'
# Создать событие
curl -X POST http://localhost:8080/api/v1/events \
-H "Content-Type: application/json" \
-d '{"stage_id": 3, "event_type": "item_processed", "data": "success"}'
# Статистика линии
curl http://localhost:8080/api/v1/line/stats
Компоненты линии (Line/)
| Компонент | Описание |
|---|---|
controller_* |
Контроллеры (WAGO, Siemens, Beckhoff, RPi) |
drive_* |
ЧРП (Danfoss, ABB, Schneider, SEW, Lenze) |
sensor_* |
Датчики (вибрация, температура, позиция, ток, уровень) |
safety_* |
Безопасность (Pilz, Siemens, Schneider) |
middleware_* |
Node-RED, Mosquitto, Grafana+InfluxDB |
comm_* |
Коммуникация (Hilscher, Moxa, Turck) |
infrastructure_* |
Шкафы, питание, коммутаторы |
QR Сканер
python QR/scanner.py
- Камера: Raspberry Pi Camera Module v3
- Библиотеки:
pyzbar+OpenCV - Клавиши:
q— выход,r— сброс
Счетчик товаров (mmWave)
# ESPHome + LD2410B
esphome run ld2410b_counter.yaml
- Радар 24 ГГц, отслеживание дистанции и энергии
- Подсчет через конечный автомат (debounce 300ms)
- MQTT интеграция, настраиваемые пороги
Тесты
cd backend
go test ./... -v
20 тестов покрывают все эндпоинты API.
Description
Languages
Go
73.3%
HTML
22.9%
Python
2.6%
Dockerfile
1.1%