You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

74 lines
2.1 KiB

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();