Files
farmbox/PROJECT_KNOWLEDGE.md
2026-05-03 11:10:55 +00:00

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)