Merge pull request #54 from thomluther/release-1.5.0
This commit is contained in:
commit
76a3db6380
304
api/api.py
304
api/api.py
|
@ -5,19 +5,17 @@ pip install cryptography
|
|||
pip install aiohttp
|
||||
"""
|
||||
|
||||
# pylint: disable=too-many-lines,too-many-arguments,too-many-branches,too-many-statements,too-many-public-methods
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from base64 import b64encode
|
||||
import contextlib
|
||||
from datetime import datetime, timedelta
|
||||
from enum import Enum
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
from base64 import b64encode
|
||||
from datetime import datetime, timedelta
|
||||
from enum import Enum
|
||||
|
||||
from aiohttp import ClientSession
|
||||
from aiohttp.client_exceptions import ClientError
|
||||
|
@ -225,6 +223,22 @@ LOGIN_RESPONSE: dict = {
|
|||
}
|
||||
|
||||
|
||||
class SolixDeviceType(Enum):
|
||||
"""Enumuration for Anker Solix device types."""
|
||||
|
||||
SYSTEM = "system"
|
||||
SOLARBANK = "solarbank"
|
||||
INVERTER = "inverter"
|
||||
PPS = "pps"
|
||||
POWERPANEL = "powerpanel"
|
||||
|
||||
|
||||
class SolixParmType(Enum):
|
||||
"""Enumuration for Anker Solix Parameter types."""
|
||||
|
||||
SOLARBANK_SCHEDULE = "4"
|
||||
|
||||
|
||||
class SolixDeviceStatus(Enum):
|
||||
"""Enumuration for Anker Solix Device status."""
|
||||
|
||||
|
@ -241,6 +255,7 @@ class SolarbankStatus(Enum):
|
|||
discharging = "2"
|
||||
bypass = "3"
|
||||
bypass_charging = "35" # pseudo state, the solarbank does not distinguish this
|
||||
charge_priority = "37" # pseudo state, the solarbank does not distinguish this but reports 3 as seen so far
|
||||
wakeup = "4" # Not clear what happens during this state, but observed short intervals during night as well
|
||||
# TODO(3): Add descriptions once status code usage is observed/known
|
||||
# There is also a deep standby / full bypass mode at cold temperatures when the battery cannot be loaded.
|
||||
|
@ -249,7 +264,7 @@ class SolarbankStatus(Enum):
|
|||
unknown = "unknown"
|
||||
|
||||
|
||||
class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
||||
class AnkerSolixApi:
|
||||
"""Define the API class to handle Anker server authentication and API requests, along with the last state of queried site details and Device information."""
|
||||
|
||||
def __init__(
|
||||
|
@ -304,7 +319,7 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
|
||||
# Define Encryption for password, using ECDH assymetric key exchange for shared secret calculation, which must be used to encrypt the password using AES-256-CBC with seed of 16
|
||||
# uncompressed public key from EU Anker server in the format 04 [32 byte x vlaue] [32 byte y value]
|
||||
# TODO(2): COM Anker server public key usage to be validated
|
||||
# TODO(2): COM Anker server public key usage must still be validated
|
||||
self._api_public_key_hex = "04c5c00c4f8d1197cc7c3167c52bf7acb054d722f0ef08dcd7e0883236e0d72a3868d9750cb47fa4619248f3d83f0f662671dadc6e2d31c2f41db0161651c7c076"
|
||||
self._curve = (
|
||||
ec.SECP256R1()
|
||||
|
@ -431,7 +446,6 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
"""Update the internal device details dictionary with the given data. The device_sn key must be set in the data dict for the update to be applied.
|
||||
|
||||
This method is used to consolidate various device related key values from various requests under a common set of device keys.
|
||||
TODO: Add more relevent keys for Solarbank or other devices once known/required
|
||||
"""
|
||||
sn = devData.get("device_sn")
|
||||
if sn:
|
||||
|
@ -465,17 +479,42 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
device.update({"wifi_signal": str(value)})
|
||||
elif key in ["bt_ble_mac"] and value:
|
||||
device.update({"bt_ble_mac": str(value)})
|
||||
elif key in ["battery_power"]:
|
||||
elif key in ["battery_power"] and value:
|
||||
# This is a percentage value for the battery state of charge, not power
|
||||
device.update({"battery_soc": str(value)})
|
||||
cap = ""
|
||||
# Derive battery capacity in Wh from solarbank name
|
||||
if device.get("type") == SolixDeviceType.SOLARBANK.value:
|
||||
cap = device.get("name", "").replace("Solarbank E", "")
|
||||
# Add capacity and calculate remaining energy in Wh
|
||||
if cap and str(cap).isdigit() and str(value).isdigit:
|
||||
device.update(
|
||||
{
|
||||
"battery_capacity": str(cap),
|
||||
"battery_energy": str(
|
||||
int(int(cap) * int(value) / 100)
|
||||
),
|
||||
}
|
||||
)
|
||||
elif key in ["charging_power"]:
|
||||
device.update({"charging_power": str(value)})
|
||||
elif key in ["photovoltaic_power"]:
|
||||
device.update({"input_power": str(value)})
|
||||
elif key in ["output_power"]:
|
||||
device.update({"output_power": str(value)})
|
||||
elif key in ["set_load_power"]:
|
||||
device.update({"set_output_power": str(value)})
|
||||
# solarbank info shows the load preset per device, which is identical to device parallel_home_load for 2 solarbanks, or current homeload for single solarbank
|
||||
elif key in ["set_load_power", "parallel_home_load"] and value:
|
||||
# Value may include unit, remove unit to have content consistent
|
||||
device.update({"set_output_power": str(value).replace("W", "")})
|
||||
# The current_home_load from get_device_load always shows the system wide settings made via the schedule
|
||||
elif key in ["current_home_load"] and value:
|
||||
# Value may include unit, remove unit to have content consistent
|
||||
device.update(
|
||||
{"set_system_output_power": str(value).replace("W", "")}
|
||||
)
|
||||
# Value for device home load may be empty for single solarbank, use this setting also for device preset in this case
|
||||
if not device.get("set_output_power"):
|
||||
device.update({"set_output_power": str(value).replace("W", "")})
|
||||
elif key in ["power_unit"]:
|
||||
device.update({"power_unit": str(value)})
|
||||
elif key in ["status"]:
|
||||
|
@ -495,13 +534,20 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
if str(value) == status.value:
|
||||
description = status.name
|
||||
break
|
||||
# check if battery charging during bypass
|
||||
if description == SolarbankStatus.bypass.name and (
|
||||
charge := devData.get("charging_power")
|
||||
# check if battery charging during bypass and if output during bypass
|
||||
# NOTE: charging power may be updated after initial device details update
|
||||
# NOTE: If status is 3=Bypass but nothing goes out, the charge priority is active (e.g. 0 Watt switch)
|
||||
if (
|
||||
description == SolarbankStatus.bypass.name
|
||||
and (charge := devData.get("charging_power"))
|
||||
and (out := devData.get("output_power"))
|
||||
):
|
||||
with contextlib.suppress(ValueError):
|
||||
charge = int(charge)
|
||||
if charge > 0:
|
||||
if int(out) == 0:
|
||||
# Bypass but 0 W output must be active charge priority
|
||||
description = SolarbankStatus.charge_priority.name
|
||||
elif int(charge) > 0:
|
||||
# Bypass with output and charge must be bypass charging
|
||||
description = SolarbankStatus.bypass_charging.name
|
||||
device.update({"charging_status_desc": description})
|
||||
elif key in ["bws_surplus"]:
|
||||
|
@ -512,6 +558,12 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
device.update({"auto_upgrade": bool(value)})
|
||||
elif key in ["power_cutoff"]:
|
||||
device.update({"power_cutoff": int(value)})
|
||||
elif key in ["fittings"]:
|
||||
# update nested dictionary
|
||||
if "fittings" in device:
|
||||
device["fittings"].update(dict(value))
|
||||
else:
|
||||
device["fittings"] = dict(value)
|
||||
elif key in ["solar_info"] and isinstance(value, dict) and value:
|
||||
# remove unnecessary keys from solar_info
|
||||
keylist = value.keys()
|
||||
|
@ -522,8 +574,11 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
]:
|
||||
value.pop(key)
|
||||
device.update({"solar_info": dict(value)})
|
||||
# schedule is currently a site wide setting. However, we save this with device details to retain info across site updates
|
||||
# When individual device schedules are support in future, this info is needed per device anyway
|
||||
elif key in ["schedule"] and isinstance(value, dict) and value:
|
||||
device.update({"schedule": dict(value)})
|
||||
|
||||
# inverter specific keys
|
||||
elif key in ["generate_power"]:
|
||||
device.update({"generate_power": str(value)})
|
||||
|
@ -646,7 +701,7 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
endpoint: str,
|
||||
*,
|
||||
headers: dict | None = None,
|
||||
json: dict | None = None, # noqa: W0621 # pylint: disable=redefined-outer-name
|
||||
json: dict | None = None, # pylint: disable=redefined-outer-name
|
||||
) -> dict:
|
||||
"""Handle all requests to the API. This is also called recursively by login requests if necessary."""
|
||||
if not headers:
|
||||
|
@ -770,9 +825,7 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
self._logger.error("Response Text: %s", body_text)
|
||||
raise err
|
||||
|
||||
async def update_sites( # pylint: disable=too-many-locals
|
||||
self, fromFile: bool = False
|
||||
) -> dict:
|
||||
async def update_sites(self, fromFile: bool = False) -> dict:
|
||||
"""Get the latest info for all accessible sites and update class site and device variables.
|
||||
|
||||
Example data:
|
||||
|
@ -808,11 +861,12 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
mysite = self.sites.get(myid, {})
|
||||
siteInfo = mysite.get("site_info", {})
|
||||
siteInfo.update(site)
|
||||
mysite.update({"site_info": siteInfo})
|
||||
admin = siteInfo.get("ms_type", 0) in [
|
||||
0,
|
||||
1,
|
||||
] # add boolean key to indicate whether user is site admin (ms_type 1 or not known) and can query device details
|
||||
mysite.update(
|
||||
{"type": SolixDeviceType.SYSTEM.value, "site_info": siteInfo}
|
||||
)
|
||||
admin = (
|
||||
siteInfo.get("ms_type", 0) in [0, 1]
|
||||
) # add boolean key to indicate whether user is site admin (ms_type 1 or not known) and can query device details
|
||||
mysite.update({"site_admin": admin})
|
||||
# Update scene info for site
|
||||
self._logger.debug("Getting scene info for site")
|
||||
|
@ -820,29 +874,77 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
mysite.update(scene)
|
||||
self.sites.update({myid: mysite})
|
||||
# Update device details from scene info
|
||||
for solarbank in (mysite.get("solarbank_info", {})).get(
|
||||
"solarbank_list", []
|
||||
):
|
||||
sb_total_charge = (mysite.get("solarbank_info", {})).get(
|
||||
"total_charging_power", ""
|
||||
)
|
||||
sb_total_charge_calc = 0
|
||||
sb_charges = {}
|
||||
sb_list = (mysite.get("solarbank_info", {})).get("solarbank_list", [])
|
||||
for solarbank in sb_list:
|
||||
# work around for incorrect charging power value per solarbank, only solarbank total_charging_power is correct
|
||||
# calculate estimate based on total for proportional split across available solarbanks and their calculated charge power
|
||||
with contextlib.suppress(ValueError):
|
||||
charge_calc = 0
|
||||
power_in = int(solarbank.get("photovoltaic_power", ""))
|
||||
power_out = int(solarbank.get("output_power", ""))
|
||||
power_charge = int(solarbank.get("charging_power", ""))
|
||||
charge_calc = abs(power_in - power_out)
|
||||
if power_charge == 0:
|
||||
solarbank["charging_power"] = charge_calc
|
||||
sb_total_charge_calc += charge_calc
|
||||
sn = self._update_dev(
|
||||
solarbank, devType="solarbank", siteId=myid, isAdmin=admin
|
||||
solarbank,
|
||||
devType=SolixDeviceType.SOLARBANK.value,
|
||||
siteId=myid,
|
||||
isAdmin=admin,
|
||||
)
|
||||
if sn:
|
||||
act_devices.append(sn)
|
||||
sb_charges[sn] = charge_calc
|
||||
# adjust calculated SB charge to match total
|
||||
if (
|
||||
len(sb_charges) == len(sb_list)
|
||||
and str(sb_total_charge).isdigit()
|
||||
and sb_total_charge_calc > 0
|
||||
):
|
||||
sb_total_charge = int(sb_total_charge)
|
||||
for sn, charge in sb_charges.items():
|
||||
self.devices[sn]["charging_power"] = int(
|
||||
sb_total_charge / sb_total_charge_calc * charge
|
||||
)
|
||||
# Update also the charge status description which may change after charging power correction
|
||||
charge_status = self.devices[sn].get("charging_status")
|
||||
if charge_status == SolarbankStatus.bypass:
|
||||
self._update_dev(
|
||||
{
|
||||
"device_sn": sn,
|
||||
"charging_status": charge_status,
|
||||
}
|
||||
)
|
||||
for pps in (mysite.get("pps_info", {})).get("pps_list", []):
|
||||
sn = self._update_dev(
|
||||
pps, devType="pps", siteId=myid, isAdmin=admin
|
||||
pps,
|
||||
devType=SolixDeviceType.PPS.value,
|
||||
siteId=myid,
|
||||
isAdmin=admin,
|
||||
)
|
||||
if sn:
|
||||
act_devices.append(sn)
|
||||
for solar in mysite.get("solar_list", []):
|
||||
sn = self._update_dev(
|
||||
solar, devType="inverter", siteId=myid, isAdmin=admin
|
||||
solar,
|
||||
devType=SolixDeviceType.INVERTER.value,
|
||||
siteId=myid,
|
||||
isAdmin=admin,
|
||||
)
|
||||
if sn:
|
||||
act_devices.append(sn)
|
||||
for powerpanel in mysite.get("powerpanel_list", []):
|
||||
sn = self._update_dev(
|
||||
powerpanel, devType="powerpanel", siteId=myid, isAdmin=admin
|
||||
powerpanel,
|
||||
devType=SolixDeviceType.POWERPANEL.value,
|
||||
siteId=myid,
|
||||
isAdmin=admin,
|
||||
)
|
||||
if sn:
|
||||
act_devices.append(sn)
|
||||
|
@ -892,7 +994,7 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
device.update(wifi_list[wifi_index - 1])
|
||||
|
||||
# Fetch device type specific details
|
||||
if dev_Type in ["solarbank"]:
|
||||
if dev_Type in [SolixDeviceType.SOLARBANK.value]:
|
||||
# Fetch active Power Cutoff setting for solarbanks
|
||||
self._logger.debug("Getting Power Cutoff settings for device")
|
||||
await self.get_power_cutoff(
|
||||
|
@ -908,10 +1010,17 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
await self.get_device_load(
|
||||
siteId=site_id, deviceSn=sn, fromFile=fromFile
|
||||
)
|
||||
|
||||
# Fetch device fittings for device types supporting it
|
||||
self._logger.debug("Getting fittings for device")
|
||||
await self.get_device_fittings(
|
||||
siteId=site_id, deviceSn=sn, fromFile=fromFile
|
||||
)
|
||||
|
||||
# update entry in devices
|
||||
self.devices.update({sn: device})
|
||||
|
||||
# TODO(1): Fetch other details of specific device types as known and relevant
|
||||
# TODO(#0): Fetch other details of specific device types as known and relevant
|
||||
|
||||
return self.devices
|
||||
|
||||
|
@ -1084,6 +1193,56 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
self._update_dev(device)
|
||||
return data
|
||||
|
||||
async def set_auto_upgrade(self, devices: dict[str, bool]) -> bool:
|
||||
"""Set auto upgrade switches for given device dictonary.
|
||||
|
||||
Example input:
|
||||
devices = {'9JVB42LJK8J0P5RY': True}
|
||||
The main switch must be set True if any device switch is set True. The main switch does not need to be changed to False if no device is True.
|
||||
But if main switch is set to False, all devices will automatically be set to False and individual setting is ignored by Api.
|
||||
"""
|
||||
# get actual settings
|
||||
settings = await self.get_auto_upgrade()
|
||||
if (main_switch := settings.get("main_switch")) is None:
|
||||
return False
|
||||
dev_switches = {}
|
||||
main = None
|
||||
change_list = []
|
||||
for dev_setting in settings.get("device_list") or []:
|
||||
if (
|
||||
isinstance(dev_setting, dict)
|
||||
and (device_sn := dev_setting.get("device_sn"))
|
||||
and (dev_upgrade := dev_setting.get("auto_upgrade")) is not None
|
||||
):
|
||||
dev_switches[device_sn] = dev_upgrade
|
||||
# Loop through provided device list and compose the request data device list that needs to be send
|
||||
for sn, upgrade in devices.items():
|
||||
if sn in dev_switches:
|
||||
if upgrade != dev_switches[sn]:
|
||||
change_list.append({"device_sn": sn, "auto_upgrade": upgrade})
|
||||
if upgrade:
|
||||
main = True
|
||||
|
||||
if change_list:
|
||||
# json example for endpoint
|
||||
# {"main_switch": False, "device_list": [{"device_sn": "9JVB42LJK8J0P5RY","auto_upgrade": True}]}
|
||||
data = {
|
||||
"main_switch": main if main is not None else main_switch,
|
||||
"device_list": change_list,
|
||||
}
|
||||
# Make the Api call and check for return code
|
||||
code = (
|
||||
await self.request(
|
||||
"post", _API_ENDPOINTS["set_auto_upgrade"], json=data
|
||||
)
|
||||
).get("code")
|
||||
if not isinstance(code, int) or int(code) != 0:
|
||||
return False
|
||||
# update the data in api dict
|
||||
await self.get_auto_upgrade()
|
||||
|
||||
return True
|
||||
|
||||
async def get_wifi_list(self, siteId: str, fromFile: bool = False) -> dict:
|
||||
"""Get the wifi list.
|
||||
|
||||
|
@ -1175,16 +1334,26 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
"post", _API_ENDPOINTS["get_device_load"], json=data
|
||||
)
|
||||
# API Bug? home_load_data provided as string instead of object...Convert into object for proper handling
|
||||
string_data = (resp.get("data", {})).get("home_load_data", {})
|
||||
string_data = (resp.get("data") or {}).get("home_load_data") or {}
|
||||
if isinstance(string_data, str):
|
||||
resp["data"].update({"home_load_data": json.loads(string_data)})
|
||||
data = resp.get("data", {})
|
||||
if schedule := data.get("home_load_data", {}):
|
||||
self._update_dev({"device_sn": deviceSn, "schedule": schedule})
|
||||
data = resp.get("data") or {}
|
||||
if schedule := data.get("home_load_data") or {}:
|
||||
self._update_dev(
|
||||
{
|
||||
"device_sn": deviceSn,
|
||||
"schedule": schedule,
|
||||
"current_home_load": data.get("current_home_load") or "",
|
||||
"parallel_home_load": data.get("parallel_home_load") or "",
|
||||
}
|
||||
)
|
||||
return data
|
||||
|
||||
async def get_device_parm(
|
||||
self, siteId: str, paramType: str = "4", fromFile: bool = False
|
||||
self,
|
||||
siteId: str,
|
||||
paramType: str = SolixParmType.SOLARBANK_SCHEDULE.value,
|
||||
fromFile: bool = False,
|
||||
) -> dict:
|
||||
r"""Get device parameters (e.g. solarbank schedule). This can be queried for each siteId listed in the homepage info site_list. The paramType is always 4, but can be modified if necessary.
|
||||
|
||||
|
@ -1214,7 +1383,7 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
self,
|
||||
siteId: str,
|
||||
paramData: dict,
|
||||
paramType: str = "4",
|
||||
paramType: str = SolixParmType.SOLARBANK_SCHEDULE.value,
|
||||
command: int = 17,
|
||||
toFile: bool = False,
|
||||
) -> dict:
|
||||
|
@ -1245,6 +1414,45 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
)
|
||||
return resp.get("data", {})
|
||||
|
||||
async def get_device_fittings(
|
||||
self, siteId: str, deviceSn: str, fromFile: bool = False
|
||||
) -> dict:
|
||||
r"""Get device fittings.
|
||||
|
||||
Example data:
|
||||
{"data": [{
|
||||
"device_sn": "ZDL32D6A3HKXUTN1","product_code": "A17Y0","device_name": "E1600 0W Output Switch","alias_name": "E1600 0W Output Switch",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/2024/01/10/iot-admin/EPBsJ3a5JyMGqA1j/picl_A17Y0_normal.png",
|
||||
"bt_ble_id": "","bt_ble_mac": "FC1CEA253CDB","link_time": 1707127936
|
||||
}]}
|
||||
"""
|
||||
data = {"site_id": siteId, "device_sn": deviceSn}
|
||||
if fromFile:
|
||||
resp = self._loadFromFile(
|
||||
os.path.join(self._testdir, f"device_fittings_{deviceSn}.json")
|
||||
)
|
||||
else:
|
||||
resp = await self.request(
|
||||
"post", _API_ENDPOINTS["get_device_fittings"], json=data
|
||||
)
|
||||
data = resp.get("data") or {}
|
||||
# update devices dict with new fittings data
|
||||
fittings = {}
|
||||
for fitting in [
|
||||
x
|
||||
for x in data.get("data") or []
|
||||
if isinstance(x, dict) and x.get("device_sn")
|
||||
]:
|
||||
# remove unnecessary keys from fitting device
|
||||
keylist = fitting.keys()
|
||||
for key in [
|
||||
x for x in ("img_url", "bt_ble_id", "link_time") if x in keylist
|
||||
]:
|
||||
fitting.pop(key)
|
||||
fittings[fitting.get("device_sn")] = fitting
|
||||
self._update_dev({"device_sn": deviceSn, "fittings": fittings})
|
||||
return data
|
||||
|
||||
async def get_ota_info(
|
||||
self, solarbankSn: str = "", inverterSn: str = "", fromFile: bool = False
|
||||
) -> dict:
|
||||
|
@ -1331,16 +1539,12 @@ class AnkerSolixApi: # pylint: disable=too-many-instance-attributes
|
|||
"site_id": siteId,
|
||||
"device_sn": deviceSn,
|
||||
"type": rangeType if rangeType in ["day", "week", "year"] else "day",
|
||||
"start_time": (
|
||||
startDay.strftime("%Y-%m-%d")
|
||||
if startDay
|
||||
else datetime.today().strftime("%Y-%m-%d")
|
||||
),
|
||||
"device_type": (
|
||||
devType
|
||||
if devType in ["solar_production", "solarbank"]
|
||||
else "solar_production"
|
||||
),
|
||||
"start_time": startDay.strftime("%Y-%m-%d")
|
||||
if startDay
|
||||
else datetime.today().strftime("%Y-%m-%d"),
|
||||
"device_type": devType
|
||||
if devType in ["solar_production", "solarbank"]
|
||||
else "solar_production",
|
||||
"end_time": endDay.strftime("%Y-%m-%d") if endDay else "",
|
||||
}
|
||||
resp = await self.request("post", _API_ENDPOINTS["energy_analysis"], json=data)
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
{
|
||||
"4AD5NI2AC8WL4CFI": {
|
||||
"device_sn": "4AD5NI2AC8WL4CFI",
|
||||
"J19P1918S0BKY4EP": {
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"type": "solarbank",
|
||||
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"is_admin": true,
|
||||
"device_pn": "A17C0",
|
||||
"name": "Solarbank E1600",
|
||||
"battery_soc": "75",
|
||||
"battery_capacity": "1600",
|
||||
"battery_energy": "1200",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "2",
|
||||
|
@ -16,14 +18,13 @@
|
|||
"wireless_type": "1",
|
||||
"input_power": "0",
|
||||
"output_power": "0",
|
||||
"set_output_power": "",
|
||||
"bt_ble_mac": "EC9E58A36A94",
|
||||
"bt_ble_mac": "F68FC0404AD7",
|
||||
"alias": "Solarbank E1600",
|
||||
"wifi_online": false,
|
||||
"charge": false,
|
||||
"bws_surplus": "0",
|
||||
"sw_version": "v1.4.4",
|
||||
"auto_upgrade": true,
|
||||
"auto_upgrade": false,
|
||||
"wifi_name": "wifi-network-1",
|
||||
"wifi_signal": "100",
|
||||
"power_cutoff": 10,
|
||||
|
@ -87,6 +88,9 @@
|
|||
"is_charge_priority": 0,
|
||||
"default_charge_priority": 0,
|
||||
"is_zero_output_tips": 1
|
||||
}
|
||||
},
|
||||
"set_system_output_power": "300",
|
||||
"set_output_power": "300",
|
||||
"fittings": {}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a": {
|
||||
"b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff": {
|
||||
"type": "system",
|
||||
"site_info": {
|
||||
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"site_name": "BKW",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
|
@ -49,12 +50,12 @@
|
|||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "4AD5NI2AC8WL4CFI",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "75",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"charging_power": 0,
|
||||
"power_unit": "W",
|
||||
"charging_status": "2",
|
||||
"status": "0",
|
||||
|
@ -70,7 +71,7 @@
|
|||
"power_unit": "W",
|
||||
"charging_status": "0",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "2023-12-28 18:53:27",
|
||||
"updated_time": "2024-02-22 01:16:32",
|
||||
"total_photovoltaic_power": "0",
|
||||
"total_output_power": "0.00",
|
||||
"display_set_power": false
|
||||
|
@ -78,7 +79,7 @@
|
|||
"retain_load": "300W",
|
||||
"updated_time": "01-01-0001 00:00:00",
|
||||
"power_site_type": 2,
|
||||
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"powerpanel_list": []
|
||||
}
|
||||
}
|
|
@ -5,13 +5,13 @@
|
|||
"main_switch": true,
|
||||
"device_list": [
|
||||
{
|
||||
"device_sn": "4AD5NI2AC8WL4CFI",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"device_name": "Solarbank E1600",
|
||||
"auto_upgrade": true,
|
||||
"auto_upgrade": false,
|
||||
"alias_name": "Solarbank E1600",
|
||||
"icon": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "cd0b5b19d1ee5958cc4ecfdd66a90910"
|
||||
"trace_id": "07e9f38f25a3f84ccdda95e6bde176d4"
|
||||
}
|
|
@ -4,10 +4,10 @@
|
|||
"data": {
|
||||
"data": [
|
||||
{
|
||||
"device_sn": "4AD5NI2AC8WL4CFI",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"product_code": "A17C0",
|
||||
"bt_ble_id": "EC:9E:58:A3:6A:94",
|
||||
"bt_ble_mac": "EC9E58A36A94",
|
||||
"bt_ble_id": "F6:8F:C0:40:4A:D7",
|
||||
"bt_ble_mac": "F68FC0404AD7",
|
||||
"device_name": "Solarbank E1600",
|
||||
"alias_name": "Solarbank E1600",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
|
@ -26,5 +26,5 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "46caca47d8629d532caac685b2167ffb"
|
||||
"trace_id": "9eebba7bcd2992dbccae0561cc0f3cae"
|
||||
}
|
|
@ -5,5 +5,5 @@
|
|||
"device_list": null,
|
||||
"guide_txt": ""
|
||||
},
|
||||
"trace_id": "c7f8cb6b0dad2af2effa6ab6ad1fb424"
|
||||
"trace_id": "bfc75c3882ba76d42cb51b32f0e3cc5a"
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"ota_complete_status": 2,
|
||||
"process_skip_type": 1,
|
||||
"solar_info": {
|
||||
"solar_sn": "",
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5140",
|
||||
"brand_id": "3a9930f5-74ef-4e41-a797-04e6b33d3f0f",
|
||||
"model_img": "https://public-aiot-ore-qa.s3.us-west-2.amazonaws.com/product/870cd979-95d8-4cc1-89c4-04a26511c9b1/picl_A1771_normal.png",
|
||||
"version": "",
|
||||
"ota_status": 1,
|
||||
"solar_model_name": "MI60 Microinverter"
|
||||
}
|
||||
},
|
||||
"trace_id": "7ea0ad4d351fe3696435e3a1e4a58f43"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": []
|
||||
},
|
||||
"trace_id": "fd7ded14b0e11d5d2ff8dfce2ace3faa"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"home_load_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"08:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":300,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"08:00\",\"end_time\":\"17:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":100,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"17:00\",\"end_time\":\"24:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":300,\"number\":1}],\"charge_priority\":0}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":0,\"default_charge_priority\":0,\"is_zero_output_tips\":1}",
|
||||
"current_home_load": "300W",
|
||||
"parallel_home_load": "",
|
||||
"parallel_display": false
|
||||
},
|
||||
"trace_id": "c73f8add28b4b6accd0ff213db4e9cab"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"param_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"08:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":300,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"08:00\",\"end_time\":\"17:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":100,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"17:00\",\"end_time\":\"24:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":300,\"number\":1}],\"charge_priority\":0}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":0,\"default_charge_priority\":0,\"is_zero_output_tips\":1}"
|
||||
},
|
||||
"trace_id": "d3babd61efdfadf1d298ed0f08da4d55"
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
"data": {
|
||||
"site_list": [
|
||||
{
|
||||
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"site_name": "BKW",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
|
@ -20,7 +20,7 @@
|
|||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "",
|
||||
"device_sn": "4AD5NI2AC8WL4CFI",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "75",
|
||||
|
@ -39,5 +39,5 @@
|
|||
],
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "2e647ef3c3bc8bdfe5e2f1f21d0cd410"
|
||||
"trace_id": "7ec26cd4e3ebac01c5bbceabab0b3ad5"
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"power_cutoff_data": [
|
||||
{
|
||||
"id": 1,
|
||||
"is_selected": 1,
|
||||
"output_cutoff_data": 10,
|
||||
"lowpower_input_data": 5,
|
||||
"input_cutoff_data": 10
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"is_selected": 0,
|
||||
"output_cutoff_data": 5,
|
||||
"lowpower_input_data": 4,
|
||||
"input_cutoff_data": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "688edd9aa7f63abf2ecd89cbcac79cdf"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"price": 0.4,
|
||||
"site_co2": 0,
|
||||
"site_price_unit": "\u20ac"
|
||||
},
|
||||
"trace_id": "6edea20b7d8ecdbebf9eff8339efd98b"
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"home_info": {
|
||||
"home_name": "Home",
|
||||
"home_img": "",
|
||||
"charging_power": "0.00",
|
||||
"power_unit": "W"
|
||||
},
|
||||
"solar_list": [],
|
||||
"pps_info": {
|
||||
"pps_list": [],
|
||||
"total_charging_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "",
|
||||
"pps_status": 0
|
||||
},
|
||||
"statistics": [
|
||||
{
|
||||
"type": "1",
|
||||
"total": "89.75",
|
||||
"unit": "kwh"
|
||||
},
|
||||
{
|
||||
"type": "2",
|
||||
"total": "89.48",
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"type": "3",
|
||||
"total": "35.90",
|
||||
"unit": "\u20ac"
|
||||
}
|
||||
],
|
||||
"topology_type": "1",
|
||||
"solarbank_info": {
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "75",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "2",
|
||||
"status": "0",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "0",
|
||||
"output_power": "0",
|
||||
"create_time": 1695392386,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"total_charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "0",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "2024-02-22 01:16:32",
|
||||
"total_photovoltaic_power": "0",
|
||||
"total_output_power": "0.00",
|
||||
"display_set_power": false
|
||||
},
|
||||
"retain_load": "300W",
|
||||
"updated_time": "01-01-0001 00:00:00",
|
||||
"power_site_type": 2,
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "ed1cf05df2ee38fe9cface257d7e0e35"
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_info": {
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"site_name": "BKW",
|
||||
"site_img": "",
|
||||
"device_type_list": null,
|
||||
"ms_type": 0,
|
||||
"power_site_type": 0,
|
||||
"is_allow_delete": false
|
||||
},
|
||||
"solar_list": [],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "560cc90e81ebe4dfda45ac4f295ca07a"
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
"data": {
|
||||
"site_list": [
|
||||
{
|
||||
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
|
||||
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
|
||||
"site_name": "BKW",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
|
@ -16,5 +16,5 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "f1ac7d6cee7a2432ea3e6d2dcaa3b6ad"
|
||||
"trace_id": "cda3bbcc760a9239d38076efacfefaea"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"brand_id": "3a9930f5-74ef-4e41-a797-04e6b33d3f0f",
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5140",
|
||||
"solar_sn": "",
|
||||
"solar_model_name": "MI60 Microinverter"
|
||||
},
|
||||
"trace_id": "c84fe77fee6a27a04f3dd5f50af91bea"
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "4AD5NI2AC8WL4CFI",
|
||||
"device_sn": "J19P1918S0BKY4EP",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
|
@ -25,5 +25,5 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "05cba7ba093e3e2abfaa4800f35fa7e0"
|
||||
"trace_id": "7f27c7c8daaadb4d12fa129de411499b"
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"wifi_info_list": [
|
||||
{
|
||||
"wifi_name": "wifi-network-1",
|
||||
"wifi_signal": "100"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "19d71d7c090ba105da53084fdca41baa"
|
||||
}
|
|
@ -0,0 +1,233 @@
|
|||
{
|
||||
"6TXY2KVEWX2UB78L": {
|
||||
"device_sn": "RBJX4XL3BQ8PWS1X",
|
||||
"type": "solarbank",
|
||||
"site_id": "7fe6ade4-f3eb-ba1f-d82f-1f3a7e4fee8a",
|
||||
"is_admin": true,
|
||||
"device_pn": "A17C0",
|
||||
"name": "Solarbank E1600",
|
||||
"battery_soc": "46",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"charging_status_desc": "bypass",
|
||||
"status": "1",
|
||||
"status_desc": "on",
|
||||
"wireless_type": "1",
|
||||
"input_power": "72",
|
||||
"output_power": "0",
|
||||
"set_output_power": "0",
|
||||
"bt_ble_mac": "0668D49E66AE",
|
||||
"alias": "SB2",
|
||||
"wifi_online": true,
|
||||
"charge": false,
|
||||
"bws_surplus": "0",
|
||||
"sw_version": "v1.5.6",
|
||||
"auto_upgrade": true,
|
||||
"wifi_name": "wifi-network-3",
|
||||
"wifi_signal": "98",
|
||||
"power_cutoff": 10,
|
||||
"solar_info": {
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5143",
|
||||
"solar_sn": "OTGYG8DGM1D3",
|
||||
"solar_model_name": "MI80 Microinverter(BLE)"
|
||||
},
|
||||
"schedule": {
|
||||
"ranges": [
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "00:00",
|
||||
"end_time": "07:30",
|
||||
"turn_on": true,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "07:30",
|
||||
"end_time": "09:30",
|
||||
"turn_on": true,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "09:30",
|
||||
"end_time": "17:30",
|
||||
"turn_on": false,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 100
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "17:30",
|
||||
"end_time": "24:00",
|
||||
"turn_on": false,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
}
|
||||
],
|
||||
"min_load": 100,
|
||||
"max_load": 800,
|
||||
"step": 0,
|
||||
"is_charge_priority": 1,
|
||||
"default_charge_priority": 80,
|
||||
"is_zero_output_tips": 0
|
||||
}
|
||||
},
|
||||
"WO42TA2RIXLX2WLZ": {
|
||||
"device_sn": "Y0VUVD54J4GI7PRS",
|
||||
"type": "solarbank",
|
||||
"site_id": "7fe6ade4-f3eb-ba1f-d82f-1f3a7e4fee8a",
|
||||
"is_admin": true,
|
||||
"device_pn": "A17C0",
|
||||
"name": "Solarbank E1600",
|
||||
"battery_soc": "52",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"charging_status_desc": "bypass",
|
||||
"status": "1",
|
||||
"status_desc": "on",
|
||||
"wireless_type": "1",
|
||||
"input_power": "72",
|
||||
"output_power": "0",
|
||||
"set_output_power": "0",
|
||||
"bt_ble_mac": "AC2D06D70E6B",
|
||||
"alias": "SB1",
|
||||
"wifi_online": true,
|
||||
"charge": false,
|
||||
"bws_surplus": "0",
|
||||
"sw_version": "v1.5.6",
|
||||
"auto_upgrade": true,
|
||||
"wifi_name": "wifi-network-3",
|
||||
"wifi_signal": "98",
|
||||
"power_cutoff": 10,
|
||||
"solar_info": {
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5143",
|
||||
"solar_sn": "OTGYG8DGM1D3",
|
||||
"solar_model_name": "MI80 Microinverter(BLE)"
|
||||
},
|
||||
"schedule": {
|
||||
"ranges": [
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "00:00",
|
||||
"end_time": "07:30",
|
||||
"turn_on": true,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "07:30",
|
||||
"end_time": "09:30",
|
||||
"turn_on": true,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "09:30",
|
||||
"end_time": "17:30",
|
||||
"turn_on": false,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 100
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "17:30",
|
||||
"end_time": "24:00",
|
||||
"turn_on": false,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
}
|
||||
],
|
||||
"min_load": 100,
|
||||
"max_load": 800,
|
||||
"step": 0,
|
||||
"is_charge_priority": 1,
|
||||
"default_charge_priority": 80,
|
||||
"is_zero_output_tips": 0
|
||||
}
|
||||
},
|
||||
"PK2UE3X006JF": {
|
||||
"device_sn": "OTGYG8DGM1D3",
|
||||
"type": "inverter",
|
||||
"site_id": "7fe6ade4-f3eb-ba1f-d82f-1f3a7e4fee8a",
|
||||
"is_admin": true,
|
||||
"name": "MI80 Microinverter(BLE)",
|
||||
"generate_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"status": "1",
|
||||
"status_desc": "on",
|
||||
"wireless_type": "2",
|
||||
"device_pn": "A5143",
|
||||
"bt_ble_mac": "9EBD418DD71B",
|
||||
"alias": "MI80 Microinverter(BLE)",
|
||||
"wifi_online": false,
|
||||
"wifi_name": "wifi-network-3",
|
||||
"charge": false,
|
||||
"bws_surplus": "0",
|
||||
"sw_version": "v0.0.1",
|
||||
"wifi_signal": "94"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"beddfef9-acaa-89de-f6c9-31fc9a499c65": {
|
||||
"site_info": {
|
||||
"site_id": "7fe6ade4-f3eb-ba1f-d82f-1f3a7e4fee8a",
|
||||
"site_name": "AnkerPrime",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
3,
|
||||
1
|
||||
],
|
||||
"ms_type": 1,
|
||||
"power_site_type": 2,
|
||||
"is_allow_delete": true
|
||||
},
|
||||
"site_admin": true,
|
||||
"home_info": {
|
||||
"home_name": "Home",
|
||||
"home_img": "",
|
||||
"charging_power": "0.00",
|
||||
"power_unit": "W"
|
||||
},
|
||||
"solar_list": [
|
||||
{
|
||||
"device_sn": "OTGYG8DGM1D3",
|
||||
"device_name": "MI80 Microinverter(BLE)",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/0f8e0ca7-dda9-4e70-940d-fe08e1fc89ea/picl_A5143_normal.png",
|
||||
"bind_site_status": "",
|
||||
"generate_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"status": "1",
|
||||
"wireless_type": "2",
|
||||
"device_pn": "A5143",
|
||||
"main_version": ""
|
||||
}
|
||||
],
|
||||
"pps_info": {
|
||||
"pps_list": [],
|
||||
"total_charging_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "",
|
||||
"pps_status": 0
|
||||
},
|
||||
"statistics": [
|
||||
{
|
||||
"type": "1",
|
||||
"total": "14.41",
|
||||
"unit": "kwh"
|
||||
},
|
||||
{
|
||||
"type": "2",
|
||||
"total": "14.36",
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"type": "3",
|
||||
"total": "4.61",
|
||||
"unit": "\u20ac"
|
||||
}
|
||||
],
|
||||
"topology_type": "1",
|
||||
"solarbank_info": {
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "RBJX4XL3BQ8PWS1X",
|
||||
"device_name": "SB2",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "46",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "72",
|
||||
"output_power": "0",
|
||||
"create_time": 1707039514,
|
||||
"set_load_power": "0"
|
||||
},
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "Y0VUVD54J4GI7PRS",
|
||||
"device_name": "SB1",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "52",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "72",
|
||||
"output_power": "0",
|
||||
"create_time": 1707130510,
|
||||
"set_load_power": "0"
|
||||
}
|
||||
],
|
||||
"total_charging_power": "144",
|
||||
"power_unit": "W",
|
||||
"charging_status": "0",
|
||||
"total_battery_power": "0.49",
|
||||
"updated_time": "2024-02-22 13:17:30",
|
||||
"total_photovoltaic_power": "144",
|
||||
"total_output_power": "0.00",
|
||||
"display_set_power": true
|
||||
},
|
||||
"retain_load": "0W",
|
||||
"updated_time": "01-01-0001 00:00:00",
|
||||
"power_site_type": 2,
|
||||
"site_id": "7fe6ade4-f3eb-ba1f-d82f-1f3a7e4fee8a",
|
||||
"powerpanel_list": []
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"main_switch": true,
|
||||
"device_list": [
|
||||
{
|
||||
"device_sn": "WO42TA2RIXLX2WLZ",
|
||||
"device_name": "Solarbank E1600",
|
||||
"auto_upgrade": true,
|
||||
"alias_name": "SB1",
|
||||
"icon": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png"
|
||||
},
|
||||
{
|
||||
"device_sn": "6TXY2KVEWX2UB78L",
|
||||
"device_name": "Solarbank E1600",
|
||||
"auto_upgrade": true,
|
||||
"alias_name": "SB2",
|
||||
"icon": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "0bd61d8eae05f2bdc7f6bda5ee615d2c"
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": [
|
||||
{
|
||||
"device_sn": "PK2UE3X006JF",
|
||||
"product_code": "A5143",
|
||||
"bt_ble_id": "140FBCB617F0",
|
||||
"bt_ble_mac": "140FBCB617F0",
|
||||
"device_name": "MI80 Microinverter(BLE)",
|
||||
"alias_name": "MI80 Microinverter(BLE)",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/0f8e0ca7-dda9-4e70-940d-fe08e1fc89ea/picl_A5143_normal.png",
|
||||
"link_time": 1707581381737,
|
||||
"wifi_online": false,
|
||||
"wifi_name": "wifi-network-1",
|
||||
"relate_type": [
|
||||
"ble"
|
||||
],
|
||||
"charge": false,
|
||||
"bws_surplus": 0,
|
||||
"device_sw_version": "v0.0.1",
|
||||
"has_manual": false,
|
||||
"hes_data": null
|
||||
},
|
||||
{
|
||||
"device_sn": "WO42TA2RIXLX2WLZ",
|
||||
"product_code": "A17C0",
|
||||
"bt_ble_id": "DDCEDE2CA2D880D6B3E9CF5E01BEBAC0",
|
||||
"bt_ble_mac": "4BDB6A35CFFD",
|
||||
"device_name": "Solarbank E1600",
|
||||
"alias_name": "SB1",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"link_time": 1707039543652,
|
||||
"wifi_online": true,
|
||||
"wifi_name": "",
|
||||
"relate_type": [
|
||||
"ble",
|
||||
"wifi"
|
||||
],
|
||||
"charge": false,
|
||||
"bws_surplus": 0,
|
||||
"device_sw_version": "v1.5.6",
|
||||
"has_manual": false,
|
||||
"hes_data": null
|
||||
},
|
||||
{
|
||||
"device_sn": "6TXY2KVEWX2UB78L",
|
||||
"product_code": "A17C0",
|
||||
"bt_ble_id": "728D453D7CA8D5D9AFEF1D89BBAE7FED",
|
||||
"bt_ble_mac": "EE3BFBD6DB9B",
|
||||
"device_name": "Solarbank E1600",
|
||||
"alias_name": "SB2",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"link_time": 1707039423762,
|
||||
"wifi_online": true,
|
||||
"wifi_name": "",
|
||||
"relate_type": [
|
||||
"ble",
|
||||
"wifi"
|
||||
],
|
||||
"charge": false,
|
||||
"bws_surplus": 0,
|
||||
"device_sw_version": "v1.5.6",
|
||||
"has_manual": false,
|
||||
"hes_data": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "4cd860c899ec772afefdefd1e042daf9"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"device_list": null,
|
||||
"guide_txt": ""
|
||||
},
|
||||
"trace_id": "29b2ae3cb302fb3a30bfa52f0d8f1bcd"
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"ota_complete_status": 2,
|
||||
"process_skip_type": 2,
|
||||
"solar_info": {
|
||||
"solar_sn": "PK2UE3X006JF",
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5143",
|
||||
"brand_id": "3a9930f5-74ef-4e41-a797-04e6b33d3f0f",
|
||||
"model_img": "https://public-aiot-ore-qa.s3.us-west-2.amazonaws.com/anker-power/public/product/2023/09/18/iot-admin/77Y3rnoAVmzTQrSr/picl_A17C0FW_guide_SN_A5143.png",
|
||||
"version": "Anker EZ1 1.0.0_b",
|
||||
"ota_status": 3,
|
||||
"solar_model_name": "MI80 Microinverter(BLE)"
|
||||
}
|
||||
},
|
||||
"trace_id": "6e54269c6b7c6cbf2ec7b80bc83eedd5"
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"ota_complete_status": 2,
|
||||
"process_skip_type": 2,
|
||||
"solar_info": {
|
||||
"solar_sn": "PK2UE3X006JF",
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5143",
|
||||
"brand_id": "3a9930f5-74ef-4e41-a797-04e6b33d3f0f",
|
||||
"model_img": "https://public-aiot-ore-qa.s3.us-west-2.amazonaws.com/anker-power/public/product/2023/09/18/iot-admin/77Y3rnoAVmzTQrSr/picl_A17C0FW_guide_SN_A5143.png",
|
||||
"version": "Anker EZ1 1.0.0_b",
|
||||
"ota_status": 3,
|
||||
"solar_model_name": "MI80 Microinverter(BLE)"
|
||||
}
|
||||
},
|
||||
"trace_id": "e09abf5e2f1bd1001f9b978ae6bccba8"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": []
|
||||
},
|
||||
"trace_id": "2bf9a0fe16ccb4a9f5ee495d3db2e0ae"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": []
|
||||
},
|
||||
"trace_id": "b0eaff6d759bbfd56dd2f2421b6a9e13"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": []
|
||||
},
|
||||
"trace_id": "aeb578aaee66bb30a20b1a6ab104cdfc"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"home_load_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"07:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"07:30\",\"end_time\":\"09:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"09:30\",\"end_time\":\"17:30\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":100},{\"id\":0,\"start_time\":\"17:30\",\"end_time\":\"24:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":1,\"default_charge_priority\":80,\"is_zero_output_tips\":0}",
|
||||
"current_home_load": "0W",
|
||||
"parallel_home_load": "0W",
|
||||
"parallel_display": true
|
||||
},
|
||||
"trace_id": "6c51fc6b854d0c6a9fcebbc147bbb7dc"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"home_load_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"07:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"07:30\",\"end_time\":\"09:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"09:30\",\"end_time\":\"17:30\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":100},{\"id\":0,\"start_time\":\"17:30\",\"end_time\":\"24:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":1,\"default_charge_priority\":80,\"is_zero_output_tips\":0}",
|
||||
"current_home_load": "0W",
|
||||
"parallel_home_load": "0W",
|
||||
"parallel_display": true
|
||||
},
|
||||
"trace_id": "8d53eee0f4829267f0adcb7e097508cc"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"home_load_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"07:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"07:30\",\"end_time\":\"09:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"09:30\",\"end_time\":\"17:30\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":100},{\"id\":0,\"start_time\":\"17:30\",\"end_time\":\"24:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":1,\"default_charge_priority\":80,\"is_zero_output_tips\":0}",
|
||||
"current_home_load": "0W",
|
||||
"parallel_home_load": "0W",
|
||||
"parallel_display": true
|
||||
},
|
||||
"trace_id": "47cf7a4eaec4abfbf12ffebf1d2dbbeb"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"param_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"07:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"07:30\",\"end_time\":\"09:30\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"09:30\",\"end_time\":\"17:30\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":100},{\"id\":0,\"start_time\":\"17:30\",\"end_time\":\"24:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":1,\"default_charge_priority\":80,\"is_zero_output_tips\":0}"
|
||||
},
|
||||
"trace_id": "40a3cdc83c5e79ebb2eb5d91be3dade2"
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_list": [
|
||||
{
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"site_name": "AnkerPrime",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
3,
|
||||
1
|
||||
],
|
||||
"ms_type": 0,
|
||||
"power_site_type": 0,
|
||||
"is_allow_delete": false
|
||||
}
|
||||
],
|
||||
"solar_list": [
|
||||
{
|
||||
"device_sn": "PK2UE3X006JF",
|
||||
"device_name": "MI80 Microinverter(BLE)",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/0f8e0ca7-dda9-4e70-940d-fe08e1fc89ea/picl_A5143_normal.png",
|
||||
"bind_site_status": "1",
|
||||
"generate_power": "",
|
||||
"power_unit": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"device_pn": "",
|
||||
"main_version": ""
|
||||
}
|
||||
],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "",
|
||||
"device_sn": "6TXY2KVEWX2UB78L",
|
||||
"device_name": "SB2",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "46",
|
||||
"bind_site_status": "1",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
},
|
||||
{
|
||||
"device_pn": "",
|
||||
"device_sn": "WO42TA2RIXLX2WLZ",
|
||||
"device_name": "SB1",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "52",
|
||||
"bind_site_status": "1",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "24f42c6fbdabc4baaecefe560cf6ef77"
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"power_cutoff_data": [
|
||||
{
|
||||
"id": 1,
|
||||
"is_selected": 1,
|
||||
"output_cutoff_data": 10,
|
||||
"lowpower_input_data": 5,
|
||||
"input_cutoff_data": 10
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"is_selected": 0,
|
||||
"output_cutoff_data": 5,
|
||||
"lowpower_input_data": 4,
|
||||
"input_cutoff_data": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "dd8ffe41b2e1ce4b50ed82be55c2efc7"
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"power_cutoff_data": [
|
||||
{
|
||||
"id": 1,
|
||||
"is_selected": 1,
|
||||
"output_cutoff_data": 10,
|
||||
"lowpower_input_data": 5,
|
||||
"input_cutoff_data": 10
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"is_selected": 0,
|
||||
"output_cutoff_data": 5,
|
||||
"lowpower_input_data": 4,
|
||||
"input_cutoff_data": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "e3db7c9ca2468be386c9e7b0a9dbaefb"
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"power_cutoff_data": [
|
||||
{
|
||||
"id": 1,
|
||||
"is_selected": 1,
|
||||
"output_cutoff_data": 10,
|
||||
"lowpower_input_data": 5,
|
||||
"input_cutoff_data": 10
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"is_selected": 0,
|
||||
"output_cutoff_data": 5,
|
||||
"lowpower_input_data": 4,
|
||||
"input_cutoff_data": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "97ea2f4895eea97bd61abe8b4ca53dde"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"price": 0.32,
|
||||
"site_co2": 0,
|
||||
"site_price_unit": "\u20ac"
|
||||
},
|
||||
"trace_id": "831bbfcbefdb411bece398bdaa4ebdae"
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"home_info": {
|
||||
"home_name": "Home",
|
||||
"home_img": "",
|
||||
"charging_power": "0.00",
|
||||
"power_unit": "W"
|
||||
},
|
||||
"solar_list": [
|
||||
{
|
||||
"device_sn": "PK2UE3X006JF",
|
||||
"device_name": "MI80 Microinverter(BLE)",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/0f8e0ca7-dda9-4e70-940d-fe08e1fc89ea/picl_A5143_normal.png",
|
||||
"bind_site_status": "",
|
||||
"generate_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"status": "1",
|
||||
"wireless_type": "2",
|
||||
"device_pn": "A5143",
|
||||
"main_version": ""
|
||||
}
|
||||
],
|
||||
"pps_info": {
|
||||
"pps_list": [],
|
||||
"total_charging_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "",
|
||||
"pps_status": 0
|
||||
},
|
||||
"statistics": [
|
||||
{
|
||||
"type": "1",
|
||||
"total": "14.41",
|
||||
"unit": "kwh"
|
||||
},
|
||||
{
|
||||
"type": "2",
|
||||
"total": "14.36",
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"type": "3",
|
||||
"total": "4.61",
|
||||
"unit": "\u20ac"
|
||||
}
|
||||
],
|
||||
"topology_type": "1",
|
||||
"solarbank_info": {
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "6TXY2KVEWX2UB78L",
|
||||
"device_name": "SB2",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "46",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "72",
|
||||
"output_power": "0",
|
||||
"create_time": 1707039514,
|
||||
"set_load_power": "0"
|
||||
},
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "WO42TA2RIXLX2WLZ",
|
||||
"device_name": "SB1",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "52",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "72",
|
||||
"output_power": "0",
|
||||
"create_time": 1707130510,
|
||||
"set_load_power": "0"
|
||||
}
|
||||
],
|
||||
"total_charging_power": "144",
|
||||
"power_unit": "W",
|
||||
"charging_status": "0",
|
||||
"total_battery_power": "0.49",
|
||||
"updated_time": "2024-02-22 13:17:30",
|
||||
"total_photovoltaic_power": "144",
|
||||
"total_output_power": "0.00",
|
||||
"display_set_power": true
|
||||
},
|
||||
"retain_load": "0W",
|
||||
"updated_time": "01-01-0001 00:00:00",
|
||||
"power_site_type": 2,
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "ffae31c7dbcfa27ecaaecf30a6badb92"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
SETUP:
|
||||
Anker MI 80 Inverter
|
||||
2x solarbank e1600
|
||||
1 System in Anker App
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_info": {
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"site_name": "AnkerPrime",
|
||||
"site_img": "",
|
||||
"device_type_list": null,
|
||||
"ms_type": 0,
|
||||
"power_site_type": 0,
|
||||
"is_allow_delete": false
|
||||
},
|
||||
"solar_list": [
|
||||
{
|
||||
"device_sn": "PK2UE3X006JF",
|
||||
"device_name": "MI80 Microinverter(BLE)",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/0f8e0ca7-dda9-4e70-940d-fe08e1fc89ea/picl_A5143_normal.png",
|
||||
"bind_site_status": "",
|
||||
"generate_power": "",
|
||||
"power_unit": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"device_pn": "",
|
||||
"main_version": ""
|
||||
}
|
||||
],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "6TXY2KVEWX2UB78L",
|
||||
"device_name": "SB2",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
},
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "WO42TA2RIXLX2WLZ",
|
||||
"device_name": "SB1",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "bc44b7bcdfadcbec2fbe2b04ff8deb6d"
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_list": [
|
||||
{
|
||||
"site_id": "beddfef9-acaa-89de-f6c9-31fc9a499c65",
|
||||
"site_name": "AnkerPrime",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
3,
|
||||
1
|
||||
],
|
||||
"ms_type": 1,
|
||||
"power_site_type": 2,
|
||||
"is_allow_delete": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "68740a3b7bf3df0fc3d2fa6b5fe2ae8b"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"brand_id": "3a9930f5-74ef-4e41-a797-04e6b33d3f0f",
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5143",
|
||||
"solar_sn": "PK2UE3X006JF",
|
||||
"solar_model_name": "MI80 Microinverter(BLE)"
|
||||
},
|
||||
"trace_id": "dadff22c3df0c07ee33cbecf5ef6f42b"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"brand_id": "3a9930f5-74ef-4e41-a797-04e6b33d3f0f",
|
||||
"solar_brand": "ANKER",
|
||||
"solar_model": "A5143",
|
||||
"solar_sn": "PK2UE3X006JF",
|
||||
"solar_model_name": "MI80 Microinverter(BLE)"
|
||||
},
|
||||
"trace_id": "f77669a3caf42517c1e202f0adf6491d"
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"solar_list": [
|
||||
{
|
||||
"device_sn": "PK2UE3X006JF",
|
||||
"device_name": "MI80 Microinverter(BLE)",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/0f8e0ca7-dda9-4e70-940d-fe08e1fc89ea/picl_A5143_normal.png",
|
||||
"bind_site_status": "1",
|
||||
"generate_power": "",
|
||||
"power_unit": "",
|
||||
"status": "0",
|
||||
"wireless_type": "2",
|
||||
"device_pn": "A5143",
|
||||
"main_version": ""
|
||||
}
|
||||
],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "WO42TA2RIXLX2WLZ",
|
||||
"device_name": "SB1",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "1",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
},
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "6TXY2KVEWX2UB78L",
|
||||
"device_name": "SB2",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "1",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "ec59d13ed6356dfca2c0d03cbaad9a6f"
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"wifi_info_list": [
|
||||
{
|
||||
"wifi_name": "wifi-network-1",
|
||||
"wifi_signal": "98"
|
||||
},
|
||||
{
|
||||
"wifi_name": "wifi-network-1",
|
||||
"wifi_signal": "94"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "5df3a423dae8ba2abcc75f4abea92d65"
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
{
|
||||
"SE0QPSV3WXDDXN8G": {
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"type": "solarbank",
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"is_admin": true,
|
||||
"device_pn": "A17C0",
|
||||
"name": "Solarbank E1600",
|
||||
"battery_soc": "56",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"charging_status_desc": "bypass",
|
||||
"status": "1",
|
||||
"status_desc": "on",
|
||||
"wireless_type": "1",
|
||||
"input_power": "267",
|
||||
"output_power": "0",
|
||||
"set_output_power": "",
|
||||
"bt_ble_mac": "EA7AAD9B60BD",
|
||||
"alias": "Solarbank E1600",
|
||||
"wifi_online": true,
|
||||
"charge": false,
|
||||
"bws_surplus": "0",
|
||||
"sw_version": "v1.5.6",
|
||||
"auto_upgrade": false,
|
||||
"wifi_name": "wifi-network-1",
|
||||
"wifi_signal": "36",
|
||||
"power_cutoff": 10,
|
||||
"solar_info": {
|
||||
"solar_brand": "Deye",
|
||||
"solar_model": "SUN600G3-EU-230",
|
||||
"solar_sn": "",
|
||||
"solar_model_name": "SUN600G3-EU-230"
|
||||
},
|
||||
"schedule": {
|
||||
"ranges": [
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "00:00",
|
||||
"end_time": "07:00",
|
||||
"turn_on": true,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 100,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "07:00",
|
||||
"end_time": "20:00",
|
||||
"turn_on": false,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 150,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
},
|
||||
{
|
||||
"id": 0,
|
||||
"start_time": "20:00",
|
||||
"end_time": "24:00",
|
||||
"turn_on": true,
|
||||
"appliance_loads": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Benutzerdefiniert",
|
||||
"power": 100,
|
||||
"number": 1
|
||||
}
|
||||
],
|
||||
"charge_priority": 80
|
||||
}
|
||||
],
|
||||
"min_load": 150,
|
||||
"max_load": 800,
|
||||
"step": 0,
|
||||
"is_charge_priority": 0,
|
||||
"default_charge_priority": 0,
|
||||
"is_zero_output_tips": 0
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"5c345692-b73f-8ce8-a9fd-b7928c5fa51d": {
|
||||
"site_info": {
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"site_name": "Anker Solix E1600",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
3
|
||||
],
|
||||
"ms_type": 1,
|
||||
"power_site_type": 2,
|
||||
"is_allow_delete": true
|
||||
},
|
||||
"site_admin": true,
|
||||
"home_info": {
|
||||
"home_name": "Home",
|
||||
"home_img": "",
|
||||
"charging_power": "0.00",
|
||||
"power_unit": "W"
|
||||
},
|
||||
"solar_list": [],
|
||||
"pps_info": {
|
||||
"pps_list": [],
|
||||
"total_charging_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "",
|
||||
"pps_status": 0
|
||||
},
|
||||
"statistics": [
|
||||
{
|
||||
"type": "1",
|
||||
"total": "75.63",
|
||||
"unit": "kwh"
|
||||
},
|
||||
{
|
||||
"type": "2",
|
||||
"total": "75.41",
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"type": "3",
|
||||
"total": "28.74",
|
||||
"unit": "\u20ac"
|
||||
}
|
||||
],
|
||||
"topology_type": "1",
|
||||
"solarbank_info": {
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "56",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "267",
|
||||
"output_power": "0",
|
||||
"create_time": 1695394124,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"total_charging_power": "267",
|
||||
"power_unit": "W",
|
||||
"charging_status": "0",
|
||||
"total_battery_power": "0.56",
|
||||
"updated_time": "2024-02-22 14:42:12",
|
||||
"total_photovoltaic_power": "267",
|
||||
"total_output_power": "0.00",
|
||||
"display_set_power": false
|
||||
},
|
||||
"retain_load": "0W",
|
||||
"updated_time": "01-01-0001 00:00:00",
|
||||
"power_site_type": 2,
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"powerpanel_list": []
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"main_switch": false,
|
||||
"device_list": [
|
||||
{
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"device_name": "Solarbank E1600",
|
||||
"auto_upgrade": false,
|
||||
"alias_name": "Solarbank E1600",
|
||||
"icon": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "50f4906ee2dedf2d982ec68fbde09173"
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": [
|
||||
{
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"product_code": "A17C0",
|
||||
"bt_ble_id": "EA:7A:AD:9B:60:BD",
|
||||
"bt_ble_mac": "EA7AAD9B60BD",
|
||||
"device_name": "Solarbank E1600",
|
||||
"alias_name": "Solarbank E1600",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"link_time": 1695394038705,
|
||||
"wifi_online": true,
|
||||
"wifi_name": "",
|
||||
"relate_type": [
|
||||
"ble",
|
||||
"wifi"
|
||||
],
|
||||
"charge": false,
|
||||
"bws_surplus": 0,
|
||||
"device_sw_version": "v1.5.6",
|
||||
"has_manual": false,
|
||||
"hes_data": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "a1a461ed0ea2bb9ec79ecab2347e97f9"
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"device_list": null,
|
||||
"guide_txt": ""
|
||||
},
|
||||
"trace_id": "e28b26fe8dccc7f40bdfbc79148eddcd"
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"ota_complete_status": 2,
|
||||
"process_skip_type": 1,
|
||||
"solar_info": {
|
||||
"solar_sn": "",
|
||||
"solar_brand": "Deye",
|
||||
"solar_model": "SUN600G3-EU-230",
|
||||
"brand_id": "227fb692-1e9e-439f-aadb-40c9144f6996",
|
||||
"model_img": "",
|
||||
"version": "",
|
||||
"ota_status": 1,
|
||||
"solar_model_name": "SUN600G3-EU-230"
|
||||
}
|
||||
},
|
||||
"trace_id": "dccd78ba3fb99c6e2bab49f0510ce87e"
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"data": [
|
||||
{
|
||||
"device_sn": "ZDL32D6A3HKXUTN1",
|
||||
"product_code": "A17Y0",
|
||||
"device_name": "E1600 0W Output Switch",
|
||||
"alias_name": "E1600 0W Output Switch",
|
||||
"img_url": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/2024/01/10/iot-admin/EPBsJ3a5JyMGqA1j/picl_A17Y0_normal.png",
|
||||
"bt_ble_id": "",
|
||||
"bt_ble_mac": "FC1CEA253CDB",
|
||||
"link_time": 1707127936
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "055aeafc5fbbfabfedbf2bbcd254ede3"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"home_load_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"07:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":100,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"07:00\",\"end_time\":\"20:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"20:00\",\"end_time\":\"24:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":100,\"number\":1}],\"charge_priority\":80}],\"min_load\":150,\"max_load\":800,\"step\":0,\"is_charge_priority\":0,\"default_charge_priority\":0,\"is_zero_output_tips\":0}",
|
||||
"current_home_load": "0W",
|
||||
"parallel_home_load": "",
|
||||
"parallel_display": false
|
||||
},
|
||||
"trace_id": "e2bc02ad278c764fbe1eb1c0b15f06df"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"param_data": "{\"ranges\":[{\"id\":0,\"start_time\":\"00:00\",\"end_time\":\"07:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":100,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"07:00\",\"end_time\":\"20:00\",\"turn_on\":false,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":150,\"number\":1}],\"charge_priority\":80},{\"id\":0,\"start_time\":\"20:00\",\"end_time\":\"24:00\",\"turn_on\":true,\"appliance_loads\":[{\"id\":0,\"name\":\"Benutzerdefiniert\",\"power\":100,\"number\":1}],\"charge_priority\":80}],\"min_load\":150,\"max_load\":800,\"step\":0,\"is_charge_priority\":0,\"default_charge_priority\":0,\"is_zero_output_tips\":0}"
|
||||
},
|
||||
"trace_id": "c1de0c0ec83ff687a25f6d8ebcf5efaf"
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_list": [
|
||||
{
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"site_name": "Anker Solix E1600",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
3
|
||||
],
|
||||
"ms_type": 0,
|
||||
"power_site_type": 0,
|
||||
"is_allow_delete": false
|
||||
}
|
||||
],
|
||||
"solar_list": [],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "",
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "56",
|
||||
"bind_site_status": "1",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "7cbb4ed8eded8785f5dc5066ab28fe00"
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"power_cutoff_data": [
|
||||
{
|
||||
"id": 1,
|
||||
"is_selected": 1,
|
||||
"output_cutoff_data": 10,
|
||||
"lowpower_input_data": 5,
|
||||
"input_cutoff_data": 10
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"is_selected": 0,
|
||||
"output_cutoff_data": 5,
|
||||
"lowpower_input_data": 4,
|
||||
"input_cutoff_data": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "809b4800aa50eca5f89dcfede689dea8"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"price": 0.38,
|
||||
"site_co2": 0,
|
||||
"site_price_unit": "\u20ac"
|
||||
},
|
||||
"trace_id": "aafbf25dfbccbb7cdd676fba2a623151"
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"home_info": {
|
||||
"home_name": "Home",
|
||||
"home_img": "",
|
||||
"charging_power": "0.00",
|
||||
"power_unit": "W"
|
||||
},
|
||||
"solar_list": [],
|
||||
"pps_info": {
|
||||
"pps_list": [],
|
||||
"total_charging_power": "0.00",
|
||||
"power_unit": "W",
|
||||
"total_battery_power": "0.00",
|
||||
"updated_time": "",
|
||||
"pps_status": 0
|
||||
},
|
||||
"statistics": [
|
||||
{
|
||||
"type": "1",
|
||||
"total": "75.63",
|
||||
"unit": "kwh"
|
||||
},
|
||||
{
|
||||
"type": "2",
|
||||
"total": "75.41",
|
||||
"unit": "kg"
|
||||
},
|
||||
{
|
||||
"type": "3",
|
||||
"total": "28.74",
|
||||
"unit": "\u20ac"
|
||||
}
|
||||
],
|
||||
"topology_type": "1",
|
||||
"solarbank_info": {
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "56",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "0",
|
||||
"power_unit": "W",
|
||||
"charging_status": "3",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "267",
|
||||
"output_power": "0",
|
||||
"create_time": 1695394124,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"total_charging_power": "267",
|
||||
"power_unit": "W",
|
||||
"charging_status": "0",
|
||||
"total_battery_power": "0.56",
|
||||
"updated_time": "2024-02-22 14:42:12",
|
||||
"total_photovoltaic_power": "267",
|
||||
"total_output_power": "0.00",
|
||||
"display_set_power": false
|
||||
},
|
||||
"retain_load": "0W",
|
||||
"updated_time": "01-01-0001 00:00:00",
|
||||
"power_site_type": 2,
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "6ebdaaae952e62bba128dfffb4f2c86d"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
SETUP:
|
||||
1x solarbank e1600
|
||||
1 x 0W Switch
|
||||
1 System in Anker App
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_info": {
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"site_name": "Anker Solix E1600",
|
||||
"site_img": "",
|
||||
"device_type_list": null,
|
||||
"ms_type": 0,
|
||||
"power_site_type": 0,
|
||||
"is_allow_delete": false
|
||||
},
|
||||
"solar_list": [],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "",
|
||||
"wireless_type": "",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
],
|
||||
"powerpanel_list": []
|
||||
},
|
||||
"trace_id": "f70bffa4fbd02ca1f9e13c88b5f1af90"
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"site_list": [
|
||||
{
|
||||
"site_id": "5c345692-b73f-8ce8-a9fd-b7928c5fa51d",
|
||||
"site_name": "Anker Solix E1600",
|
||||
"site_img": "",
|
||||
"device_type_list": [
|
||||
3
|
||||
],
|
||||
"ms_type": 1,
|
||||
"power_site_type": 2,
|
||||
"is_allow_delete": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "10cdf7797cbb2e7c17b3bdd5306dfb2f"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"brand_id": "227fb692-1e9e-439f-aadb-40c9144f6996",
|
||||
"solar_brand": "Deye",
|
||||
"solar_model": "SUN600G3-EU-230",
|
||||
"solar_sn": "",
|
||||
"solar_model_name": "SUN600G3-EU-230"
|
||||
},
|
||||
"trace_id": "e8c19e9df57ed9b2c95de3d38acd9bc0"
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"solar_list": [],
|
||||
"pps_list": [],
|
||||
"solarbank_list": [
|
||||
{
|
||||
"device_pn": "A17C0",
|
||||
"device_sn": "SE0QPSV3WXDDXN8G",
|
||||
"device_name": "Solarbank E1600",
|
||||
"device_img": "https://public-aiot-fra-prod.s3.dualstack.eu-central-1.amazonaws.com/anker-power/public/product/anker-power/e9478c2d-e665-4d84-95d7-dd4844f82055/20230719-144818.png",
|
||||
"battery_power": "",
|
||||
"bind_site_status": "1",
|
||||
"charging_power": "",
|
||||
"power_unit": "",
|
||||
"charging_status": "",
|
||||
"status": "1",
|
||||
"wireless_type": "1",
|
||||
"main_version": "",
|
||||
"photovoltaic_power": "",
|
||||
"output_power": "",
|
||||
"create_time": 0,
|
||||
"set_load_power": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "f22ddac5d4803fb09939e1f7be2dd6bb"
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"code": 0,
|
||||
"msg": "success!",
|
||||
"data": {
|
||||
"wifi_info_list": [
|
||||
{
|
||||
"wifi_name": "wifi-network-1",
|
||||
"wifi_signal": "36"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trace_id": "f378d2627ad09a3b25c87cbd497cb5e7"
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "Anker-Solix-Api"
|
||||
version = "1.4.0"
|
||||
version = "1.5.0"
|
||||
description = "Python library for Anker Solix Power devices (Solarbank, Inverter etc)"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.11"
|
||||
|
|
|
@ -14,18 +14,17 @@ the Anker App since it will be kicked out on each refresh.
|
|||
""" # noqa: D205
|
||||
|
||||
import asyncio
|
||||
from datetime import datetime, timedelta
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from aiohttp import ClientSession
|
||||
from aiohttp.client_exceptions import ClientError
|
||||
|
||||
import common
|
||||
from api import api, errors
|
||||
import common
|
||||
|
||||
_LOGGER: logging.Logger = logging.getLogger(__name__)
|
||||
_LOGGER.addHandler(logging.StreamHandler(sys.stdout))
|
||||
|
@ -59,7 +58,7 @@ async def main() -> ( # noqa: C901 # pylint: disable=too-many-locals,too-many-b
|
|||
None
|
||||
):
|
||||
"""Run Main routine to start Solarbank monitor in a loop."""
|
||||
global REFRESH # pylint: disable=global-statement
|
||||
global REFRESH # pylint: disable=global-statement # noqa: PLW0603
|
||||
CONSOLE.info("Solarbank Monitor:")
|
||||
# get list of possible example and export folders to test the monitor against
|
||||
exampleslist = get_subfolders(
|
||||
|
@ -186,6 +185,7 @@ async def main() -> ( # noqa: C901 # pylint: disable=too-many-locals,too-many-b
|
|||
f"{'Solar Power':<{col1}}: {dev.get('input_power',''):>3} {unit:<{col2-4}} Charge Power: {dev.get('charging_power',''):>3} {unit}"
|
||||
)
|
||||
preset = dev.get("set_output_power") or "---"
|
||||
site_preset = dev.get("set_system_output_power") or "---"
|
||||
CONSOLE.info(
|
||||
f"{'Output Power':<{col1}}: {dev.get('output_power',''):>3} {unit:<{col2-4}} (Output Preset: {preset:>3} {unit})"
|
||||
)
|
||||
|
@ -197,7 +197,7 @@ async def main() -> ( # noqa: C901 # pylint: disable=too-many-locals,too-many-b
|
|||
# data = schedules.get(sn,{})
|
||||
data = dev.get("schedule", {})
|
||||
CONSOLE.info(
|
||||
f"{'Schedule':<{col1}}: {now.strftime('%H:%M UTC %z'):<{col2}} (Current Preset: {(data.get('current_home_load','---')).replace('W','')} W)"
|
||||
f"{'Schedule':<{col1}}: {now.strftime('%H:%M UTC %z'):<{col2}} (Current Preset: {str(site_preset).replace('W','')} W)"
|
||||
)
|
||||
CONSOLE.info(
|
||||
f"{'ID':<{t1}} {'Start':<{t2}} {'End':<{t3}} {'Discharge':<{t4}} {'Output':<{t5}} {'ChargePrio':<{t6}}"
|
||||
|
|
Loading…
Reference in New Issue