Source code for pi_weather.utils.convert

"""Util funcs for types + unit conversions"""
# from ctypes import c_uint8

# from pascal to hecto pascal

from pi_weather.utils.logs import get_logger

logger = get_logger(__name__)


[docs] def uint8_to_int(num: int) -> int: """ Function to convert a uint8-typed data to int type :param num: uint8 data :type num: int (uint8 representation) :return: int data :rtype: int """ if num > 127: num = num - 256 return num
[docs] def uint16_to_int(num: int) -> int: """ Function to convert a uint16-typed data to int type :param num: uint16 data :type num: int (uint16 representation) :return: int data :rtype: int """ if num > 32767: num = num - 65536 return num
[docs] def pa_to_hpa(pa_pressure: float) -> float: """ Function to convert a pressure in Pa to hPa :param pa_pressure: pressure in Pa :type pa_pressure: float :return: hPa data :rtype: float """ return pa_pressure * 1e-2
[docs] def temp_c_to_f(tc: float) -> float: """ Function to convert temperature (Celsius to Fahrenheit) :param tc: Celsius temperature :type tc: float :return: Fahrenheit temperature :rtype: float """ return convert_temp(tc, src="c", dst="f")
[docs] def temp_f_to_c(tf: float) -> float: """ Function to convert temperature (Fahrenheit to Celsius) :param tf: Fahrenheit temperature :type tf: float :return: Celsius temperature :rtype: float """ return convert_temp(tf, src="f", dst="c")
[docs] def convert_temp(t: float, src: str, dst: str) -> float: """ Function to convert the temperature (from src system to dst system) :param t: Input temperature :type t: float :param src: Source system :type src: str :param dst: Destination system :type dst: str :return: Output (converted) temperature :rtype: float """ if src == "C" and dst == "F": return (t * (9 / 5)) + 32 elif src == "F" and dst == "C": return (t - 32) * (5 / 9) logger.warning("Unknown temperature conversion") return t