sergeylysov / sst_cloud

Unofficial SST Cloud integration for Home Assistant
32 stars 7 forks source link

Управление краном Neptun #19

Closed ildmgithub closed 1 year ago

ildmgithub commented 1 year ago

Добрый день. Не получается из HA открывать закрывать краны. При попытке закрыть статус выключателя просто возвращается обратно с некоторой задержкой.

ildmgithub commented 1 year ago

20230204_110611 Я так понимаю назначение этих выключателей для управления краном.

sergeylysov commented 1 year ago

Добрый день! По идее должно работатать, посмотрите в журнале HA есть ли какие то ошибки связаные с sst_cloud, если есть пришлите, так же уточните, в каком режиме используется модуль с одной зоной или двумя?

oneevil commented 1 year ago

При использовании модуля с одной зоной по идее должен быть один выключатель крана и одна зона тревоги. А он создает по два.

Определение сколько зон сконфигурировано можно получить:

config["module_settings"]["module_config"]["grouping"] = "one_group"
config["module_settings"]["module_config"]["grouping"] = "two_groups"
sergeylysov commented 1 year ago

Проблема возникаем именно в однозонном режиме? Пришлите пожалуйста полный json устройства с одной зоной

oneevil commented 1 year ago

Да, только в однозонном режиме.

Вот json при однозонном режиме:

[
    {
        "id": 227687,
        "configuration": "AlRBUgBsSQAFTjUxMTVNABE1MDowMjo5MTo5RjpEODpDQ0EAAQBDAAcLAAMDAwMAVwAHAguhAwwvA3cABQJkGGQQUgABA1MAGAUAAQAEEAEAAC6GCgAAAQAACqAKAAD/AEQACjE2NzU4NjE5NDdMAAEAWVY=",
        "parsed_configuration": "{\"device_id\": \"N5115\", \"mac_address\": \"50:02:91:9F:D8:CC\", \"signal_level\": 0, \"access_status\": \"available\", \"slots_settings\": [{\"type\": \"empty\", \"config\": {}, \"number\": 1}, {\"type\": \"radio\", \"config\": {}, \"number\": 2}, {\"type\": \"counters\", \"config\": {\"counters\": [{\"line\": 1, \"step\": 10, \"error\": \"none\", \"value\": 11910, \"status\": \"on\", \"connection_type\": \"none\"}, {\"line\": 2, \"step\": 10, \"error\": \"none\", \"value\": 2720, \"status\": \"on\", \"connection_type\": \"none\"}]}, \"number\": 3}, {\"type\": \"empty\", \"config\": {}, \"number\": 4}], \"module_settings\": {\"module_config\": {\"grouping\": \"one_group\", \"keyboard_block_state\": \"unblocked\", \"first_group_valves_state\": \"opened\", \"second_group_valves_state\": \"opened\", \"close_valves_for_lost_sensor\": \"on\"}, \"module_status\": {\"first_group_alarm\": \"no\", \"second_group_alarm\": \"no\", \"washing_floors_mode\": \"off\", \"wireless_sensors_lost\": \"no\", \"wireless_device_connection\": \"no\", \"wireless_sensors_battery_discharge\": \"no\", \"close_valves_for_lost_sensor_at_first_group\": \"no\", \"close_valves_for_lost_sensor_at_second_group\": \"no\"}, \"wire_lines_config\": [{\"group\": \"both_groups\", \"number\": 1, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 2, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 3, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 4, \"input_type\": \"sensor\"}], \"wire_lines_status\": {\"first_line_alarm\": \"no\", \"third_line_alarm\": \"no\", \"fourth_line_alarm\": \"no\", \"second_line_alarm\": \"no\"}}, \"relay_events_config\": {\"group_switch_at_alarm\": \"both_groups\", \"group_switch_at_closing_valves\": \"no_switch\"}, \"wireless_sensors_info\": [{\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 3, \"battery_discharge\": false}, \"battery_level\": 100}, {\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 2, \"battery_discharge\": false}, \"battery_level\": 100}], \"wireless_sensors_params\": [{\"group\": \"both_groups\", \"serial_number\": 2977}, {\"group\": \"both_groups\", \"serial_number\": 3119}]}",
        "timeout": 180,
        "time_setting": null,
        "group": null,
        "active_network": 90911,
        "specific_settings": {
            "first_group_name": "Холодная вода",
            "second_group_name": "Горячая вода"
        },
        "created_at": "2022-08-09T06:35:34.608251Z",
        "updated_at": "2023-02-08T08:12:29.306614Z",
        "name": "Нептун",
        "type": 7,
        "previous_mode": null,
        "is_active": true,
        "is_connected": true,
        "mac_address": "50:02:91:9F:D8:CC",
        "power": 1,
        "power_relay_time": "0",
        "chart_temperature_comfort": 26,
        "chart_temperature_economical": 18,
        "wireless_sensors_names": [],
        "line_names": [
            "line-1",
            "line-2",
            "line-3",
            "line-4"
        ],
        "lines_enabled": [
            true,
            true,
            true,
            true
        ],
        "house": 92529
    }
]

На всякий случай вот при многозонном:

[
    {
        "id": 227687,
        "configuration": "AlRBUgBsSQAFTjUxMTVNABE1MDowMjo5MTo5RjpEODpDQ0EAAQBDAAcPAAMDAwMAVwAHAguhAwwvA3cABQJkGGQQUgABA1MAGAUAAQAEEAEAAC6GCgAAAQAACqAKAAD/AEQACjE2NzU4NjIwNTBMAAEAqFk=",
        "parsed_configuration": "{\"device_id\": \"N5115\", \"mac_address\": \"50:02:91:9F:D8:CC\", \"signal_level\": 0, \"access_status\": \"available\", \"slots_settings\": [{\"type\": \"empty\", \"config\": {}, \"number\": 1}, {\"type\": \"radio\", \"config\": {}, \"number\": 2}, {\"type\": \"counters\", \"config\": {\"counters\": [{\"line\": 1, \"step\": 10, \"error\": \"none\", \"value\": 11910, \"status\": \"on\", \"connection_type\": \"none\"}, {\"line\": 2, \"step\": 10, \"error\": \"none\", \"value\": 2720, \"status\": \"on\", \"connection_type\": \"none\"}]}, \"number\": 3}, {\"type\": \"empty\", \"config\": {}, \"number\": 4}], \"module_settings\": {\"module_config\": {\"grouping\": \"two_groups\", \"keyboard_block_state\": \"unblocked\", \"first_group_valves_state\": \"opened\", \"second_group_valves_state\": \"opened\", \"close_valves_for_lost_sensor\": \"on\"}, \"module_status\": {\"first_group_alarm\": \"no\", \"second_group_alarm\": \"no\", \"washing_floors_mode\": \"off\", \"wireless_sensors_lost\": \"no\", \"wireless_device_connection\": \"no\", \"wireless_sensors_battery_discharge\": \"no\", \"close_valves_for_lost_sensor_at_first_group\": \"no\", \"close_valves_for_lost_sensor_at_second_group\": \"no\"}, \"wire_lines_config\": [{\"group\": \"both_groups\", \"number\": 1, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 2, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 3, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 4, \"input_type\": \"sensor\"}], \"wire_lines_status\": {\"first_line_alarm\": \"no\", \"third_line_alarm\": \"no\", \"fourth_line_alarm\": \"no\", \"second_line_alarm\": \"no\"}}, \"relay_events_config\": {\"group_switch_at_alarm\": \"both_groups\", \"group_switch_at_closing_valves\": \"no_switch\"}, \"wireless_sensors_info\": [{\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 3, \"battery_discharge\": false}, \"battery_level\": 100}, {\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 2, \"battery_discharge\": false}, \"battery_level\": 100}], \"wireless_sensors_params\": [{\"group\": \"both_groups\", \"serial_number\": 2977}, {\"group\": \"both_groups\", \"serial_number\": 3119}]}",
        "timeout": 180,
        "time_setting": null,
        "group": null,
        "active_network": 90911,
        "specific_settings": {
            "first_group_name": "Холодная вода",
            "second_group_name": "Горячая вода"
        },
        "created_at": "2022-08-09T06:35:34.608251Z",
        "updated_at": "2023-02-08T08:14:11.779605Z",
        "name": "Нептун",
        "type": 7,
        "previous_mode": null,
        "is_active": true,
        "is_connected": true,
        "mac_address": "50:02:91:9F:D8:CC",
        "power": 1,
        "power_relay_time": "0",
        "chart_temperature_comfort": 26,
        "chart_temperature_economical": 18,
        "wireless_sensors_names": [],
        "line_names": [
            "line-1",
            "line-2",
            "line-3",
            "line-4"
        ],
        "lines_enabled": [
            true,
            true,
            true,
            true
        ],
        "house": 92529
    }
]
sergeylysov commented 1 year ago

Спасибо, посмотрю что можно сделать

sergeylysov commented 1 year ago

Даже в однозонном режиме пристуствует статус по двум группам кранов "module_settings":{ "module_config":{ "grouping":"one_group", "keyboard_block_state":"unblocked", "first_group_valves_state":"opened", "second_group_valves_state":"opened", "close_valves_for_lost_sensor":"on" }, "module_status":{ "first_group_alarm":"no", "second_group_alarm":"no", "washing_floors_mode":"off", "wireless_sensors_lost":"no", "wireless_device_connection":"no", "wireless_sensors_battery_discharge":"no", "close_valves_for_lost_sensor_at_first_group":"no", "close_valves_for_lost_sensor_at_second_group":"no" } Возможно вторая просто не используется, но тогда на первую должны закрываться и открываться краны. Есть какие то ошибки в логах?

oneevil commented 1 year ago

По логам ничего не нашел в плане ошибок. но даже если закрыть кран первой группы - он не закрывает.

oneevil commented 1 year ago

И я скажу web.sst-cloud.com тоже не закрывает краны при одной зоне ))))))))))))))))))) при этом sst-cloud и tuya приложения - закрывает норм

sergeylysov commented 1 year ago

это забавно конечно) А я только хотел попросить посмотреть какой запрос выполняется при закрытии)

sergeylysov commented 1 year ago

Возможно они в приложении используют какой то не описаный метод в апи или какой то другой формат. Попробуйте написать им в техподдержку что не работает в web.sst-cloud.com, может они там поправят и тогда сможем перенсти это в HA

oneevil commented 1 year ago

При многозонном посылаются POST запросы на https://api.sst-cloud.com/houses/92529/devices/227687/module_settings/:

{
    "module_config": {
        "first_group_valves_state": "closed"
    }
}

{
    "module_config": {
        "first_group_valves_state": "opened"
    }
}
{
    "module_config": {
        "second_group_valves_state": "closed"
    }
}

{
    "module_config": {
        "second_group_valves_state": "opened"
    }
}
oneevil commented 1 year ago

При однозонном режиме идет POST запрос на https://api.sst-cloud.com/houses/92529/devices/227687/valve_settings/:

{
    "valve_settings": "closed"
}

Который не работает

sergeylysov commented 1 year ago

Видимо нужен какой то третий вариант

oneevil commented 1 year ago

отсинифил трафик из приложения

шлет в https://api.sst-cloud.com//houses/92529/devices/227687/

закрыть кран: {"configuration":"AlRRVwAJQwAGCAAAAAAAA18="}

открыть кран: {"configuration":"AlRRVwAJQwAGCQAAAAAARv8="}

sergeylysov commented 1 year ago

а какой запрос? POST? По этому адресу есть обновление устройства, возможно это хешированый кусок конфигурации на закрытие крана

oneevil commented 1 year ago

метод PATCH идет в приложении

sergeylysov commented 1 year ago

Похоже понял, это частичное обновление конфигурации, но конфигурация передается захешированая, только вот непонятно что за метод они используют. Base64 не подходит

oneevil commented 1 year ago

Есть пример закондированного и раскодированного текста

AlRBUgBsSQAFTjUxMTVNABE1MDowMjo5MTo5RjpEODpDQ0EAAQBDAAcLAAMDAwMAVwAHAguhAwwvA3cABQJkGGQQUgABA1MAGAUAAQAEEAEAAC6GCgAAAQAACqAKAAD/AEQACjE2NzU4NzE4NzBMAAEAoyA=

раскодировано это так:

{\"device_id\": \"N5115\", \"mac_address\": \"50:02:91:9F:D8:CC\", \"signal_level\": 0, \"access_status\": \"available\", \"slots_settings\": [{\"type\": \"empty\", \"config\": {}, \"number\": 1}, {\"type\": \"radio\", \"config\": {}, \"number\": 2}, {\"type\": \"counters\", \"config\": {\"counters\": [{\"line\": 1, \"step\": 10, \"error\": \"none\", \"value\": 11910, \"status\": \"on\", \"connection_type\": \"none\"}, {\"line\": 2, \"step\": 10, \"error\": \"none\", \"value\": 2720, \"status\": \"on\", \"connection_type\": \"none\"}]}, \"number\": 3}, {\"type\": \"empty\", \"config\": {}, \"number\": 4}], \"module_settings\": {\"module_config\": {\"grouping\": \"one_group\", \"keyboard_block_state\": \"unblocked\", \"first_group_valves_state\": \"opened\", \"second_group_valves_state\": \"opened\", \"close_valves_for_lost_sensor\": \"on\"}, \"module_status\": {\"first_group_alarm\": \"no\", \"second_group_alarm\": \"no\", \"washing_floors_mode\": \"off\", \"wireless_sensors_lost\": \"no\", \"wireless_device_connection\": \"no\", \"wireless_sensors_battery_discharge\": \"no\", \"close_valves_for_lost_sensor_at_first_group\": \"no\", \"close_valves_for_lost_sensor_at_second_group\": \"no\"}, \"wire_lines_config\": [{\"group\": \"both_groups\", \"number\": 1, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 2, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 3, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 4, \"input_type\": \"sensor\"}], \"wire_lines_status\": {\"first_line_alarm\": \"no\", \"third_line_alarm\": \"no\", \"fourth_line_alarm\": \"no\", \"second_line_alarm\": \"no\"}}, \"relay_events_config\": {\"group_switch_at_alarm\": \"both_groups\", \"group_switch_at_closing_valves\": \"no_switch\"}, \"wireless_sensors_info\": [{\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 3, \"battery_discharge\": false}, \"battery_level\": 100}, {\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 2, \"battery_discharge\": false}, \"battery_level\": 100}], \"wireless_sensors_params\": [{\"group\": \"both_groups\", \"serial_number\": 2977}, {\"group\": \"both_groups\", \"serial_number\": 3119}]}

oneevil commented 1 year ago

при включении мойки полов шлет PATCH https://api.sst-cloud.com//houses/92529/devices/227687/

{
    "configuration": "AlRRVwAJQwAGCQAAAAAARv8="
}
sergeylysov commented 1 year ago

А мойка полов включается из HA? И пришлите еще пожалуйста раскодированую конфигурацию с закрытыми кранами, понять что именно меняется. Могу попробовать запилить с захардкожеными сообщениями на закрытие/открытие кранов, думаю может сработать

oneevil commented 1 year ago

Мойка включается без проблем в HA

состояние закрытых кранов:

[
  {
    "id": 227687,
    "configuration": "AlRBUgBsSQAFTjUxMTVNABE1MDowMjo5MTo5RjpEODpDQ0EAAQBDAAcIAAMDAwMAVwAHAguhAwwvA3cABQJkGGQQUgABA1MAGAUAAQAEEAEAAC6GCgAAAQAACqAKAAD/AEQACjE2NzU4NzY0OTVMAAEACeY=",
    "parsed_configuration": "{\"device_id\": \"N5115\", \"mac_address\": \"50:02:91:9F:D8:CC\", \"signal_level\": 0, \"access_status\": \"available\", \"slots_settings\": [{\"type\": \"empty\", \"config\": {}, \"number\": 1}, {\"type\": \"radio\", \"config\": {}, \"number\": 2}, {\"type\": \"counters\", \"config\": {\"counters\": [{\"line\": 1, \"step\": 10, \"error\": \"none\", \"value\": 11910, \"status\": \"on\", \"connection_type\": \"none\"}, {\"line\": 2, \"step\": 10, \"error\": \"none\", \"value\": 2720, \"status\": \"on\", \"connection_type\": \"none\"}]}, \"number\": 3}, {\"type\": \"empty\", \"config\": {}, \"number\": 4}], \"module_settings\": {\"module_config\": {\"grouping\": \"one_group\", \"keyboard_block_state\": \"unblocked\", \"first_group_valves_state\": \"closed\", \"second_group_valves_state\": \"closed\", \"close_valves_for_lost_sensor\": \"on\"}, \"module_status\": {\"first_group_alarm\": \"no\", \"second_group_alarm\": \"no\", \"washing_floors_mode\": \"off\", \"wireless_sensors_lost\": \"no\", \"wireless_device_connection\": \"no\", \"wireless_sensors_battery_discharge\": \"no\", \"close_valves_for_lost_sensor_at_first_group\": \"no\", \"close_valves_for_lost_sensor_at_second_group\": \"no\"}, \"wire_lines_config\": [{\"group\": \"both_groups\", \"number\": 1, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 2, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 3, \"input_type\": \"sensor\"}, {\"group\": \"both_groups\", \"number\": 4, \"input_type\": \"sensor\"}], \"wire_lines_status\": {\"first_line_alarm\": \"no\", \"third_line_alarm\": \"no\", \"fourth_line_alarm\": \"no\", \"second_line_alarm\": \"no\"}}, \"relay_events_config\": {\"group_switch_at_alarm\": \"both_groups\", \"group_switch_at_closing_valves\": \"no_switch\"}, \"wireless_sensors_info\": [{\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 3, \"battery_discharge\": false}, \"battery_level\": 100}, {\"status\": {\"alarm\": false, \"sensor_lost\": false, \"signal_quality\": 2, \"battery_discharge\": false}, \"battery_level\": 100}], \"wireless_sensors_params\": [{\"group\": \"both_groups\", \"serial_number\": 2977}, {\"group\": \"both_groups\", \"serial_number\": 3119}]}",
    "timeout": 180,
    "time_setting": null,
    "group": null,
    "active_network": 90911,
    "specific_settings": {
      "first_group_name": "Холодная вода",
      "second_group_name": "Горячая вода"
    },
    "created_at": "2022-08-09T06:35:34.608251Z",
    "updated_at": "2023-02-08T12:14:56.850440Z",
    "name": "Нептун",
    "type": 7,
    "previous_mode": null,
    "is_active": true,
    "is_connected": true,
    "mac_address": "50:02:91:9F:D8:CC",
    "power": 1,
    "power_relay_time": "0",
    "chart_temperature_comfort": 26,
    "chart_temperature_economical": 18,
    "wireless_sensors_names": [],
    "line_names": [
      "line-1",
      "line-2",
      "line-3",
      "line-4"
    ],
    "lines_enabled": [
      true,
      true,
      true,
      true
    ],
    "house": 92529
  }
]

при это их web.sst-cloud.com не отображает что кран закрыт )))))))))))) в приложениях все норм отображается - закрыто

oneevil commented 1 year ago

Да хардкодно он открывает и закрывает:

curl -X PATCH -H "Content-Type: application/json" -d '{"configuration":"AlRRVwAJQwAGCQAAAAAARv8="}' -H "Authorization: Token XXX" https://api.sst-cloud.com/houses/92529/devices/227687/

curl -X PATCH -H "Content-Type: application/json" -d '{"configuration":"AlRRVwAJQwAGCAAAAAAAA18="}' -H "Authorization: Token XXX" https://api.sst-cloud.com/houses/92529/devices/227687/
sergeylysov commented 1 year ago

Опубликовал v0.1.16 попробуйте обновиться

oneevil commented 1 year ago

да, работает. binary_sensor.alert_module_second_group_alarm - я думаю - возможно не нужен при однозонном режиме

sergeylysov commented 1 year ago

щас уберу, а switch один появился? только для первой зоны?

oneevil commented 1 year ago

switch да один - тут все верно

sergeylysov commented 1 year ago

Опубликовал v0.1.17

oneevil commented 1 year ago

Отлично. А вы не сомтрели в сторону типа счетчиков на воду? В конфиг энергии не добавляются /config/energy https://developers.home-assistant.io/docs/core/entity/sensor/#long-term-statistics

sergeylysov commented 1 year ago

Не смотрел, на беглый взгляд вроде все правильно _attr_unit_of_measurement = VOLUME_CUBIC_METERS _attr_state_class = SensorStateClass.TOTAL но в энергию не добавляется, заведите отдельный issue попробую посмотреть по-возможности

sergeylysov commented 1 year ago

Исправлено в v0.1.17