mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-05-02 12:41:18 +00:00
Do not crash on missing build number in fw version (#1500)
Some checks failed
CI / Perform linting checks (3.13) (push) Has been cancelled
CodeQL checks / Analyze (python) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Has been cancelled
Stale / stale (push) Has been cancelled
Some checks failed
CI / Perform linting checks (3.13) (push) Has been cancelled
CodeQL checks / Analyze (python) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, macos-latest, 3.13) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, ubuntu-latest, 3.13) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (false, windows-latest, 3.13) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.11) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.12) (push) Has been cancelled
CI / Python ${{ matrix.python-version}} on ${{ matrix.os }}${{ fromJSON('[" (extras)", ""]')[matrix.extras == ''] }} (true, ubuntu-latest, 3.13) (push) Has been cancelled
Stale / stale (push) Has been cancelled
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com>
This commit is contained in:
parent
d5187dc6f1
commit
668e32d3a5
@ -725,15 +725,6 @@ async def get_smart_test_calls(protocol: SmartProtocol):
|
|||||||
successes = []
|
successes = []
|
||||||
child_device_components = {}
|
child_device_components = {}
|
||||||
|
|
||||||
extra_test_calls = [
|
|
||||||
SmartCall(
|
|
||||||
module="temp_humidity_records",
|
|
||||||
request=SmartRequest.get_raw_request("get_temp_humidity_records").to_dict(),
|
|
||||||
should_succeed=False,
|
|
||||||
child_device_id="",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
||||||
click.echo("Testing component_nego call ..", nl=False)
|
click.echo("Testing component_nego call ..", nl=False)
|
||||||
responses = await _make_requests_or_exit(
|
responses = await _make_requests_or_exit(
|
||||||
protocol,
|
protocol,
|
||||||
@ -812,8 +803,6 @@ async def get_smart_test_calls(protocol: SmartProtocol):
|
|||||||
click.echo(f"Skipping {component_id}..", nl=False)
|
click.echo(f"Skipping {component_id}..", nl=False)
|
||||||
click.echo(click.style("UNSUPPORTED", fg="yellow"))
|
click.echo(click.style("UNSUPPORTED", fg="yellow"))
|
||||||
|
|
||||||
test_calls.extend(extra_test_calls)
|
|
||||||
|
|
||||||
# Child component calls
|
# Child component calls
|
||||||
for child_device_id, child_components in child_device_components.items():
|
for child_device_id, child_components in child_device_components.items():
|
||||||
test_calls.append(
|
test_calls.append(
|
||||||
@ -839,12 +828,6 @@ async def get_smart_test_calls(protocol: SmartProtocol):
|
|||||||
else:
|
else:
|
||||||
click.echo(f"Skipping {component_id}..", nl=False)
|
click.echo(f"Skipping {component_id}..", nl=False)
|
||||||
click.echo(click.style("UNSUPPORTED", fg="yellow"))
|
click.echo(click.style("UNSUPPORTED", fg="yellow"))
|
||||||
# Add the extra calls for each child
|
|
||||||
for extra_call in extra_test_calls:
|
|
||||||
extra_child_call = dataclasses.replace(
|
|
||||||
extra_call, child_device_id=child_device_id
|
|
||||||
)
|
|
||||||
test_calls.append(extra_child_call)
|
|
||||||
|
|
||||||
return test_calls, successes
|
return test_calls, successes
|
||||||
|
|
||||||
|
@ -425,6 +425,7 @@ COMPONENT_REQUESTS = {
|
|||||||
"get_trigger_logs", SmartRequest.GetTriggerLogsParams()
|
"get_trigger_logs", SmartRequest.GetTriggerLogsParams()
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
"temp_humidity_record": [SmartRequest.get_raw_request("get_temp_humidity_records")],
|
||||||
"double_click": [SmartRequest.get_raw_request("get_double_click_info")],
|
"double_click": [SmartRequest.get_raw_request("get_double_click_info")],
|
||||||
"child_device": [
|
"child_device": [
|
||||||
SmartRequest.get_raw_request("get_child_device_list"),
|
SmartRequest.get_raw_request("get_child_device_list"),
|
||||||
|
@ -48,7 +48,7 @@ async def state(ctx, dev: Device):
|
|||||||
)
|
)
|
||||||
echo(
|
echo(
|
||||||
f"Firmware: {dev.device_info.firmware_version}"
|
f"Firmware: {dev.device_info.firmware_version}"
|
||||||
f" {dev.device_info.firmware_build}"
|
f"{' ' + build if (build := dev.device_info.firmware_build) else ''}"
|
||||||
)
|
)
|
||||||
echo(f"MAC (rssi): {dev.mac} ({dev.rssi})")
|
echo(f"MAC (rssi): {dev.mac} ({dev.rssi})")
|
||||||
if verbose:
|
if verbose:
|
||||||
|
@ -161,7 +161,7 @@ class DeviceInfo:
|
|||||||
device_type: DeviceType
|
device_type: DeviceType
|
||||||
hardware_version: str
|
hardware_version: str
|
||||||
firmware_version: str
|
firmware_version: str
|
||||||
firmware_build: str
|
firmware_build: str | None
|
||||||
requires_auth: bool
|
requires_auth: bool
|
||||||
region: str | None
|
region: str | None
|
||||||
|
|
||||||
|
@ -760,7 +760,10 @@ class IotDevice(Device):
|
|||||||
device_family = sys_info.get("type", sys_info.get("mic_type"))
|
device_family = sys_info.get("type", sys_info.get("mic_type"))
|
||||||
device_type = IotDevice._get_device_type_from_sys_info(info)
|
device_type = IotDevice._get_device_type_from_sys_info(info)
|
||||||
fw_version_full = sys_info["sw_ver"]
|
fw_version_full = sys_info["sw_ver"]
|
||||||
|
if " " in fw_version_full:
|
||||||
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
||||||
|
else:
|
||||||
|
firmware_version, firmware_build = fw_version_full, None
|
||||||
auth = bool(discovery_info and ("mgt_encrypt_schm" in discovery_info))
|
auth = bool(discovery_info and ("mgt_encrypt_schm" in discovery_info))
|
||||||
|
|
||||||
return DeviceInfo(
|
return DeviceInfo(
|
||||||
|
@ -913,7 +913,10 @@ class SmartDevice(Device):
|
|||||||
components, device_family
|
components, device_family
|
||||||
)
|
)
|
||||||
fw_version_full = di["fw_ver"]
|
fw_version_full = di["fw_ver"]
|
||||||
|
if " " in fw_version_full:
|
||||||
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
||||||
|
else:
|
||||||
|
firmware_version, firmware_build = fw_version_full, None
|
||||||
_protocol, devicetype = device_family.split(".")
|
_protocol, devicetype = device_family.split(".")
|
||||||
# Brand inferred from SMART.KASAPLUG/SMART.TAPOPLUG etc.
|
# Brand inferred from SMART.KASAPLUG/SMART.TAPOPLUG etc.
|
||||||
brand = devicetype[:4].lower()
|
brand = devicetype[:4].lower()
|
||||||
|
@ -103,7 +103,10 @@ class SmartCamChild(SmartChildDevice, SmartCamDevice):
|
|||||||
model = cifp["device_model"]
|
model = cifp["device_model"]
|
||||||
device_type = SmartCamDevice._get_device_type_from_sysinfo(cifp)
|
device_type = SmartCamDevice._get_device_type_from_sysinfo(cifp)
|
||||||
fw_version_full = cifp["sw_ver"]
|
fw_version_full = cifp["sw_ver"]
|
||||||
|
if " " in fw_version_full:
|
||||||
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
||||||
|
else:
|
||||||
|
firmware_version, firmware_build = fw_version_full, None
|
||||||
return DeviceInfo(
|
return DeviceInfo(
|
||||||
short_name=model,
|
short_name=model,
|
||||||
long_name=model,
|
long_name=model,
|
||||||
|
@ -47,7 +47,10 @@ class SmartCamDevice(SmartDevice):
|
|||||||
long_name = discovery_info["device_model"] if discovery_info else short_name
|
long_name = discovery_info["device_model"] if discovery_info else short_name
|
||||||
device_type = SmartCamDevice._get_device_type_from_sysinfo(basic_info)
|
device_type = SmartCamDevice._get_device_type_from_sysinfo(basic_info)
|
||||||
fw_version_full = basic_info["sw_version"]
|
fw_version_full = basic_info["sw_version"]
|
||||||
|
if " " in fw_version_full:
|
||||||
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
firmware_version, firmware_build = fw_version_full.split(" ", maxsplit=1)
|
||||||
|
else:
|
||||||
|
firmware_version, firmware_build = fw_version_full, None
|
||||||
return DeviceInfo(
|
return DeviceInfo(
|
||||||
short_name=basic_info["device_model"],
|
short_name=basic_info["device_model"],
|
||||||
long_name=long_name,
|
long_name=long_name,
|
||||||
|
426
tests/fixtures/smart/child/T310(US)_1.0_1.5.0.json
vendored
426
tests/fixtures/smart/child/T310(US)_1.0_1.5.0.json
vendored
@ -75,7 +75,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"get_auto_update_info": -1001,
|
|
||||||
"get_connect_cloud_state": {
|
"get_connect_cloud_state": {
|
||||||
"status": 0
|
"status": 0
|
||||||
},
|
},
|
||||||
@ -84,25 +83,25 @@
|
|||||||
"avatar": "sensor_t310",
|
"avatar": "sensor_t310",
|
||||||
"bind_count": 1,
|
"bind_count": 1,
|
||||||
"category": "subg.trigger.temp-hmdt-sensor",
|
"category": "subg.trigger.temp-hmdt-sensor",
|
||||||
"current_humidity": 49,
|
"current_humidity": 61,
|
||||||
"current_humidity_exception": 0,
|
"current_humidity_exception": 1,
|
||||||
"current_temp": 21.7,
|
"current_temp": 21.0,
|
||||||
"current_temp_exception": 0,
|
"current_temp_exception": 0,
|
||||||
"device_id": "SCRUBBED_CHILD_DEVICE_ID_1",
|
"device_id": "SCRUBBED_CHILD_DEVICE_ID_1",
|
||||||
"fw_ver": "1.5.0 Build 230105 Rel.180832",
|
"fw_ver": "1.5.0",
|
||||||
"hw_id": "00000000000000000000000000000000",
|
"hw_id": "00000000000000000000000000000000",
|
||||||
"hw_ver": "1.0",
|
"hw_ver": "1.0",
|
||||||
"jamming_rssi": -111,
|
"jamming_rssi": -108,
|
||||||
"jamming_signal_level": 1,
|
"jamming_signal_level": 2,
|
||||||
"lastOnboardingTimestamp": 1724637745,
|
"lastOnboardingTimestamp": 1690859014,
|
||||||
"mac": "F0A731000000",
|
"mac": "788CB5000000",
|
||||||
"model": "T310",
|
"model": "T310",
|
||||||
"nickname": "I01BU0tFRF9OQU1FIw==",
|
"nickname": "I01BU0tFRF9OQU1FIw==",
|
||||||
"oem_id": "00000000000000000000000000000000",
|
"oem_id": "00000000000000000000000000000000",
|
||||||
"parent_device_id": "0000000000000000000000000000000000000000",
|
"parent_device_id": "0000000000000000000000000000000000000000",
|
||||||
"region": "Australia/Canberra",
|
"region": "Pacific/Auckland",
|
||||||
"report_interval": 16,
|
"report_interval": 8,
|
||||||
"rssi": -46,
|
"rssi": -56,
|
||||||
"signal_level": 3,
|
"signal_level": 3,
|
||||||
"specs": "US",
|
"specs": "US",
|
||||||
"status": "online",
|
"status": "online",
|
||||||
@ -110,8 +109,6 @@
|
|||||||
"temp_unit": "celsius",
|
"temp_unit": "celsius",
|
||||||
"type": "SMART.TAPOSENSOR"
|
"type": "SMART.TAPOSENSOR"
|
||||||
},
|
},
|
||||||
"get_device_time": -1001,
|
|
||||||
"get_device_usage": -1001,
|
|
||||||
"get_fw_download_state": {
|
"get_fw_download_state": {
|
||||||
"cloud_cache_seconds": 1,
|
"cloud_cache_seconds": 1,
|
||||||
"download_progress": 0,
|
"download_progress": 0,
|
||||||
@ -121,7 +118,7 @@
|
|||||||
},
|
},
|
||||||
"get_latest_fw": {
|
"get_latest_fw": {
|
||||||
"fw_size": 0,
|
"fw_size": 0,
|
||||||
"fw_ver": "1.5.0 Build 230105 Rel.180832",
|
"fw_ver": "1.5.0",
|
||||||
"hw_id": "",
|
"hw_id": "",
|
||||||
"need_to_upgrade": false,
|
"need_to_upgrade": false,
|
||||||
"oem_id": "",
|
"oem_id": "",
|
||||||
@ -129,10 +126,405 @@
|
|||||||
"release_note": "",
|
"release_note": "",
|
||||||
"type": 0
|
"type": 0
|
||||||
},
|
},
|
||||||
|
"get_temp_humidity_records": {
|
||||||
|
"local_time": 1739107441,
|
||||||
|
"past24h_humidity": [
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
58,
|
||||||
|
57,
|
||||||
|
57,
|
||||||
|
57,
|
||||||
|
56,
|
||||||
|
56,
|
||||||
|
55,
|
||||||
|
55,
|
||||||
|
55,
|
||||||
|
55,
|
||||||
|
54,
|
||||||
|
54,
|
||||||
|
55,
|
||||||
|
56,
|
||||||
|
57,
|
||||||
|
57,
|
||||||
|
58,
|
||||||
|
58,
|
||||||
|
58,
|
||||||
|
58,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
59,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
61,
|
||||||
|
82,
|
||||||
|
59,
|
||||||
|
60,
|
||||||
|
61,
|
||||||
|
61,
|
||||||
|
61,
|
||||||
|
61
|
||||||
|
],
|
||||||
|
"past24h_humidity_exception": [
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
22,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"past24h_temp": [
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
212,
|
||||||
|
211,
|
||||||
|
210,
|
||||||
|
208,
|
||||||
|
207,
|
||||||
|
206,
|
||||||
|
205,
|
||||||
|
204,
|
||||||
|
203,
|
||||||
|
202,
|
||||||
|
201,
|
||||||
|
202,
|
||||||
|
203,
|
||||||
|
205,
|
||||||
|
206,
|
||||||
|
208,
|
||||||
|
209,
|
||||||
|
210,
|
||||||
|
210,
|
||||||
|
211,
|
||||||
|
211,
|
||||||
|
212,
|
||||||
|
212,
|
||||||
|
212,
|
||||||
|
212,
|
||||||
|
212,
|
||||||
|
212,
|
||||||
|
212,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
213,
|
||||||
|
215,
|
||||||
|
254,
|
||||||
|
221,
|
||||||
|
214,
|
||||||
|
212,
|
||||||
|
211,
|
||||||
|
210,
|
||||||
|
210
|
||||||
|
],
|
||||||
|
"past24h_temp_exception": [
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
-1000,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"temp_unit": "celsius"
|
||||||
|
},
|
||||||
"get_trigger_logs": {
|
"get_trigger_logs": {
|
||||||
"logs": [],
|
"logs": [],
|
||||||
"start_id": 0,
|
"start_id": 0,
|
||||||
"sum": 0
|
"sum": 0
|
||||||
},
|
}
|
||||||
"qs_component_nego": -1001
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user