mirror of
https://github.com/suaveolent/hoymiles-wifi.git
synced 2024-09-19 19:00:17 +00:00
add serial number field to turn-on/off command
This commit is contained in:
parent
0d80ce808c
commit
2f95f07759
@ -209,23 +209,27 @@ async def async_restart_dtu(dtu: DTU) -> CommandPB_pb2.CommandResDTO | None:
|
||||
|
||||
|
||||
async def async_turn_on_inverter(dtu: DTU) -> CommandPB_pb2.CommandResDTO | None:
|
||||
"""Turn on the irnverte asynchronously."""
|
||||
"""Turn on the inverter asynchronously."""
|
||||
|
||||
cont = input("Do you want to turn *ON* the DTU? (y/n): ")
|
||||
inverter_serial = input("Enter the inverter serial number to turn *ON*: ")
|
||||
|
||||
cont = input(f"Do you want to turn *ON* the Inverter {inverter_serial}? (y/n): ")
|
||||
if cont != "y":
|
||||
return None
|
||||
|
||||
return await dtu.async_turn_on_dtu()
|
||||
return await dtu.async_turn_on_inverter(inverter_serial)
|
||||
|
||||
|
||||
async def async_turn_off_inverter(dtu: DTU) -> CommandPB_pb2.CommandResDTO | None:
|
||||
"""Turn off the inverter asynchronously."""
|
||||
|
||||
cont = input("Do you want to turn *OFF* the DTU? (y/n): ")
|
||||
inverter_serial = input("Enter the inverter serial number to turn *OFF*: ")
|
||||
|
||||
cont = input(f"Do you want to turn *OFF* the Inverter {inverter_serial}? (y/n): ")
|
||||
if cont != "y":
|
||||
return None
|
||||
|
||||
return await dtu.async_turn_off_dtu()
|
||||
return await dtu.async_turn_off_inverter(inverter_serial)
|
||||
|
||||
|
||||
async def async_get_information_data(
|
||||
@ -355,8 +359,8 @@ async def main() -> None:
|
||||
"set-wifi": async_set_wifi,
|
||||
"firmware-update": async_firmware_update,
|
||||
"restart-dtu": async_restart_dtu,
|
||||
"turn-on": async_turn_on_inverter,
|
||||
"turn-off": async_turn_off_inverter,
|
||||
"turn-on-inverter": async_turn_on_inverter,
|
||||
"turn-off-inverter": async_turn_off_inverter,
|
||||
"get-information-data": async_get_information_data,
|
||||
"get-version-info": async_get_version_info,
|
||||
"heartbeat": async_heatbeat,
|
||||
|
@ -35,6 +35,7 @@ from hoymiles_wifi.const import (
|
||||
DTU_PORT,
|
||||
OFFSET,
|
||||
)
|
||||
from hoymiles_wifi.hoymiles import convert_inverter_serial_number
|
||||
from hoymiles_wifi.protobuf import (
|
||||
AppGetHistPower_pb2,
|
||||
APPHeartbeatPB_pb2,
|
||||
@ -254,30 +255,42 @@ class DTU:
|
||||
command, request, CommandPB_pb2.CommandReqDTO
|
||||
)
|
||||
|
||||
async def async_turn_on_inverter(self) -> CommandPB_pb2.CommandResDTO | None:
|
||||
"""Turn on DTU."""
|
||||
async def async_turn_on_inverter(
|
||||
self, inverter_serial: str
|
||||
) -> CommandPB_pb2.CommandResDTO | None:
|
||||
"""Turn on Inverter."""
|
||||
|
||||
inverter_serial_int = convert_inverter_serial_number(inverter_serial)
|
||||
|
||||
request = CommandPB_pb2.CommandResDTO()
|
||||
request.action = CMD_ACTION_MI_START
|
||||
request.package_nub = 1
|
||||
request.dev_kind = DEV_DTU
|
||||
request.tid = int(time.time())
|
||||
request.mi_to_sn.extend([inverter_serial_int])
|
||||
|
||||
command = CMD_CLOUD_COMMAND_RES_DTO
|
||||
|
||||
return await self.async_send_request(
|
||||
command, request, CommandPB_pb2.CommandReqDTO
|
||||
)
|
||||
|
||||
async def async_turn_off_inverter(self) -> CommandPB_pb2.CommandResDTO | None:
|
||||
"""Turn off DTU."""
|
||||
async def async_turn_off_inverter(
|
||||
self, inverter_serial: str
|
||||
) -> CommandPB_pb2.CommandResDTO | None:
|
||||
"""Turn off Inverter."""
|
||||
|
||||
inverter_serial_int = convert_inverter_serial_number(inverter_serial)
|
||||
|
||||
request = CommandPB_pb2.CommandResDTO()
|
||||
request.action = CMD_ACTION_MI_SHUTDOWN
|
||||
request.package_nub = 1
|
||||
request.dev_kind = DEV_DTU
|
||||
request.tid = int(time.time())
|
||||
request.mi_to_sn.extend([inverter_serial_int])
|
||||
|
||||
command = CMD_CLOUD_COMMAND_RES_DTO
|
||||
|
||||
return await self.async_send_request(
|
||||
command, request, CommandPB_pb2.CommandReqDTO
|
||||
)
|
||||
|
@ -183,6 +183,12 @@ def generate_inverter_serial_number(serial_number: int) -> str:
|
||||
return hex(serial_number)[2:]
|
||||
|
||||
|
||||
def convert_inverter_serial_number(serial_number_str: str) -> int:
|
||||
"""Get inverter serial number from string."""
|
||||
|
||||
return int(serial_number_str, 16)
|
||||
|
||||
|
||||
def get_inverter_type(serial_bytes: bytes) -> InverterType:
|
||||
"""Get inverter type."""
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user