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 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_water_flow_sentence(): msg = format_water_flow_sentence(318.0496, 318.5496, 34.022800000000004) assert msg == b"$VWVDR,318.0,T,318.5,M,34.0,N*A\r\n"