node-red-contrib-idi 1.0.2
Node-RED nodes for iDrone Innovations - drone telemetry processing, MAVLink protocol support, and drone fleet management
node-red-contrib-idi
Node-RED nodes for iDrone Innovations - professional drone telemetry processing, MAVLink protocol support, and drone fleet management.
Overview
This package provides specialized Node-RED nodes for working with drone telemetry data. Whether you're building a ground control station, fleet management system, or telemetry analytics platform, these nodes simplify the process of parsing, formatting, and visualizing drone data.
Features
- Multi-format telemetry parsing - Support for MAVLink, CSV, JSON, and NMEA formats
- Flexible output formatting - Export to GeoJSON, KML, CSV, InfluxDB, MQTT, or dashboard-ready formats
- Real-time position tracking - Maintain flight paths and calculate statistics
- Unit conversion - Automatic conversion between metric and imperial units
- Production-ready - Error handling, status indicators, and performance optimized
Installation
Install via Node-RED Palette Manager:
- Open Node-RED
- Go to Menu → Manage palette
- Search for
node-red-contrib-idi
- Click install
Or install via npm:
cd ~/.node-red
npm install node-red-contrib-idi
Nodes
IDI Telemetry Parser
Parses raw drone telemetry data from various formats into a standardized structure.
Supported Input Formats:
- MAVLink - Parse MAVLink protocol messages (HEARTBEAT, GPS_RAW_INT, ATTITUDE, etc.)
- CSV - Parse comma-separated telemetry logs
- JSON - Parse JSON-formatted telemetry
- NMEA - Parse GPS NMEA sentences (GPRMC, GPGGA)
Output Structure:
{
vehicle_id: "drone1",
timestamp: 1234567890,
gps: {
lat: 37.7749,
lon: -122.4194,
alt: 100.5,
satellites: 12,
hdop: 1.2,
fix_type: 3,
groundspeed: 5.2
},
attitude: {
roll: 5.2,
pitch: -2.1,
yaw: 185.5,
rollspeed: 0.1,
pitchspeed: -0.05,
yawspeed: 0.2
},
battery: {
voltage: 22.2,
current: 15.5,
remaining: 75
},
status: {
armed: true,
mode: 4,
system_status: 4,
autopilot: 3,
type: 2
}
}
IDI Telemetry Formatter
Formats parsed telemetry data for visualization, storage, or transmission.
Supported Output Formats:
GeoJSON
Perfect for web mapping applications (Leaflet, Mapbox, etc.)
{
type: "FeatureCollection",
features: [
{
type: "Feature",
geometry: {
type: "Point",
coordinates: [-122.4194, 37.7749]
},
properties: {
vehicle_id: "drone1",
altitude: 100.5,
battery_voltage: 22.2,
// ... all telemetry data
}
}
]
}
KML
For Google Earth and other KML-compatible applications
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Drone Telemetry - drone1</name>
<Placemark>
<name>Current Position</name>
<!-- ... -->
</Placemark>
</Document>
</kml>
InfluxDB Line Protocol
For time-series database storage
drone_telemetry,vehicle_id=drone1 lat=37.7749,lon=-122.4194,alt=100.5,voltage=22.2 1234567890000000
MQTT Topics
For real-time telemetry streaming
[
{ topic: "idi/drones/drone1/gps", payload: {lat: 37.7749, lon: -122.4194, ...} },
{ topic: "idi/drones/drone1/battery", payload: {voltage: 22.2, current: 15.5, ...} },
// ... additional topics
]
Dashboard Display
Pre-formatted data for UI dashboards
{
position: {
coordinates: { display: "37.774900, -122.419400" },
altitude: { value: 328.08, unit: "feet", display: "328.1 feet" },
gps_quality: { satellites: 12, quality: "good" }
},
battery: {
voltage: { value: 22.2, display: "22.2 V", status: "good" },
remaining: { value: 75, display: "75%", status: "good" }
},
flight_stats: {
duration_display: "5m 32s",
distance_display: "1.25 km"
}
}
Example Flows
Basic Telemetry Processing
[
{
"id": "mqtt-in",
"type": "mqtt in",
"topic": "mavlink/+/raw",
"name": "MAVLink Input"
},
{
"id": "parser",
"type": "idi-telemetry-parser",
"inputFormat": "mavlink",
"name": "Parse MAVLink"
},
{
"id": "formatter",
"type": "idi-telemetry-formatter",
"outputFormat": "geojson",
"name": "Format for Map"
},
{
"id": "websocket",
"type": "websocket out",
"name": "To Map Display"
}
]
Fleet Tracking with Database
[
{
"id": "fleet-parser",
"type": "idi-telemetry-parser",
"inputFormat": "json",
"outputFormat": "split"
},
{
"id": "influx-formatter",
"type": "idi-telemetry-formatter",
"outputFormat": "influxdb"
},
{
"id": "influx-out",
"type": "influxdb out",
"database": "drone_fleet"
}
]
Configuration Tips
Parser Node
- Use "split" output mode when you need to process different telemetry types separately
- Enable only the data types you need to reduce processing overhead
- The parser maintains compatibility with various MAVLink implementations
Formatter Node
- Enable history tracking for flight path visualization
- Set appropriate history limits based on your use case (100-1000 points typical)
- Use dashboard format for direct integration with Node-RED Dashboard
- MQTT format outputs an array - connect directly to MQTT out node
Use Cases
- Ground Control Station - Real-time telemetry display and flight path tracking
- Fleet Management - Monitor multiple drones with database storage
- Flight Analytics - Post-flight analysis with KML export
- Live Streaming - WebSocket/MQTT streaming for web dashboards
- Compliance Logging - CSV export for regulatory requirements
Performance Considerations
- The parser node handles approximately 100-200 messages/second per instance
- History storage is per-vehicle, memory usage scales with fleet size
- Use flow.set() for cross-flow telemetry data sharing
- Consider rate limiting for high-frequency telemetry streams
Roadmap
Future additions planned for this package:
- MAVLink message builder node
- Geofence monitoring node
- Mission planning nodes
- Video stream metadata injection
- DroneID/RemoteID support
- Additional telemetry formats (DJI, Pixhawk, ArduPilot specific)
Contributing
We welcome contributions! Please see our GitHub repository for:
- Bug reports and feature requests
- Pull requests
- Example flows
- Documentation improvements
Support
- Documentation: See the node help within Node-RED for detailed information
- Issues: GitHub Issues
- Email: [email protected]
- Node-RED Forum: Tag with
idi
for community support
License
MIT License - see LICENSE file for details
About iDrone Innovations
iDrone Innovations specializes in professional drone solutions, focusing on enterprise-grade telemetry systems, fleet management, and aerial data analytics. This Node-RED package represents our commitment to open-source tools for the drone community.
Visit idroneinnovations.com to learn more about our products and services.