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 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-red-contrib-opcua-config

v1.4.0

Published

Node-RED nodes for OPC UA tag mapping and topic snapshot tables

Readme

node-red-contrib-opcua-config

Node-RED nodes for OPC UA tag ID-to-name mapping, topic snapshot tables, type-based routing, and table-format mapping. Designed to work with node-red-contrib-opcua.

Nodes

opcua-mapping

An editable table that maps OPC UA NodeIds to human-readable names with data type classification. Stores mappings in both file system (persistence) and Node-RED context (runtime lookup).

  • Input: Any message triggers subscription output (output 4). msg.payload = "clear" clears all mappings.
  • Output 1: One message per row — {topic: nodeId, payload: nodeId}
  • Output 2: One message per row — {topic: nodeId, payload: uns}
  • Output 3: One message per row — {topic: nodeId, payload: {id, uns, tagType}}
  • Output 4: Aggregated subscription format for OpcUa-Client — {topic: "multiple", payload: [{nodeId}], interval: 3000}
  • Popup Editor: Bulk edit mappings in a resizable window with per-column filters, Excel-compatible copy/paste (TSV format), and auto-save.
  • Context Store: Mappings stored in global or flow context as forward (id → {uns, tagType}) and reverse (uns → {id, tagType}) dictionaries.
  • Persistence: Data saved automatically to <userDir>/opcua-mapping-data/<nodeId>.json on every change. Survives restarts.

opcua-snapshot

A live snapshot viewer that stores the most recent message per msg.topic. Provides a popup viewer with auto-refresh, row filtering, and missing-topic detection.

  • Input: Stores each message by msg.topic (overwrites previous). msg.payload = "get" sends snapshot to output. msg.payload = "clear" clears all stored data.
  • Columns: Configurable comma-separated list of message property paths (e.g., topic,payload.value.value,payload.value.dataType). Supports dot notation for nested properties.
  • Missing Topic Detection: When configured with a mapping context key, topics in the dictionary that haven't received data yet are shown in orange with a MISSING badge — lets you see which configured tags are silent.
  • Output: Array of objects — one per topic with the configured column values.
  • Popup Viewer: Resizable window with Refresh, Auto-Refresh (2s), row filter, and Copy for Excel.

opcua-type-router

Validates OPC UA messages against a context lookup map, enriches them with tag metadata, and routes to typed outputs.

  • Input: OPC UA messages with msg.topic matching context map entries. Case-insensitive lookup fallback.
  • Output 1 (rejected): Messages failing validation with a reason field (unknown_topic, empty_payload, null_value, bad_quality).
  • Output 2-5 (typed): Validated messages enriched with msg.uns, msg.tagType, msg.value, msg.timestamp, msg.statusCode.
    • Output 2: bool/boolean/digital/bit
    • Output 3: long/int/integer/dword/word
    • Output 4: string/str/text/char
    • Output 5: float/double/real/number
  • Context Map: Reads from flow/global context — populated by opcua-mapping node, each entry has {uns, tagType}.

opcua-table-mapper

Maps message fields to a structured table row format with symbols (string tags) and typed columns. Useful for preparing data for database writes.

  • Input: Messages with fields to map.
  • Symbol Mappings: Map msg fields to string symbol columns.
  • Column Mappings: Map msg fields to typed columns with type conversion (auto, float, double, integer, long, boolean, string, timestamp).
  • Timestamp Field: Configurable field path for the row timestamp.
  • Output: {topic, payload: {symbols: {}, columns: {}, timestamp: ...}}
  • Field Path Syntax: Dot notation (payload.sensor.value) and array access (payload.readings[0]).
  • Source Types: msg, flow, global, str (literal), jsonata expressions.

Installation

cd ~/.node-red
npm install node-red-contrib-opcua-config

Or for local development:

git clone <repo-url>
cd node-red-contrib-opcua-config
npm link
cd ~/.node-red
npm link node-red-contrib-opcua-config

Requirements

  • Node-RED >= 2.0.0
  • Node.js >= 18.0.0

License

MIT