Code Monkey home page Code Monkey logo

node-red-contrib-ikea-home-smart's Introduction

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).

⚠️ WARNING ⚠️

Version 0.3.X upgrade is a breaking change.

This version combines the individual device nodes to a common node which can now be adjusted in the node configuration.

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.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

node-red-contrib-ikea-home-smart's People

Contributors

fetchbot avatar freahs avatar marksharrison avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.