140 lines
5.3 KiB
Markdown
140 lines
5.3 KiB
Markdown
# Rostpoliplast — Линия переработки лома во вторичный гранулят
|
|
|
|
Система автоматизации линии переработки полимерного лома с контролем этапов, телеметрией и QR-сканированием.
|
|
|
|
## Архитектура
|
|
|
|
```
|
|
┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
│ Датчики │──▶│ Edge GW │──▶│ MQTT │──▶│ Backend │
|
|
│ (IO-Link) │ │ (ESP32) │ │ Broker │ │ (Go) │
|
|
└─────────────┘ └──────────┘ └──────────┘ └──────────┘
|
|
│
|
|
┌─────┴─────┐
|
|
│ InfluxDB │
|
|
│ Grafana │
|
|
└───────────┘
|
|
```
|
|
|
|
## Backend API
|
|
|
|
### Запуск
|
|
|
|
```bash
|
|
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` | Следующая задача |
|
|
|
|
### Примеры запросов
|
|
|
|
```bash
|
|
# Получить этапы линии
|
|
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 Сканер
|
|
|
|
```bash
|
|
python QR/scanner.py
|
|
```
|
|
|
|
- Камера: Raspberry Pi Camera Module v3
|
|
- Библиотеки: `pyzbar` + `OpenCV`
|
|
- Клавиши: `q` — выход, `r` — сброс
|
|
|
|
## Счетчик товаров (mmWave)
|
|
|
|
```yaml
|
|
# ESPHome + LD2410B
|
|
esphome run ld2410b_counter.yaml
|
|
```
|
|
|
|
- Радар 24 ГГц, отслеживание дистанции и энергии
|
|
- Подсчет через конечный автомат (debounce 300ms)
|
|
- MQTT интеграция, настраиваемые пороги
|
|
|
|
## Тесты
|
|
|
|
```bash
|
|
cd backend
|
|
go test ./... -v
|
|
```
|
|
|
|
20 тестов покрывают все эндпоинты API.
|