@@ -301,12 +301,19 @@ class MoonrakerClient(JsonRpcClient):
301301 HTTP_URL = "http://{host}:{port}"
302302
303303 GENERIC_HEATER_PREFIX = "heater_generic "
304+ GENERIC_EXTRUDER_PREFIX = "extruder"
305+ GENERIC_TEMPERATURE_FAN_PREFIX = "temperature_fan "
306+ GENERIC_TEMPERATURE_PROBE_PREFIX = "temperature_probe "
307+ GENERIC_TEMPERATURE_SENSOR_PREFIX = "temperature_sensor "
308+ GENERIC_TMC_PREFIX = "tmc"
309+ TMC_HAVE_TEMPERATURE = [
310+ "tmc2240" ,
311+ ]
304312 MACRO_PREFIX = "gcode_macro "
305313
306314 RELEVANT_PRINTER_OBJECTS = (
307315 "configfile" ,
308316 "display_status" ,
309- "extruder" ,
310317 "gcode_move" ,
311318 "heater_bed" ,
312319 "idle_timeout" ,
@@ -315,7 +322,12 @@ class MoonrakerClient(JsonRpcClient):
315322 lambda obj_list : [
316323 x
317324 for x in obj_list
318- if x .startswith (MoonrakerClient .GENERIC_HEATER_PREFIX )
325+ if x .startswith (MoonrakerClient .GENERIC_EXTRUDER_PREFIX )
326+ or x .startswith (MoonrakerClient .GENERIC_HEATER_PREFIX )
327+ or x .startswith (MoonrakerClient .GENERIC_TEMPERATURE_FAN_PREFIX )
328+ or x .startswith (MoonrakerClient .GENERIC_TEMPERATURE_PROBE_PREFIX )
329+ or x .startswith (MoonrakerClient .GENERIC_TEMPERATURE_SENSOR_PREFIX )
330+ or x .startswith (MoonrakerClient .GENERIC_TMC_PREFIX )
319331 or x .startswith (MoonrakerClient .MACRO_PREFIX )
320332 ],
321333 )
@@ -567,8 +579,13 @@ def on_printer_objects(future: Future) -> None:
567579 self ._heaters = [
568580 obj
569581 for obj in matched_objs
570- if obj in ("extruder" , "heater_bed" )
582+ if obj in ("heater_bed" )
583+ or obj .startswith (self .GENERIC_EXTRUDER_PREFIX )
571584 or obj .startswith (self .GENERIC_HEATER_PREFIX )
585+ or obj .startswith (self .GENERIC_TEMPERATURE_FAN_PREFIX )
586+ or obj .startswith (self .GENERIC_TEMPERATURE_PROBE_PREFIX )
587+ or obj .startswith (self .GENERIC_TEMPERATURE_SENSOR_PREFIX )
588+ or obj .startswith (self .GENERIC_TMC_PREFIX )
572589 ]
573590
574591 self .query_printer_objects (matched_objs )
@@ -615,8 +632,8 @@ def on_result(future: Future) -> None:
615632 payload = result ["status" ]
616633 self ._process_query_result (payload )
617634
618- except Exception :
619- self ._logger .exception ("Error while querying printer objects" )
635+ except Exception as e :
636+ self ._logger .exception (f "Error while querying printer objects: { e } " )
620637
621638 params = {"objects" : dict .fromkeys (objs )}
622639 future = self .call_method ("printer.objects.query" , params = params )
@@ -1078,15 +1095,25 @@ def _update_temperatures(self, payload: dict[str, Any]) -> None:
10781095 if heater not in payload :
10791096 continue
10801097
1081- name = (
1082- heater [len (self .GENERIC_HEATER_PREFIX ) :]
1083- if heater .startswith (self .GENERIC_HEATER_PREFIX )
1084- else heater
1085- )
1098+ if heater .startswith (self .GENERIC_HEATER_PREFIX ):
1099+ name = heater [len (self .GENERIC_HEATER_PREFIX ) :]
1100+ elif heater .startswith (self .GENERIC_TEMPERATURE_FAN_PREFIX ):
1101+ name = heater [len (self .GENERIC_TEMPERATURE_FAN_PREFIX ) :]
1102+ elif heater .startswith (self .GENERIC_TEMPERATURE_PROBE_PREFIX ):
1103+ name = heater [len (self .GENERIC_TEMPERATURE_PROBE_PREFIX ) :]
1104+ elif heater .startswith (self .GENERIC_TEMPERATURE_SENSOR_PREFIX ):
1105+ name = heater [len (self .GENERIC_TEMPERATURE_SENSOR_PREFIX ) :]
1106+ elif heater .startswith (self .GENERIC_TMC_PREFIX ):
1107+ name = heater [8 :]
1108+ driver = heater [:7 ]
1109+ if driver not in self .TMC_HAVE_TEMPERATURE :
1110+ continue
1111+ else :
1112+ name = heater
10861113
10871114 data = self ._current_temperatures .get (name , TemperatureDataPoint ())
10881115 if "temperature" in payload [heater ]:
1089- data .actual = payload [heater ]["temperature" ]
1116+ data .actual = payload [heater ]["temperature" ] or 0
10901117 dirty_actual = True
10911118 if "target" in payload [heater ]:
10921119 data .target = payload [heater ]["target" ]
0 commit comments