new-g
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user