How agirsailing/agir_boat_monitoring works
Ågir is a static boat-operations dashboard: an operator connects from the browser to an MQTT broker, views live telemetry and position, and can request recording start or stop when fresh boat state permits. The browser handles validation, freshness, request correlation, and display; the ROS gateway on the Raspberry handles boat-side commands and recording. Demo mode simulates instruments without broker access and disables recording commands. The README documents the Pages, broker, and ROS topology; implementation links below follow sampled source, so unsampled UI markup and styling details are not expanded.
Main entry points: index.html Dashboard page · app.js UI controller · mqtt-connection.js Broker connection · state.js Dashboard state
Components 13
Operator interface
- Dashboard page
index.html - Dashboard styles
styles.css - Login styles
login.css
Browser runtime
- UI controller
app.js - Dashboard state
state.js - Topics and settings
config.js - Demo instruments
app.js
MQTT messaging
- Broker connection
mqtt-connection.js
Boat and hosting
- MQTT broker
- Raspberry ROS
- GitHub Pages
- MQTT.js CDN
Other components
- Operator
Connections 18
- Operator → Dashboard page: uses
- GitHub Pages → Dashboard page: serves files
- Dashboard page → Dashboard styles: loads
- Dashboard page → Login styles: loads
- Dashboard page → UI controller: runs
- UI controller → Dashboard state: reads and updates
- UI controller → Broker connection: connects and publishes
- UI controller → Demo instruments: starts demo
- Demo instruments → Dashboard state: ingests samples
- UI controller → Dashboard state: renders values
- Broker connection → Dashboard state: validates broker URL
- Broker connection → Topics and settings: reads topics
- Dashboard state → Topics and settings: reads topics
- Broker connection → MQTT broker: connects and exchanges MQTT
- MQTT broker → Broker connection: delivers messages
- Raspberry ROS → MQTT broker: publishes boat data
- MQTT broker → Raspberry ROS: forwards commands
- Dashboard page → MQTT.js CDN: loads library