sergeylysov/sst_cloud

Некорректное отображение заряда батареи датчика утчеки

mxsob opened this issue · 13 comments

SST v0.1.32
HA 2024.4.4
Neptun ProW+
Беспроводной датчик утечки, при разряде аккумулятора (датчик не на связи), в интеграции отображается заряд аккумулятора 49%. В облаке и оригинальном приложении - нет связи.
Было бы не плохо иметь любой сенсор, по которому можно было бы определить отсутствие связи с радиодатчиком.

по идее, для каждого беспроводного датчика создаются сенсоры потери связи, вроде таких:
изображение

У меня таких в списке нет.
Только те, что в скрине
SmartSelect_20240429-192927_Chrome

Да, они действительно не прописаны для Neptun ProW+ WiFi, но по каким причинам я уже не помню, нужен результат выполнения запроса на вашем устройстве
GET https://api.sst-cloud.com/houses/{id дома}/devices/{id устройства}/wireless_sensors/
Его можно просто выполнить в https://web.sst-cloud.com, в настройках устройства нажать "настройка беспроводных датчиков", нажав перед этим F12 (инструменты разработчика) и перейдя в "сеть", нужен результат выполнения этого запроса, если там есть параметр потери сети, то можно будет его добавить

{
"configuration": null,
"time_setting": {
"workday_time_range": [],
"vacation_time_range": []
},
"group": null,
"active_network": null,
"specific_settings": null,
"name": "",
"type": null,
"previous_mode": "",
"is_connected": false,
"mac_address": "",
"power": null,
"chart_temperature_comfort": null,
"chart_temperature_economical": null,
"wireless_sensors_names": [],
"line_names": [],
"lines_enabled": []
}

Оно?

не похоже, должен быть перечень датчиков, вроде такого:
[
{
"battery": 100,
"group": "second_group",
"serial_number": ****,
"name": "Ванная",
"attention": false,
"sensor_lost": false,
"signal_level": 3,
"battery_discharge": false
},
{
"battery": 100,
"group": "first_group",
"serial_number": ****,
"name": "туалет под унитазом",
"attention": false,
"sensor_lost": false,
"signal_level": 2,
"battery_discharge": false
},
{
"battery": 100,
"group": "first_group",
"serial_number": ****,
"name": "кухня",
"attention": false,
"sensor_lost": false,
"signal_level": 2,
"battery_discharge": false
}
]

[
{
"line": 2,
"battery": 100,
"attention": false,
"signal_level": 2,
"name": "Душ"
},
{
"line": 2,
"battery": 100,
"attention": false,
"signal_level": 2,
"name": "Стир машина"
},
{
"line": 3,
"battery": 100,
"attention": false,
"signal_level": 2,
"name": "Ванна раковина"
}
]

это оно, вот только тут нет поля sensor_lost отражающего потерю связи с датчиком, непонятно откуда берется статус. Попробуйте отключить один датчик (вынуть батарейку) и выполнить запрос еще раз, посмотреть что изменится. Если есть такая возможность конечно.

Отключил датчик, в приложении видится как не на связи, но в api как будто ничего не поменялось (баг в апи), или я не вижу (маки и конфигурацию почистил):
{
"id": 261327,
"configuration": ...,
"parsed_configuration": "{"settings": {"status": {"alert": "off", "dry_flag": "no", "sensors_lost": "no", "battery_discharge_in_module": "no", "battery_discharge_in_sensor": "no"}, "dry_flag": "off", "lines_in": {"line_1": "wired_sensor", "line_2": "wired_sensor", "line_3": "wired_sensor", "line_4": "wired_sensor"}, "relay_count": 0, "sensors_count": 3, "valve_settings": "opened", "close_valve_flag": "open"}, "device_id": "N3220", "mac_address": "60:C5:A8:...", "lines_status": {"line_1": "off", "line_2": "off", "line_3": "off", "line_4": "off"}, "signal_level": 4, "access_status": "available", "sensors_status": [{"line": 2, "battery": 100, "attention": false, "signal_level": 2}, {"line": 2, "battery": 100, "attention": false, "signal_level": 2}, {"line": 3, "battery": 100, "attention": false, "signal_level": 2}]}",
"timeout": 180,
"time_setting": null,
"group": null,
"active_network": 12845,
"specific_settings": {},
"created_at": "2023-07-16T16:05:38.035942Z",
"updated_at": "2024-04-29T17:30:25.536809Z",
"name": "Neptun",
"type": 2,
"previous_mode": "opened",
"is_active": true,
"is_connected": true,
"mac_address": "60:C5:A8:...",
"power": 1,
"power_relay_time": "0",
"chart_temperature_comfort": 26,
"chart_temperature_economical": 18,
"wireless_sensors_names": [
"Душ",
"Стир машина",
"Ванна раковина"
],
"line_names": [
"Стояк",
"line-2",
"line-3",
"line-4"
],
"lines_enabled": [
true,
true,
true,
true
],
"house": 33065
}

здесь есть флаг явно укахывающий на потерю какого-то сенсора "sensors_lost": "no", видимо общий для всех, но он почему то в no, видимо в апи не показывает потерю датчика в данный момент.

Нашел нужный тэг: signal_level - значение ноль при потере связи
Отключил на ночь, вывод ниже:
[
{
"line": 2,
"battery": 100,
"attention": false,
"signal_level": 2,
"name": "Душ"
},
{
"line": 2,
"battery": 100,
"attention": false,
"signal_level": 2,
"name": "Стир машина"
},
{
"line": 3,
"battery": 100,
"attention": false,
"signal_level": 0,
"name": "Ванна раковина"
}
]

тоже думал что это так работает, ок, доработаю интеграцию, как выкачу новую версию, отпишусь здесь

Опубликовал v0.1.33, попробуйте, должен появиться сенсор потери связи

Работает. Спасибо!