diff --git a/pytec/pytec/client.py b/pytec/pytec/client.py index da15fc5..1771d4c 100644 --- a/pytec/pytec/client.py +++ b/pytec/pytec/client.py @@ -12,6 +12,10 @@ class Client: self._lines = [""] self._check_zero_limits() + def disconnect(self): + self._socket.shutdown(socket.SHUT_RDWR) + self._socket.close() + def _check_zero_limits(self): output_report = self.get_output() for output_channel in output_report: @@ -110,6 +114,39 @@ class Client: """ return self._get_conf("postfilter") + def get_report(self): + """Obtain one-time report on measurement values + + Example of yielded data:: + {'channel': 0, + 'time': 2302524, + 'interval': 0.12 + 'adc': 0.6199188965423515, + 'sens': 6138.519310282602, + 'temperature': 36.87032392655527, + 'pid_engaged': True, + 'i_set': 2.0635816680889123, + 'dac_value': 2.527790834044456, + 'dac_feedback': 2.523, + 'i_tec': 2.331, + 'tec_i': 2.0925, + 'tec_u_meas': 2.5340000000000003, + 'pid_output': 2.067581958092247} + """ + return self._get_conf("report") + + def get_ipv4(self): + """Get the IPv4 settings of the Thermostat""" + return self._command("ipv4") + + def get_fan(self): + """Get Thermostat current fan settings""" + return self._command("fan") + + def get_hwrev(self): + """Get Thermostat hardware revision""" + return self._command("hwrev") + def report_mode(self): """Start reporting measurement values @@ -163,10 +200,30 @@ class Client: self.set_param("pid", channel, "target", value=target) self.set_param("output", channel, "pid") - def save_config(self): + def save_config(self, ch=""): """Save current configuration to EEPROM""" - self._command("save") + self._command("save", ch) - def load_config(self): + def load_config(self, ch=""): """Load current configuration from EEPROM""" - self._command("load") + self._command("load", ch) + + def reset(self): + """Reset the device""" + self._command("reset") + + def enter_dfu_mode(self): + """Reset device and enters USB device firmware update (DFU) mode""" + self._command("dfu") + + def set_ipv4(self, address, netmask, gateway=""): + """Configure IPv4 address, netmask length, and optional default gateway""" + self._command("ipv4", f"{address}/{netmask}", gateway) + + def set_fan(self, power): + """Set fan power with values from 1 to 100""" + self._command("fan", power) + + def set_fcurve(self, a="", b="", c=""): + """Set fan controller curve coefficients""" + self._command("fcurve", a, b, c)