Меню

Home assistant mqtt не работает

MQTT Switch

The mqtt switch platform lets you control your MQTT enabled switches.

Configuration

In an ideal scenario, the MQTT device will have a state_topic to publish state changes. If these messages are published with a RETAIN flag, the MQTT switch will receive an instant state update after subscription, and will start with the correct state. Otherwise, the initial state of the switch will be false / off .

When a state_topic is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from the device (message from state_topic ).

Optimistic mode can be forced, even if the state_topic is available. Try to enable it, if experiencing incorrect switch operation.

To enable this switch in your installation, add the following to your configuration.yaml file:

Configuration Variables

A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with availability_topic .

The payload that represents the available state.

The payload that represents the unavailable state.

An MQTT topic subscribed to receive availability (online/offline) updates.

When availability is configured, this controls the conditions needed to set the entity to available . Valid entries are all , any , and latest . If set to all , payload_available must be received on all configured availability topics before the entity is marked as online. If set to any , payload_available must be received on at least one configured availability topic before the entity is marked as online. If set to latest , the last payload_available or payload_not_available received on any configured availability topic controls the availability.

The MQTT topic subscribed to receive availability (online/offline) updates. Must not be used together with availability .

The MQTT topic to publish commands to change the switch state.

Information about the device this switch is a part of to tie it into the device registry. Only works through MQTT discovery and when unique_id is set. At least one of identifiers or connections must be present to identify the device.

A list of connections of the device to the outside world as a list of tuples [connection_type, connection_identifier] . For example the MAC address of a network interface: «connections»: [[«mac», «02:5b:26:a8:dc:12»]] .

A list of IDs that uniquely identify the device. For example a serial number.

The manufacturer of the device.

The model of the device.

The name of the device.

Suggest an area if the device isn’t in one yet.

The firmware version of the device.

Identifier of a device that routes messages between this device and Home Assistant. Examples of such devices are hubs, or parent devices of a sub-device. This is used to show device topology in Home Assistant.

Flag which defines if the entity should be enabled when first added.

Defines a template to extract the JSON dictionary from messages received on the json_attributes_topic . Usage example can be found in MQTT sensor documentation.

The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in MQTT sensor documentation.

The name to use when displaying this switch.

Flag that defines if switch works in optimistic mode.

true if no state_topic defined, else false .

The payload that represents the available state.

The payload that represents the unavailable state.

The payload that represents off state. If specified, will be used for both comparing to the value in the state_topic (see value_template and state_off for details) and sending as off command to the command_topic .

The payload that represents on state. If specified, will be used for both comparing to the value in the state_topic (see value_template and state_on for details) and sending as on command to the command_topic .

The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.

If the published message should have the retain flag on or not.

The payload that represents the off state. Used when value that represents off state in the state_topic is different from value that should be sent to the command_topic to turn the device off .

Читайте также:  Часть интерактивной доски не работает

payload_off if defined, else OFF

The payload that represents the on state. Used when value that represents on state in the state_topic is different from value that should be sent to the command_topic to turn the device on .

payload_on if defined, else ON

The MQTT topic subscribed to receive state updates.

An ID that uniquely identifies this switch device. If two switches have the same unique ID, Home Assistant will raise an exception.

Defines a template to extract device’s state from the state_topic . To determine the switches’s state result of this template will be compared to state_on and state_off .

Make sure that your topic matches exactly. some-topic/ and some-topic are different topics.

Examples

In this section, you will find some real-life examples of how to use this sensor.

Full configuration

The example below shows a full configuration for a switch.

For a check, you can use the command line tools mosquitto_pub shipped with mosquitto to send MQTT messages. This allows you to operate your switch manually:

Set the state of a device with ESPEasy

Assuming that you have flashed your ESP8266 unit with ESPEasy. Under “Config” is a name (“Unit Name:”) set for your device (here it’s “bathroom”). A configuration for a “Controller” for MQTT with the protocol “OpenHAB MQTT” is present and the entries (“Controller Subscribe:” and “Controller Publish:”) are adjusted to match your needs. In this example, the topics are prefixed with “home”. There is no further configuration needed as the GPIOs can be controlled with MQTT directly.

Manually you can set pin 13 to high with mosquitto_pub or another MQTT tool:

The configuration will look like the example below:

Источник

MQTT Discovery

The discovery of MQTT devices will enable one to use MQTT devices with only minimal configuration effort on the side of Home Assistant. The configuration is done on the device itself and the topic used by the device. Similar to the HTTP binary sensor and the HTTP sensor. To prevent multiple identical entries if a device reconnects a unique identifier is necessary. Two parts are required on the device side: The configuration topic which contains the necessary device type and unique identifier and the remaining device configuration without the device type.

Supported by MQTT discovery:

MQTT discovery is enabled by default. To disable MQTT discovery, add the following to your configuration.yaml file:

Configuration Variables

If the MQTT discovery should be enabled or not.

The prefix for the discovery topic.

Discovery topic

The discovery topic need to follow a specific format:

  • : One of the supported MQTT components, eg. binary_sensor .
  • (Optional): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class [a-zA-Z0-9_-] (alphanumerics, underscore and hyphen).
  • : The ID of the device. This is only to allow for separate topics for each device and is not used for the entity_id . The ID of the device must only consist of characters from the character class [a-zA-Z0-9_-] (alphanumerics, underscore and hyphen).

Best practice for entities with a unique_id is to set to unique_id and omit the .

The payload must be a JSON dictionary and will be checked like an entry in your configuration.yaml file if a new device is added. This means that missing variables will be filled with the platform’s default values. All configuration variables which are required must be present in the initial payload send to /config .

Subsequent messages on a topic where a valid payload has been received will be handled as a configuration update, and a configuration update with an empty payload will cause a previously discovered device to be deleted.

The level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like /+/ /+/set .

may be defined in the payload to conserve memory when the same topic base is used multiple times. In the value of configuration variables ending with _topic ,

Читайте также:  Что делать если не работает канал дисней

will be replaced with the base topic, if the

occurs at the beginning or end of the value.

Configuration variable names in the discovery payload may be abbreviated to conserve memory when sending a discovery message from memory constrained devices.

Supported abbreviations for device registry configuration:

Support by third-party tools

The following software has built-in support for MQTT discovery:

Examples

Motion detection (binary sensor)

A motion detection device which can be represented by a binary sensor for your garden would send its configuration as JSON payload to the Configuration topic. After the first message to config , then the MQTT messages sent to the state topic will update the state in Home Assistant.

To create a new sensor manually. For more details please refer to the MQTT testing section.

Update the state.

Delete the sensor by sending an empty message.

Sensors with multiple values

Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions.

Switches

Setting up a switch is similar but requires a command_topic as mentioned in the MQTT switch documentation.

Abbreviating topic names

Setting up a switch using topic prefix and abbreviated configuration variable names to reduce payload length.

  • Configuration topic: homeassistant/switch/irrigation/config
  • Command topic: homeassistant/switch/irrigation/set
  • State topic: homeassistant/switch/irrigation/state
  • Configuration payload: <"

«: «homeassistant/switch/irrigation», «name»: «garden», «cmd_t»: «

Lighting

Setting up a light that takes JSON payloads, with abbreviated configuration variable names:

Configuration topic: homeassistant/light/kitchen/config

Command topic: homeassistant/light/kitchen/set

State topic: homeassistant/light/kitchen/state

Example state payload:

Climate control

Setting up a climate integration (heat only):

  • Configuration topic: homeassistant/climate/livingroom/config
  • Configuration payload:
  • State topic: homeassistant/climate/livingroom/state
  • State payload:

Presence detection (device tracker)

Setting up a device tracker:

  • Configuration topic: homeassistant/device_tracker/paulus/config
  • Example configuration payload:
  • State topic: homeassistant/device_tracker/paulus/state
  • Example state payload: home or not_home or location name

If the device supports gps coordinates then they can be sent to Home Assistant by specifying an attributes topic (i.e. “json_attributes_topic”) in the configuration payload:

  • Attributes topic: homeassistant/device_tracker/paulus/attributes
  • Example attributes payload:

Источник

Home Assistant

Как интегрировать в Home assistant ? там так же есть mqtt

Ответы 21

Если Home Assistant работает как MQTT сервер (брокер), то надо знать минимальные данные для подключения клиентов: адрес сервера, порт, логин, пароль.

Пропишите эти данные в настройках устройства и он будет ежеминутно отправлять топики со всеми данными на сервер.
Смотрите инструкцию или статью в Базе Знаний:
https://support.smart-mac.com/knowledge-bases/2/articles/175-mqtt-klient

Начал разбираться и понял что у Вас используется TLS/SSL ..в брокере «home Assistant» почти всё локально и там используют TCP . в логах вижу это- . во всех примерах mqtt у Вас используются для передачи данных через интернет. Можно это как то оргнизовать локально через tcp?

Для связи с MQTT используется не шифрованное соединение.

Все, что надо знать, это минимальные данные для подключения клиентов: адрес сервера, порт, логин, пароль.

Посмотрите статью в Базе Знаний.

В качестве адреса, можно указать IP адрес вашего сервера.

Сейчас так и указано. по логам видно что он пытается присоединиться но не может . ip port логин пароль я вписал он сервера Home assistant(HA). пока единственная зацепка что у вас в документации указанно что обмен идёт по TLS/SSL а все доступные порты брокера HA это tcp . или это не должно иметь значения ? и сервер и счётчик сидят на одном роутере. В сетях особо не разбираюсь но покупал именно для этой интеграции.

в логах k15 это время ожидания . У Вас написано что данные отправляются каждую минуту . т.е 45 секунд бездействия может и вызывают разрыв соединения ? сейчас читал про подобную проблему в другой связке устройств . там вышли из положения добавив задержу на стороне посылающего устройства . https://community.home-assistant.io/t/mqtt-disconnects-tried-keepalive-but-no-go-esp8266-board/124332

может быть как то можно получать новые данные каждые 10 секунд ? я так понимаю эти 15 секунд (k15) заложены на стороне вашего устройства?

вы как-то решили проблему 15 секунд? У меня аналогичная проблема на опенхабе

Какой тайм-аут нужен?

Сейчас 15 секунд.

Соединение разрывается, через 45 секунд устанавливается новое соединение с брокером.

подписка на сухой контакт только работает 15 секунд из 60, судя по всему

эта схема работает только для retain сообщений, по умолчанию они не такие, это бы в мане написать

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

Но для надежности, топики для управления реле отправляйте с флагом retain.

И в мануале добавим информацию по этому поводу, спасибо.

TLS/SSL это шифрованное соединение, а устройство связывается по не шифрованному, как раз по TCP.

Проверьте топики, он может открыть соединение, оставить топик и закрыть соединение.

Вообщем потрачен день но проблема решена. Спасибо за быстрый отклик и отсев неправильных вариантов.

в HA необходимо для каждого топика создать сенсор иначе их никак не увидеть .

— platform: mqtt
name: «фаза 1»
state_topic: «*серийный номер счётчика* .V1»

Супер, день потрачен не зря. Кому-то сохраните этот день 🙂

Что бы подключить в Homeassistant нужно в HA установить брокер mqtt в интеграции, задать в нем логин пароль, (либо по дефолту это ваш логин и пароль для входа в HA) — как mqtt ставить миллион видео на Youtube.

Советую через интеграции потому что тогда он будет попадать в Snapshot файла бекапа HA.

Далее на самом устройстве smart mac добавить адрес сервера куда ему слать свои показания.

Но это еще не все, просто так в обьектах (entities) счетчики не покажутся, их нужно добавить в sensor.yaml

мой конфиг для sensor.yaml (Внимание форум не поддерживает yaml синтаксис поэтому кривит, при Copy-paste могут лезть ошибки, пробелы нужно подкорректировать)

Название топика у вас будет другое 1728053828.V1 — подчеркнутое это ID счетчика — у вас будет оно другое!

— platform: mqtt
name: faze1
state_topic: 1728053828.V1
— platform: mqtt
name: faze2
state_topic: 1728053828.V2
— platform: mqtt
name: faze3
state_topic: 1728053828.V3
— platform: mqtt
name: AMPER1
state_topic: 1728053828.A1
— platform: mqtt
name: AMPER2
state_topic: 1728053828.A2
— platform: mqtt
name: AMPER3
state_topic: 1728053828.A3
— platform: mqtt
name: KWATT1
state_topic: 1728053828.KWh1
— platform: mqtt
name: KWATT2
state_topic: 1728053828.KWh2
— platform: mqtt
name: KWATT3
state_topic: 1728053828.KWh3
— platform: mqtt
name: PF1
state_topic: 1728053828.PF1
— platform: mqtt
name: PF2
state_topic: 1728053828.PF2
— platform: mqtt
name: PF3
state_topic: 1728053828.PF3
## — это добавлены сенсоры которые дает счетчик после этого они появятся как entities в HA с именем как назовете faze1 например у меня##

##-а это добавлены сенсоры которые получаются из арифметических сложений и умножений тех сенсоров которые дал счетчик, например узнать мощность — Вольты *амперы *коэффициент и потребленное за все время — три показателя засумированы.

а уже после этого в lovelace yaml добавлять

— title: Server
icon: mdi:current-ac

— type: vertical-stack
cards:

— type: markdown
content: >
**Текущее состояние**

— type: entities
show_header_toggle: false
entities:
— entity: sensor.time
name: Текущее время
icon: mdi:clock-outline
— entity: sensor.date
name: Дата
icon: mdi:calendar-check-outline

— type: vertical-stack
cards:
— type: markdown
content: >
**Электроэнергия**

#напряжение
— type: horizontal-stack
cards:
— type: gauge
name: Фаза 1
unit: ‘V’
entity: sensor.faze1
severity:
yellow: 60
green: 220
red: 246
— type: gauge
name: Фаза 2
unit: ‘V’
entity: sensor.faze2
severity:
yellow: 60
green: 220
red: 246
— type: gauge
name: Фаза 3
unit: ‘V’
entity: sensor.faze3
severity:
yellow: 60
green: 220
red: 246
#Амперы
— type: horizontal-stack
cards:

— type: gauge
name: ТОК 1
unit: ‘A’
entity: sensor.amper1
severity:
green: 1
yellow: 8
red: 25

— type: gauge
name: ТОК 2
unit: ‘A’
entity: sensor.amper2
severity:
green: 1
yellow: 8
red: 25
— type: gauge
name: ТОК 3
unit: ‘A’
entity: sensor.amper3
severity:
green: 1
yellow: 8
red: 25

#КВатты
— type: horizontal-stack
cards:
— type: gauge
name: Нагрузка 1
unit: ‘кВт’
entity: sensor.kw1
severity:
green: 1
yellow: 8
red: 25
— type: gauge
name: Нагрузка 2
unit: ‘кВт’
entity: sensor.kw2
severity:
green: 1
yellow: 8
red: 25
— type: gauge
name: Нагрузка 3
unit: ‘кВт’
entity: sensor.kw3
severity:
green: 1
yellow: 8
red: 25
— type: horizontal-stack
cards:
— type: gauge
name: Нагрузка по всем фазам
unit: ‘кВт’
entity: sensor.kwall
severity:
green: 1
yellow: 8
red: 25


#общее потребление — тут нужно поставить модуль multiple-entitiyrow в HACS или через github#

— entity: sensor.kwatttotall
type: custom:multiple-entity-row
name: общее потребление
icon: mdi:current-ac
secondary_info: false
state_header: общее
entities:
— entity: sensor.kwatt1
name: кВт1
— entity: sensor.kwatt2
name: кВт2
— entity: sensor.kwatt3
name: кВт3

в конце получается что то типа такого

Вот такой мануальчик, если бы был мне такой, перед тем как начал, было бы отлично

Источник

Adblock
detector