Skip to content

Instantly share code, notes, and snippets.

@Donkfather
Created January 13, 2024 13:45
Show Gist options
  • Save Donkfather/06b6a8d584abcaeda471717469af19fe to your computer and use it in GitHub Desktop.
Save Donkfather/06b6a8d584abcaeda471717469af19fe to your computer and use it in GitHub Desktop.
shelly_1plus_pump_control
let debounceTimer
Shelly.addEventHandler(function (event) {
console.log(event.name, event.info.event)
if (event.name === "input" && event.info.event === "toggle") {
let newState = event.info.state
Shelly.call("KVS.GetMany",'*', function(kvs,errc, errm) {
if(errc) {
console.error(errc, errm)
return
}
let LTTime = JSON.parse(kvs.items.lttime.value)
let LTState = JSON.parse(kvs.items.ltstate.value)
let ToggleDebounce = JSON.parse(kvs.items.toggle_debounce.value)
let ttl = event.now - LTTime
console.log(LTTime, ' | ', LTState,' | ', ToggleDebounce,' | ', event.now-LTTime)
if(ttl <= ToggleDebounce) {
Timer.clear(debounceTimer)
debounceTimer = Timer.set(ttl*1000, false, function() {
Shelly.call('Switch.Set', {
id: 0,
on: newState,
})
Shelly.call('KVS.Set', {key:'lttime', value: event.now + ttl})
Shelly.call('KVS.Set', {key:'ltstate', value:newState})
})
return
}
Shelly.call("Switch.Set", {
id: 0,
on: newState,
})
Shelly.call('KVS.Set', {key:'lttime', value:event.now})
Shelly.call('KVS.Set', {key:'ltstate', value:newState})
})
}
});
@Donkfather
Copy link
Author

It throttles the output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment