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 
idifor 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.