1 changed files with 74 additions and 0 deletions
@ -0,0 +1,74 @@ |
|||||
|
function initialize() { |
||||
|
Shelly.call("Switch.GetStatus", |
||||
|
{ id: CONFIG.switchId }, |
||||
|
function (res, error_code, error_msg, ud) { |
||||
|
print("Initializing... current switch state is:", res.output) |
||||
|
switchIsOpen = res.output; |
||||
|
runLoop(); |
||||
|
}, |
||||
|
null |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
function runLoop() { |
||||
|
let alertTimer = Timer.set( |
||||
|
CONFIG.pollingInterval, |
||||
|
true, // Run periodically
|
||||
|
function (ud) { |
||||
|
Shelly.call("HTTP.REQUEST", |
||||
|
{ method: "POST", url: CONFIG.pollingUrl, body: '{"801":{"170":null}}', timeout: 10 }, |
||||
|
function (res, error_code, error_msg, ud) { |
||||
|
print("errors-http-post:", error_code, error_msg); |
||||
|
if (error_code === 0) { |
||||
|
let parsedBody = JSON.parse(res.body); |
||||
|
let production = parsedBody["801"]["170"]["101"]; |
||||
|
let consumption = parsedBody["801"]["170"]["110"]; |
||||
|
print("read production and consumption", production, consumption) |
||||
|
let threshold; |
||||
|
if (switchIsOpen) { |
||||
|
threshold = consumption; |
||||
|
} else { |
||||
|
threshold = consumption + CONFIG.chargingConsumption; |
||||
|
} |
||||
|
// print(threshold);
|
||||
|
if (production > threshold) { |
||||
|
if (!switchIsOpen) { |
||||
|
setSwitch(true); |
||||
|
} |
||||
|
} else { |
||||
|
if (switchIsOpen) { |
||||
|
setSwitch(false); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
null |
||||
|
); |
||||
|
}, |
||||
|
null |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
function setSwitch(on) { |
||||
|
Shelly.call("Switch.Set", |
||||
|
{ id: CONFIG.switchId, on: on }, |
||||
|
function (res, error_code, error_msg, ud) { |
||||
|
print("errors-switch-set:", error_code, error_msg); |
||||
|
let newSwitchState = !res["was_on"]; |
||||
|
switchIsOpen = newSwitchState; |
||||
|
print("Changed switch state to:", newSwitchState); |
||||
|
}, |
||||
|
null |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
let CONFIG = { |
||||
|
pollingInterval: 60 * 1000, |
||||
|
pollingUrl: "192.168.178.101/getjp", |
||||
|
switchId: 0, |
||||
|
chargingConsumption: 2100, |
||||
|
}; |
||||
|
|
||||
|
let switchIsOpen; |
||||
|
|
||||
|
initialize(); |
||||
Loading…
Reference in new issue