Skip to content

fetchbot/node-red-contrib-ikea-home-smart

 
 

Repository files navigation

node-red-contrib-ikea-home-smart

Node-RED node to interface with IKEA smart home products as tradfri lights or blinds without any external binaries thanks to node-tradfri.

  • All operations (brightness, color temperature, color, etc.) supported by the gateway are available.
  • Support for observation (i.e. reporting on changes to the light).

Usage

There is one node to configure each accessory type (besides the config node). After the configuration has been successful -- either by providing an existing identity and PSK or by generating new ones by providing the security code from the gateway -- simply select which accessory or group to target and check if the node should observe the device as well.

Notice: After configuring the gateway, you must apply the settings by deploying your flow. Only then can you create and configure the accessories.

Controlling the node

Nodes can be programmatically controlled by sending a message with msg.payload set to one of the following strings:

  • "status" The node will output the current status of its target accessory.

Controlling the blinds

A blind's position can be controled by sending an object with the following property as msg.payload to the node.

  • "position": number - The position in percent [0..100%].
  • "trigger": number - A trigger event to stop a moving blind [0.0].

Controlling the lights

Lightbulbs can be controlled by sending an object with one or more of the following properties as msg.payload to the node.

All of them support the most basic properties, which are

  • "dimmer": number - The brightness in percent [0..100%].
  • "onOff": boolean - If the lightbulb is on (true) or off (false)
  • "transitionTime": number - The duration of state changes in seconds. Default 0.5s, not supported for on/off.

White spectrum lightbulbs also support

  • "colorTemperature": number - The color temperature in percent, where 0% equals cold white and 100% equals warm white.

RGB lightbulbs have the following properties:

  • "color": string - The 6 digit hex number representing the lightbulb's color. Don't use any prefixes like "#", only the hex number itself!
  • "hue": number - The color's hue [0..360°].
  • "saturation": number - The color's saturation [0..100%].

Controlling the plugs (Untested)

Control a plug by sending an object with the following property as msg.payload to the node.

  • "onOff": boolean - If the plug is on (true) or off (false).

Controlling the groups

A group contains several devices, usually a remote control and either lightbulbs, plugs or blinds. To control the group send the following properties as msg.payload to the node:

For a group of lights

  • "dimmer": number - The brightness in percent [0..100%].
  • "onOff": boolean - If the lightbulb is on (true) or off (false)
  • "transitionTime": number - The duration of state changes in seconds. Default 0.5s, not supported for on/off.

For a group of blinds

  • "position": number - The position in percent [0..100%].

For a group of plugs

  • "onOff": boolean - If the plug is on (true) or off (false)

Additionally, this property is also supported:

  • "sceneId": number - Set this to the instanceId of a scene (or "mood" as IKEA calls them), to activate it.

Status node output

If a status request is send or a device's state is updated, the node will respond with a msg.payload containing its current properties.

  • "name": string - The name of this accessory.
  • "createdAt": number - The unix timestamp of the creation of the device.
  • "instanceId": number - The ID under which the accessory is known to the gateway.
  • "type": number - The type of the accessory.
    • remote (0) - A "normal" remote
    • slaveRemote (1) - A remote which has been paired with another remote. You can find details here on how to achieve this configuration.
    • lightbulb (2) - A lightbulb
    • plug (3) - A smart plug
    • motionSensor (4) - A motion sensor
    • signalRepeater (6) - A signal repeater
    • blind (7) - A blind
  • "alive": boolean - Whether the gateway considers this device as alive.
  • "lastSeen": number - The unix timestamp of the last communication with the gateway.
  • "otaUpdateState": number - Unknown. Might be a boolean
  • "deviceInfo": object - Some additional information about the device.
    • "firmwareVersion": string - The firmware version of the device.
    • "manufacturer": string - The device manufacturer.
    • "modelNumber": string - The name/type of the device.
    • "power": number - How the device is powered.
      • Unknown (0)
      • InternalBattery (1)
      • ExternalBattery (2)
      • Battery (3) - Although not in the specs, this is apparently used by the remote
      • PowerOverEthernet (4)
      • USB (5)
      • AC_Power (6)
      • Solar (7)
    • "serialNumber": string - Not used currently. Always ""
    • "battery": number - The battery percentage of a device. Only present if the device is battery-powered.
  • "switchList": array - An array of all remotes belonging to this accessory.
    • "name": string - Currently not supported.
    • "createdAt": number - Currently not supported.
    • "instanceId": number - Currently not supported.
  • "sensorList": array - An array of all sensors belonging to this accessory.
    • "name": string - Currently not supported.
    • "createdAt": number - Currently not supported.
    • "instanceId": number - Currently not supported.
    • "appType": string - Currently not supported.
    • "sensorType": string - Currently not supported.
    • "minMeasuredValue": number - Currently not supported.
    • "maxMeasuredValue": number - Currently not supported.
    • "minRangeValue": number - Currently not supported.
    • "maxRangeValue": number - Currently not supported.
    • "resetMinMaxMeasureValue": boolean - Currently not supported.
    • "sensorValue": number - Currently not supported.
    • "unit": string - Currently not supported.
  • "plugList": array - An array of all plugs belonging to this accessory.
    • "onOff": boolean - If the plug is on (true) or off (false).
    • "isSwitchable": boolean - Whether the plug supports on/off (always true).
    • "isDimmable": boolean - Whether the plug supports setting the dimmer value (always false for now).
  • "lightList": array - An array of all lights belonging to this accessory.
    • "onOff": boolean - If the lightbulb is on (true) or off (false)
    • "dimmer": number - The brightness in percent [0..100%].
    • "transitionTime": number - The duration of state changes in seconds. Default 0.5s, not supported for on/off.
    • "colorTemperature": number - The color temperature in percent, where 0% equals cold white and 100% equals white.
    • "color": string - The 6 digit hex number representing the lightbulb's color.
    • "colorX": number - The x component of the xy-color
    • "colorY": number - The y component of the xy-color
    • "hue": number - The color's hue [0..360°].
    • "saturation": number - The color's saturation [0..100%].
  • "blindList": array - An array of all blinds belonging to this accessory.
    • "position": number - The position in percent [0..100%].

Changelog

0.3.3

  • Workaround for a bug in IKEA gateway firmware v1.15.x

0.3.0

  • One combined node for all device types
  • Temporary fix for the blind stop function
  • Automatic node restart after connection loss to the gateway

0.2.0

0.1.2

  • Moved output status object from msg.payload.light to msg.payload.
  • Updated security code, identity and PSK to be saved as credentials in config.
  • Updated info panels and tweaked node appearance.

0.1.1

  • Published to NPM

About

Node-RED node to utilize IKEA smart home devices.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • JavaScript 50.4%
  • HTML 49.6%