Hallo,
mich interessiert, wie ihr Automationen macht. Ich hasse klicken und programmiere gerne, deshalb hab ich mir im Iobroker ein Toolkit geschrieben, mit dem ich meine Skripte schreibe. Dazu gehört im Global für jeden Adapter ein Skript mit den Instanzen, z.B. für Hue diese hier (ein Auszug)…
class IoHueRoom extends IoHueDevice {
static SCENE_ENTSPANNEN = "scene_entspannen";
/**
* @param {String} id
* @constructor
*/
constructor(id) {
super(id);
this.anyOn = `hue.0.${id}.anyOn`;
}
/**
* Setzt die Szene.
*
* @param {String} value
*/
setScene(value) {
const STATE = `hue.0.${this.id}.${value}`;
if (existsState(STATE)) {
this.setState(STATE, true, true);
} else {
console.error(`Scene ${value} existiert nicht`);
this.setEnabled(true);
}
}
/**
* Prüft, ob die Lampe eingeschaltet ist.
*
* @returns {Boolean}
*/
isAnyOn() {
return getState(this.anyOn).val;
}
...
}
Dann werden ebenfalls in diesem global Skript alle Instanzen erzeugt:
const HUE_ROOM_WOHNZIMMER = new IoHueRoom("Wohnzimmer");
const HUE_ROOM_KINDERZIMMER = new IoHueRoom("Kinderzimmer");
const HUE_ROOM_KUECHE = new IoHueRoom("Küche");
...
Mir ist klar, dass im allen Common-Skripten die Instanzen separat erzeugt werden, aber dieser Overhead ist mir egal Ich kann dann in den Skripten sowas machen wie
...
if (HUE_ROOM_WOHNZIMMER.isAnyOn()) {
return false;
}
...
und somit einfach lesbare und wartbare Skripte schreiben. Das ganze ist dann in Git versioniert und wächst immer weiter.
Noch jemand so unterwegs?