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

@bldgblocks/node-red-contrib-control

v0.1.29

Published

Sedona-inspired control nodes for Node-RED

Readme

@bldgblocks/node-red-contrib-control

Sedona-inspired control nodes for stateful logic.

This is a rather large node collection. Contributions are appreciated.

*** If you are reading this, the package was posted very recently and changes will be flowing as I get examples updated. ***

Intro

This is intended for HVAC usage but the logic applies to anything.

Industry visual scripting tools, with Sedona being the original open source solution, use a stateful multi-in/out architecture. Any paradigm can be used in NodeRED but you need to standardize on how things are done.

Logic should be general, combinable, reusable and easily updated. NodeRED is like a blank canvas and I see this project as a way to provide some standardization with the logic. Seemingly simple, foundational, logic functions standardized. It helps me wrap my head around how to get things done and follow flows when I can wire things in branches that store an outcome and the ability to track which inputs are doing what...

There are TONS of fantastic node libraries out there but usually focusing on one area, or even one node. For my purposes, I want a core set of nodes all in one library that work in a certain, stateful way.

  • Full status display of many states
  • Full help sections
  • Stateful node operation
  • Multiple inputs through data tagging
  • Many node types. Math, logic, test functions (sqaure wave, sine wave, tick tock, ...), specialized
  • Most nodes utilize the Typed Input type to assign global variables
  • Validation. Runtime validation is relied on in most cases to evaluate Typed Inputs and provides a status message to indicate errors encountered.
  • Node commands, such as 'reset' or 'mode' or changing setpoints via messages.

How To Use

The help section of every node describes the expected msg.context (data tag) for the intended msg.payload incoming. You can of course do this as you process data through a 'change' block, or use the provided 'contextual label' block which makes it easier to add and remove tags, more compact (especially if label hidden), and more transparent of the data flowing (ALL nodes contain complete status usage). Most nodes use a simple in1, in2, and so on.

Example

An 'and' block set to 4 slots must recieve true values on each inX at some point to evaluate to a true output. Where as, an 'or' block set to 4 inputs could have any input trigger a true evaluation. However, a remaining true would prevent evaluating to false. So the flow may look like 4 small tagging nodes configured in1,in2,in3,in4 connecting to the 'and' block and just wiring your branches of logic to those inputs. You can also negate or have multiple connected to an input and you can watch as each comes in to evaluate. Just try to keep it clean.

Install

Via NodeRED Palette Manager

Search for the package name and add to your project.

Via NPM
# Navigate to Node-RED user directory (varies by installation)
- $ cd ~/.node-red
- $ npm install node-red-contrib-buildingblocks-control
# then restart node-red