37 lines
2.3 KiB
Markdown
37 lines
2.3 KiB
Markdown
# PROJECT_KNOWLEDGE.md — FarmBox
|
|
|
|
## Что это
|
|
|
|
**FarmBox** — локальный edge-сервер для фермы. Разворачивается на Mini PC или Raspberry Pi прямо на объекте, работает полностью без интернета. Принимает данные от ESP32-датчиков по LoRa, агрегирует через MQTT и синхронизирует в облако когда есть связь.
|
|
|
|
**Является частью системы AgroTO/OpsCore** → полная документация: https://git.zeroday.su/admin/agroto
|
|
|
|
## Состав репо
|
|
|
|
| Папка | Описание |
|
|
|---|---|
|
|
| `firmware/lora_gateway/` | Прошивка ESP32 LoRa-шлюза (приёмник) |
|
|
| `firmware/sensor_node/` | Прошивка ESP32-датчика (передатчик, моточасы, temp, ток) |
|
|
| `iot-bridge/` | Node.js мост между MQTT и облачным API OpsCore |
|
|
| `sync-agent/` | Агент синхронизации локал ↔ облако |
|
|
| `mosquitto/` | Конфиг Mosquitto MQTT брокера |
|
|
| `docker-compose.yml` | Весь стек: Mosquitto + InfluxDB + Node-RED + Grafana + farm-cmms + sync-agent |
|
|
| `install.sh` | Скрипт установки на чистый Ubuntu/Raspberry Pi |
|
|
|
|
## Как работает
|
|
|
|
1. ESP32 sensor_node отправляет данные (моточасы, температура, ток) по LoRa
|
|
2. ESP32 lora_gateway принимает, пересылает в Mosquitto по WiFi
|
|
3. iot-bridge подписывается на MQTT, пишет в локальный PostgreSQL и вызывает `/api/iot/*` OpsCore
|
|
4. sync-agent синхронизирует данные с облаком при наличии интернета
|
|
|
|
## Режимы OpsCore
|
|
|
|
- **Облако** — напрямую через интернет
|
|
- **Локально** — через `farmbox.local` (mDNS, avahi-daemon)
|
|
- **Офлайн** — IndexedDB кэш + очередь мутаций (автосинхронизация при появлении сети)
|
|
|
|
## Полная документация по IoT задачам
|
|
|
|
→ см. раздел **🟡 IoT** в [agroto/TASKS.md](https://git.zeroday.su/admin/agroto/src/branch/main/TASKS.md)
|