hoymiles-wifi/hoymiles_wifi/utils.py
2024-02-06 16:44:15 +01:00

93 lines
4.6 KiB
Python

""""Utils for interacting with Hoymiles WiFi API."""
from hoymiles_wifi.protobuf import (
GetConfig_pb2,
SetConfig_pb2,
)
def format_number(number):
return "{:02d}".format(number)
def generate_version_string(version_number: int):
version_string = format_number(version_number // 2048) + "." + format_number((version_number // 64) % 32) + "." + format_number(version_number % 64)
return version_string
def generate_sw_version_string(version_number: int):
version_number2 = version_number // 10000
version_number3 = (version_number - (version_number2 * 10000)) // 100
version_number4 = (version_number - (version_number2 * 10000)) - (version_number3 * 100)
version_string = format_number(version_number2) + "." + format_number(version_number3) + "." + format_number(version_number4)
return version_string
def generate_dtu_version_string(version_number: int, type: str = None):
version_string = ""
version_number2 = version_number % 256
version_number3 = (version_number // 256) % 16
if "SRF" == str:
version_string += f"{format_number(version_number // 1048576)}.{format_number((version_number % 65536) // 4096)}.{format_number(version_number3)}.{format_number(version_number2)}"
elif "HRF" == str:
version_string += f"{format_number(version_number // 65536)}.{format_number((version_number % 65536) // 4096)}.{format_number(version_number3)}.{format_number(version_number2)}"
else:
version_string += f"{format_number(version_number // 4096)}.{format_number(version_number3)}.{format_number(version_number2)}"
return version_string
def initialize_set_config(get_config_req: GetConfig_pb2.GetConfigReqDTO):
set_config_res = SetConfig_pb2.SetConfigResDTO()
set_config_res.lock_password = get_config_req.lock_password
set_config_res.lock_time = get_config_req.lock_time
set_config_res.limit_power_mypower = get_config_req.limit_power_mypower
set_config_res.zero_export_433_addr = get_config_req.zero_export_433_addr
set_config_res.zero_export_enable = get_config_req.zero_export_enable
set_config_res.netmode_select = get_config_req.netmode_select
set_config_res.channel_select = get_config_req.channel_select
set_config_res.server_send_time = get_config_req.server_send_time
set_config_res.serverport = get_config_req.serverport
set_config_res.apn_set = get_config_req.apn_set
set_config_res.meter_kind = get_config_req.meter_kind
set_config_res.meter_interface = get_config_req.meter_interface
set_config_res.wifi_ssid = get_config_req.wifi_ssid
set_config_res.wifi_password = get_config_req.wifi_password
set_config_res.server_domain_name = get_config_req.server_domain_name
set_config_res.inv_type = get_config_req.inv_type
set_config_res.dtu_sn = get_config_req.dtu_sn
set_config_res.access_model = get_config_req.access_model
set_config_res.mac_0 = get_config_req.mac_0
set_config_res.mac_1 = get_config_req.mac_1
set_config_res.mac_2 = get_config_req.mac_2
set_config_res.mac_3 = get_config_req.mac_3
set_config_res.mac_4 = get_config_req.mac_4
set_config_res.mac_5 = get_config_req.mac_5
set_config_res.dhcp_switch = get_config_req.dhcp_switch
set_config_res.ip_addr_0 = get_config_req.ip_addr_0
set_config_res.ip_addr_1 = get_config_req.ip_addr_1
set_config_res.ip_addr_2 = get_config_req.ip_addr_2
set_config_res.ip_addr_3 = get_config_req.ip_addr_3
set_config_res.subnet_mask_0 = get_config_req.subnet_mask_0
set_config_res.subnet_mask_1 = get_config_req.subnet_mask_1
set_config_res.subnet_mask_2 = get_config_req.subnet_mask_2
set_config_res.subnet_mask_3 = get_config_req.subnet_mask_3
set_config_res.default_gateway_0 = get_config_req.default_gateway_0
set_config_res.default_gateway_1 = get_config_req.default_gateway_1
set_config_res.default_gateway_2 = get_config_req.default_gateway_2
set_config_res.default_gateway_3 = get_config_req.default_gateway_3
set_config_res.apn_name = get_config_req.apn_name
set_config_res.apn_password = get_config_req.apn_password
set_config_res.sub1g_sweep_switch = get_config_req.sub1g_sweep_switch
set_config_res.sub1g_work_channel = get_config_req.sub1g_work_channel
set_config_res.cable_dns_0 = get_config_req.cable_dns_0
set_config_res.cable_dns_1 = get_config_req.cable_dns_1
set_config_res.cable_dns_2 = get_config_req.cable_dns_2
set_config_res.cable_dns_3 = get_config_req.cable_dns_3
set_config_res.dtu_ap_ssid = get_config_req.dtu_ap_ssid
set_config_res.dtu_ap_pass = get_config_req.dtu_ap_pass
return set_config_res