Hi SebMai,
genau dieses Skript habe ich auch schon gefunden. Habe gehofft das es vielleicht schon jemand angepasst hat.
Ich habe mal versucht das ganze anzupassen, scheitere aber. Ich bekomme immer Fehler wenn ich versuche über eine weitere if abfrage die Dimmer zuzuordnen. Ich erkenne aber nicht wo ich da einen Fehler gemacht haben soll. Vielleicht hat jemand mit mehr Erfahrung da einen Blick für.
Hier der Code:
Code
/**
* @copyright shelly-tools contributors
* @license GNU Affero General Public License (https://www.gnu.org/licenses/agpl-3.0.de.html)
* @authors https://github.com/shelly-tools/shelly-script-examples/graphs/contributors
*
* This script is intended to remote control a Shelly Dimmer / Dimmer2 and emulates the locally conencted button.
* short_press = on/off toggle, double_press = on with 100% brightness, long_press cylce between dimming and brightening.
*/
// CONFIG START
// IP address / hostname from Shelly Dimmer device
let REMOTE = {
ip: '192.168.178.166',
input1: 0, // ID from the push button: 0 for Shelly Plus 1 / Plus 1 PM or 0,1,2 or 3 for the Shelly I4.
input2: 1,
};
// CONFIG END
let dim = false;
let up = false;
// add an evenHandler for button type input and various push events
Shelly.addEventHandler(
function (event, user_data) {
//print(JSON.stringify(event));
if (typeof event.info.event !== 'undefined') {
if (dim === true && event.info.event === 'btn_up' && (event.info.id === REMOTE.input1 || event.info.id === REMOTE.input2)) {
dim = false;
print("release");
Shelly.call(
"http.get", {
url: 'http://' + REMOTE.ip + '/light/0?dim=stop'
},
function (response, error_code, error_message, ud) { },
null
);
}
if (event.info.event === 'single_push' && (event.info.id === REMOTE.input1 || event.info.id === REMOTE.input2)) {
Shelly.call(
"http.get", {
url: 'http://' + REMOTE.ip + '/light/0?turn=toggle'
},
function (response, error_code, error_message, ud) { },
null
);
} else if (event.info.event === 'double_push' && (event.info.id === REMOTE.input1 || event.info.id === REMOTE.input2)) {
Shelly.call(
"http.get", {
url: 'http://' + REMOTE.ip + '/light/0?turn=on&brightness=100'
},
function (response, error_code, error_message, ud) { },
null
);
} else if (event.info.event === 'long_push' && (event.info.id === REMOTE.input1 || event.info.id === REMOTE.input2)) {
dim = true;
if (up === true) {
up = false;
if (event.info.id === REMOTE.input1) {
Shelly.call(
"http.get", {
url: 'http://' + REMOTE.ip + '/light/0?dim=up&step=100'
},
function (response, error_code, error_message, ud) { },
null
);
} else if (event.info.id === REMOTE.input2) {
Shelly.call(
"http.get", {
url: 'http://' + REMOTE.ip + '/light/0?dim=down&step=100'
},
function (response, error_code, error_message, ud) { },
null
);
}
print("cycle");
} else {
return true;
}
} else {
return true;
}
},
);
Alles anzeigen
Ab Zeile 60 geht es los. Ohne die ergänzende if abfrage läuft das Skript einwandfrei, nur das beide Taster halt die selbe Funktion haben.
Grüße