def on_message(self, message): try: parsed_data = parse_optiplex_message(message) log.debug("Extracted %s" % parsed_data) except ValueError as e: msg = "Unable to parse '{!r}' from {}. Error was: {}" log.error(msg.format(message, self.peername, e)) except Exception as e: logging.exception(e) value = parsed_data['value'] unit = parsed_data['unit'] if unit == "cm": try: water_depth_sentence = format_water_depth_sentence(value / 100) self.concentrator_server.send(water_depth_sentence) except ValueError as e: msg = ("Unable to convert '{!r}' from {} to NMEA water depth " "sentence. Error was: {}") log.error(msg.format(message, self.peername, e)) except Exception as e: logging.exception(e) if unit == "hPa": try: value *= 100 pressure_sentence = format_pressure_sentence(value) self.concentrator_server.send(pressure_sentence) except ValueError as e: msg = ("Unable to convert '{!r}' from {} to NMEA temperature " "sentence. Error was: {}") log.error(msg.format(message, self.peername, e)) except Exception as e: logging.exception(e)
def test_format_water_depth_sentence(): msg = format_water_depth_sentence(5.438) assert msg == b"$VWDPT,5.44,,*76\r\n" msg = format_water_depth_sentence(-1.0) assert msg == b"$VWDPT,-1.00,,*5F\r\n"