class slider
var id, title, value, oldvalue, min, max, action, globalname, started
# Not needed for the main page already having JavaScript code doing the same
# static sliderjs = ""
def init(id, action)
self.id = id ? id : classname(self)
self.action = action ? action : /value->print(f'Update {self.id} {self.value}')
self.globalname = 'slider_instance_' + self.id
self.title = ''
end
def start()
if self.started return end
if global.member(self.globalname) global.member(self.globalname).stop() end
tasmota.add_driver(self)
global.setmember(self.globalname, self)
self.started = true
if self.max == nil self.setrange(0,100) end
if self.value == nil self.setvalue(self.max/2) end
return self
end
def stop()
self.started = false
tasmota.remove_driver(self)
global.setmember(self.globalname, nil)
return self
end
def web_sensor()
import webserver
if webserver.has_arg(self.id)
self.setvalue(int(webserver.arg(self.id)))
elif self.value && self.value != self.oldvalue
self.oldvalue = self.value
tasmota.web_send(self.DOMupdate(self.id, self.value))
end
end
def DOMupdate(id, value)
# This trick allows DOM updates, while