1.2.4 • Published 2 years ago

deconz-typescript v1.2.4

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

deconz-ts

Asynchronous implementation of the deCONZ REST API in Typescript.

Prerequesites

Installing

NPM: coming soon maybe From Source:

git clone https://gitlab.com/thallosaurus/deconz-typescript.git
cd deconz-typescript
yarn

Running the development playground:

yarn dev

Documentation

A documentated version of the api of this release is found in the docs folder after running yarn generate:docs. An auto-generated version that gets uploaded after every push to main can you find at https://thallosaurus.gitlab.io/deconz-typescript/

Visual Studio Code Run Config

A Run-Config for code is provided in .vscode/launch.json

Pairing?

Automatically (recommended)

The Pairing happens automatically. The script requests an api key from the first gateway it finds if no config.json file is found. If pairing is successful (alas the link button was pressed on the Web UI) it saves it into the mentioned config.json file and connects using it.

Manual

Create the config.json file in the root of the project and fill it with the following content. Change values accordingly:

Via Command-Line

Any program that implements this library should have a --link option automatically. This overrides the existing config.json file.

Configuration

For default, the script searches the process.cwd()/config.json path for the script. Alternativly, if you want to export this to a UNIX executable, override the launch parameter like so:

CONFIG_PATH=/etc/ts-lights/config.conf node index.js

This sets the config variable globally and enables system-wide installation.

The config looks like so:

{
    "host":"127.0.0.1:80",
    "apikey":"0123456789"
}

Example:

import { getGroups } from "./index";

            //You can do es6 async/await...
        let d = await getGroups();
        for (let group of d) {
            let lights = await group.getLights();
            lights.forEach((light) => {
                if (light.hascolor && light.state.reachable) {
                    light.state.setState("on", true);

                    let r = Math.floor(Math.random() * 255);
                    let g = Math.floor(Math.random() * 255);
                    let b = Math.floor(Math.random() * 255);

                    let xy = ColorConverter.rgbToXy(r, g, b);
                    console.log(light.id, xy);

                    //...or use .then and .catch
                    light.state.setState("xy", [xy.x, xy.y]).then(() => {
                    }).catch(err => {
                        console.error(err, light);
                    });
                }
            })

            setTimeout(() => {
                lights.forEach(light => {
                    if (light.state.reachable) {
                        //Might throw an error if the light is not reachable
                        light.state.setState("on", false);
                    }
                })
            }, 1000);

        }

What works/TODO?

  • Pairing
  • REST Datastructures inconsistencies
  • Attributes Setting and Getting
  • Lights Power State
  • Lights Color
  • Groups Power State
  • Groups Color
  • All Other States (Should work as it is implemented, if not please send a Pull Request)
  • Item Operations (Deleting, creating etc)
  • Rules
  • Scenes
  • Sensors
  • Switches
  • Button Events
  • Touchlink
  • Websocket Listener (Low Prio)
1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago