feature: add BTMinerV3 control support
This commit is contained in:
@@ -829,6 +829,85 @@ class BTMinerV3(StockFirmware):
|
|||||||
supports_autotuning = True
|
supports_autotuning = True
|
||||||
supports_power_modes = True
|
supports_power_modes = True
|
||||||
|
|
||||||
|
async def fault_light_off(self) -> bool:
|
||||||
|
try:
|
||||||
|
data = await self.rpc.set_system_led()
|
||||||
|
except APIError:
|
||||||
|
return False
|
||||||
|
if data:
|
||||||
|
if "code" in data.keys():
|
||||||
|
if data["code"] == 0:
|
||||||
|
self.light = False
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def fault_light_on(self) -> bool:
|
||||||
|
try:
|
||||||
|
data = await self.rpc.set_system_led(
|
||||||
|
leds=[
|
||||||
|
{
|
||||||
|
{"color": "red", "period": 60, "duration": 20, "start": 0},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
)
|
||||||
|
except APIError:
|
||||||
|
return False
|
||||||
|
if data:
|
||||||
|
if "code" in data.keys():
|
||||||
|
if data["code"] == 0:
|
||||||
|
self.light = True
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def reboot(self) -> bool:
|
||||||
|
try:
|
||||||
|
data = await self.rpc.set_system_reboot()
|
||||||
|
except APIError:
|
||||||
|
return False
|
||||||
|
if data.get("msg"):
|
||||||
|
if data["msg"] == "ok":
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def restart_backend(self) -> bool:
|
||||||
|
try:
|
||||||
|
data = await self.rpc.set_miner_service("restart")
|
||||||
|
except APIError:
|
||||||
|
return False
|
||||||
|
if data.get("msg"):
|
||||||
|
if data["msg"] == "ok":
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def stop_mining(self) -> bool:
|
||||||
|
try:
|
||||||
|
data = await self.rpc.set_miner_service("stop")
|
||||||
|
except APIError:
|
||||||
|
return False
|
||||||
|
if data.get("msg"):
|
||||||
|
if data["msg"] == "ok":
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def resume_mining(self) -> bool:
|
||||||
|
try:
|
||||||
|
data = await self.rpc.set_miner_service("start")
|
||||||
|
except APIError:
|
||||||
|
return False
|
||||||
|
if data.get("msg"):
|
||||||
|
if data["msg"] == "ok":
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
async def set_power_limit(self, wattage: int) -> bool:
|
||||||
|
try:
|
||||||
|
await self.rpc.set_miner_power_limit(wattage)
|
||||||
|
except Exception as e:
|
||||||
|
logging.warning(f"{self} set_power_limit: {e}")
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
async def _get_mac(self, rpc_get_device_info: dict = None) -> str | None:
|
async def _get_mac(self, rpc_get_device_info: dict = None) -> str | None:
|
||||||
if rpc_get_device_info is None:
|
if rpc_get_device_info is None:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1256,8 +1256,7 @@ class BTMinerV3RPCAPI(BaseMinerRPCAPI):
|
|||||||
async def get_fan_setting(self) -> dict | None:
|
async def get_fan_setting(self) -> dict | None:
|
||||||
return await self.send_command("get.fan.setting")
|
return await self.send_command("get.fan.setting")
|
||||||
|
|
||||||
async def set_system_reboot(self, *args, **kwargs) -> dict | None:
|
async def set_system_reboot(self) -> dict | None:
|
||||||
raise NotImplementedError
|
|
||||||
return await self.send_command("set.system.reboot")
|
return await self.send_command("set.system.reboot")
|
||||||
|
|
||||||
async def set_system_factory_reset(self, *args, **kwargs) -> dict | None:
|
async def set_system_factory_reset(self, *args, **kwargs) -> dict | None:
|
||||||
@@ -1272,8 +1271,11 @@ class BTMinerV3RPCAPI(BaseMinerRPCAPI):
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
return await self.send_command("set.system.net_config")
|
return await self.send_command("set.system.net_config")
|
||||||
|
|
||||||
async def set_system_led(self, *args, **kwargs) -> dict | None:
|
async def set_system_led(self, leds: list | None = None) -> dict | None:
|
||||||
return await self.send_command("set.system.led", "auto")
|
if leds is None:
|
||||||
|
return await self.send_command("set.system.led", parameters="auto")
|
||||||
|
else:
|
||||||
|
return await self.send_command("set.system.led", parameters=leds)
|
||||||
|
|
||||||
async def set_system_time_randomized(self, *args, **kwargs) -> dict | None:
|
async def set_system_time_randomized(self, *args, **kwargs) -> dict | None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@@ -1303,9 +1305,8 @@ class BTMinerV3RPCAPI(BaseMinerRPCAPI):
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
return await self.send_command("set.system.ntp_server")
|
return await self.send_command("set.system.ntp_server")
|
||||||
|
|
||||||
async def set_miner_service(self, *args, **kwargs) -> dict | None:
|
async def set_miner_service(self, value: str) -> dict | None:
|
||||||
raise NotImplementedError
|
return await self.send_command("set.miner.service", parameters=value)
|
||||||
return await self.send_command("set.miner.service")
|
|
||||||
|
|
||||||
async def set_miner_power_mode(self, *args, **kwargs) -> dict | None:
|
async def set_miner_power_mode(self, *args, **kwargs) -> dict | None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@@ -1340,9 +1341,8 @@ class BTMinerV3RPCAPI(BaseMinerRPCAPI):
|
|||||||
"set.miner.report", parameters={"gap": frequency}
|
"set.miner.report", parameters={"gap": frequency}
|
||||||
)
|
)
|
||||||
|
|
||||||
async def set_miner_power_limit(self, *args, **kwargs) -> dict | None:
|
async def set_miner_power_limit(self, power: int) -> dict | None:
|
||||||
raise NotImplementedError
|
return await self.send_command("set.miner.power_limit", parameters=power)
|
||||||
return await self.send_command("set.miner.power_limit")
|
|
||||||
|
|
||||||
async def set_miner_upfreq_speed(self, *args, **kwargs) -> dict | None:
|
async def set_miner_upfreq_speed(self, *args, **kwargs) -> dict | None:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|||||||
Reference in New Issue
Block a user