Advertisement
Kellsole

Управление устройствами ZONT для котлов

Jan 4th, 2022 (edited)
940
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 11.63 KB | None | 1 0
  1. ##############################################################################
  2. #Для удобства использования, поиска и обновления перенес на GitHub.           #
  3. #https://github.com/upais/ZONT-to-Home_Assistant                            #
  4. ##############################################################################
  5.  
  6.  
  7.  
  8.  
  9. # Основано на:
  10. # 1) https://sprut.ai/client/article/2292
  11. # 2) https://pastebin.com/BeSwx1F0
  12. # 3) Информации от технической поддержки ZONT и точно актуально для Zont H2000+, Zont Connect+. Причина обращения в том, что частично официальная документация описывающая API не актуальна.
  13.  
  14. ## a) Запрос для смены целевой температуры выглядит так:
  15. https://zont-online.ru/api/send_z3k_command
  16. {
  17.   "device_id": ...,  // идентификатор прибора
  18.   "object_id": ...,  // идентификатор контура
  19.   "command_name": "TargetTemperature",
  20.   "command_args": {"value": 56}, // желаемая целевая
  21.   "is_guaranteed": false/true
  22. }
  23.  
  24. Идентификатор прибора (device_id) можно увидеть в настройках. Идентификатор отопительного контура (object_id): нужно отправить запрос на https://zont-online.ru/api/devices, найти нужный контур в ответе на этот вопрос в массиве devices[].z3k_config.heating_circuits, и у нужного контура взять значение поля id.
  25.  
  26. is_guaranteed — признак гарантированной доставки команды. Если команду не удастся доставить сразу же, сервер запомнит её и будет пытаться доставить снова при выходе прибора на связь, пока прибор не подтвердит получение. Если false, сервер сделает однократную попытку доставить команду.
  27.  
  28. ## b) Запрос для смены режима:
  29. https://zont-online.ru/api/send_z3k_command
  30. {
  31.   "device_id": ..., // идентификатор прибора
  32.   "object_id": ..., // идентификатор режима
  33.   "command_name": "SelectHeatingMode",
  34.   "command_args": null,
  35.   "is_guaranteed": false/true
  36. }
  37. Идентификатор режима можно найти также в ответе на запрос devices в  devices[].z3k_config.heating_modes [].id.
  38.  
  39. # Конфигурация №1 (Получает только используемые атрибуты. Более правильный метод)
  40.  
  41. climate_heating:
  42.   rest:
  43.     - resource: https://zont-online.ru/api/devices
  44.       method: POST
  45.       scan_interval: 60
  46.       timeout: 20
  47.       headers:
  48.         X-ZONT-Client: !secret zont_client
  49.         X-ZONT-Token: !secret zont_token
  50.         Content-Type: application/json
  51.       payload: '{"load_io": true}'
  52.       sensor:
  53.         - name: "zont_rest_first_floor_temperature"
  54.           json_attributes_path: "$.devices[0].io.z3k-state.4099"
  55.           value_template: "OK"
  56.           json_attributes:
  57.            - "temperature"
  58.         - name: "zont_rest_moduletion"
  59.           json_attributes_path: "$.devices[0].io.z3k-state.20600.ot"
  60.           value_template: "OK"
  61.           json_attributes:
  62.            - "rml"
  63.         - name: "zont_rest_status_heating"
  64.           json_attributes_path: "$.devices[0].io.z3k-state.20496"
  65.           value_template: "OK"
  66.           json_attributes:
  67.            - "target_temp"
  68.             - "setpoint_temp"
  69.             - "status"
  70.         - name: "zont_rest_burner_gvs"
  71.           json_attributes_path: "$.devices[0].io.z3k-state.20603"
  72.           value_template: "OK"
  73.           json_attributes:
  74.            - "status"
  75.         - name: "zont_rest_temp_coolant"
  76.           json_attributes_path: "$.devices[0].io.z3k-state.20600.ot"
  77.           value_template: "OK"
  78.           json_attributes:
  79.            - "bt"
  80. #
  81.   template:
  82.     sensor:
  83.       - name: 'temperature_1st_floor'
  84.         state: "{{ state_attr('sensor.zont_rest_first_floor_temperature', 'temperature') }}"
  85.         availability: "{{is_state('sensor.zont_rest_first_floor_temperature', 'OK') }}"
  86.         unit_of_measurement: '°C'
  87.         icon: mdi:home-thermometer
  88. #
  89.       - name: 'target_temperature_heating'
  90.         state: "{{ state_attr('sensor.zont_rest_status_heating', 'target_temp') }}"
  91.         availability: "{{is_state('sensor.zont_rest_status_heating', 'OK') }}"
  92.         unit_of_measurement: '°C'
  93.         icon: mdi:temperature-celsius
  94. #
  95.       - name: 'moduletion_burner'
  96.         state: "{{ state_attr('sensor.zont_rest_moduletion', 'rml')|round(0) }}"
  97.         availability: "{{is_state('sensor.zont_rest_moduletion', 'OK') }}"
  98.         unit_of_measurement: '%'
  99.         icon: mdi:gas-burner
  100. #
  101.       - name: 'temperature_coolant'
  102.         state: "{{ state_attr('sensor.zont_rest_burner_gvs', 'status')|round(0) }}"
  103.         availability: "{{is_state('sensor.zont_rest_burner_gvs', 'OK') }}"
  104.         unit_of_measurement: '°C'
  105.         icon: mdi:coolant-temperature
  106. #
  107.       - name: 'calculation_temperature_coolant'
  108.         state: "{{ state_attr('sensor.zont_rest_status_heating', 'setpoint_temp')|round(0) }}"
  109.         availability: "{{is_state('sensor.zont_rest_status_heating', 'OK') }}"
  110.         unit_of_measurement: '°C'
  111.         icon: mdi:thermometer
  112. #
  113.       - name: 'burner_heating'
  114.         state: "{{ state_attr('sensor.zont_rest_status_heating', 'status') }}"
  115.         availability: "{{is_state('sensor.zont_rest_status_heating', 'OK') }}"
  116.         icon: mdi:fire
  117. #
  118.       - name: 'burner_gvs'
  119.         state: "{{ state_attr('sensor.zont_rest_burner_gvs', 'status') }}"
  120.         availability: "{{is_state('sensor.zont_rest_burner_gvs', 'OK') }}"
  121.         icon: mdi:fire
  122. #
  123.       - name: 'zont_status_heating'
  124.         state: >
  125.            {% if (state_attr('sensor.zont_rest_burner_gvs', 'status') == 1 ) and (state_attr('sensor.zont_rest_status_heating', 'status') == 0 ) %}
  126.                 ГВС
  127.             {% elif (state_attr('sensor.zont_rest_burner_gvs', 'status') == 0 ) and (state_attr('sensor.zont_rest_status_heating', 'status') == 1 ) %}
  128.                 Отопление
  129.             {% elif (state_attr('sensor.zont_rest_burner_gvs', 'status') == 1 ) and (state_attr('sensor.zont_rest_status_heating', 'status') == 1 ) %}
  130.                 Отопление | ГВС
  131.             {% else %} Не активно {% endif %}
  132.         icon: mdi:radiator
  133.  
  134. # Конфигурация №2 (Получает весь JSON от ZONT и уже из него получаем желаемые атрибуты. Не очень правильный метод, тянет много, историю сохраняет не совсем корректно)
  135. climate_heating:
  136.   sensor:
  137.   - platform: rest
  138.     resource: https://zont-online.ru/api/devices
  139.     name: zont
  140.     method: POST
  141.     timeout: 30
  142.     scan_interval: 10
  143.     force_update: true
  144.     headers:
  145.       X-ZONT-Client: !secret zont_client
  146.       X-ZONT-Token: !secret zont_token
  147.       Content-Type: application/json
  148.     payload: '{"load_io": true}'
  149.     value_template: '{{ value_json.ok }}'
  150.     json_attributes:
  151.      - devices
  152.   - platform: template
  153.     sensors:
  154.       zont_first_floor_temperature:
  155.         value_template: '{{ states.sensor.zont.attributes.devices[0].io["z3k-state"]["4099"].temperature }}'
  156.         friendly_name: 'Температура 1-й этаж'
  157.         device_class: temperature
  158.         unit_of_measurement: '°C'
  159.   - platform: template
  160.     sensors:
  161.       zont_moduletion:
  162.         value_template: '{{ states.sensor.zont.attributes.devices[0].io["z3k-state"]["20600"]["ot"].rml |round(0) }}'
  163.         friendly_name: 'Модуляция горелки'
  164.         unit_of_measurement: '%'
  165.   - platform: template
  166.     sensors:
  167.       zont_target_temperature:
  168.         value_template: '{{ states.sensor.zont.attributes.devices[0].io["z3k-state"]["20496"].target_temp }}'
  169.         friendly_name: 'Целевая температура'
  170.         device_class: temperature
  171.         unit_of_measurement: '°C'
  172.   - platform: template
  173.     sensors:
  174.       zont_burner_heat:
  175.         value_template: '{{ states.sensor.zont.attributes.devices[0].io["z3k-state"]["20496"].status }}'
  176.         friendly_name: 'Горелка Отопление'
  177.   - platform: template
  178.     sensors:
  179.       zont_burner_gvs:
  180.         value_template: '{{ states.sensor.zont.attributes.devices[0].io["z3k-state"]["20603"].status }}'
  181.         friendly_name: 'Горелка ГВС'
  182.  
  183. # Установка режима "Комфорт"
  184.   rest_command:
  185.     zont_set_comfort:
  186.       url: https://zont-online.ru/api/send_z3k_command
  187.       method: POST
  188.       headers:
  189.         X-ZONT-Client: !secret zont_client
  190.         X-ZONT-Token: !secret zont_token
  191.         Content-Type: application/json
  192.       payload: '{"device_id": 123456, "object_id": 20501, "command_name": "SelectHeatingMode", "command_args": null, "is_guaranteed": true}'
  193.  
  194. # Установка режима "Расписание"
  195.     zont_set_scheduled:
  196.       url: https://zont-online.ru/api/send_z3k_command
  197.       method: POST
  198.       headers:
  199.         X-ZONT-Client: !secret zont_client
  200.         X-ZONT-Token: !secret zont_token
  201.         Content-Type: application/json
  202.       payload: '{"device_id": 123456, "object_id": 20503, "command_name": "SelectHeatingMode", "command_args": null, "is_guaranteed": true}'
  203.  
  204. # Установка режима "Выключен"
  205.     zont_set_off:
  206.       url: https://zont-online.ru/api/send_z3k_command
  207.       method: POST
  208.       headers:
  209.         X-ZONT-Client: !secret zont_client
  210.         X-ZONT-Token: !secret zont_token
  211.         Content-Type: application/json
  212.       payload: '{"device_id": 123456, "object_id": 20504, "command_name": "SelectHeatingMode", "command_args": null, "is_guaranteed": true}'
  213.  
  214. # Установить +1 к текущей целевой температуре
  215.     zont_up_target_temp:
  216.       url: https://zont-online.ru/api/send_z3k_command
  217.       method: POST
  218.       headers:
  219.         X-ZONT-Client: !secret zont_client
  220.         X-ZONT-Token: !secret zont_token
  221.         Content-Type: application/json
  222.       payload: '{"device_id": 123456, "object_id": 20496, "command_name": "TargetTemperature", "command_args": {"value": {{ (states.sensor.zont_target_temperature.state) | round(0) +1 }}}, "is_guaranteed": true}'
  223.  
  224. # Установить -1 к текущей целевой температуре
  225.     zont_down_target_temp:
  226.       url: https://zont-online.ru/api/send_z3k_command
  227.       method: POST
  228.       headers:
  229.         X-ZONT-Client: !secret zont_client
  230.         X-ZONT-Token: !secret zont_token
  231.         Content-Type: application/json
  232.       payload: '{"device_id": 123456, "object_id": 20496, "command_name": "TargetTemperature", "command_args": {"value": {{ (states.sensor.zont_target_temperature.state) | round(0) -1 }}}, "is_guaranteed": true}'
  233.  
  234. # Установить целевую температуру из input_number (можно задавать дробные от 0.1)
  235.     zont_set_target_temp:
  236.       url: https://zont-online.ru/api/send_z3k_command
  237.       method: POST
  238.       headers:
  239.         X-ZONT-Client: !secret zont_client
  240.         X-ZONT-Token: !secret zont_token
  241.         Content-Type: application/json
  242.       payload: '{"device_id": 123456, "object_id": 33333, "command_name": "TargetTemperature", "command_args": {"value": {{ (states.input_number.target_heating_temperature.state) | round(1) }}}, "is_guaranteed": true}'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement