- Findings in system exports #55

-  Include battery capacity and energy into solarbank_monitor #56
-  Bug in Solar power/Charge power #48
This commit is contained in:
Thomas Luther 2024-02-27 11:02:37 +01:00
parent 76a3db6380
commit b3835dc007
77 changed files with 245 additions and 1943 deletions

View File

@ -459,10 +459,12 @@ class AnkerSolixApi:
device.update({"is_admin": True})
elif isAdmin is False and device.get("is_admin") is None:
device.update({"is_admin": False})
calc_capacity = False # Flag whether capacity may need recalculation
for key, value in devData.items():
if key in ["product_code", "device_pn"] and value:
device.update({"device_pn": str(value)})
elif key in ["device_name"] and value:
calc_capacity = value != device.get("name","")
device.update({"name": str(value)})
elif key in ["alias_name"] and value:
device.update({"alias": str(value)})
@ -482,20 +484,6 @@ class AnkerSolixApi:
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"]:
@ -583,6 +571,24 @@ class AnkerSolixApi:
elif key in ["generate_power"]:
device.update({"generate_power": str(value)})
# generate extra values when certain conditions are met
if (key in ["battery_power"] or calc_capacity) and device.get("type") == SolixDeviceType.SOLARBANK.value:
# generate battery values when soc updated or device name changed
# Derive battery capacity in Wh from latest solarbank name and soc
cap = (device.get("name", "") or devData.get("device_name","")).replace("Solarbank E", "")
soc = device.get("battery_soc", "") or devData.get("battery_power","")
# Calculate remaining energy in Wh and add values
if cap and soc and str(cap).isdigit() and str(soc).isdigit:
device.update(
{
"battery_capacity": str(cap),
"battery_energy": str(
int(int(cap) * int(soc) / 100)
),
}
)
self.devices.update({str(sn): device})
return sn
@ -881,6 +887,11 @@ class AnkerSolixApi:
sb_charges = {}
sb_list = (mysite.get("solarbank_info", {})).get("solarbank_list", [])
for solarbank in sb_list:
# work around for device_name which is actually the device_alias in scene info
if "device_name" in solarbank:
# modify only a copy of the device dict to prevent changing the scene info dict
solarbank = dict(solarbank).copy()
solarbank.update({"alias_name": solarbank.pop("device_name")})
# 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):
@ -922,6 +933,11 @@ class AnkerSolixApi:
}
)
for pps in (mysite.get("pps_info", {})).get("pps_list", []):
# work around for device_name which is actually the device_alias in scene info
if "device_name" in pps:
# modify only a copy of the device dict to prevent changing the scene info dict
pps = dict(pps).copy()
pps.update({"alias_name": pps.pop("device_name")})
sn = self._update_dev(
pps,
devType=SolixDeviceType.PPS.value,
@ -931,6 +947,11 @@ class AnkerSolixApi:
if sn:
act_devices.append(sn)
for solar in mysite.get("solar_list", []):
# work around for device_name which is actually the device_alias in scene info
if "device_name" in solar:
# modify only a copy of the device dict to prevent changing the scene info dict
solar = dict(solar).copy()
solar.update({"alias_name": solar.pop("device_name")})
sn = self._update_dev(
solar,
devType=SolixDeviceType.INVERTER.value,
@ -940,6 +961,11 @@ class AnkerSolixApi:
if sn:
act_devices.append(sn)
for powerpanel in mysite.get("powerpanel_list", []):
# work around for device_name which is actually the device_alias in scene info
if "device_name" in powerpanel:
# modify only a copy of the device dict to prevent changing the scene info dict
powerpanel = dict(powerpanel).copy()
powerpanel.update({"alias_name": powerpanel.pop("device_name")})
sn = self._update_dev(
powerpanel,
devType=SolixDeviceType.POWERPANEL.value,

View File

@ -1,14 +1,11 @@
{
"J19P1918S0BKY4EP": {
"device_sn": "J19P1918S0BKY4EP",
"S8S4GS0KZKLP0BH8": {
"device_sn": "S8S4GS0KZKLP0BH8",
"type": "solarbank",
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"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",
@ -18,8 +15,11 @@
"wireless_type": "1",
"input_power": "0",
"output_power": "0",
"bt_ble_mac": "F68FC0404AD7",
"alias": "Solarbank E1600",
"bt_ble_mac": "FD49FD9BFEC1",
"name": "Solarbank E1600",
"battery_capacity": "1600",
"battery_energy": "1200",
"wifi_online": false,
"charge": false,
"bws_surplus": "0",
@ -49,7 +49,14 @@
"number": 1
}
],
"charge_priority": 80
"charge_priority": 80,
"power_setting_mode": 1,
"device_power_loads": [
{
"device_sn": "S8S4GS0KZKLP0BH8",
"power": 150
}
]
},
{
"id": 0,
@ -64,7 +71,14 @@
"number": 1
}
],
"charge_priority": 80
"charge_priority": 80,
"power_setting_mode": 1,
"device_power_loads": [
{
"device_sn": "S8S4GS0KZKLP0BH8",
"power": 50
}
]
},
{
"id": 0,
@ -79,7 +93,14 @@
"number": 1
}
],
"charge_priority": 0
"charge_priority": 0,
"power_setting_mode": 1,
"device_power_loads": [
{
"device_sn": "S8S4GS0KZKLP0BH8",
"power": 150
}
]
}
],
"min_load": 100,
@ -87,10 +108,12 @@
"step": 0,
"is_charge_priority": 0,
"default_charge_priority": 0,
"is_zero_output_tips": 1
"is_zero_output_tips": 1,
"display_advanced_mode": 0,
"advanced_mode_min_load": 0
},
"set_system_output_power": "300",
"set_output_power": "300",
"set_system_output_power": "0",
"set_output_power": "0",
"fittings": {}
}
}

View File

@ -1,8 +1,8 @@
{
"b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff": {
"c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42": {
"type": "system",
"site_info": {
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"site_name": "BKW",
"site_img": "",
"device_type_list": [
@ -10,7 +10,12 @@
],
"ms_type": 1,
"power_site_type": 2,
"is_allow_delete": true
"is_allow_delete": true,
"support_device_models": [
"A17C0",
"A5143",
"A1771"
]
},
"site_admin": true,
"home_info": {
@ -50,12 +55,12 @@
"solarbank_list": [
{
"device_pn": "A17C0",
"device_sn": "J19P1918S0BKY4EP",
"device_sn": "S8S4GS0KZKLP0BH8",
"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",
@ -64,7 +69,8 @@
"photovoltaic_power": "0",
"output_power": "0",
"create_time": 1695392386,
"set_load_power": ""
"set_load_power": "",
"output_cutoff_data": 10
}
],
"total_charging_power": "0",
@ -76,10 +82,10 @@
"total_output_power": "0.00",
"display_set_power": false
},
"retain_load": "300W",
"retain_load": "0W",
"updated_time": "01-01-0001 00:00:00",
"power_site_type": 2,
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"powerpanel_list": []
}
}

View File

@ -5,7 +5,7 @@
"main_switch": true,
"device_list": [
{
"device_sn": "J19P1918S0BKY4EP",
"device_sn": "S8S4GS0KZKLP0BH8",
"device_name": "Solarbank E1600",
"auto_upgrade": false,
"alias_name": "Solarbank E1600",
@ -13,5 +13,5 @@
}
]
},
"trace_id": "07e9f38f25a3f84ccdda95e6bde176d4"
"trace_id": "466cd3eff9469c2c7deaf25f6f26ab0a"
}

View File

@ -4,10 +4,10 @@
"data": {
"data": [
{
"device_sn": "J19P1918S0BKY4EP",
"device_sn": "S8S4GS0KZKLP0BH8",
"product_code": "A17C0",
"bt_ble_id": "F6:8F:C0:40:4A:D7",
"bt_ble_mac": "F68FC0404AD7",
"bt_ble_id": "FD:49:FD:9B:FE:C1",
"bt_ble_mac": "FD49FD9BFEC1",
"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": "9eebba7bcd2992dbccae0561cc0f3cae"
"trace_id": "731c3d838addc0fe0368cdb0c3c0c9d7"
}

View File

@ -5,5 +5,5 @@
"device_list": null,
"guide_txt": ""
},
"trace_id": "bfc75c3882ba76d42cb51b32f0e3cc5a"
"trace_id": "7be5820ec6c6f8d7e2fa3415e213b50b"
}

View File

@ -1,19 +0,0 @@
{
"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"
}

View File

@ -15,5 +15,5 @@
"solar_model_name": "MI60 Microinverter"
}
},
"trace_id": "fc6eb9cc0bd3ebb9900a1ba6d3bcfc7e"
"trace_id": "aa0e32b025caf38eab6545a84fccb5c4"
}

View File

@ -1,8 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"data": []
},
"trace_id": "835d911e86a5a7bfea2d6e1f02cfdbbf"
}

View File

@ -1,8 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"data": []
},
"trace_id": "fd7ded14b0e11d5d2ff8dfce2ace3faa"
}

View File

@ -4,5 +4,5 @@
"data": {
"data": []
},
"trace_id": "b0eaff6d759bbfd56dd2f2421b6a9e13"
"trace_id": "4dabbd807c0e98fe8e58ebae70910f0e"
}

View File

@ -1,12 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
"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": "daaad794adf6ec9ebcebd49ae3cbbff9"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -0,0 +1,12 @@
{
"code": 0,
"msg": "success!",
"data": {
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"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,\"power_setting_mode\":1,\"device_power_loads\":[{\"device_sn\":\"S8S4GS0KZKLP0BH8\",\"power\":150}]},{\"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,\"power_setting_mode\":1,\"device_power_loads\":[{\"device_sn\":\"S8S4GS0KZKLP0BH8\",\"power\":50}]},{\"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,\"power_setting_mode\":1,\"device_power_loads\":[{\"device_sn\":\"S8S4GS0KZKLP0BH8\",\"power\":150}]}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":0,\"default_charge_priority\":0,\"is_zero_output_tips\":1,\"display_advanced_mode\":0,\"advanced_mode_min_load\":0}",
"current_home_load": "0W",
"parallel_home_load": "",
"parallel_display": false
},
"trace_id": "edc0aace41b8f1dbbdd0ddb7dcbcbbc0"
}

View File

@ -1,8 +0,0 @@
{
"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": "bdf5c51cd0fd73b07a5a49c7f8efda5b"
}

View File

@ -1,8 +0,0 @@
{
"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"
}

View File

@ -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,\"power_setting_mode\":1,\"device_power_loads\":[{\"device_sn\":\"S8S4GS0KZKLP0BH8\",\"power\":150}]},{\"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,\"power_setting_mode\":1,\"device_power_loads\":[{\"device_sn\":\"S8S4GS0KZKLP0BH8\",\"power\":50}]},{\"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,\"power_setting_mode\":1,\"device_power_loads\":[{\"device_sn\":\"S8S4GS0KZKLP0BH8\",\"power\":150}]}],\"min_load\":100,\"max_load\":800,\"step\":0,\"is_charge_priority\":0,\"default_charge_priority\":0,\"is_zero_output_tips\":1,\"display_advanced_mode\":0,\"advanced_mode_min_load\":0}"
},
"trace_id": "abe0cd159ab3d5fd1e5ed06f7bd79cbe"
}

View File

@ -4,7 +4,7 @@
"data": {
"site_list": [
{
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"site_name": "BKW",
"site_img": "",
"device_type_list": [
@ -12,7 +12,8 @@
],
"ms_type": 0,
"power_site_type": 0,
"is_allow_delete": false
"is_allow_delete": false,
"support_device_models": null
}
],
"solar_list": [],
@ -20,7 +21,7 @@
"solarbank_list": [
{
"device_pn": "",
"device_sn": "J19P1918S0BKY4EP",
"device_sn": "S8S4GS0KZKLP0BH8",
"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",
@ -34,10 +35,11 @@
"photovoltaic_power": "",
"output_power": "",
"create_time": 0,
"set_load_power": ""
"set_load_power": "",
"output_cutoff_data": 0
}
],
"powerpanel_list": []
},
"trace_id": "7ec26cd4e3ebac01c5bbceabab0b3ad5"
"trace_id": "9a39fafe7f5c72ab4a9746a92793bf6d"
}

View File

@ -1,23 +0,0 @@
{
"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": "7ccca0c8df1fc646ad6a0bc1daea0dd2"
}

View File

@ -1,23 +0,0 @@
{
"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"
}

View File

@ -19,5 +19,5 @@
}
]
},
"trace_id": "dd8ffe41b2e1ce4b50ed82be55c2efc7"
"trace_id": "810134a03be0200fc75bf5ce15cacc3b"
}

View File

@ -1,11 +0,0 @@
{
"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"
}

View File

@ -2,10 +2,10 @@
"code": 0,
"msg": "success!",
"data": {
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"price": 0.4,
"site_co2": 0,
"site_price_unit": "\u20ac"
},
"trace_id": "f43f68ee34777fd9fb83dc6ac067aed3"
"trace_id": "3c10c236f183f13be3233f802227ffd0"
}

View File

@ -1,75 +0,0 @@
{
"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": "4AD5NI2AC8WL4CFI",
"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": "2023-12-28 18:53:27",
"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": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
"powerpanel_list": []
},
"trace_id": "82aa6e7e4db47cbbe7b2ed355b751beb"
}

View File

@ -39,7 +39,7 @@
"solarbank_list": [
{
"device_pn": "A17C0",
"device_sn": "J19P1918S0BKY4EP",
"device_sn": "S8S4GS0KZKLP0BH8",
"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",
@ -53,7 +53,8 @@
"photovoltaic_power": "0",
"output_power": "0",
"create_time": 1695392386,
"set_load_power": ""
"set_load_power": "",
"output_cutoff_data": 10
}
],
"total_charging_power": "0",
@ -65,11 +66,11 @@
"total_output_power": "0.00",
"display_set_power": false
},
"retain_load": "300W",
"retain_load": "0W",
"updated_time": "01-01-0001 00:00:00",
"power_site_type": 2,
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"powerpanel_list": []
},
"trace_id": "ed1cf05df2ee38fe9cface257d7e0e35"
"trace_id": "be165dce6edbfda3eef203e9f8cd3cfb"
}

View File

@ -1,39 +0,0 @@
{
"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"
}

View File

@ -3,20 +3,27 @@
"msg": "success!",
"data": {
"site_info": {
"site_id": "3df1aea0-4b7c-e0f8-7cc5-5ba5a4df5f7a",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"site_name": "BKW",
"site_img": "",
"device_type_list": null,
"device_type_list": [
3
],
"ms_type": 0,
"power_site_type": 0,
"is_allow_delete": false
"power_site_type": 2,
"is_allow_delete": false,
"support_device_models": [
"A17C0",
"A5143",
"A1771"
]
},
"solar_list": [],
"pps_list": [],
"solarbank_list": [
{
"device_pn": "A17C0",
"device_sn": "4AD5NI2AC8WL4CFI",
"device_sn": "S8S4GS0KZKLP0BH8",
"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": "",
@ -29,11 +36,12 @@
"main_version": "",
"photovoltaic_power": "",
"output_power": "",
"create_time": 0,
"set_load_power": ""
"create_time": 1695392386,
"set_load_power": "",
"output_cutoff_data": 0
}
],
"powerpanel_list": []
},
"trace_id": "cd5d205dbe3e4ace5accfcbbcbc7bf5e"
"trace_id": "42fca6e31c7597b30ccb8bafdb5c409f"
}

View File

@ -4,7 +4,7 @@
"data": {
"site_list": [
{
"site_id": "b8b1aaa6-ff7c-f1d3-9faa-c5e1648091ff",
"site_id": "c6a3216c-b3bd-fe9a-bd00-e46bfe61ee42",
"site_name": "BKW",
"site_img": "",
"device_type_list": [
@ -12,9 +12,14 @@
],
"ms_type": 1,
"power_site_type": 2,
"is_allow_delete": true
"is_allow_delete": true,
"support_device_models": [
"A17C0",
"A5143",
"A1771"
]
}
]
},
"trace_id": "cda3bbcc760a9239d38076efacfefaea"
"trace_id": "f4a07b0fc7eda9aac8a047bfe3ce0881"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -8,5 +8,5 @@
"solar_sn": "",
"solar_model_name": "MI60 Microinverter"
},
"trace_id": "faa1851e4db703c37e2f344ac596a2f1"
"trace_id": "a982c1bc38ab3f9da5afef26e496f013"
}

View File

@ -7,7 +7,7 @@
"solarbank_list": [
{
"device_pn": "A17C0",
"device_sn": "J19P1918S0BKY4EP",
"device_sn": "S8S4GS0KZKLP0BH8",
"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": "",
@ -21,9 +21,11 @@
"photovoltaic_power": "",
"output_power": "",
"create_time": 0,
"set_load_power": ""
"set_load_power": "",
"output_cutoff_data": 0
}
]
],
"powerpanel_list": []
},
"trace_id": "7f27c7c8daaadb4d12fa129de411499b"
"trace_id": "e9eeb54a20b422df82fafdaedc75f21f"
}

View File

@ -1,13 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"wifi_info_list": [
{
"wifi_name": "wifi-network-1",
"wifi_signal": "100"
}
]
},
"trace_id": "19d71d7c090ba105da53084fdca41baa"
}

View File

@ -9,5 +9,5 @@
}
]
},
"trace_id": "81d6b63ab0b93d9d6b99cecacbbd0ebc"
"trace_id": "0a0d59c1b266de112d9028dfcfcf5ffe"
}

View File

@ -1,233 +0,0 @@
{
"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"
}
}

View File

@ -1,116 +0,0 @@
{
"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": []
}
}

View File

@ -1,24 +0,0 @@
{
"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"
}

View File

@ -1,71 +0,0 @@
{
"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"
}

View File

@ -1,9 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"device_list": null,
"guide_txt": ""
},
"trace_id": "29b2ae3cb302fb3a30bfa52f0d8f1bcd"
}

View File

@ -1,19 +0,0 @@
{
"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"
}

View File

@ -1,19 +0,0 @@
{
"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"
}

View File

@ -1,8 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"data": []
},
"trace_id": "2bf9a0fe16ccb4a9f5ee495d3db2e0ae"
}

View File

@ -1,8 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"data": []
},
"trace_id": "aeb578aaee66bb30a20b1a6ab104cdfc"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,8 +0,0 @@
{
"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"
}

View File

@ -1,75 +0,0 @@
{
"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"
}

View File

@ -1,23 +0,0 @@
{
"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"
}

View File

@ -1,23 +0,0 @@
{
"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"
}

View File

@ -1,11 +0,0 @@
{
"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"
}

View File

@ -1,106 +0,0 @@
{
"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"
}

View File

@ -1,70 +0,0 @@
{
"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"
}

View File

@ -1,21 +0,0 @@
{
"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"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,60 +0,0 @@
{
"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"
}

View File

@ -1,17 +0,0 @@
{
"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"
}

View File

@ -1,92 +0,0 @@
{
"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
}
}
}

View File

@ -1,84 +0,0 @@
{
"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": []
}
}

View File

@ -1,17 +0,0 @@
{
"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"
}

View File

@ -1,30 +0,0 @@
{
"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"
}

View File

@ -1,9 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"device_list": null,
"guide_txt": ""
},
"trace_id": "e28b26fe8dccc7f40bdfbc79148eddcd"
}

View File

@ -1,19 +0,0 @@
{
"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"
}

View File

@ -1,19 +0,0 @@
{
"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"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,8 +0,0 @@
{
"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"
}

View File

@ -1,43 +0,0 @@
{
"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"
}

View File

@ -1,23 +0,0 @@
{
"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"
}

View File

@ -1,11 +0,0 @@
{
"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"
}

View File

@ -1,75 +0,0 @@
{
"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"
}

View File

@ -1,39 +0,0 @@
{
"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"
}

View File

@ -1,20 +0,0 @@
{
"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"
}

View File

@ -1,12 +0,0 @@
{
"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"
}

View File

@ -1,29 +0,0 @@
{
"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"
}

View File

@ -1,13 +0,0 @@
{
"code": 0,
"msg": "success!",
"data": {
"wifi_info_list": [
{
"wifi_name": "wifi-network-1",
"wifi_signal": "36"
}
]
},
"trace_id": "f378d2627ad09a3b25c87cbd497cb5e7"
}

View File

@ -15,7 +15,7 @@ dedicated data extraction from the devices.
Optionally the API class can use the json files for debugging and testing on
various system outputs.
"""
""" # noqa: D205
# pylint: disable=duplicate-code
import asyncio
@ -29,9 +29,8 @@ import time
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))
@ -90,6 +89,14 @@ def randomize(val, key: str = "") -> str:
elif "wifi_name" in key:
idx = sum(1 for s in RANDOMDATA.values() if "wifi-network-" in s)
randomstr = f"wifi-network-{idx+1}"
elif key in ["home_load_data", "param_data"]:
# these keys may contain schedule dict encoded as string, ensure contained serials are replaced in string
# replace all mappings from randomdata, but skip trace ids
randomstr = val
for k, v in ((old,new) for old,new in RANDOMDATA.items() if len(old) != 32):
randomstr = randomstr.replace(k,v)
# leave without saving randomized string in RANDOMDATA
return randomstr
else:
# default randomize format
randomstr = "".join(random.choices(string.ascii_letters, k=len(val)))
@ -108,13 +115,13 @@ def check_keys(data):
v = [check_keys(i) for i in v]
# Randomize value for certain keys
if any(
x in k for x in ["_sn", "site_id", "trace_id", "bt_ble_", "wifi_name"]
x in k for x in ["_sn", "site_id", "trace_id", "bt_ble_", "wifi_name", "home_load_data", "param_data"]
) or k in ["sn"]:
data[k] = randomize(v, k)
return data
def export(filename: str, d: dict = None, randomkeys: bool = False) -> None:
def export(filename: str, d: dict = None, skip_randomize: bool = False, randomkeys: bool = False) -> None:
"""Save dict data to given file."""
if not d:
d = {}
@ -122,12 +129,22 @@ def export(filename: str, d: dict = None, randomkeys: bool = False) -> None:
if len(d) == 0:
CONSOLE.info("WARNING: File %s not saved because JSON is empty", filename)
return
if RANDOMIZE:
if RANDOMIZE and not skip_randomize:
d = check_keys(d)
# Randomize also the keys for the api dictionary export
# Randomize also the (nested) keys for dictionary export if required
if randomkeys:
d_copy = d.copy()
for key in list(d):
for key, val in d.items():
# check first nested keys in dict values
for nested_key, nested_val in dict(val).items():
if isinstance(nested_val, dict):
for k in [text for text in nested_val if isinstance(text,str)]:
# check nested dict keys
if k in RANDOMDATA:
d_copy[key][nested_key][RANDOMDATA[k]] = d_copy[key][
nested_key
].pop(k)
# check root keys
if key in RANDOMDATA:
d_copy[RANDOMDATA[key]] = d_copy.pop(key)
d = d_copy
@ -141,9 +158,7 @@ def export(filename: str, d: dict = None, randomkeys: bool = False) -> None:
return
async def main() -> (
bool
): # noqa: C901 # pylint: disable=too-many-branches,too-many-statements
async def main() -> bool: # noqa: C901 # pylint: disable=too-many-branches,too-many-statements
"""Run main function to export config."""
global RANDOMIZE # noqa: PLW0603, W0603 # pylint: disable=global-statement
CONSOLE.info("Exporting found Anker Solix system data for all assigned sites:")
@ -181,7 +196,8 @@ async def main() -> (
# first update sites and devices in API object
CONSOLE.info("\nQuerying site information...")
await myapi.update_sites()
await myapi.update_device_details()
# Skip device detail queries, the defined serials are provided with the sites update
#await myapi.update_device_details()
CONSOLE.info("Sites: %s, Devices: %s", len(myapi.sites), len(myapi.devices))
_LOGGER.debug(json.dumps(myapi.devices, indent=2))
@ -382,18 +398,25 @@ async def main() -> (
except (ClientError, errors.AnkerSolixError):
if not admin:
CONSOLE.warning("Query requires account of site owner!")
CONSOLE.info("\nExporting Api Sites overview...")
export(
os.path.join(folder, "api_sites.json"),
myapi.sites,
randomkeys=RANDOMIZE,
)
CONSOLE.info("Exporting Api Devices overview...")
export(
os.path.join(folder, "api_devices.json"),
myapi.devices,
randomkeys=RANDOMIZE,
)
# update the api dictionaries from exported files to use randomized input data
# this is more efficient and allows validation of randomized data in export files
myapi.testDir(folder)
await myapi.update_sites(fromFile=True)
await myapi.update_device_details(fromFile=True)
# avoid randomizing dictionary export twice when imported from randomized files already
CONSOLE.info("\nExporting Api Sites overview...")
export(
os.path.join(folder, "api_sites.json"),
myapi.sites,
skip_randomize=True,
)
CONSOLE.info("Exporting Api Devices overview...")
export(
os.path.join(folder, "api_devices.json"),
myapi.devices,
skip_randomize=True,
)
CONSOLE.info(
"\nCompleted export of Anker Solix system data for user %s", user

View File

@ -113,7 +113,8 @@ async def main() -> ( # noqa: C901 # pylint: disable=too-many-locals,too-many-b
next_refr = now
next_dev_refr = now
col1 = 15
col2 = 20
col2 = 23
col3 = 14
t1 = 2
t2 = 5
t3 = 5
@ -148,56 +149,57 @@ async def main() -> ( # noqa: C901 # pylint: disable=too-many-locals,too-many-b
devtype = dev.get("type", "Unknown")
admin = dev.get("is_admin", False)
CONSOLE.info(
f"{'Device':<{col1}}: {(dev.get('name','NoName')):<{col2}} (Alias: {dev.get('alias','Unknown')})"
f"{'Device':<{col1}}: {(dev.get('name','NoName')):<{col2}} {'Alias':<{col3}}: {dev.get('alias','Unknown')}"
)
CONSOLE.info(
f"{'SN':<{col1}}: {sn:<{col2}} (Admin: {'YES' if admin else 'NO'})"
f"{'Serialnumber':<{col1}}: {sn:<{col2}} {'Admin':<{col3}}: {'YES' if admin else 'NO'}"
)
siteid = dev.get("site_id", "")
CONSOLE.info(f"{'Site ID':<{col1}}: {siteid}")
for fsn, fitting in dev.get('fittings',{}).items():
CONSOLE.info(
f"{'Fitting':<{col1}}: {fitting.get('device_name',''):<{col2}} {'Serialnumber':<{col3}}: {fsn}"
)
CONSOLE.info(
f"{'PN':<{col1}}: {dev.get('device_pn',''):<{col2}} (Type: {devtype.capitalize()})"
f"{'Wifi SSID':<{col1}}: {dev.get('wifi_name',''):<{col2}}"
)
online = dev.get("wifi_online")
CONSOLE.info(
f"{'Wifi state':<{col1}}: {('Unknown' if online is None else 'Online' if online else 'Offline'):<{col2}} {'Signal':<{col3}}: {dev.get('wifi_signal','---'):>4} %"
)
if devtype == "solarbank":
siteid = dev.get("site_id", "")
CONSOLE.info(f"{'Site ID':<{col1}}: {siteid}")
CONSOLE.info(
f"{'Wifi SSID':<{col1}}: {dev.get('wifi_name',''):<{col2}}"
)
online = dev.get("wifi_online")
CONSOLE.info(
f"{'Wifi state':<{col1}}: {('Unknown' if online is None else 'Online' if online else 'Offline'):<{col2}} (Signal: {dev.get('wifi_signal','---')} %)"
)
upgrade = dev.get("auto_upgrade")
CONSOLE.info(
f"{'SW Version':<{col1}}: {dev.get('sw_version','Unknown'):<{col2}} (Auto-Upgrade: {'Unknown' if upgrade is None else 'Enabled' if upgrade else 'Disabled'})"
)
soc = f"{dev.get('battery_soc','---'):>3} %"
CONSOLE.info(
f"{'Status':<{col1}}: {dev.get('status_desc','Unknown'):<{col2}} (Status code: {str(dev.get('status','-'))})"
f"{'SW Version':<{col1}}: {dev.get('sw_version','Unknown'):<{col2}} {'Auto-Upgrade':<{col3}}: {'Unknown' if upgrade is None else 'Enabled' if upgrade else 'Disabled'}"
)
CONSOLE.info(
f"{'Charge Status':<{col1}}: {dev.get('charging_status_desc','Unknown'):<{col2}} (Status code: {str(dev.get('charging_status','-'))})"
f"{'Status':<{col1}}: {dev.get('status_desc','Unknown'):<{col2}} {'Status code':<{col3}}: {str(dev.get('status','-'))}"
)
CONSOLE.info(
f"{'State Of Charge':<{col1}}: {soc:<{col2}} (Min SOC: {str(dev.get('power_cutoff','--'))+' %'})"
f"{'Charge Status':<{col1}}: {dev.get('charging_status_desc','Unknown'):<{col2}} {'Status code':<{col3}}: {str(dev.get('charging_status','-'))}"
)
soc = f"{dev.get('battery_soc','---'):>4} %"
CONSOLE.info(
f"{'State Of Charge':<{col1}}: {soc:<{col2}} {'Min SOC':<{col3}}: {str(dev.get('power_cutoff','--')):>4} %"
)
energy = f"{dev.get('battery_energy','----'):>4} Wh"
CONSOLE.info(
f"{'Battery Energy':<{col1}}: {energy:<{col2}} {'Capacity':<{col3}}: {str(dev.get('battery_capacity','----')):>4} Wh"
)
unit = dev.get("power_unit", "W")
CONSOLE.info(
f"{'Solar Power':<{col1}}: {dev.get('input_power',''):>3} {unit:<{col2-4}} Charge Power: {dev.get('charging_power',''):>3} {unit}"
f"{'Solar Power':<{col1}}: {dev.get('input_power',''):>4} {unit:<{col2-5}} {'Output Power':<{col3}}: {dev.get('output_power',''):>4} {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})"
f"{'Charge Power':<{col1}}: {dev.get('charging_power',''):>4} {unit:<{col2-5}} {'Device Preset':<{col3}}: {preset:>4} {unit}"
)
# update schedule with device details refresh and print it
if admin:
# Schedule is now included in the device details
# if not schedules.get(sn) and siteid:
# schedules.update({sn: await myapi.get_device_load(siteId=siteid,deviceSn=sn,fromFile=use_file)})
# data = schedules.get(sn,{})
data = dev.get("schedule", {})
CONSOLE.info(
f"{'Schedule':<{col1}}: {now.strftime('%H:%M UTC %z'):<{col2}} (Current Preset: {str(site_preset).replace('W','')} W)"
f"{'Schedule':<{col1}}: {now.strftime('%H:%M UTC %z'):<{col2}} {'System Preset':<{col3}}: {str(site_preset).replace('W',''):>4} W"
)
CONSOLE.info(
f"{'ID':<{t1}} {'Start':<{t2}} {'End':<{t3}} {'Discharge':<{t4}} {'Output':<{t5}} {'ChargePrio':<{t6}}"
@ -211,21 +213,12 @@ async def main() -> ( # noqa: C901 # pylint: disable=too-many-locals,too-many-b
f"{str(slot.get('id','')):>{t1}} {slot.get('start_time',''):<{t2}} {slot.get('end_time',''):<{t3}} {('---' if enabled is None else 'YES' if enabled else 'NO'):^{t4}} {str(load.get('power',''))+' W':>{t5}} {str(slot.get('charge_priority',''))+' %':>{t6}}"
)
elif devtype == "inverter":
siteid = dev.get("site_id", "")
CONSOLE.info(f"{'Site ID':<{col1}}: {siteid}")
CONSOLE.info(
f"{'Wifi SSID':<{col1}}: {dev.get('wifi_name',''):<{col2}}"
)
online = dev.get("wifi_online")
CONSOLE.info(
f"{'Wifi state':<{col1}}: {('Unknown' if online is None else 'Online' if online else 'Offline'):<{col2}} (Signal: {dev.get('wifi_signal','---')} %)"
)
upgrade = dev.get("auto_upgrade")
CONSOLE.info(
f"{'SW Version':<{col1}}: {dev.get('sw_version','Unknown'):<{col2}} (Auto-Upgrade: {'Unknown' if upgrade is None else 'Enabled' if upgrade else 'Disabled'})"
f"{'SW Version':<{col1}}: {dev.get('sw_version','Unknown'):<{col2}} {'Auto-Upgrade':<{col3}}: {'Unknown' if upgrade is None else 'Enabled' if upgrade else 'Disabled'}"
)
CONSOLE.info(
f"{'Status':<{col1}}: {dev.get('status_desc','Unknown'):<{col2}} (Status code: {str(dev.get('status','-'))})"
f"{'Status':<{col1}}: {dev.get('status_desc','Unknown'):<{col2}} {'Status code':<{col3}}: {str(dev.get('status','-'))}"
)
unit = dev.get("power_unit", "W")
CONSOLE.info(