Add connect/disconnect status for real heater/stirrer hardware #3

Merged
jens merged 2 commits from observer_refactor into master 2026-07-03 19:26:18 +02:00
4 changed files with 12 additions and 6 deletions
Showing only changes of commit 698c019581 - Show all commits
+2 -1
View File
@@ -42,4 +42,5 @@ class TempSensorSim(ATemperatureSensor):
innovation = self.stirrer_sigma * np.sqrt(2.0 * alpha) * np.random.normal()
self._stirrer_state = (1.0 - alpha) * self._stirrer_state + innovation
return self.temp_set + self.offset + white + self._stirrer_state
self.temp = self.temp_set + self.offset + white + self._stirrer_state
return self.temp
+2 -1
View File
@@ -47,7 +47,8 @@ class TempSensor_max31865(ATemperatureSensor):
def temperature(self):
digits = self.read_digits()
return self.temp_offset + self.to_temperature(digits)
self.temp = self.temp_offset + self.to_temperature(digits)
return self.temp
@staticmethod
def to_temperature(digits):
+1 -1
View File
@@ -182,7 +182,7 @@ if __name__ == '__main__':
sud_task.set_on_end(lambda: (heater_task.shutdown(), sud_log_task.stop_run()))
# Assign temp. sensor readings to tc
sensor_task.set_on_changed("temp", ChangedFloat(tc.set_theta_ist, prec=2).set)
sensor.set_on_changed("temp", ChangedFloat(tc.set_theta_ist, prec=2).set)
heater.set_on_changed("power_set", tc.set_model_power)
+7 -3
View File
@@ -12,8 +12,12 @@ class TempSensorTask(ATask):
self.msg_handler = msg_handler
msg_handler.set_recv_handler(self.recv)
self.sensor = sensor_device
self.temp = self.sensor.temperature()
self.set_on_changed("temp", ChangedFloat(self.on_temp_changed, prec=1).set)
# Prime before registering - temperature() sets self.sensor.temp,
# which would otherwise fire on_temp_changed() (and its
# asyncio.create_task()) before the event loop is running, since
# all tasks are built synchronously at module level in brewpi.py.
self.sensor.temperature()
self.sensor.set_on_changed("temp", ChangedFloat(self.on_temp_changed, prec=1).set)
def on_temp_changed(self, value):
asyncio.create_task(self.send({'Temp': value}))
@@ -26,5 +30,5 @@ class TempSensorTask(ATask):
async def on_process(self):
while True:
self.temp = self.sensor.temperature()
self.sensor.temperature()
await asyncio.sleep(self.interval)