mirror of
https://github.com/suaveolent/hoymiles-wifi.git
synced 2024-09-20 03:10:11 +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:
|
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":
|
if cont != "y":
|
||||||
return None
|
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:
|
async def async_turn_off_inverter(dtu: DTU) -> CommandPB_pb2.CommandResDTO | None:
|
||||||
"""Turn off the inverter asynchronously."""
|
"""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":
|
if cont != "y":
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return await dtu.async_turn_off_dtu()
|
return await dtu.async_turn_off_inverter(inverter_serial)
|
||||||
|
|
||||||
|
|
||||||
async def async_get_information_data(
|
async def async_get_information_data(
|
||||||
@ -355,8 +359,8 @@ async def main() -> None:
|
|||||||
"set-wifi": async_set_wifi,
|
"set-wifi": async_set_wifi,
|
||||||
"firmware-update": async_firmware_update,
|
"firmware-update": async_firmware_update,
|
||||||
"restart-dtu": async_restart_dtu,
|
"restart-dtu": async_restart_dtu,
|
||||||
"turn-on": async_turn_on_inverter,
|
"turn-on-inverter": async_turn_on_inverter,
|
||||||
"turn-off": async_turn_off_inverter,
|
"turn-off-inverter": async_turn_off_inverter,
|
||||||
"get-information-data": async_get_information_data,
|
"get-information-data": async_get_information_data,
|
||||||
"get-version-info": async_get_version_info,
|
"get-version-info": async_get_version_info,
|
||||||
"heartbeat": async_heatbeat,
|
"heartbeat": async_heatbeat,
|
||||||
|
@ -35,6 +35,7 @@ from hoymiles_wifi.const import (
|
|||||||
DTU_PORT,
|
DTU_PORT,
|
||||||
OFFSET,
|
OFFSET,
|
||||||
)
|
)
|
||||||
|
from hoymiles_wifi.hoymiles import convert_inverter_serial_number
|
||||||
from hoymiles_wifi.protobuf import (
|
from hoymiles_wifi.protobuf import (
|
||||||
AppGetHistPower_pb2,
|
AppGetHistPower_pb2,
|
||||||
APPHeartbeatPB_pb2,
|
APPHeartbeatPB_pb2,
|
||||||
@ -254,30 +255,42 @@ class DTU:
|
|||||||
command, request, CommandPB_pb2.CommandReqDTO
|
command, request, CommandPB_pb2.CommandReqDTO
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_turn_on_inverter(self) -> CommandPB_pb2.CommandResDTO | None:
|
async def async_turn_on_inverter(
|
||||||
"""Turn on DTU."""
|
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 = CommandPB_pb2.CommandResDTO()
|
||||||
request.action = CMD_ACTION_MI_START
|
request.action = CMD_ACTION_MI_START
|
||||||
request.package_nub = 1
|
request.package_nub = 1
|
||||||
request.dev_kind = DEV_DTU
|
request.dev_kind = DEV_DTU
|
||||||
request.tid = int(time.time())
|
request.tid = int(time.time())
|
||||||
|
request.mi_to_sn.extend([inverter_serial_int])
|
||||||
|
|
||||||
command = CMD_CLOUD_COMMAND_RES_DTO
|
command = CMD_CLOUD_COMMAND_RES_DTO
|
||||||
|
|
||||||
return await self.async_send_request(
|
return await self.async_send_request(
|
||||||
command, request, CommandPB_pb2.CommandReqDTO
|
command, request, CommandPB_pb2.CommandReqDTO
|
||||||
)
|
)
|
||||||
|
|
||||||
async def async_turn_off_inverter(self) -> CommandPB_pb2.CommandResDTO | None:
|
async def async_turn_off_inverter(
|
||||||
"""Turn off DTU."""
|
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 = CommandPB_pb2.CommandResDTO()
|
||||||
request.action = CMD_ACTION_MI_SHUTDOWN
|
request.action = CMD_ACTION_MI_SHUTDOWN
|
||||||
request.package_nub = 1
|
request.package_nub = 1
|
||||||
request.dev_kind = DEV_DTU
|
request.dev_kind = DEV_DTU
|
||||||
request.tid = int(time.time())
|
request.tid = int(time.time())
|
||||||
|
request.mi_to_sn.extend([inverter_serial_int])
|
||||||
|
|
||||||
command = CMD_CLOUD_COMMAND_RES_DTO
|
command = CMD_CLOUD_COMMAND_RES_DTO
|
||||||
|
|
||||||
return await self.async_send_request(
|
return await self.async_send_request(
|
||||||
command, request, CommandPB_pb2.CommandReqDTO
|
command, request, CommandPB_pb2.CommandReqDTO
|
||||||
)
|
)
|
||||||
|
@ -183,6 +183,12 @@ def generate_inverter_serial_number(serial_number: int) -> str:
|
|||||||
return hex(serial_number)[2:]
|
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:
|
def get_inverter_type(serial_bytes: bytes) -> InverterType:
|
||||||
"""Get inverter type."""
|
"""Get inverter type."""
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user