add support for custom firmware url

This commit is contained in:
suaveolent 2024-02-08 16:01:24 +01:00
parent 16f9d9fd6d
commit a86ae5221e
3 changed files with 28 additions and 6 deletions

View File

@ -9,6 +9,10 @@ from hoymiles_wifi.utils import (
generate_dtu_version_string
)
from hoymiles_wifi.const import (
DTU_FIRMWARE_URL_00_01_11
)
@dataclass
class VersionInfo:
dtu_hw_version: str
@ -93,7 +97,7 @@ async def firmware_update(inverter):
END = '\033[0m'
print(RED + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + END)
print(RED + "!!! Danger zone! This will update the firmeware of the inverter. !!!" + END)
print(RED + "!!! Danger zone! This will update the firmeware of the DTU. !!!" + END)
print(RED + "!!! Please be careful and make sure you know what you are doing. !!!" + END)
print(RED + "!!! Only proceed if you know what you are doing. !!!" + END)
print(RED + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + END)
@ -103,15 +107,31 @@ async def firmware_update(inverter):
if(cont != 'y'):
return
print("Please select a firmware version:")
print("1.) V00.01.11")
print("2.) Custom URL")
while True:
selection = input("Enter your selection (1 or 2): ")
if selection == "1":
url = DTU_FIRMWARE_URL_00_01_11
break
elif selection == "2":
url = input("Enter the custom URL: ").strip()
break
else:
print("Invalid selection. Please enter 1 or 2.")
print()
print("Updating firmware to version: V00.01.11...")
print(f'Firmware update URL: "{url}"')
print()
cont = input("Do you want to continue? (y/n): ")
if(cont != 'y'):
return
return await inverter.firmware_update()
return await inverter.update_dtu_firmware()
async def restart(inverter):

View File

@ -35,3 +35,5 @@ CMD_ACTION_RESTART = 3
CMD_ACTION_TURN_ON = 6
CMD_ACTION_TURN_OFF = 7
CMD_ACTION_POWER_LIMIT = 8
DTU_FIRMWARE_URL_00_01_11 = "http://fwupdate.hoymiles.com/cfs/bin/2311/06/,1488725943932555264.bin"

View File

@ -1,5 +1,4 @@
import asyncio
import socket
import struct
from typing import Any
from crcmod import mkCrcFun
@ -41,6 +40,7 @@ from hoymiles_wifi.const import (
CMD_ACTION_RESTART,
CMD_ACTION_TURN_ON,
CMD_ACTION_TURN_OFF,
DTU_FIRMWARE_URL_00_01_11,
)
@ -155,13 +155,13 @@ class Inverter:
return await self.send_request(command, request, SetConfig_pb2.SetConfigReqDTO)
async def firmware_update(self) -> CommandPB_pb2.CommandResDTO | None:
async def update_dtu_firmware(self, firmware_url: str = DTU_FIRMWARE_URL_00_01_11) -> CommandPB_pb2.CommandResDTO | None:
request = CommandPB_pb2.CommandResDTO()
request.action = CMD_ACTION_FIRMWARE_UPGRADE
request.package_nub = 1
request.tid = int(time.time())
request.data = 'http://fwupdate.hoymiles.com/cfs/bin/2311/06/,1488725943932555264.bin\r'.encode('utf-8')
request.data = (firmware_url + '\r').encode('utf-8')
command = CMD_CLOUD_COMMAND_RES_DTO
return await self.send_request(command, request, CommandPB_pb2.CommandReqDTO)