6 x Shelly Pro 2
+
Das folgende Skript, das aus dem Shelly Pro 2 ein 1xUM Relais macht.
Switch auf detached nicht vergessen
// GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
// More information: https://www.gnu.org/licenses/gpl-3.0.txt
// ABSOLUTELY NO WARRANTY AT ALL!!!
// Made by ostfriese.
// Config
let CONFIG = {
safetime : 1
}
//
let script_id;
let own_ip;
let query = '00';
let lock = true;
function log(to_log) {
console.log(to_log);
}
function send_response(response, body) {
response.code = 200;
response.body = body;
response.send();
}
function do_switch() {
if (query[0] === '1') {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/0?turn=on'});
log('Relay 0 on');
}
if (query[1] === '1') {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/1?turn=on'});
log('Relay 1 on');
}
lock = false;
}
function set_to_off() {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/0?turn=off'});
log('Relay 0 off');
Shelly.call("http.get", {url:'http://127.0.0.1/relay/1?turn=off'});
log('Relay 1 off');
if (query === '00') {
lock = false;
return;
}
Timer.set(CONFIG.safetime,false,do_switch);
}
function watch(request,response) {
if (lock) {
return;
}
lock = true;
query = request.query;
send_response(response, query);
if (query === '11') {
Shelly.call("http.get", {url:'http://127.0.0.1/relay/0?turn=on'});
log('Relay 0 on');
Shelly.call("http.get", {url:'http://127.0.0.1/relay/1?turn=on'});
log('Relay 1 on');
lock = false;
return;
}
set_to_off();
}
function get_own_ip() {
Shelly.call("Shelly.GetConfig", "",
function(result, error_code, error_message) {
own_ip = result.wifi.sta.ip;
}
);
}
function start() {
HTTPServer.registerEndpoint('switch_to',watch);
script_id = Shelly.getCurrentScriptId();
log('Your possible urls are:');
log('http://' + own_ip + '/script/' + script_id + '/switch_to?00');
log('http://' + own_ip + '/script/' + script_id + '/switch_to?10');
log('http://' + own_ip + '/script/' + script_id + '/switch_to?01');
log('http://' + own_ip + '/script/' + script_id + '/switch_to?11');
lock = false;
}
get_own_ip();
Timer.set(1000,false,start);
Alles anzeigen
Um das Skript zu verwenden, gehe bitte wie folgt vor:
(GgF Switch auf detached nicht vergessen)
1.) Unter Settings/Debug aktiviere bitte "Enable Websocket debug"
2.) Unter Scripts/Add script kopierst du den kompletten Code in das obere weiße Feld und vergibst einen Skriptnamen (z.B. safestate), Save!
3.) Mit "Start" kannst du das Skript testen. Im Feld "Console" siehst du dann, was das Skript macht.***
4.) Da du willst, dass das Skript nach dem Booten startet, aktivierst du unter Scripts den Schiebeschalter neben dem Skriptnamen.
5.) Um sicherzustellen, dass der Shelly den Zustand nach Stromausfall wieder herstellt, aktivierst du unter Home/Output(0) und Home/Output(1)
jeweils unter Settings/Input/output settings die Option "Restore last known state of output/relay"
Jetzt kannst du durch Aufruf der Urls, wie weiter unten beschrieben, den Shelly so betreiben, dass sichergestellt ist, dass nur ein Ausgang aktiv ist.
WICHTIG; Der Shelly MUSS die aktuell FW Version haben (1.0.2). Eine Beta sollte auch funktionieren.
*** Nach dem Start siehst du im Feld "Console" mit welchen Urls du den Shelly ansprechen kannst. Vorausgesetzt du hast 1.) ausgeführt.
00
Bedeutung:
Beide Ausgänge aus.
Auswirkung:
Der Shelly geht sofort in diesen Zustand.
10
Bedeutung:
Output 0 ein, Output 1 aus.
Auswirkung:
Der Shelly schaltet Output 0 und Output 1 aus.
Dieser Zustand wird für die in safetime eingestellte Zeit gehalten.
Der Shelly schaltet Output 0 ein.
01
Bedeutung:
Output 0 aus, Output 1 an.
Auswirkung:
Der Shelly schaltet Output 0 und Output 1 aus.
Dieser Zustand wird für die in safetime eingestellte Zeit gehalten.
Der Shelly schaltet Output 1 ein.
11
Bedeutung:
Beide Ausgänge ein.
Auswirkung:
Der Shelly geht sofort in diesen Zustand.
ACHTUNG: 11 NIE BENUTZEN, WENN DAS ANGESCHLOSSENE GERÄT KEIN
GLEICHZEITIGES ON AUF BEIDEN RELAIS VERTRÄGT!!!