mirror of
https://github.com/suaveolent/hoymiles-wifi.git
synced 2024-09-20 03:10:11 +00:00
support for restart command
This commit is contained in:
parent
48f635722e
commit
f57cda7e40
@ -89,6 +89,15 @@ def firmware_update(inverter):
|
||||
|
||||
return inverter.firmware_update()
|
||||
|
||||
def restart(inverter):
|
||||
|
||||
cont = input("Do you want to restart the device? (y/n): ")
|
||||
if(cont != 'y'):
|
||||
return
|
||||
|
||||
return inverter.restart()
|
||||
|
||||
|
||||
def print_invalid_command(command):
|
||||
print(f"Invalid command: {command}")
|
||||
|
||||
@ -111,6 +120,7 @@ def main():
|
||||
"set-power-limit",
|
||||
"set-wifi",
|
||||
"firmware-update",
|
||||
"restart"
|
||||
],
|
||||
help="Command to execute",
|
||||
)
|
||||
@ -129,7 +139,8 @@ def main():
|
||||
'app-get-hist-power': app_get_hist_power,
|
||||
'set-power-limit': set_power_limit,
|
||||
'set-wifi': set_wifi,
|
||||
'firmware-update': firmware_update
|
||||
'firmware-update': firmware_update,
|
||||
'restart': restart
|
||||
}
|
||||
|
||||
command_func = switch.get(args.command, print_invalid_command)
|
||||
@ -138,7 +149,7 @@ def main():
|
||||
if response:
|
||||
print(f"{args.command.capitalize()} Response: {response}")
|
||||
else:
|
||||
print(f"Unable to retrieve {args.command.replace('_', ' ')}")
|
||||
print(f"No response or unable to retrieve response for {args.command.replace('_', ' ')}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@ -31,4 +31,5 @@ CMD_SET_CONFIG_RES = b'\xdb\x07'
|
||||
CMD_CLOUD_COMMAND_RES_DTO = b'\x23\x05'
|
||||
|
||||
CMD_ACTION_FIRMWARE_UPGRADE = 2
|
||||
CMD_ACTION_RESTART = 3
|
||||
CMD_ACTION_POWER_LIMIT = 8
|
||||
|
@ -37,6 +37,7 @@ from hoymiles_wifi.const import (
|
||||
CMD_ACTION_FIRMWARE_UPGRADE,
|
||||
CMD_SET_CONFIG,
|
||||
CMD_CLOUD_COMMAND_RES_DTO,
|
||||
CMD_ACTION_RESTART,
|
||||
)
|
||||
|
||||
|
||||
@ -147,7 +148,7 @@ class Inverter:
|
||||
request.time = int(time.time())
|
||||
request.offset = 28800
|
||||
request.app_page = 1
|
||||
request.netmode_select = 1
|
||||
request.netmode_select = NetmodeSelect.WIFI
|
||||
request.wifi_ssid = ssid.encode('utf-8')
|
||||
request.wifi_password = password.encode('utf-8')
|
||||
|
||||
@ -165,9 +166,20 @@ class Inverter:
|
||||
|
||||
command = CMD_CLOUD_COMMAND_RES_DTO
|
||||
return self.send_request(command, request, CommandPB_pb2.CommandReqDTO)
|
||||
|
||||
|
||||
def restart(self):
|
||||
|
||||
request = CommandPB_pb2.CommandResDTO()
|
||||
request.action = CMD_ACTION_RESTART
|
||||
request.package_nub = 1
|
||||
request.tid = int(time.time())
|
||||
|
||||
command = CMD_CLOUD_COMMAND_RES_DTO
|
||||
return self.send_request(command, request, CommandPB_pb2.CommandReqDTO)
|
||||
|
||||
|
||||
def send_request(self, command: bytes, request: Any, response_type: Any):
|
||||
def send_request(self, command: bytes, request: Any, response_type: Any, inverter_port: int = INVERTER_PORT):
|
||||
self.sequence = (self.sequence + 1) & 0xFFFF
|
||||
|
||||
request_as_bytes = request.SerializeToString()
|
||||
@ -178,7 +190,7 @@ class Inverter:
|
||||
header = CMD_HEADER + command
|
||||
message = header + struct.pack('>HHH', self.sequence, crc16, length) + request_as_bytes
|
||||
|
||||
address = (self.host, INVERTER_PORT)
|
||||
address = (self.host, inverter_port)
|
||||
try:
|
||||
with socket.create_connection(address, timeout=0.5) as stream:
|
||||
stream.settimeout(5)
|
||||
@ -188,6 +200,8 @@ class Inverter:
|
||||
logger.debug(f"{e}")
|
||||
self.set_state(NetworkState.Offline)
|
||||
return None
|
||||
|
||||
print(f"Hexadecimal Content of buf: {buf.hex()}")
|
||||
|
||||
read_length = struct.unpack('>H', buf[6:8])[0]
|
||||
|
||||
|
4
setup.py
4
setup.py
@ -1,9 +1,9 @@
|
||||
from setuptools import find_packages, setup
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name='hoymiles-wifi',
|
||||
packages=['hoymiles_wifi', 'hoymiles_wifi.protobuf'],
|
||||
version='0.0.8',
|
||||
version='0.0.9',
|
||||
description='A python library for interfacing with Hoymiles HMS-XXXXW-T2 series of micro-inverters.',
|
||||
author='suaveolent',
|
||||
include_package_data=True,
|
||||
|
Loading…
Reference in New Issue
Block a user