npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

node-red-contrib-idi

v1.0.2

Published

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

Readme

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.