preheat: add heater_generic
This commit is contained in:
parent
56731e77f6
commit
0c73b3831b
@ -40,6 +40,10 @@ class KlippyGcodes:
|
|||||||
def set_ext_temp(temp, tool=0):
|
def set_ext_temp(temp, tool=0):
|
||||||
return "%s T%s S%s" % (KlippyGcodes.SET_EXT_TEMP, str(tool), str(temp))
|
return "%s T%s S%s" % (KlippyGcodes.SET_EXT_TEMP, str(tool), str(temp))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def set_heater_temp(heater, temp):
|
||||||
|
return 'SET_HEATER_TEMPERATURE heater="%s" target=%s' % (heater, str(temp))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_fan_speed(speed):
|
def set_fan_speed(speed):
|
||||||
speed = str( int(float(int(speed) % 101)/100*255) )
|
speed = str( int(float(int(speed) % 101)/100*255) )
|
||||||
|
@ -312,6 +312,17 @@ class MoonrakerApi:
|
|||||||
*args
|
*args
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def set_heater_temp(self, heater, target, callback=None, *args):
|
||||||
|
logger.debug("Sending heater %s to temp: %s", heater, target)
|
||||||
|
return self._ws.send_method(
|
||||||
|
"printer.gcode.script",
|
||||||
|
{
|
||||||
|
"script": KlippyGcodes.set_heater_temp(heater, target)
|
||||||
|
},
|
||||||
|
callback,
|
||||||
|
*args
|
||||||
|
)
|
||||||
|
|
||||||
def set_tool_temp(self, tool, target, callback=None, *args):
|
def set_tool_temp(self, tool, target, callback=None, *args):
|
||||||
logger.debug("Sending set_tool_temp: %s", KlippyGcodes.set_ext_temp(target, tool))
|
logger.debug("Sending set_tool_temp: %s", KlippyGcodes.set_ext_temp(target, tool))
|
||||||
return self._ws.send_method(
|
return self._ws.send_method(
|
||||||
|
@ -299,6 +299,7 @@ class KlipperScreenConfig:
|
|||||||
cfg = self.config[name]
|
cfg = self.config[name]
|
||||||
item = {
|
item = {
|
||||||
"extruder": cfg.getint("extruder", 0),
|
"extruder": cfg.getint("extruder", 0),
|
||||||
"bed": cfg.getint("bed", 0)
|
"bed": cfg.getint("bed", 0),
|
||||||
|
"heater_generic": cfg.getint("heater_generic", 0)
|
||||||
}
|
}
|
||||||
return item
|
return item
|
||||||
|
@ -46,7 +46,7 @@ class Printer:
|
|||||||
if "shared_heater" in self.config[x]:
|
if "shared_heater" in self.config[x]:
|
||||||
continue
|
continue
|
||||||
self.extrudercount += 1
|
self.extrudercount += 1
|
||||||
if x.startswith('heater_bed'):
|
if x.startswith('heater_bed') or x.startswith('heater_generic '):
|
||||||
self.devices[x] = {
|
self.devices[x] = {
|
||||||
"temperature": 0,
|
"temperature": 0,
|
||||||
"target": 0
|
"target": 0
|
||||||
@ -85,19 +85,11 @@ class Printer:
|
|||||||
for y in data[x]:
|
for y in data[x]:
|
||||||
self.data[x][y] = data[x][y]
|
self.data[x][y] = data[x][y]
|
||||||
|
|
||||||
if "heater_bed" in data:
|
for x in (self.get_tools() + self.get_heaters()):
|
||||||
d = data["heater_bed"]
|
|
||||||
if "target" in d:
|
|
||||||
self.set_dev_stat("heater_bed", "target", d["target"])
|
|
||||||
if "temperature" in d:
|
|
||||||
self.set_dev_stat("heater_bed", "temperature", d["temperature"])
|
|
||||||
for x in self.get_tools():
|
|
||||||
if x in data:
|
if x in data:
|
||||||
d = data[x]
|
d = data[x]
|
||||||
if "target" in d:
|
for i in d:
|
||||||
self.set_dev_stat(x, "target", d["target"])
|
self.set_dev_stat(x, i, d[i])
|
||||||
if "temperature" in d:
|
|
||||||
self.set_dev_stat(x, "temperature", d["temperature"])
|
|
||||||
|
|
||||||
if "webhooks" in data or "idle_timeout" in data or "pause_resume" in data or "print_stats" in data:
|
if "webhooks" in data or "idle_timeout" in data or "pause_resume" in data or "print_stats" in data:
|
||||||
self.evaluate_state()
|
self.evaluate_state()
|
||||||
|
@ -21,23 +21,35 @@ class PreheatPanel(ScreenPanel):
|
|||||||
|
|
||||||
grid = self._gtk.HomogeneousGrid()
|
grid = self._gtk.HomogeneousGrid()
|
||||||
|
|
||||||
eq_grid = self._gtk.HomogeneousGrid()
|
eq_grid = Gtk.Grid()
|
||||||
|
eq_grid.set_hexpand(True)
|
||||||
|
eq_grid.set_vexpand(True)
|
||||||
|
|
||||||
|
self.heaters = []
|
||||||
i = 0
|
i = 0
|
||||||
for x in self._printer.get_tools():
|
for x in self._printer.get_tools():
|
||||||
if i > 3:
|
if i == 0:
|
||||||
break
|
|
||||||
elif i == 0:
|
|
||||||
primary_tool = x
|
primary_tool = x
|
||||||
self.labels[x] = self._gtk.ToggleButtonImage("extruder-"+str(i), self._gtk.formatTemperatureString(0, 0))
|
self.labels[x] = self._gtk.ToggleButtonImage("extruder-"+str(i), self._gtk.formatTemperatureString(0, 0))
|
||||||
self.labels[x].connect('clicked', self.select_heater, x)
|
self.heaters.append(x)
|
||||||
eq_grid.attach(self.labels[x], i%2, i/2, 1, 1)
|
i += 1
|
||||||
|
|
||||||
|
add_heaters = self._printer.get_heaters()
|
||||||
|
for h in add_heaters:
|
||||||
|
if h == "heater_bed":
|
||||||
|
self.labels[h] = self._gtk.ButtonImage("bed", self._gtk.formatTemperatureString(0, 0))
|
||||||
|
else:
|
||||||
|
name = " ".join(h.split(" ")[1:])
|
||||||
|
self.labels[h] = self._gtk.ButtonImage("heat-up", name)
|
||||||
|
self.heaters.append(h)
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
cols = 3 if len(self.heaters) > 4 else (1 if len(self.heaters) <= 2 else 2)
|
||||||
|
for h in self.heaters:
|
||||||
|
self.labels[h].connect('clicked', self.select_heater, h)
|
||||||
|
eq_grid.attach(self.labels[h], i%cols, int(i/cols), 1, 1)
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
if self._printer.has_heated_bed():
|
|
||||||
self.labels["heater_bed"] = self._gtk.ToggleButtonImage("bed", self._gtk.formatTemperatureString(0, 0))
|
|
||||||
self.labels["heater_bed"].connect('clicked', self.select_heater, "heater_bed")
|
|
||||||
width = 2 if i > 1 else 1
|
|
||||||
eq_grid.attach(self.labels["heater_bed"], 0, i/2+1, width, 1)
|
|
||||||
|
|
||||||
self.labels["control_grid"] = self._gtk.HomogeneousGrid()
|
self.labels["control_grid"] = self._gtk.HomogeneousGrid()
|
||||||
|
|
||||||
@ -70,8 +82,9 @@ class PreheatPanel(ScreenPanel):
|
|||||||
if x not in self.active_heaters:
|
if x not in self.active_heaters:
|
||||||
self.select_heater(None, x)
|
self.select_heater(None, x)
|
||||||
|
|
||||||
if self._printer.has_heated_bed() and "heater_bed" not in self.active_heaters:
|
for h in self._printer.get_heaters():
|
||||||
self.select_heater(None, "heater_bed")
|
if h not in self.active_heaters:
|
||||||
|
self.select_heater(None, h)
|
||||||
|
|
||||||
def select_heater(self, widget, heater):
|
def select_heater(self, widget, heater):
|
||||||
if heater in self.active_heaters:
|
if heater in self.active_heaters:
|
||||||
@ -86,7 +99,9 @@ class PreheatPanel(ScreenPanel):
|
|||||||
if setting == "cooldown":
|
if setting == "cooldown":
|
||||||
for heater in self.active_heaters:
|
for heater in self.active_heaters:
|
||||||
print ("Setting %s to %d" % (heater, 0))
|
print ("Setting %s to %d" % (heater, 0))
|
||||||
if heater.startswith('heater_bed'):
|
if heater.startswith('heater_generic '):
|
||||||
|
self._screen._ws.klippy.set_heater_temp(" ".join(heater.split(" ")[1:]), 0)
|
||||||
|
elif heater.startswith('heater_bed'):
|
||||||
self._screen._ws.klippy.set_bed_temp(0)
|
self._screen._ws.klippy.set_bed_temp(0)
|
||||||
self._printer.set_dev_stat(heater,"target", 0)
|
self._printer.set_dev_stat(heater,"target", 0)
|
||||||
else:
|
else:
|
||||||
@ -95,7 +110,11 @@ class PreheatPanel(ScreenPanel):
|
|||||||
return
|
return
|
||||||
|
|
||||||
for heater in self.active_heaters:
|
for heater in self.active_heaters:
|
||||||
if heater.startswith('heater_bed'):
|
if heater.startswith('heater_generic '):
|
||||||
|
print ("Setting %s to %d" % (heater, self.preheat_options[setting]['heater_generic']))
|
||||||
|
self._screen._ws.klippy.set_heater_temp(" ".join(heater.split(" ")[1:]),
|
||||||
|
self.preheat_options[setting]["heater_generic"])
|
||||||
|
elif heater.startswith('heater_bed'):
|
||||||
print ("Setting %s to %d" % (heater, self.preheat_options[setting]['bed']))
|
print ("Setting %s to %d" % (heater, self.preheat_options[setting]['bed']))
|
||||||
self._screen._ws.klippy.set_bed_temp(self.preheat_options[setting]["bed"])
|
self._screen._ws.klippy.set_bed_temp(self.preheat_options[setting]["bed"])
|
||||||
self._printer.set_dev_stat(heater,"target", int(self.preheat_options[setting]["bed"]))
|
self._printer.set_dev_stat(heater,"target", int(self.preheat_options[setting]["bed"]))
|
||||||
@ -109,13 +128,14 @@ class PreheatPanel(ScreenPanel):
|
|||||||
if action != "notify_status_update":
|
if action != "notify_status_update":
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._printer.has_heated_bed():
|
|
||||||
self.update_temp("heater_bed",
|
|
||||||
self._printer.get_dev_stat("heater_bed","temperature"),
|
|
||||||
self._printer.get_dev_stat("heater_bed","target")
|
|
||||||
)
|
|
||||||
for x in self._printer.get_tools():
|
for x in self._printer.get_tools():
|
||||||
self.update_temp(x,
|
self.update_temp(x,
|
||||||
self._printer.get_dev_stat(x,"temperature"),
|
self._printer.get_dev_stat(x,"temperature"),
|
||||||
self._printer.get_dev_stat(x,"target")
|
self._printer.get_dev_stat(x,"target")
|
||||||
)
|
)
|
||||||
|
for h in self._printer.get_heaters():
|
||||||
|
self.update_temp(h,
|
||||||
|
self._printer.get_dev_stat(h,"temperature"),
|
||||||
|
self._printer.get_dev_stat(h,"target"),
|
||||||
|
None if h == "heater_bed" else " ".join(h.split(" ")[1:])
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user