def on_message(self, message): message = message.replace(b'\x00', b' ') try: parsed_data = parse_aanderaa_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)) return except Exception as e: logging.exception(e) return try: args = { 'magnetic_degrees': parsed_data['direction'], 'true_degrees': parsed_data['direction'] - self.magnetic_declination, 'speed_in_knots': parsed_data['speed'] * 0.01944 } water_flow_sentence = format_water_flow_sentence(**args) self.concentrator_server.send(water_flow_sentence) except ValueError as e: msg = ("Unable to convert '{!r}' from {} to NMEA water flow " "sentence. Error was: {}") log.error(msg.format(message, self.peername, e)) except Exception as e: logging.exception(e) try: temperature = parsed_data['temperature'] temperature_sentence = format_temperature_sentence(temperature) self.concentrator_server.send(temperature_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_temperature_sentence(): msg = format_temperature_sentence(17.09663) assert msg == b"$VWMTW,17.1,C*15\r\n"