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

@nils-github1/node-red-contrib-tahoma

v3.3.1

Published

Control a Somfy TaHoma box from Node RED

Readme

Somfy Tahoma for Node-RED

Fork of Nikkhow (Nicolas Nunge) package, with merge of @packyr and @blondak forks. With some clean-up, adds (Europe/America/Oceania Somfy server choice for API token generation) and removal (watson/bonjour outdated package as dependency which implied some security vulnerability).

🚨 Important Note vor v2.x and v1.x users

This 3rd version implements a new API released by Somfy (yes, another one). This time, it no longer relies on any cloud-based API, but will directly discuss with your local Tahoma box.

What does this mean?

Basically, the only requirement is to host the node-red instance on the same network than your Tahoma box. That's all. No more quotas, no more expiring tokens. Good news, isn't it?

How to upgrade?

Even though your flows should not be modified, the config-node must be reconfigured using this new API.

However, please note that even though this release was tested before being published, you might encounter unexpected issues. Please backup your flow before proceeding with this major release.

Setup

You can read this guide from Node-RED official portal. This will help you install this node. Typically, the command are as follows:

cd $HOME/.node-red
npm install @nils-github1/node-red-contrib-tahoma 

Disclaimer

This software is provided as-is. Be careful: your devices can be fully controlled via API actions. I am not responsible of any mis-usage or corruption of the devices configuration.

Configuration

This node relies on the Local API provided by Somfy, and available on the Tahoma box (from v2 onwards -as per Somfy documentation).

You will need to enable the developer mode on your Somfy account to use this module. This guide will walk you through this process.

When creating your first node, you will be asked to provide your e-mail and password used to login to your TaHoma mobile app. These will be used to generate a token to interact with your box (they will not be saved at all on your instance). The pin code of your TaHoma box will also be required. This information is available in the TaHoma mobile app and on the sticker below the box.

Usage

Node tahoma

This node accepts a JSON object as msg.payload input. The following properties will be parsed:

| Property | Type | Required? | Description | | -------- | ---- | --------- | ----------- | | action | enum (see below) | Yes | The action to perform | | position | int (0-100) | No | The position you want to set your blinds/door to | | rotation | int (0-100) | No | The rotation you want to set your blinds to | | lowspeed | boolean | No | Should the action be triggered in low-speed mode? |

Actions

Currently, only a few commands are understood by this node. The possible values for the action property are:

  • open: This will open the device (door, blind...)
  • close: This will close the device
  • on: This will set the device ON (light, ...)
  • off: This will set the device OFF (light, ...)
  • setOnOff: This will set the device ON or OFF (light, ...). The action is passed using the onOff boolean property (1=ON, 0=OFF), which is required in this mode.
  • setIntensity: This will set the device intensity (light, ...). The action is passed using the intensity property, which is required in this mode.
  • toggle: This will toggle the device
  • stop: This will stop all running actions
  • customPosition: This will set the device to a custom position. The position is passed using the position property, which is required in this mode.
  • customRotation or customOrientation: This will set the device (blinds) to a custom rotation. The rotation is passed using the orientation property, which is required in this mode.
  • customClosureAndOrientation: This will set the device (blinds) to a custom closure and rotation. The rotation is passed using the orientation property and the position is passed using the position property, which are both required in this mode.
  • wink: This will make the device wink. The action is passed using the repetitions property, which are both required in this mode.

Output

The node will output its original msg.payload enriched with the result of the expected action. msg.payload.output will contain 2 properties:

  • open: a boolean. Set to true if the device is open, or false otherwise
  • position: an integer (0-100). Set to the position returned by the Tahoma box.
  • luminance: in case of a Sun Sensor, returns the current value of core:LuminanceState (See issue #6)

Node tahoma-read

This node will ignore all data provided as input. You can specify the desired device by editing the node properties. (Note: you can still trigger a tahoma-read instuction periodically by using an inject node. See #28)

Output

The node will output its original msg.payload enriched with the selected device information. The fields returned are the raw information sent by the Tahoma box.

Example flow

Example Flow

An example flow can be found in the docs/ folder. Basically, all it does is close and open shutters based on manual triggers. Those can be replaced by some logic (e.g. a node calculating the sunset and sunrise times). The output is sent to a local MQTT broker.

Compatibility

This was tested with the following devices:

  • IO-HomeControl Roller Shutters
  • IO-HomeControl Garage Door
  • Sunea IO Awning (thanks to @xeor)

Feel free to send any feedback of any other compatible items or known limitations :)