Сообщество - Home Assistant
Добавить пост

Home Assistant

27 постов 988 подписчиков

Популярные теги в сообществе:

15

Home Assistant Operational System 15.0 upgrade


Обновление на OS 15.0 приводит к недоступности HA.
После обновления HA не может загрузиться, почти на всем возможном железе.
На данный момент, лучшим решением является пропустить обновление.
Так же на англоязычных ресурсах комментируют, что чистая установка версии 15.0 с последущим востановлением конфигурации имеет успех 50%.

Home Assistant Operational System 15.0 upgrade Home Assistant, Апгрейд, Fail
9

Ответ на пост «The latest Generation Tuya Zigbee Electric Smart Curtain Motor не распознайотся в Zegbee2mqtt»1

идешь в папке zigbee2mqtt, там создаешь папки external_converters и external_extensions.
там создаешь файл tuya_trv705.js, так же его создаешь в папке zigbee2mqtt
содержимое его вот

class MyExampleExtension1739800677930 {

constructor(

zigbee,

mqtt,

state,

publishEntityState,

eventBus,

enableDisableExtension,

restartCallback,

addExtension,

settings,

logger,

) {

this.zigbee = zigbee;

this.mqtt = mqtt;

this.state = state;

this.publishEntityState = publishEntityState;

this.eventBus = eventBus;

this.enableDisableExtension = enableDisableExtension;

this.restartCallback = restartCallback;

this.addExtension = addExtension;

this.settings = settings;

this.logger = logger;

this.logger.info('Loaded MyExampleExtension1739800677930');

this.mqttBaseTopic = this.settings.get().mqtt.base_topic;

}

/**

* Called when the extension starts (on Zigbee2MQTT startup, or when the extension is saved at runtime)

*/

start() {

this.mqtt.publish('example/extension', 'hello from MyExampleExtension1739800677930');

// all possible events can be seen here: https://github.com/Koenkk/zigbee2mqtt/blob/master/lib/eventB...

this.eventBus.onStateChange(this, this.onStateChange.bind(this));

}

/**

* Called when the extension stops (on Zigbee2MQTT shutdown, or when the extension is saved/removed at runtime)

*/

stop() {

this.eventBus.removeListeners(this);

}

async onStateChange(data) {

// see typing (properties) here: https://github.com/Koenkk/zigbee2mqtt/blob/master/lib/types/... => namespace eventdata

const { entity, update } = data;

// example how to toggle state

if (entity.ID === '0x00158d000224154d') {

this.logger.info(`State changed for 0x00158d000224154d: ${JSON.stringify(data)}`);

// state changed for some device (example: clicked a button)

if (update.action === 'single') {

const myLampIeeAddr = '0x00124b001e73227f'; // change this

this.mqtt.onMessage(`${this.mqttBaseTopic}/${myLampIeeAddr}/set`, JSON.stringify({ state: 'toggle' }));

}

}

}

}

module.exports = MyExampleExtension1739800677930;


----------------------------------------------------------------------------------------------------------------

потом в папке zigbee2mqtt открываешь configuration.yaml

в него добавляешь

external_converters:

- tuya_trv705.js

так же находишь свое устройство в конфиге и добавляешь туда же

external_converters:

- tuya_trv705.js

типа такого должно получится


'0xa4c1386c1d0e751f':

external_converters:

- tuya_trv705.js

friendly_name: Регулятор теплого пола


рестартуешь HA

4

Нужна помощь. Запись в файл

Добрый вечер! Только начинаю изучать Home Assistant, подскажите пожалуйста, как настроить запись даты и времени восхода солнца в txt файл, чтобы можно было использовать в автоматизацих эти данные. Несколько дней ищу решения этих вопросов и нигде не могу найти ответ.

12

Локальное управление кондиционерами TCL в Home Assistant

Привет всем любителям, мастерам и гуру Home Assistant и им сочувствующим!

Как-то уже давно появился вопрос о локальном управлении сплит-системами от TCL и перемарками из Home Assistant, и постольку поскольку готовых решений найдено не было, пришлось пилить свое на основании того, что было. Пришлось и программировать, и паять, и протокол ломать, и в итоге получилось нечто из модуля на ESP8266 или ESP32, программной части в ESPHome и некоторого рукоприкладства. И внезапно я таки пришел к успеху такому, что отдельные личности втихаря начали таскать реализацию себе и переписывать, типа "сам сделяль". Пальцами тыкать не буду, но на западных форумах ссылки довольно легко находятся, сходство очевидно, а даты все расставляют по местам. Увы, наработки, с которых я начинал, были реализованы в виде Custom Component, который нынче активно выводят из эксплуатации в ESPHome, поэтому потребовалось все переписать в виде отдельного компонента. В трезвом уме я точно этого здесь не публиковал, потому хочу обратить внимание на мои статьи по этой теме в Дзене, вот ссылка на первую и наиболее содержательную часть: https://dzen.ru/a/ZmdoyUNswXWnulhg .

Паста именно по ссылке на Дзене, потому как писать много и долго, а комментарии я скорее жду именно там, потому как отслеживаю и общаюсь именно в тех краях.

Вкратце: я сделал компонент для ESPHome, позволяющий подключить и запрограммировать модуль на ESP8266 или ESP32 для сугубо локального управления кондиционером- никакой связи с внешним миром не требуется, никакие данные не утекают, никакой зависимости от сервисов, которые можно отключить. В данный момент работа компонента проверена на следующих кондиционерах:

  • Axioma ASX09H1/ASB09H1

  • Ballu Discovery DC BSVI-09HN8

  • Daichi AIR20AVQ1/AIR20FV1

  • Daichi AIR25AVQS1R-1/AIR25FVS1R-1

  • Daichi AIR35AVQS1R-1/AIR35FVS1R-1

  • Daichi DA35EVQ1-1/DF35EV1-1

  • Dantex RK-12SATI/RK-12SATIE

  • Ecostar Radium KVS-RAD09CH

  • TCL Liferise ONF 09

  • TCL TAC-07CHSA/TPG-W

  • TCL TAC-09CHSA/TPG

  • TCL TAC-09CHSA/DSEI-W

  • TCL TAC-12CHSA/TPG

  • TCL TAC-XAL24I

В статьях я постарался покрыть основные вопросы, которые могут возникнуть, хотя процесс написания этих статей еще идет. Там же, на Дзене, можно задать интересующие вопросы в комментариях или сообщить об ошибке. Можно, конечно, это сделать и здесь, за руки я не держу, но пикабу просматриваю не так часто и связь может оказаться не такой уж быстрой, как хотелось бы.

В общем, кому будет полезно- берите, с руками не оторвите, кому будет любопытно- прошу к моему шалашу, ну а если что не так с оформлением- пардоньте-с, тут я этим занимаюсь впервые.

Показать полностью
29

Запустим волну Lovelace?

На дворе конец года и хоть пишу я от Анонима чтобы себе профиль не засорять, есть предложение: хвалитесь! Вы же строите умный дом с Home Assistant сами, как и я. И у вас есть панель, которую вы считаете оптимальной, но регулярно встречаете где-то в Интернетах картиночки откуда берёте идеи. Так вот сегодня я показываю картиночку и то же самое предлагаю вам.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

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

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

Это - план дома. При чём это не просто картинка, это svg файл, сделанный в inkscape, то есть графика векторная, послойная, объекты имеют имена и карточка floorplan-card может управлять содержимым картинки. Например, сейчас включены два фиолетовых прямоугольника, верхний это компьютер а нижний - 3D-принтер. Вентилятор над принтером на картинке крутится, то же самое будет делать вентилятор в санузле, если включить вентиляцияю.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

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

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

В блоке "Техника" у меня принтер и пылесос. Кнопка, похожая на киноленту включает подсветку в принтере. Карточка разворачивается вот так, когда принтер печатает и показывает прогресс "на лету", картинка слева также меняется. Я активно пользуюсь карточками Mushroom, поэтому на скрине название это Mushroom Title, мини-кнопки это Mushroom Chips, пылесос это Mushroom Vacuum, при чём когда пылесос работает, иконка шевелится, ну а карточка для 3D-принтера это Threedy. А ещё в этом же блоке показываются постоянные уведомления. Это то, что требует моего внимания "при случае" и не должно быть случайно закрыто:

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

По сути это просто набор conditional карточек в Вертикальном стеке с markdown и шаблонированием.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

Карточка с человеком - кликабельная, отображает карту, технические данные о том какое устройство отслеживания когда отчитывалось и некоторые штуки, что передаёт мобильное приложение. Там всё стандартное и несколько личное, так что вот вам кусочек как пример и возвращаемся на главную панель.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

Карточки отдельных помещений сделаны намеренно одинаковыми. Сверху название, оно кликабельное и переключает свет. Под названием "чипсы" с какими-то штуками в этой комнате, на скриншоте выше выключен свет, включён ПК и колонки, выключена подсветка растений.

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

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

Графики строит mini-graph-card, при этом цвета графиков настроены так, чтобы комфорт был зелёным, отклонение от комфорта - синее или красное. То есть слишком жарко - график красный, слишком холодно - синий. Слишком сухо - красный, слишком влажно - синий. По такому принципу построены все графики и они имеют единый стиль без проблем с распознаванием.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

Из "чипсов" можно отметить разве что блок кухни и санузла, на самом деле "чипсин" насчёт воды две, просто они тоже с условиями показа. Попутно отмечу, что "Покупки" тоже кликабельны и открывают список покупок.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

В "уличном" блоке вместо названия отображается статус погоды. Две чипсины от двух поставщиков нужны скорее для единого дизайна, чем для данных. А вот графики я смотрю регулярно, это всё тот же mini-graph-card рисует, здесь вы, наверно, и без подсказки догадались, что оранжево-красный это Yandex, голубой это Gismeteo а серый это у меня за окном висит напечатанный на принтере экран Стивенсона.

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

Как видно по графику, в холодное время года он всё же ловит тепло от дома, но в целом все три идут рядом. Ну и hourly-weather это левая нижняя карточка, рисует что-то похожее на телефонный виджет погоды.

Внимательный читатель спросит: если значком > обозначается что заголовок кликабельный, то куда ведёт Synology DSM, это же не свет? А я отвечу:

Запустим волну Lovelace? Home Assistant, Дизайн, Длиннопост

У всех наверно есть какие-то данные или переключатели, которые вроде и нужны иногда, но на главной странице им не место. Так что это просто навигация на скрытую страницу "отладки".

А как у вас организовано отображение в Home Assistant? Хвалитесь)

Показать полностью 11
11

Инструкция по отслеживанию сна в HomeAssistant

Я хотел сделать выключение света, и и приборов когда я засыпал. И я делюсь с вами инструкцией как сделать отслеживание сна.

Установите приложение Notify for Mi Band.

Настройте его (подробная инструкция не требуется, так как приложение легко настраивается).

Скачайте приложение Sleep as Android.

Разрешите все необходимые разрешения.

Зайдите в настройки Sleep as Android.

Найдите раздел «Сервисы» и перейдите в него.

Найдите раздел «Автоматизации» и перейдите в него.

Настройте MQTT.

Пример:

URL: tcp://{имя пользователя брокера}:{пароль от брокера MQTT}@homeassistant.local:1883

Тема: SleepAsAndroid/{имя или название}

Готово!

Скачайте интеграцию Sleep As Android из HACS и перезагрузите Home Assistant.

Зайдите в устройства и службы и добавьте интеграцию «Sleep As Android».

Укажите любое имя сенсора.

Укажите раздел на MQTT-сервере с сообщениями от приложения, который вы указали в настройках SleepAsAndroid в качестве темы.

Зайдите в SleepAsAndroid и нажмите «Test».

Теперь у вас есть отслеживание сна в Home Assistant!

Обратите внимание, что для подключения Notify for Mi Band необходимо зайти в настройки SleepAsAndroid, раздел «Отслеживание сна и умные часы», выбрать Mi Band и следовать инструкции.

Показать полностью
14

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433

Алоха, красноглазые! в этом посте я расскажу, как затащить данные с погодной станции на WS2032 в Home Assistant. данная статья не для новичков, подразумевается, что вы немного знакомы с linux (делать будем на нем) ну и docker надо, куда ж без него

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz

а вот и эта продукция сумрачного китайского гения WS2302

История такова, что мне подарили эту погодную станцию и я ее в загородном доме долго использовал, но у нее только экран с цифрами есть, а как объединить ее и HA - понятных инструкций не было. ну поковыряв интернеты пару вечеров, я придумал как сделать. Вообще данный способ подходит для кучи устройств которые разговаривают по открытому протоколу на частоте 433 мгц, rtl_433 поддерживает дофига всякого

TL;DR

связка работает так - ws2032>usb radio >утилита rtl_433> очередь mqtt> home assistant

Погнали:

  1. покупаем на али погодную станцию на базе WS2032 их там довольно много, и вроде как они самые недорогие, есть варианты с со сбором воды и просто ветер и температура, так же потребуется usb радиоприемник типа soap-sdr (их великое множество, все немного качеством различаются я брал на RTL2838 DVB-T, самые дешманские работают не очень) и usb хаб с питанием.

  2. нам потребуется rtl_433 - утилиту можно взять из системных реп но лучше взять свежую из гита и собрать самостоятельно вот гайд,

    1. для работы rtl_433 потребуется конфиг файл, в нем очень важный момент - нужно будет указать окно девиаций частоты, поскольку станция дешманская и частота передатчика довольно заметно плавает, у меня заработало стабильно вот с таким конфигом (/etc/rtl_433/rtl_433.conf)

      device 0

      gain 0

      # default is "433.92M", other resonable values are 315M, 345M, 915M and 868M

      frequency 433.69M

      frequency 433.72M

      frequency 433.752M

      # default is "600" seconds, only used when multiple frequencies are given

      hop_interval 10

      ppm_error 0

      sample_rate 250k

      samples_to_read 0

      analyze_pulses false

      report_meta level

      report_meta stats

      report_meta time:usec

      report_meta protocol

      signal_grabber none

      output json

      convert si

      stop_after_successful_events false

      protocol 145 # WS2032 weather station

  3. запустить проверить можно вот таким способом

    /usr/bin/rtl_433 -F mqtt://127.0.0.1 1883 retain 1 events rtl_433/rtlsdr/event/21770 states rtl_433/rtlsdr/state/21770 -c /etc/rtl_433/rtl_433.conf

    в ответ должно получиться что то такое

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz

как видно из выхлопа - приемник уcлышал погодную станцию, она передает раз в минуту и вывод в формате json

rlt_433 и контейнер с mqtt в моем случае на 1 хосте живут

4. далее нам нужен сервер очередей mqtt - проще всего использовать docker compose

вот их репозиторий со всей нужной обвязкой

services:

mosquitto:

image: eclipse-mosquitto:latest

restart: unless-stopped

volumes:

- ./config/:/mosquitto/config/:rw

- ./log/:/mosquitto/log/

- ./data:/mosquitto/data/

ports:

- 1883:1883

- 9001:9001

запускаем композ и смотрим что он начал слушать на порту 1883, рядом в соседнем терминале запускаем rtl_433 (потом можно будет написать systemd unit) - проверить что в mqtt что то пишется нам поможет утилита mqtt explorer - цепляемся к нашей очереди и смотрим события в ней

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz

тут видно что используется 2 очереди event и state (остальные очереди в моем случае всякое остальное типа zigbee устройств) в очереди event можно понаблюдать как меняются данные,

5. раз данные обновляются стабильно, можно переходить к настройке Home Assistant - нам потребуется плагин для mqtt и немного допилить конфиг для того что бы направление ветра показывало не в градусах а в виде букв (N,S,W,E и тд)

сам плагин настраиваем что бы он слушал нашу очередь

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz

тут надо указать ип адрес машины с mqtt

и указываем топик откуда получать данные

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz

а тут надо указать топик который будем слушать

далее настраиваем configuration.yaml от HA (не забываем рестатануть HA и внимательно следим за идетнацией ямла - блоки sensor ws2032_extras и mqtt должны вроде как быть без отступов, но в вашем конфиге может быть иначе)

mqtt:

sensor:

- name: "village_outside_temp"

state_topic: "rtl_433/rtlsdr/event/21770"

unit_of_measurement: "°C"

value_template: "{{ value_json.temperature_C }}"

unique_id: village_outside_temp_id

- name: "village_outside_humidity"

state_topic: "rtl_433/rtlsdr/event/21770"

unit_of_measurement: "%"

value_template: "{{ value_json.humidity }}"

unique_id: village_outside_humidity_id

- name: "village_outside_wind_direction"

state_topic: "rtl_433/rtlsdr/event/21770"

unit_of_measurement: "deg"

value_template: "{{ value_json.wind_dir_deg }}"

unique_id: village_outside_wind_dir_deg

- name: "village_outside_wind_avg_spd"

state_topic: "rtl_433/rtlsdr/event/21770"

unit_of_measurement: "km/h"

value_template: "{{ value_json.wind_avg_km_h }}"

unique_id: village_outside_wind_avg_spd

- name: "village_outside_wind_max_spd"

state_topic: "rtl_433/rtlsdr/event/21770"

unit_of_measurement: "km/h"

value_template: "{{ value_json.wind_max_km_h }}"

unique_id: village_outside_wind_max_spd

- name: "village_outside_battery_ok"

state_topic: "rtl_433/rtlsdr/event/21770"

unit_of_measurement: "state"

value_template: "{{ value_json.battery_ok }}"

unique_id: village_outside_battery_ok

sensor ws2032_extras:

- platform: template

sensors:

ws2032_wdc:

unique_id: ws2032_wdc

friendly_name: "Wind: Direction (Cardinal)"

icon_template: mdi:weather-cloudy-arrow-right

value_template: >

{% set direction = ['N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %}

{% set degree = states('sensor.village_outside_wind_direction')|float %}

{{ direction[((degree+11.25)/22.5)|int] }}

ws2032_ws_kmh:

unique_id: ws2032_ws_kmh

friendly_name: "Wind: Speed (km/h)"

icon_template: mdi:windsock

device_class: wind_speed

unit_of_measurement: "km/h"

value_template: "{{ states('sensor.village_outside_wind_avg_spd')}}"

ws2032_gs_kmh:

unique_id: ws2032_gs_kmh

friendly_name: "Wind: Gust Speed (km/h)"

icon_template: mdi:pinwheel-outline

device_class: wind_speed

unit_of_measurement: "km/h"

value_template: "{{ states('sensor.village_outside_wind_max_spd') }}"

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

Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz
Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz
Получаем погоду в Home Assistant c WS2032 с помощью rtl_433 Home Assistant, Погода, Длиннопост, Linux, Docker, 433mhz

Все, осталось только накинуть системд юнит в /etc/systemd/system/rtl_433.service примерно такой

[Unit]

Description=RTL_433 service script

StartLimitIntervalSec=5

Documentation=https://github.com/merbanan/rtl_433/README.md

After=syslog.target network.target

[Service]

Type=exec

ExecStart=/usr/bin/rtl_433 -F 'mqtt://127.0.0.1:1883,retain=1,events=rtl_433/rtlsdr/event/21770,states=rtl_433/rtlsdr/state/21770' -c /etc/rtl_433/rtl_433.conf

# Restart script if stopped

Restart=always

# Wait 30s before restart

RestartSec=30s

# Tag things in the log

# View with: sudo journalctl -f -u rtl_433 -o cat

SyslogIdentifier=rtl_433

StandardOutput=syslog

StandardError=syslog

[Install]

WantedBy=multi-user.target

не забываем сделать релоад системд и сказать нашему юниту enable ну и ребутнуть разок что бы проверить что все это хозяйство переживает рестарт

ВСЕ, ПОБЕДА!

Данный способ ни на что не претендует, но возможно, этот путь кому-либо пригодится, поскольку позволяет дальше домашнюю автоматизацию развивать - например, многие почвенные датчики для садоводов точно так же общаются на 433 и их точно также можно загнать в HA и настроить автоматический полив ну и прочее такое. Этот гайд подойдет далеко не всем, но поскольку у меня очень давно поставлен HA (помните эту проблему про разные регионы для устройств от Xiaomi?) то хотелось использовать именно его. Всем спасибо и удачных данных из радиоэфира!

3

Home Assistant, modbus и водосчётчик VALTEC ПРОТЕЙ 15 RS485

Всем здравствуйте! Прошу сильно не пинать. я лишь только пока новичок. В общем такая проблема: Решил я в HA интегрировать водосчётчик VALTEC ПРОТЕЙ 15 RS485, по Modbus. Приоблёл USB-RS485 адаптер, вставил онный в сервер, нашел его в оборудовании, в configuration. yaml прописал modbus устройство,
modbus:
- name: modbus_hub
type: serial
port: /dev/ttyUSB0
baudrate: 9600
bytesize: 8
method: rtu
parity: E
stopbits: 1
sensors:
- name: Water meter
unit_of_measurement: "m³/h"
slave: 1
address: 89
count: 2
swap: word
input_type: holding
scale: 0.001
offset: 0
precision: 1
data_type: int32
device_class: volume
delay: 0
message_wait_milliseconds: 30
timeout: 5

ииии получил ошибку:
Регистратор: homeassistant. config
Источник: config. py: 1335
Первое сообщение: 14:00:11 (1 сообщений)
Последнее сообщение: 14:00:11

Invalid config for 'modbus' at configuration. yaml, line 24: Water meter: `count` illegal with `data_type: int32` 'modbus->0->sensors->0', got {'name': 'Water meter', 'unit_of_measurement': 'm³/h', 'slave': 1, 'address': 89, 'count': 2, 'swap': 'word', 'input_type': 'holding', 'scale': 0.001, 'offset': 0, 'precision': 1, 'data_type': 'int32', 'device_class': 'volume'}, please check the docs at https://www.home-assistant.io/integrations/modbus
Помогите пожалуйста!

Отличная работа, все прочитано!