begin support for meter

This commit is contained in:
suaveolent 2024-09-03 14:16:27 +02:00
parent f595e64303
commit 61470d3161
2 changed files with 38 additions and 1 deletions

View File

@ -120,6 +120,16 @@ type_mapping = {
} }
class MeterType(Enum):
"""Meter type."""
DDSU666 = "DDSU666"
DTSU666 = "DTSU666"
meter_mapping = {0x1123: MeterType.DDSU666}
def format_number(number: int) -> str: def format_number(number: int) -> str:
"""Format number to two digits.""" """Format number to two digits."""
@ -302,3 +312,30 @@ def get_dtu_model_name(serial_number: str) -> str:
return "Unknown" return "Unknown"
else: else:
return dtu_type.value return dtu_type.value
def get_meter_model_type(serial_bytes: bytes) -> MeterType:
"""Get Meter model type."""
dtu_type_bytes = struct.unpack(">H", serial_bytes[:2])[0]
meter_type = meter_mapping.get(dtu_type_bytes)
if meter_type is None:
raise ValueError(f"Unknown Meter: {serial_bytes[:2]}!")
return meter_type
def get_meter_model_name(serial_number: str) -> str:
"""Get Meter model name."""
serial_bytes = bytes.fromhex(serial_number)
try:
meter_type = get_meter_model_type(serial_bytes)
except Exception as e:
logger.error(e)
return "Unknown"
else:
return meter_type.value

View File

@ -6,7 +6,7 @@ setup(
name="hoymiles-wifi", name="hoymiles-wifi",
packages=["hoymiles_wifi", "hoymiles_wifi.protobuf"], packages=["hoymiles_wifi", "hoymiles_wifi.protobuf"],
install_requires=["protobuf", "crcmod"], install_requires=["protobuf", "crcmod"],
version="0.2.2", version="0.2.3",
description="A python library for interfacing with the Hoymiles DTUs and the HMS-XXXXW-2T series of micro-inverters using protobuf messages.", description="A python library for interfacing with the Hoymiles DTUs and the HMS-XXXXW-2T series of micro-inverters using protobuf messages.",
author="suaveolent", author="suaveolent",
include_package_data=True, include_package_data=True,