# 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)