Hey ein kleines Script womit ihr einen Dimmer der Gen. 1 steuern könnt.
In dieser Variante wird Short Press zum Hoch dimmen genutzt.
Der Double Press zum Runter dimmen.
Und der Long Press zum Ein/aus schalten (toggle) wie den gewünschten Start Wert setzen.
Alle relevanten Einstellungen stehen zu beginn und sind noch mal erklärt, somit sollte es für euch möglich sein dies für euch anzupassen.
Code: Dimmer Control
// Author: SebMai
// Description: Control Shelly Dimmer
// Single Push = UP
// Double Push = Down
// Long Push = ON/OFF and Brightness at Start
//CONFIG
let REMOTE = {
ip: '192.168.xxx.xxx', //ip from the device
type: 'light', //light or relay
relay: '0', //which channel
start: 50, //brightness at start
up: 5, // x% up
down: 7, // x% down
max: 100, // maximum brightness (100 maximum)
min: 10 // minimum brightness (1 minimum)
};
//URL construction
let url = 'http://' + REMOTE.ip + '/' + REMOTE.type + '/'+ REMOTE.relay + '?';
// add an evenHandler
Shelly.addEventHandler(
function (event, user_data) {
//print(JSON.stringify(event));
if (typeof event.info.event !== 'undefined') {
if (event.info.event === 'single_push') {
brightnessup();
}
if (event.info.event === 'double_push') {
brightnessdown();
}
if (event.info.event === 'long_push') {
setdevice('turn=toggle&brightness='+str(REMOTE.start));
}
} else {
return true;
}
},
);
function brightnessup() {
Shelly.call("http.get", {url: url},
function (res) {
let brightness = JSON.parse(res.body).brightness;
function mathup(a, b) {
return Math.abs(a + b)};
let math = mathup(+ REMOTE.up, + brightness);
if (+ math >= +REMOTE.max){
let result = +REMOTE.max;
setbright('brightness='+str(result));
} else if ( +REMOTE.max >= + math) {
setdevice('brightness='+str(math))};
},
null
);
};
function brightnessdown() {
Shelly.call("http.get", {url: url},
function (res) {
let brightness = JSON.parse(res.body).brightness;
function mathup(a, b) {
return Math.abs(a - b)};
let math = mathup(+ REMOTE.down, + brightness);
if (+ math <= +REMOTE.min){
let result = +REMOTE.min;
setbright('brightness='+str(result));
} else if ( +REMOTE.min <= + math) {
setdevice('brightness='+str(math))};
},
null
);
};
// send dimmer control
function setdevice(command) {
Shelly.call(
"http.get", {
url: url+command
},
null
);
};
function str(text) {
return JSON.stringify(text);
}
Alles anzeigen
Und zum Schluss, immerhin etwas sinnvolles was man diesem Gerät anstellen kann