-
Notifications
You must be signed in to change notification settings - Fork 0
/
TrafficLights.js
36 lines (26 loc) · 1.36 KB
/
TrafficLights.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// https://github.com/artoaaltonen/shelly-plus-plug-s-traffic-lights
let greenStart = 0645; // 06:45
let greenEnd = 0900; // 09:00
let configGreen = {"leds":{"mode":"switch","colors":{"switch:0":{"on":{"rgb":[0,100,0],"brightness":25},"off":{"rgb":[0,100,0],"brightness":25}},"power":{"brightness":100}},"night_mode":{"enable":false,"brightness":0,"active_between":["09:00","07:00"]}},"controls":{"switch:0":{"in_mode":"momentary"}}};
let configRed = {"leds":{"mode":"switch","colors":{"switch:0":{"on":{"rgb":[100,0,0],"brightness":15},"off":{"rgb":[100,0,0],"brightness":15}},"power":{"brightness":100}},"night_mode":{"enable":false,"brightness":0,"active_between":["09:00","07:00"]}},"controls":{"switch:0":{"in_mode":"momentary"}}};
// No need to modify below...
let curTime = null;
function updateCurHour() {
Shelly.call('Shelly.GetStatus', '', function (res) {
if (res.sys.time === null) {
return;
}
curTime = JSON.parse(res.sys.time.slice(0,2) + res.sys.time.slice(3,5));
print("Current time is " + JSON.stringify(curTime));
updateTrafficLights();
});
}
function updateTrafficLights() {
if (curTime >= greenStart && curTime < greenEnd) {
Shelly.call("PLUGS_UI.SetConfig", {config: configGreen});
return;
}
Shelly.call("PLUGS_UI.SetConfig", {config: configRed});
}
updateCurHour();
Timer.set(60000, true, updateCurHour);