Asynchronous implementation of the deCONZ REST API in Typescript.
coming soon maybebash
git clone https://gitlab.com/thallosaurus/deconz-typescript.git
cd deconz-typescript
yarn
`
Running the development playground:
yarn devDocumentation
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.jsonPairing?
$3
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.$3
Create the config.json file in the root of the project and fill it with the following content. Change values accordingly:$3
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:
`json
{
"host":"127.0.0.1:80",
"apikey":"0123456789"
}
`Example:
`ts
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);
}
``