351 lines
13 KiB
YAML
351 lines
13 KiB
YAML
# MQTT-only Home Assistant package for invertergui.
|
|
# This avoids duplicate entities from MQTT auto-discovery/custom integration.
|
|
#
|
|
# Requirements:
|
|
# - invertergui started with MQTT publishing enabled.
|
|
# - invertergui MQTT discovery disabled (`--mqtt.ha.enabled=false`) when using this package.
|
|
|
|
mqtt:
|
|
sensor:
|
|
- name: Victron Battery Voltage
|
|
unique_id: invertergui_mqtt_battery_voltage
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.BatVoltage }}"
|
|
unit_of_measurement: V
|
|
device_class: voltage
|
|
state_class: measurement
|
|
- name: Victron Battery Current
|
|
unique_id: invertergui_mqtt_battery_current
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.BatCurrent }}"
|
|
unit_of_measurement: A
|
|
device_class: current
|
|
state_class: measurement
|
|
- name: Victron Battery Charge
|
|
unique_id: invertergui_mqtt_battery_charge
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ ((value_json.ChargeState | float(0)) * 100) | round(1) }}"
|
|
unit_of_measurement: "%"
|
|
device_class: battery
|
|
state_class: measurement
|
|
- name: Victron Input Voltage
|
|
unique_id: invertergui_mqtt_input_voltage
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.InVoltage }}"
|
|
unit_of_measurement: V
|
|
device_class: voltage
|
|
state_class: measurement
|
|
- name: Victron Input Current
|
|
unique_id: invertergui_mqtt_input_current
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.InCurrent }}"
|
|
unit_of_measurement: A
|
|
device_class: current
|
|
state_class: measurement
|
|
- name: Victron Input Frequency
|
|
unique_id: invertergui_mqtt_input_frequency
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.InFrequency }}"
|
|
unit_of_measurement: Hz
|
|
device_class: frequency
|
|
state_class: measurement
|
|
- name: Victron Output Voltage
|
|
unique_id: invertergui_mqtt_output_voltage
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.OutVoltage }}"
|
|
unit_of_measurement: V
|
|
device_class: voltage
|
|
state_class: measurement
|
|
- name: Victron Output Current
|
|
unique_id: invertergui_mqtt_output_current
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.OutCurrent }}"
|
|
unit_of_measurement: A
|
|
device_class: current
|
|
state_class: measurement
|
|
- name: Victron Output Frequency
|
|
unique_id: invertergui_mqtt_output_frequency
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.OutFrequency }}"
|
|
unit_of_measurement: Hz
|
|
device_class: frequency
|
|
state_class: measurement
|
|
- name: Victron Input Power
|
|
unique_id: invertergui_mqtt_input_power
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ ((value_json.InVoltage | float(0)) * (value_json.InCurrent | float(0))) | round(1) }}"
|
|
unit_of_measurement: VA
|
|
state_class: measurement
|
|
- name: Victron Output Power
|
|
unique_id: invertergui_mqtt_output_power
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ ((value_json.OutVoltage | float(0)) * (value_json.OutCurrent | float(0))) | round(1) }}"
|
|
unit_of_measurement: VA
|
|
state_class: measurement
|
|
- name: Victron Last Command Status
|
|
unique_id: invertergui_mqtt_last_command_status
|
|
state_topic: invertergui/settings/status
|
|
value_template: "{{ value_json.status | default('unknown') }}"
|
|
icon: mdi:message-alert-outline
|
|
- name: Victron Last Command Error
|
|
unique_id: invertergui_mqtt_last_command_error
|
|
state_topic: invertergui/settings/status
|
|
value_template: >-
|
|
{% if value_json.status == 'error' %}
|
|
{{ value_json.error | default('unknown error') }}
|
|
{% else %}
|
|
none
|
|
{% endif %}
|
|
icon: mdi:alert-circle-outline
|
|
- name: Victron LED Mains
|
|
unique_id: invertergui_mqtt_led_mains
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['0'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:transmission-tower
|
|
- name: Victron LED Absorb
|
|
unique_id: invertergui_mqtt_led_absorb
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['1'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:water-outline
|
|
- name: Victron LED Bulk
|
|
unique_id: invertergui_mqtt_led_bulk
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['2'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:battery-plus
|
|
- name: Victron LED Float
|
|
unique_id: invertergui_mqtt_led_float
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['3'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:battery-heart-variant
|
|
- name: Victron LED Inverter
|
|
unique_id: invertergui_mqtt_led_inverter
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['4'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:power-plug
|
|
- name: Victron LED Overload
|
|
unique_id: invertergui_mqtt_led_overload
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['5'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:alert-octagon
|
|
- name: Victron LED Low Battery
|
|
unique_id: invertergui_mqtt_led_low_battery
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['6'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:battery-alert-variant-outline
|
|
- name: Victron LED Over Temp
|
|
unique_id: invertergui_mqtt_led_over_temp
|
|
state_topic: invertergui/updates
|
|
value_template: >-
|
|
{% set leds = value_json.LEDs | default({}) %}
|
|
{% set v = leds['7'] | default(0) | int(0) %}
|
|
{% if v == 1 %}on{% elif v == 2 %}blink{% else %}off{% endif %}
|
|
icon: mdi:thermometer-alert
|
|
|
|
binary_sensor:
|
|
- name: Victron Online
|
|
unique_id: invertergui_mqtt_online
|
|
state_topic: invertergui/updates
|
|
value_template: "ON"
|
|
payload_on: "ON"
|
|
payload_off: "OFF"
|
|
expire_after: 120
|
|
device_class: connectivity
|
|
- name: Victron Data Valid
|
|
unique_id: invertergui_mqtt_data_valid
|
|
state_topic: invertergui/updates
|
|
value_template: "{{ value_json.Valid }}"
|
|
payload_on: "true"
|
|
payload_off: "false"
|
|
entity_category: diagnostic
|
|
|
|
select:
|
|
- name: Victron Remote Panel Mode
|
|
unique_id: invertergui_mqtt_remote_panel_mode
|
|
state_topic: invertergui/homeassistant/remote_panel_mode/state
|
|
command_topic: invertergui/settings/set
|
|
command_template: '{"kind":"panel_state","switch":"{{ value }}"}'
|
|
options:
|
|
- charger_only
|
|
- inverter_only
|
|
- on
|
|
- off
|
|
icon: mdi:transmission-tower-export
|
|
|
|
number:
|
|
- name: Victron Remote Panel Current Limit
|
|
unique_id: invertergui_mqtt_remote_panel_current_limit
|
|
state_topic: invertergui/homeassistant/remote_panel_current_limit/state
|
|
command_topic: invertergui/settings/set
|
|
command_template: '{"kind":"panel_state","current_limit":{{ value | float(0) }}}'
|
|
unit_of_measurement: A
|
|
device_class: current
|
|
mode: box
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
icon: mdi:current-ac
|
|
|
|
switch:
|
|
- name: Victron Remote Panel Standby
|
|
unique_id: invertergui_mqtt_remote_panel_standby
|
|
state_topic: invertergui/homeassistant/remote_panel_standby/state
|
|
command_topic: invertergui/settings/set
|
|
payload_on: '{"kind":"standby","standby":true}'
|
|
payload_off: '{"kind":"standby","standby":false}'
|
|
state_on: "ON"
|
|
state_off: "OFF"
|
|
icon: mdi:power-sleep
|
|
|
|
input_select:
|
|
victron_remote_panel_mode_target:
|
|
name: Victron Target Mode
|
|
options:
|
|
- charger_only
|
|
- inverter_only
|
|
- on
|
|
- off
|
|
icon: mdi:transmission-tower-export
|
|
|
|
input_number:
|
|
victron_remote_panel_current_limit_target:
|
|
name: Victron Target Current Limit
|
|
min: 0
|
|
max: 100
|
|
step: 0.1
|
|
unit_of_measurement: A
|
|
mode: box
|
|
icon: mdi:current-ac
|
|
|
|
input_boolean:
|
|
victron_remote_panel_standby_target:
|
|
name: Victron Target Standby
|
|
icon: mdi:power-sleep
|
|
|
|
script:
|
|
victron_mqtt_set_remote_panel_state:
|
|
alias: Victron MQTT Set Remote Panel State
|
|
description: Set panel mode and current limit in one MQTT command.
|
|
mode: single
|
|
icon: mdi:send
|
|
sequence:
|
|
- service: mqtt.publish
|
|
data:
|
|
topic: invertergui/settings/set
|
|
qos: 1
|
|
payload: >-
|
|
{"kind":"panel_state","switch":"{{ states('input_select.victron_remote_panel_mode_target') }}","current_limit":{{ states('input_number.victron_remote_panel_current_limit_target') | float(0) | round(1) }}}
|
|
|
|
victron_mqtt_set_remote_panel_standby:
|
|
alias: Victron MQTT Set Remote Panel Standby
|
|
description: Set standby state from helper input.
|
|
mode: single
|
|
icon: mdi:send-circle
|
|
sequence:
|
|
- service: mqtt.publish
|
|
data:
|
|
topic: invertergui/settings/set
|
|
qos: 1
|
|
payload: >-
|
|
{"kind":"standby","standby":{% if is_state('input_boolean.victron_remote_panel_standby_target', 'on') %}true{% else %}false{% endif %}}
|
|
|
|
template:
|
|
- sensor:
|
|
- name: Victron Battery Power
|
|
unique_id: invertergui_mqtt_battery_power
|
|
unit_of_measurement: W
|
|
state_class: measurement
|
|
icon: mdi:battery-charging
|
|
state: >-
|
|
{{ ((states('sensor.victron_battery_voltage') | float(0)) * (states('sensor.victron_battery_current') | float(0))) | round(1) }}
|
|
- name: Victron Input Minus Output Power
|
|
unique_id: invertergui_mqtt_input_minus_output_power
|
|
unit_of_measurement: VA
|
|
state_class: measurement
|
|
icon: mdi:flash-triangle
|
|
state: >-
|
|
{{ (states('sensor.victron_input_power') | float(0) - states('sensor.victron_output_power') | float(0)) | round(1) }}
|
|
|
|
automation:
|
|
- id: victron_mqtt_sync_target_mode
|
|
alias: Victron MQTT Sync Mode Target
|
|
trigger:
|
|
- platform: state
|
|
entity_id: select.victron_remote_panel_mode
|
|
- platform: homeassistant
|
|
event: start
|
|
condition:
|
|
- condition: template
|
|
value_template: >-
|
|
{{ states('select.victron_remote_panel_mode') in ['charger_only', 'inverter_only', 'on', 'off'] }}
|
|
action:
|
|
- service: input_select.select_option
|
|
target:
|
|
entity_id: input_select.victron_remote_panel_mode_target
|
|
data:
|
|
option: "{{ states('select.victron_remote_panel_mode') }}"
|
|
|
|
- id: victron_mqtt_sync_target_current_limit
|
|
alias: Victron MQTT Sync Current Limit Target
|
|
trigger:
|
|
- platform: state
|
|
entity_id: number.victron_remote_panel_current_limit
|
|
- platform: homeassistant
|
|
event: start
|
|
condition:
|
|
- condition: template
|
|
value_template: >-
|
|
{{ states('number.victron_remote_panel_current_limit') not in ['unknown', 'unavailable'] }}
|
|
action:
|
|
- service: input_number.set_value
|
|
target:
|
|
entity_id: input_number.victron_remote_panel_current_limit_target
|
|
data:
|
|
value: "{{ states('number.victron_remote_panel_current_limit') | float(0) }}"
|
|
|
|
- id: victron_mqtt_sync_target_standby
|
|
alias: Victron MQTT Sync Standby Target
|
|
trigger:
|
|
- platform: state
|
|
entity_id: switch.victron_remote_panel_standby
|
|
- platform: homeassistant
|
|
event: start
|
|
action:
|
|
- choose:
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: switch.victron_remote_panel_standby
|
|
state: "on"
|
|
sequence:
|
|
- service: input_boolean.turn_on
|
|
target:
|
|
entity_id: input_boolean.victron_remote_panel_standby_target
|
|
- conditions:
|
|
- condition: state
|
|
entity_id: switch.victron_remote_panel_standby
|
|
state: "off"
|
|
sequence:
|
|
- service: input_boolean.turn_off
|
|
target:
|
|
entity_id: input_boolean.victron_remote_panel_standby_target
|