node-red-contrib-idi 1.0.2

Node-RED nodes for iDrone Innovations - drone telemetry processing, MAVLink protocol support, and drone fleet management

npm install node-red-contrib-idi

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:

  1. Open Node-RED
  2. Go to Menu → Manage palette
  3. Search for node-red-contrib-idi
  4. 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

  1. Ground Control Station - Real-time telemetry display and flight path tracking
  2. Fleet Management - Monitor multiple drones with database storage
  3. Flight Analytics - Post-flight analysis with KML export
  4. Live Streaming - WebSocket/MQTT streaming for web dashboards
  5. 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.

Node Info

Version: 1.0.2
Updated 2 weeks, 2 days ago
License: MIT
Rating: not yet rated

Categories

Actions

Rate:

Downloads

0 in the last week

Nodes

  • idi-telemetry-parser
  • idi-telemetry-formatter

Keywords

  • node-red
  • idi
  • idrone
  • drone
  • telemetry
  • mavlink
  • uav
  • autopilot
  • flight-controller

Maintainers