Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Всплески значений датчиков температуры до значения на момент старта HA #66

Closed
vadipp opened this issue Oct 14, 2021 · 14 comments

Comments

@vadipp
Copy link

vadipp commented Oct 14, 2021

Добрый день!

В первую очередь, спасибо за интеграцию, сильно помогло быстро внедрить Mega-D в HA.

Теперь о проблеме:
image
Это значения датчиков температуры DS18B20, подключенных к одному порту меги шиной, с использованием питания 3.3V (не паразитное). Однако, длина проводов большая, и значения не всегда измеряются корректно. Иногда они выдаются мегой как N/A или CRC Error. Я ожидаю, что в таком случае интеграция должна возвращать значение None, и на графике будет просто пусто. Но видно, что значения датчиков в этот момент "прыгают" до некоего фиксированного значения для каждого датчика. Я выяснил, что это значение равно первому считанному значению в момент запуска HA.

Версия интеграции сначала стояла последняя стабильная, потом попробовал обновить до последней нестабильной (v1.0.10b6), но проблема осталась. Версия HA: core-2021.6.6.

Просмотр кода к сожалению мне ничего не дал, я не смог понять, где сохраняется это значение. Вообще-то я программист, но в питоне не силён :) Готов помочь в отладке.

@andvikt
Copy link
Owner

andvikt commented Oct 28, 2021

Добрый день! Сейчас немного загружен делами, времени пока нет на поддержку по интеграции.

По поводу того что ставятся значения на момент старта - гипотеза интересная. На самом деле интергация делает ровно то что вы говорите - ставит None в случае, если значение не удается преобразовать к float. И если HA сам там что-то решает заменить с None на другое - это неожиданное поведение. В целом вы меня натолкнули на мысль, что надо ставить не None, а последнее известное значение, кажется это легко сделать, попробую выпустить бету с таким улучшением

@andvikt
Copy link
Owner

andvikt commented Oct 28, 2021

Пробуйте v1.0.10b6

@vadipp
Copy link
Author

vadipp commented Oct 28, 2021

Спасибо, попробую v1.0.10b8.

Но на самом деле, возвращать последнее значение - не совсем правильно. Так можно попасть на ситуацию, когда график выглядит непрерывным, но на самом деле физически датчик уже давно недоступен и ничего не выдаёт. Поэтому должно быть именно отсутствие значения.

Я проверял рестартом HA, уверенно могу сказать, что значение которое спонтанно возникает, это именно первое значение датчика на момент старта HA. Кто уж там это значение подставляет - не знаю. Если есть идеи как это отладить/отловить, буду готов помочь.

@andvikt
Copy link
Owner

andvikt commented Oct 28, 2021

Спасибо, попробую v1.0.10b8.

Но на самом деле, возвращать последнее значение - не совсем правильно. Так можно попасть на ситуацию, когда график выглядит непрерывным, но на самом деле физически датчик уже давно недоступен и ничего не выдаёт. Поэтому должно быть именно отсутствие значения.

Я проверял рестартом HA, уверенно могу сказать, что значение которое спонтанно возникает, это именно первое значение датчика на момент старта HA. Кто уж там это значение подставляет - не знаю. Если есть идеи как это отладить/отловить, буду готов помочь.

Боюсь HA "против" такой логики. И я отчасти согласен, None - непонятно как правильно рисовать на графиках. Поэтому могу предложить там где None ставить warning в лог, вы эти ворнинги можете отслеживать в том числе с помощью счетчиков

@STipograf
Copy link

Добрый день! Сейчас немного загружен делами, времени пока нет на поддержку по интеграции.

По поводу того что ставятся значения на момент старта - гипотеза интересная. На самом деле интергация делает ровно то что вы говорите - ставит None в случае, если значение не удается преобразовать к float. И если HA сам там что-то решает заменить с None на другое - это неожиданное поведение. В целом вы меня натолкнули на мысль, что надо ставить не None, а последнее известное значение, кажется это легко сделать, попробую выпустить бету с таким улучшением

Похоже такое решение сломало работу других датчиков. У меня перестал работать сценарий, настроенный только на Меге, не в HA. При этом в логах появилось много сообщений "could not convert to float...". для значений: "W26", "NA"

@andvikt
Copy link
Owner

andvikt commented Oct 29, 2021

по поводу сообщений - просьба прислать полный текст этих сообщений

@andvikt
Copy link
Owner

andvikt commented Oct 29, 2021

по поводу сообщений - просьба прислать полный текст этих сообщений

а нет, это же так и задумано, забыл совсем. Эти сообщения в лог сыпятся тогда, когда от меги приходят значения, которые нельзя преобразовать к числу - это как раз информация для вас о том, что что-то у вас не так.

@andvikt
Copy link
Owner

andvikt commented Oct 29, 2021

а по поводу "сломало работу других датчиков" - это вообще странно. Вы какую версию поставили? v1.0.10b8? Там изменения только в части конвертации в число. Это никак не влияет на работу сценариев на меге

@vadipp
Copy link
Author

vadipp commented Oct 29, 2021

None - непонятно как правильно рисовать на графиках.

None прекрасно рисуется по крайней мере на линейных графиках: как разрыв в линии.

Насчёт логов: да можно добавить такие предупреждения в debug лог, я бы проверил, что их появление совпадает с
провалами в графике.

@vadipp
Copy link
Author

vadipp commented Oct 29, 2021

Вчера установил версию v1.0.10b8, перезапустил HA. Ничего не изменилось, всплески по-прежнему есть. Сегодняшний график выглядит так:

image

В логе HA появились сообщения:

could not convert to float ""
16:56:56 – (WARNING) mega (custom integration) - message first occurred at 24:41:29 and shows up 3733 times

@andvikt
Copy link
Owner

andvikt commented Oct 29, 2021

Кажется понял в чем проблема была.
Ставьте b17

@andvikt
Copy link
Owner

andvikt commented Oct 29, 2021

и в b17 так же добавил параметр кастомизации сенсоров fill_na. По-умолчанию там будет заполняться last, вы же можете поставить none и получите то что хотите - разрывы на графике

https://andvikt.github.io/mega_hacs/yaml/#sensors

@andvikt
Copy link
Owner

andvikt commented Oct 29, 2021

И еще момент по кастомизации, пока этого в доке нет, но теперь можно кастомизацию писать так:

# configuration.yaml
mega:
  entities:
    sensor.some_sensor:
      fill_na: "none"

@andvikt andvikt closed this as completed Oct 29, 2021
@vadipp
Copy link
Author

vadipp commented Oct 29, 2021

Спасибо, проверил на v1.0.10b19, всплески значений пропали. Отдельное спасибо за параметр конфигурации fill_na! Однако у меня не получилось его использовать :) Напишу отдельное issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants