Files
rostpoliplast/README.md
T
Mephimeow 6c170fe1a2 new-g
2026-04-29 12:28:30 +00:00

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.