How markkyrollos/tameer works
Tameer is an IoT agricultural monitoring and control product: field devices send sensor readings through MQTT, the backend validates and stores them, evaluates automation rules, and returns actuator commands; farmers and engineers view readings and control status in a bilingual PWA. The backend also exposes camera, voice, and debug routes, while a separate TameerML service provides image diagnosis and sensor/image fusion inference. The README and sampled source establish the MQTT, storage, automation, and PWA flows; wiring for several unsampled routes is left unspecified.
Main entry points: mqtt_service.py MQTT ingestion · main.py FastAPI application · influx_service.py InfluxDB access · App.tsx PWA routes
Components 23
Field and brokers
- ESP32 nodes
- HiveMQ broker
Backend processing
- FastAPI application
backend/main.py - Payload validation
backend/models/schemas.py - MQTT ingestion
backend/services/mqtt_service.py - Automation rules
backend/services/automation.py - Sensor API
backend/routers/sensors.py - Automation API
backend/routers/automation.py - Camera API
backend/routers/camera.py - Voice API
backend/routers/voice.py - Debug dashboard
backend/routers/debug.py - Debug event bus
backend/services/debug_bus.py
Persistence and inference
- InfluxDB access
backend/services/influx_service.py - InfluxDB
- ML client
backend/services/ml_service.py - TameerML inference
TameerML-main/app.py
PWA experience
- PWA routes
tameer-pwa/src/App.tsx - Farmer dashboard
tameer-pwa/src/pages/FarmerView.tsx - Engineer dashboard
tameer-pwa/src/pages/EngineerView.tsx - Plant health view
tameer-pwa/src/pages/PlantHealthView.tsx - Data hooks
tameer-pwa/src/hooks - API client
tameer-pwa/src/api
Other components
- Farmers and engineers
Connections 33
- ESP32 nodes → HiveMQ broker: publish readings
- HiveMQ broker → MQTT ingestion: deliver readings
- MQTT ingestion → Payload validation: validate payloads
- MQTT ingestion → InfluxDB access: write readings
- MQTT ingestion → Automation rules: evaluate readings
- Automation rules → MQTT ingestion: publish commands
- MQTT ingestion → HiveMQ broker: publish commands
- HiveMQ broker → ESP32 nodes: deliver commands
- MQTT ingestion → Debug event bus: emit events
- InfluxDB access → Debug event bus: emit write status
- InfluxDB access → InfluxDB: read and write
- FastAPI application → MQTT ingestion: start and stop
- FastAPI application → Sensor API: register routes
- FastAPI application → Automation API: register routes
- FastAPI application → Camera API: register routes
- FastAPI application → Voice API: register routes
- FastAPI application → Debug dashboard: register routes
- Sensor API → InfluxDB access: query readings
- Automation API → InfluxDB access: query events
- Automation API → MQTT ingestion: send overrides
- Debug dashboard → Debug event bus: stream events
- Debug dashboard → InfluxDB access: query debug data
- Camera API → InfluxDB access: record image data
- ML client → TameerML inference: request inference
- Farmers and engineers → PWA routes: use dashboard
- PWA routes → Farmer dashboard: render view
- PWA routes → Engineer dashboard: render view
- PWA routes → Plant health view: render view
- Farmer dashboard → Data hooks: load dashboard data
- Engineer dashboard → Data hooks: load readings and events
- Plant health view → Data hooks: load health data
- Data hooks → API client: request data
- API client → FastAPI application: call REST API