mirror of
https://github.com/suaveolent/hoymiles-wifi.git
synced 2024-09-20 03:10:11 +00:00
add support for custom firmware url
This commit is contained in:
parent
16f9d9fd6d
commit
a86ae5221e
@ -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):
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user