evolviot

n8n community nodes for EvolvIOT device control, status checks, and polling triggers

Documentation

n8n-nodes-evolviot

n8n community nodes for the EvolvIOT external API.

This package provides:

  • EvolvIOT action node for device control and one-time status checks
  • EvolvIOT Trigger polling node for workflow starts based on device or switch state

What It Does

The package supports three main workflows:

  • Send device control commands to EvolvIOT devices
  • Check device status or switch/sensor values inside a normal workflow
  • Poll EvolvIOT devices and trigger workflows when a condition matches

Installation

Install the package in your n8n environment:

npm install n8n-nodes-evolviot

For local development:

npm install
npm run build

If you install from a local folder or tarball, restart n8n after installation so the nodes and credential are registered.

Credential

Create an EvolvIOT API credential in n8n:

  • API Key: your EvolvIOT bearer token
  • Base URL: optional override, defaults to https://api.evolviot.com/api/external

The node-level Base URL field overrides the credential value when it is filled in.

API Endpoints Used

The nodes expect the configured base URL to be the EvolvIOT external API root.

They call these endpoints:

  • GET /devices
  • GET /devices/{deviceId}
  • GET /devices/{deviceId}/{switchKey}
  • POST /controlDevice

EvolvIOT Action Node

The EvolvIOT action node has two operations:

  • Device control action
  • Device control status

It has two outputs:

  • Success
  • Error

1. Device Control Action

Use this mode to send a control value to a selected device switch.

Setup:

  1. Select an EvolvIOT API credential.
  2. Select a Device from the loaded device list.
  3. Select a Control Key for that device.
  4. Choose an Action Type based on the selected switch.
  5. Send the node execution.

Supported action types depend on the selected control key:

  • On/Off for binary outputs
  • Custom for PWM outputs
  • Sensor-specific values for digital sensors
  • Numeric values for analog sensors

The node sends a POST request to controlDevice with this payload shape:

{
  "deviceId": {
    "switchKey": "value"
  }
}

The success output returns the API response plus a sent object that contains the normalized request metadata.

If a request fails, the node sends the item to the Error output instead of stopping the whole run.

2. Device Control Status

Use this mode to check a device condition once inside a workflow, without polling.

You can check:

  • Device online/offline status
  • Input switch values
  • Sensor values

Watch modes:

  • Device status
  • Device control/output status

Supported comparisons depend on the selected switch:

  • On/Off
  • Custom numeric comparison
  • Sensor analog numeric comparison
  • Sensor digital exact value match

If the selected condition matches, the item goes to Success with:

  • deviceId
  • deviceName
  • status
  • matched switch value when applicable
  • raw device payload
  • matched: true

If the condition does not match, the item is sent to the Error output with an explanatory message.

EvolvIOT Trigger Node

The EvolvIOT Trigger node polls the API and starts the workflow when the current device state matches the selected condition.

Available watch modes:

  • Device status
  • Device control/output status

You can trigger on:

  • Device Online or Offline
  • Switch On/Off
  • PWM value comparisons
  • Analog sensor value comparisons
  • Digital sensor exact value matches

On each poll, the node fetches device data, evaluates the selected condition, and emits one item per matching device.

Trigger output includes:

  • deviceId
  • deviceName
  • status
  • matched switch value when applicable
  • raw device payload

Device Loading and Dynamic Options

The node UI loads devices directly from the EvolvIOT API.

  • Device dropdown values contain the full device object as JSON
  • Control key dropdowns are generated from the selected device's controlKeys
  • Trigger/action option lists adapt to the selected key type and working mode

This means the UI can automatically switch between binary, PWM, and sensor-specific controls.

Error Handling

The nodes validate:

  • missing API key
  • missing base URL
  • invalid or empty device selection
  • invalid switch selection
  • invalid numeric values
  • HTTP and connection failures

The action node is designed for batch use and routes failed items to the Error output instead of failing the entire execution.

Development

Build locally:

npm install
npm run build

Create a local installable package:

npm pack

Publishing

To publish a new npm release:

  1. Update version in package.json
  2. Run npm install
  3. Run npm run build
  4. Run npm publish

For a scoped package, use:

npm publish --access public

Discussion