node-red-contrib-onvif-ng 0.9.0

Modernized ONVIF nodes for Node-RED 4.x

npm install node-red-contrib-onvif-ng

node-red-contrib-onvif-ng

Modernized ONVIF nodes for Node-RED 4.x using the agsh/onvif library (ONVIF 4.7 compatible).

This project is a maintained continuation of
node-red-contrib-onvif-nodes by Bart Butenaers, updated for modern Node-RED runtimes and real-world camera behavior.

Legacy branch

The bart-original branch preserves the original upstream implementation by Bart Butenaers. It is retained for historical reference and is not merged into main.


✨ Key Features

  • ✅ Node-RED 4.x compatible
  • ✅ ONVIF 4.7 tested
  • ✅ Centralized profile cache (no repeated device queries)
  • ✅ Reliable media stream handling
  • ✅ Explicit capability discovery nodes
  • ✅ Clear status reporting
  • ❌ PTZ intentionally excluded (for now)

📦 Included Nodes

Configuration

  • onvif-config
    Handles device connection, authentication, profile caching, and connection health.

Media

  • onvif-media-stream

    • Get Stream URI
    • Get Snapshot URI
    • Reconnect

    Uses cached profiles only — no live negotiation at runtime.

  • onvif-media-profile

    • Get profiles
    • Create / delete profiles
      (Profile tokens come from the device profile cache.)

Discovery / Capability Inspection

These nodes are discovery tools, not continuous event streams.

  • onvif-events
    Discovers supported ONVIF Events and topics via GetEventProperties.

  • onvif-recording
    Discovers recording capabilities and configuration.

ℹ️ These nodes intentionally return similar payloads for each invocation. Their purpose is capability inspection, not live subscriptions.


🚫 PTZ Status

PTZ support is not included in this release.

Reason:

  • Not used in production by the maintainers
  • High UI and device-specific complexity
  • Better handled as a future optional module

PTZ work done so far has been intentionally carved out and may return in a later release or as a community contribution.


🔐 Profile Cache Contract (Important)

  • Profiles are fetched once during device initialization
  • Cached centrally in onvif-config
  • All nodes consume profiles from the cache
  • No node performs live profile discovery during runtime

This ensures:

  • Predictable behavior
  • Faster execution
  • No UI deployment deadlocks

📡 Supported Cameras

Tested with:

  • Hanwha / Wisenet cameras
  • Other ONVIF-compliant devices (results may vary)

ONVIF implementations vary widely — this project favors robust behavior over strict spec assumptions.


📜 License

Apache License 2.0

Original work:

  • © 2018 Bart Butenaers

Modernization and maintenance:

  • © 2025–2026 Panther Computers

🤝 Contributing

Issues and PRs are welcome.

Please:

  • Target the main branch
  • Keep changes aligned with Node-RED 4.x
  • Avoid device-specific hacks unless clearly isolated

🧭 Project Status

Active maintenance
PTZ deferred
Stability prioritized

Node Info

Version: 0.9.0
Updated 1 week, 4 days ago
License: Apache-2.0
Rating: not yet rated

Categories

Actions

Rate:

Downloads

8 in the last week

Nodes

  • onvif-config
  • onvif-device
  • onvif-discovery
  • onvif-events
  • onvif-imaging
  • onvif-media-profile
  • onvif-media-stream
  • onvif-recording

Keywords

  • node-red
  • onvif
  • camera
  • ip-camera

Maintainers