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