Giter VIP home page Giter VIP logo

hass-myheat's Introduction

MyHeat

GitHub Release GitHub Activity License

pre-commit Black

hacs Project Maintenance

This component will set up the following platforms.

Platform Description
binary_sensor Show something True or False.
sensor Show info from MyHeat API.
climate Manage heating controller.
switch Switch something True or False.

Installation

  1. Using the tool of choice open the directory (folder) for your HA configuration (where you find configuration.yaml).
  2. If you do not have a custom_components directory (folder) there, you need to create it.
  3. In the custom_components directory (folder) create a new folder called myheat.
  4. Download all the files from the custom_components/myheat/ directory (folder) in this repository.
  5. Place the files you downloaded in the new directory (folder) you created.
  6. Restart Home Assistant
  7. In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "MyHeat"

Using your HA configuration directory (folder) as a starting point you should now also have this:

custom_components/myheat/translations/*.json
custom_components/myheat/*.py
custom_components/myheat/manifest.json

Configuration is done in the UI

Contributions are welcome!

If you want to contribute to this please read the Contribution guidelines

Credits

This project was generated from @oncleben31's Home Assistant Custom Component Cookiecutter template.

Code template was mainly taken from @Ludeeus's integration_blueprint template


hass-myheat's People

Contributors

dependabot[bot] avatar pdacity avatar vooon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

hass-myheat's Issues

Неверный логин или пароль

Версия интеграции 0.2.0 версия ХА 2023.2.5
Не даёт зарегистрироваться - сообщает "Неверный логин или пароль"
В качестве пароля пробовал сначала указать ключ API, затем пароль от веб-интерфейса myheat - резальтат один и тот же.
И логин, и ключ API однозначно верны, ибо использую в ХА "самописную полуинтеграцию" через сенсоры RESTFull, и там они вполне себе работают.

Дискретность при задании целевой температуры

В текущей версии (0.4.0) реализована дискретность (точность) при задании целевых температур в 1 целый градус. То есть, задать целевую температуру зоны можно, например, 22 или 23 градуса, но никак не 22.1 или 23,6.
Возможности штатного управления MyHeat поддерживают точность задания температуры до 0.1 градуса (см. скриншот в качестве доказательства)
2024-03-09 23_31_28-Панель управления
Более того - возможности адд-она также позволяют использовать точность 0.1 градуса.
Для этого надо открыть на редактирование файл climate.py, найти в нем строку...
self._attr_target_temperature_step = 1.0
...и заменить 1.0 на 0.1 (или 0.5, если вас устраивает точность в пол-градуса).
Затем сохранить файл и перезапустить Home Assistant.
После этого на термостатах можно будет задавать температуру с новым значением дискретности:
2024-03-09 23_35_41-Обзор – Home Assistant

Не отображается текущий пресет отопления

HA Core: 2024.4.0
MyHeat: 0.4.0

Логи

2024-04-04 22:47:09.783 DEBUG (MainThread) [custom_components.myheat] Data: {'data': {'heaters': [{'id': 12, 'name': 'Котел', 'disabled': False, 'flowTemp': 25.889999999999997, 'returnTemp': None, 'pressure': None, 'targetTemp': None, 'burnerWater': False, 'burnerHeating': False, 'modulation': 0, 'severity': 1, 'severityDesc': 'Котел работает исправно.'}], 'envs': [{'id': 94, 'type': 'boiler_temperature', 'name': 'Горячая вода', 'value': 58.8, 'target': 60, 'demand': False, 'severity': 1, 'severityDesc': 'Нормальное состояние.'}, {'id': 95, 'type': 'room_temperature', 'name': 'Температура помещения', 'value': 25, 'target': 24, 'demand': False, 'severity': 1, 'severityDesc': 'Нормальное состояние.'}], 'engs': [], 'alarms': [], 'dataActual': True, 'severity': 32, 'severityDesc': 'Низкий баланс SIM-карты.', 'weatherTemp': '5.980000000000018', 'city': 'Столбищи'}, 'err': 0, 'refreshPage': False}


2024-04-04 22:39:21.386 WARNING (MainThread) [homeassistant.components.climate] Entity None (<class 'custom_components.myheat.climate.MhEnvClimate'>) implements HVACMode(s): off, heat and therefore implicitly supports the turn_on/turn_off methods without setting the proper ClimateEntityFeature. Please create a bug report at https://github.com/vooon/hass-myheat/issues

Карточка

  - type: thermostat
    entity: climate.myheat_temperatura_pomeshcheniia
    features:
      - type: climate-preset-modes
        style: dropdown
        preset_modes:
          - home
          - eco
          - sleep
          - away
          - none
      - type: climate-hvac-modes
        hvac_modes:
          - 'off'
          - heat
    show_current_as_primary: false

Myheat.net

Названия режимов переименованы, но id остались такие же
Панель управления 2024-04-04 23-01-51

Проблема

Если в интерфейсе карточки выбирать режим, то в myheat.net от успешно переключается, после перезагрузки страницы в HA сбрасывается на None

screencast.2024-04-04.23-00-07.mp4

binary_sensor.xxx_severity

В новой (0.3.0) версии появился объект "severity", отражающий общее состояние контроллера.
Но почему-то реализован он как "binary_sensor" - то есть, рассчитан на выдачу двух состояний - 1 и 0.
Однако на самом деле значение "severity" может принимать несколько значений, четыре из которых описаны в документации по API:
0 - состояние неизвестно
1 - система работает нормально
32 - предупреждение
64 - критическое состояние системы
По практическому опыту - например, если долгое время нет связи с контроллером или даже с каким-то датчиком, то MyHeat выдает значение severity=64 (критическое состояние системы).

Полагаю, что сенсор "severity" должен быть не бинарным, а обычным, принимающим числовые (целочисленные) значения.

добавление last seen

Добавить entity last seen - сколько секунд назал получены данные от котла / сервера myheat.

Диапазон целевой температуры (и сопутствующие проблемы)

Версия 0.2.0
Обнаружилось, что все термостаты (зоны) из интеграции MyHeat имеют диапазон установки целевой температуры от 7 до 35 градусов Цельсия.
Это касается абсолютно всех термостатов - как связанных с температурой воздуха в помещениях, так и прочих.
Например, у меня есть зона "Бойлер" - это бойлер косвенного нагрева, отапливаемый газовым котлом. Там (через настройки облака Myheat) выставлена целевая температура 52 градуса.
И на карточке Home Assistant также (если ничего не трогать) показана целевая температура 52 градуса:
Boiler
Однако при попытке изменить целевую температуру упираемся в верхнее ограничение 35 градусов.
Boiler2
Кстати, тут еще параметр "target_temp_step" задан в 1 градус, хотя панель управления MyHeat позволяет задавать температуру с точностью до 0.1 градуса.

И еще один неприятный момент: если в HA изменить целевую температуру любой зоны, то полностью останавливается расписание, заданное в панели управления MyHeat.

Перестало работать после обновления HA 2024.2.0

После обновления HA до версии 2024.2.0 интеграция полностью перестала работать. Все ранее имевшиеся объекты стали недоступными. При попытке заново настроить интеграцию выдается ошибка логина-пароля (вернее, не пароля, а API-ключа)

Хотелки в будущих версиях

Не хочу показаться нескромным (тем более, что и сам готов принять посильное участие в развитии проекта), но тем не менее очень хотелось бы расширения функционала, а именно:

  1. Определение типа зоны (температура помещения, бойлер, уличная температура, бассейн, смесительный узел и т.д. - всего там, кажется, десять вариантов) и в зависимости от типа зоны уставка предельных значений температуры (например, для температуры помещения от 7 до 35 градусов, для бойлера от 30 до 70 градусов и т.д.). Кроме того, если тип зоны не подразумевает установку целевой температуры (например, уличная температура), то передачу в ХА данной зоны не как термостата, а как простого сенсора (датчика температуры).
  2. Получение информации зон по параметрам "demand" (запрос тепла) и "severity/severityDesc" (текущее состояние - нет ли ошибки и т.д.)
  3. По аналогии с зонами (envs) - трансляция в ХА также и инженерного оборудования (engs) с дифференциацией по типам (кран, клапан, насос и т.д.), получением текущего состояния и возможностью управления из ХА (например, смена режима - открю, закр., авто). Также, как и с зонами - проверку на ошибки по параметрам severity/severityDesc.
  4. Трансляция в ХА отопителей (котлов) с получением всей возможной информации - текущие температуры теплоносителя и обратки, давление, доступность, состояние работы, модуляция, подогрев ГВС и т.д. Возможность включения и отключения котла (котлов). Возможность в ХА деактивировать отдельные параметры (например, если котел в силу своих конструктивных особенностей не сообщает какие-то данные или передает для них нулевое значение). Возможность подмены таких данных данными от других датчиков, имеющихся в ХА.
  5. Мониторинг и отображение общих данных MyHeat - состояние системы (severity/severityDesc), уличная температура по данным из Интернета (weatherTemp), актуальность данных (dataActual = true/false), географическое местоположение системы (city).

P.S. все вышеупомянутые данные выдаются по запросу "get_device_info", я не придумал никакой "отсебятины". Ниже даю пример такого запроса, как это выглядит у меня:

friendly_name: 'Контроллер: информация об устройстве'
heaters:
  - id: 234
    name: Котёл
    disabled: false
    flowTemp: 48
    returnTemp: 35.75
    pressure: null
    targetTemp: null
    burnerWater: false
    burnerHeating: false
    modulation: 0
envs:
  - id: 109
    type: room_temperature
    name: 3-й этаж
    value: 22.875
    target: 21
    demand: false
    severity: 1
    severityDesc: Нормальное состояние.
  - id: 247
    type: floor_temperature
    name: Тёплый пол
    value: 25.25
    target: 24
    demand: false
    severity: 1
    severityDesc: Нормальное состояние.
  - id: 220
    type: room_temperature
    name: 2-й этаж
    value: 22.375
    target: 22
    demand: false
    severity: 1
    severityDesc: Нормальное состояние.
  - id: 235
    type: boiler_temperature
    name: Бойлер
    value: 56.6875
    target: 60
    demand: true
    severity: 1
    severityDesc: Нормальное состояние.
  - id: 219
    type: outdoor_temperature
    name: Уличная температура
    value: 5.9375
    target: 7
    demand: false
    severity: 1
    severityDesc: Нормальное состояние.
  - id: 80
    type: circuit_temperature
    name: Контур отопления
    value: 48.089999999999996
    target: 7
    demand: false
    severity: 1
    severityDesc: Нормальное состояние.
  - id: 107
    type: room_temperature
    name: 1-й этаж
    value: 22.25
    target: 22
    demand: false
    severity: 1
    severityDesc: Нормальное состояние.
engs:
  - id: 136
    type: two_way_valve
    name: Кран 2-го этажа
    turnedOn: false
    mode: -1
    severity: 1
    severityDesc: Дана команда на закрытие.
  - id: 115
    type: two_way_valve
    name: Кран тёплого пола
    turnedOn: false
    mode: -1
    severity: 1
    severityDesc: Дана команда на закрытие.
  - id: 114
    type: two_way_valve
    name: Кран 3-го этажа
    turnedOn: false
    mode: -1
    severity: 1
    severityDesc: Дана команда на закрытие.
  - id: 113
    type: two_way_valve
    name: Кран 1-го этажа
    turnedOn: false
    mode: -1
    severity: 1
    severityDesc: Дана команда на закрытие.
alarms: []
dataActual: true
severity: 1
severityDesc: Система работает нормально.
weatherTemp: '8.830000000000041'
city: Простоквашино

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.