Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90eff59fd9 |
No files matched your search
Generated
+21
-21
@@ -7,11 +7,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1789770686,
|
||||
"narHash": "sha256-uZkBR7yHdIKUFB5SZdfgh1qkGfI3XmYmI/lTiquxbck=",
|
||||
"lastModified": 1792526520,
|
||||
"narHash": "sha256-3hSJlv8mUVnZPMWK2+CM7a9O+nR6Z4mCh27NfLCmTPc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "725ea35e410ad83be4931d1bff7e090eacaf3563",
|
||||
"rev": "cedd626e11b635470fa6f9fdb8ad79b0075dd7f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -45,11 +45,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1791293500,
|
||||
"narHash": "sha256-3hwJd2/vG/VYV1P/g7oDgdbNsWODhN5F//Od+hPMm2k=",
|
||||
"lastModified": 1792773325,
|
||||
"narHash": "sha256-bvba9Lts8r8d15MdIDMwJGDxLtJiTlasKtAZyhTDzXk=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "0e11b7bcba1d74ef8ea10bfdfb1e1a5811a21087",
|
||||
"rev": "6d9655f76459099b0db2f57b13563729c7022aa7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -67,11 +67,11 @@
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1791127101,
|
||||
"narHash": "sha256-SmrBBhcv9iNHA2vlafi7Zpe8bkcsMjVNSmCCVf5/jrQ=",
|
||||
"lastModified": 1792771302,
|
||||
"narHash": "sha256-PI0BHsoI1sTvR8B/p/Pare37HnzwQBI6huZwBbXK/Wg=",
|
||||
"owner": "LLukas22",
|
||||
"repo": "Jellyswarrm",
|
||||
"rev": "0b4301c6c74efff9c3634296913032579c98faf6",
|
||||
"rev": "af8995c01caa0bb768914a3fac5583e866a1407b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -85,11 +85,11 @@
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1791128201,
|
||||
"narHash": "sha256-rlsYY/Dg/LhbIj51Aa6TLvRpZeb3KZgUTd7llQ5XcJE=",
|
||||
"lastModified": 1792697326,
|
||||
"narHash": "sha256-2UBK0jdmPANGaeAIoVOZY+hSPB2Gy13ZuZeSxP3vF8k=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "31cc5f4d9b9ba601071e8b8504601b9b176e2756",
|
||||
"rev": "1b418b8f203e49a92f250f8babdd19af1b6f7a7f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -114,11 +114,11 @@
|
||||
},
|
||||
"nixpkgs-master": {
|
||||
"locked": {
|
||||
"lastModified": 1791296764,
|
||||
"narHash": "sha256-N2b6Uxdr1MFhscEPqDyntTTtGZASgq3XYE0ujRzfeNI=",
|
||||
"lastModified": 1792799600,
|
||||
"narHash": "sha256-BBPwwWW+rr7VwpIS/7pUzaJs3KsvXbATLw8SmNLMrgs=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a15afac8691bd24f746255ffbd76306693e4cf7a",
|
||||
"rev": "c91f4e03ab449b98aa48dd0d8470ec0c769a9700",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -146,11 +146,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1791260994,
|
||||
"narHash": "sha256-Miqqk/ammqnTUxaoCyvtwoPeLbI1ksFyLxi/CazZpWY=",
|
||||
"lastModified": 1792502884,
|
||||
"narHash": "sha256-IoNisKcGbUjdd45qCqywGMCYmZ5EnkxezvLII0FWwNA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "151fa4e8ddfdd8dd25d945ad94ed54a13de9f6e4",
|
||||
"rev": "02c087f3fe673c9e317f206a627cb6b910336dbe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -201,11 +201,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1791103873,
|
||||
"narHash": "sha256-nFxM+pKoZ8LJAEnUXARyCaOAloWgaW9kZQOSjWzKcTE=",
|
||||
"lastModified": 1792655475,
|
||||
"narHash": "sha256-4ChDjNgJM5uKwTuecLHxGlafAtoyKo5a7ip23J5IG3M=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "dcd241ba97088c22569d1573286e1b9daad340c0",
|
||||
"rev": "e80b8b733d8452a751a25d0063abc9683b6c8185",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -82,7 +82,6 @@
|
||||
extraComponents = [
|
||||
"isal"
|
||||
"modbus" # for victron modbus integration
|
||||
"template" # MultiPlus mode selector, input current limit and derived sensors
|
||||
];
|
||||
customComponents = with pkgs.x86-v1.home-assistant-custom-components; [
|
||||
garmin_connect
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
title: Van Overview
|
||||
views:
|
||||
- title: Overview
|
||||
path: overview
|
||||
type: sections
|
||||
sections:
|
||||
# Battery Status Section
|
||||
- type: grid
|
||||
title: Battery Status
|
||||
cards:
|
||||
- type: gauge
|
||||
entity: sensor.jk0_soc
|
||||
name: Battery 0
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 50
|
||||
yellow: 20
|
||||
red: 0
|
||||
needle: true
|
||||
|
||||
- type: gauge
|
||||
entity: sensor.jk1_soc
|
||||
name: Battery 1
|
||||
min: 0
|
||||
max: 100
|
||||
severity:
|
||||
green: 50
|
||||
yellow: 20
|
||||
red: 0
|
||||
needle: true
|
||||
|
||||
- type: entity
|
||||
entity: sensor.jk0_total_voltage
|
||||
name: Batt 0 Voltage
|
||||
|
||||
- type: entity
|
||||
entity: sensor.jk1_total_voltage
|
||||
name: Batt 1 Voltage
|
||||
|
||||
# Solar Production Section
|
||||
- type: grid
|
||||
title: Solar Production
|
||||
cards:
|
||||
- type: gauge
|
||||
entity: sensor.solar_wattage
|
||||
name: Solar Now
|
||||
min: 0
|
||||
max: 400
|
||||
severity:
|
||||
green: 100
|
||||
yellow: 50
|
||||
red: 0
|
||||
needle: true
|
||||
|
||||
- type: entity
|
||||
entity: sensor.solar_yield_today
|
||||
name: Today's Yield
|
||||
|
||||
- type: entity
|
||||
entity: sensor.estimated_energy_production_today
|
||||
name: Forecast Today
|
||||
|
||||
- type: entity
|
||||
entity: sensor.estimated_energy_production_tomorrow
|
||||
name: Forecast Tomorrow
|
||||
|
||||
# Environment Section
|
||||
- type: grid
|
||||
title: Van Environment
|
||||
cards:
|
||||
- type: entity
|
||||
entity: sensor.environment_temperature
|
||||
name: Inside Temp
|
||||
|
||||
- type: entity
|
||||
entity: sensor.environment_humidity
|
||||
name: Inside Humidity
|
||||
|
||||
- type: entity
|
||||
entity: sensor.current_weather_temperature
|
||||
name: Outside Temp
|
||||
|
||||
- type: entity
|
||||
entity: sensor.current_weather_humidity
|
||||
name: Outside Humidity
|
||||
|
||||
- type: entity
|
||||
entity: sensor.current_weather_condition
|
||||
name: Weather
|
||||
|
||||
# Charger Status Section
|
||||
- type: grid
|
||||
title: Charger
|
||||
cards:
|
||||
- type: entity
|
||||
entity: sensor.charger_dc_wattage
|
||||
name: Charging Power
|
||||
|
||||
- type: entity
|
||||
entity: sensor.charger_charge_state
|
||||
name: Charge State
|
||||
|
||||
- type: entity
|
||||
entity: sensor.charger_dc_wattage_daily
|
||||
name: Charged Today
|
||||
|
||||
# Location Section
|
||||
- type: grid
|
||||
title: Location
|
||||
cards:
|
||||
- type: entity
|
||||
entity: sensor.gps_location
|
||||
name: Current Location
|
||||
|
||||
- type: entity
|
||||
entity: sensor.gps_speed
|
||||
name: Speed
|
||||
|
||||
- type: entity
|
||||
entity: binary_sensor.gps_fix_available
|
||||
name: GPS Fix
|
||||
@@ -220,120 +220,10 @@ modbus:
|
||||
state_class: measurement
|
||||
unique_id: gps_altitude_id_1
|
||||
|
||||
# ---- MULTIPLUS-II (VE.Bus, Cerbo GX unit ID 227) ----
|
||||
# Confirmed on this GX: one AC phase, AC input 1, 30 A shore-power plug.
|
||||
# Register map: https://www.victronenergy.com/upload/documents/CCGX-Modbus-TCP-register-list-3.81.xlsx
|
||||
# Victron's scale column is a divisor: AC power registers use 0.1,
|
||||
# so Home Assistant must multiply their signed raw values by 10.
|
||||
# Change the unit ID anchor here if the GX service mapping changes.
|
||||
- name: MultiPlus AC Input Voltage
|
||||
unique_id: multiplus_ac_input_voltage
|
||||
slave: &multiplus_unit_id 227
|
||||
address: 3
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 0.1
|
||||
precision: 1
|
||||
unit_of_measurement: "V"
|
||||
device_class: voltage
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Input Current
|
||||
unique_id: multiplus_ac_input_current
|
||||
slave: *multiplus_unit_id
|
||||
address: 6
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.1
|
||||
precision: 1
|
||||
unit_of_measurement: "A"
|
||||
device_class: current
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Input Frequency
|
||||
unique_id: multiplus_ac_input_frequency
|
||||
slave: *multiplus_unit_id
|
||||
address: 9
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "Hz"
|
||||
device_class: frequency
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Input Power
|
||||
unique_id: multiplus_ac_input_power
|
||||
slave: *multiplus_unit_id
|
||||
address: 12
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 10
|
||||
precision: 0
|
||||
unit_of_measurement: "W"
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Output Voltage
|
||||
unique_id: multiplus_ac_output_voltage
|
||||
slave: *multiplus_unit_id
|
||||
address: 15
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 0.1
|
||||
precision: 1
|
||||
unit_of_measurement: "V"
|
||||
device_class: voltage
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Output Current
|
||||
unique_id: multiplus_ac_output_current
|
||||
slave: *multiplus_unit_id
|
||||
address: 18
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.1
|
||||
precision: 1
|
||||
unit_of_measurement: "A"
|
||||
device_class: current
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Output Frequency
|
||||
unique_id: multiplus_ac_output_frequency
|
||||
slave: *multiplus_unit_id
|
||||
address: 21
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "Hz"
|
||||
device_class: frequency
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus AC Output Power
|
||||
unique_id: multiplus_ac_output_power
|
||||
slave: *multiplus_unit_id
|
||||
address: 23
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 10
|
||||
precision: 0
|
||||
unit_of_measurement: "W"
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus Battery Voltage
|
||||
unique_id: multiplus_battery_voltage
|
||||
slave: *multiplus_unit_id
|
||||
address: 26
|
||||
# ---- CHARGER (Unit ID 223) ----
|
||||
- name: Charger Output 1 Voltage
|
||||
slave: 223
|
||||
address: 2307
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 0.01
|
||||
@@ -341,12 +231,11 @@ modbus:
|
||||
unit_of_measurement: "V"
|
||||
device_class: voltage
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
unique_id: charger_output_1_voltage
|
||||
|
||||
- name: MultiPlus Battery Current
|
||||
unique_id: multiplus_battery_current
|
||||
slave: *multiplus_unit_id
|
||||
address: 27
|
||||
- name: Charger Output 1 Current
|
||||
slave: 223
|
||||
address: 2308
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.1
|
||||
@@ -354,12 +243,11 @@ modbus:
|
||||
unit_of_measurement: "A"
|
||||
device_class: current
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
unique_id: charger_output_1_current
|
||||
|
||||
- name: MultiPlus Battery Temperature
|
||||
unique_id: multiplus_battery_temperature
|
||||
slave: *multiplus_unit_id
|
||||
address: 61
|
||||
- name: Charger Output 1 Temperature
|
||||
slave: 223
|
||||
address: 2309
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.1
|
||||
@@ -367,23 +255,11 @@ modbus:
|
||||
unit_of_measurement: "°C"
|
||||
device_class: temperature
|
||||
state_class: measurement
|
||||
unique_id: charger_output_1_temperature
|
||||
|
||||
- name: MultiPlus State of Charge
|
||||
unique_id: multiplus_state_of_charge
|
||||
slave: *multiplus_unit_id
|
||||
address: 30
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 0.1
|
||||
precision: 1
|
||||
unit_of_measurement: "%"
|
||||
device_class: battery
|
||||
state_class: measurement
|
||||
|
||||
- name: MultiPlus AC Input Current Limit Readback
|
||||
unique_id: multiplus_ac_input_current_limit_readback
|
||||
slave: *multiplus_unit_id
|
||||
address: 22
|
||||
- name: Charger AC Current
|
||||
slave: 223
|
||||
address: 2314
|
||||
input_type: holding
|
||||
data_type: int16
|
||||
scale: 0.1
|
||||
@@ -391,272 +267,73 @@ modbus:
|
||||
unit_of_measurement: "A"
|
||||
device_class: current
|
||||
state_class: measurement
|
||||
scan_interval: 10
|
||||
unique_id: charger_ac_current
|
||||
|
||||
- name: MultiPlus Mode Raw
|
||||
unique_id: multiplus_mode_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 33
|
||||
- name: Charger AC Current Limit
|
||||
slave: 223
|
||||
address: 2316
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus State Raw
|
||||
unique_id: multiplus_state_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 31
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus Charge State Raw
|
||||
unique_id: multiplus_charge_state_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 95
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus Active Input Raw
|
||||
unique_id: multiplus_active_input_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 29
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scan_interval: 10
|
||||
|
||||
- name: MultiPlus Phase Count
|
||||
unique_id: multiplus_phase_count
|
||||
slave: *multiplus_unit_id
|
||||
address: 28
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus VE Bus Error
|
||||
unique_id: multiplus_ve_bus_error
|
||||
slave: *multiplus_unit_id
|
||||
address: 32
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus High Temperature Alarm Raw
|
||||
unique_id: multiplus_high_temperature_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 34
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Low Battery Alarm Raw
|
||||
unique_id: multiplus_low_battery_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 35
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Overload Alarm Raw
|
||||
unique_id: multiplus_overload_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 36
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Ripple Alarm Raw
|
||||
unique_id: multiplus_ripple_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 47
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Temperature Sensor Alarm Raw
|
||||
unique_id: multiplus_temperature_sensor_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 42
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Voltage Sensor Alarm Raw
|
||||
unique_id: multiplus_voltage_sensor_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 43
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Grid Lost Alarm Raw
|
||||
unique_id: multiplus_grid_lost_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 64
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus BMS Pre Alarm Raw
|
||||
unique_id: multiplus_bms_pre_alarm_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 94
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus BMS Allows Charging Raw
|
||||
unique_id: multiplus_bms_allows_charging_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 57
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus BMS Allows Discharging Raw
|
||||
unique_id: multiplus_bms_allows_discharging_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 58
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus BMS Expected Raw
|
||||
unique_id: multiplus_bms_expected_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 59
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus BMS Error
|
||||
unique_id: multiplus_bms_error
|
||||
slave: *multiplus_unit_id
|
||||
address: 60
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus AC Input Ignored Raw
|
||||
unique_id: multiplus_ac_input_ignored_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 69
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus AC Input to Output Energy
|
||||
unique_id: multiplus_ac_input_to_output_energy
|
||||
slave: *multiplus_unit_id
|
||||
address: 74
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "kWh"
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
# Hardware counters reset on Multi/GX restart; total_increasing handles this.
|
||||
|
||||
- name: MultiPlus AC Input to Battery Energy
|
||||
unique_id: multiplus_ac_input_to_battery_energy
|
||||
slave: *multiplus_unit_id
|
||||
address: 76
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "kWh"
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
- name: MultiPlus AC Output to Input Energy
|
||||
unique_id: multiplus_ac_output_to_input_energy
|
||||
slave: *multiplus_unit_id
|
||||
address: 82
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "kWh"
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
- name: MultiPlus Battery to AC Input Energy
|
||||
unique_id: multiplus_battery_to_ac_input_energy
|
||||
slave: *multiplus_unit_id
|
||||
address: 86
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "kWh"
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
- name: MultiPlus Battery to AC Output Energy
|
||||
unique_id: multiplus_battery_to_ac_output_energy
|
||||
slave: *multiplus_unit_id
|
||||
address: 90
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "kWh"
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
- name: MultiPlus AC Output to Battery Energy
|
||||
unique_id: multiplus_ac_output_to_battery_energy
|
||||
slave: *multiplus_unit_id
|
||||
address: 92
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "kWh"
|
||||
device_class: energy
|
||||
state_class: total_increasing
|
||||
|
||||
- name: MultiPlus PowerAssist Boost Factor
|
||||
unique_id: multiplus_powerassist_boost_factor
|
||||
slave: *multiplus_unit_id
|
||||
address: 106
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
data_type: int16
|
||||
scale: 0.1
|
||||
precision: 1
|
||||
unit_of_measurement: "A"
|
||||
device_class: current
|
||||
state_class: measurement
|
||||
unique_id: charger_ac_current_limit
|
||||
|
||||
- name: MultiPlus Configured Output Voltage
|
||||
unique_id: multiplus_configured_output_voltage
|
||||
slave: *multiplus_unit_id
|
||||
address: 107
|
||||
- name: Charger On Off Raw
|
||||
slave: 223
|
||||
address: 2317
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 0.01
|
||||
precision: 2
|
||||
unit_of_measurement: "V"
|
||||
device_class: voltage
|
||||
state_class: measurement
|
||||
|
||||
- name: MultiPlus PowerAssist Enabled Raw
|
||||
unique_id: multiplus_powerassist_enabled_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 108
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus UPS Function Raw
|
||||
unique_id: multiplus_ups_function_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 109
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Weak AC Input Raw
|
||||
unique_id: multiplus_weak_ac_input_raw
|
||||
slave: *multiplus_unit_id
|
||||
address: 129
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
|
||||
- name: MultiPlus Nominal Inverter Power
|
||||
unique_id: multiplus_nominal_inverter_power
|
||||
slave: *multiplus_unit_id
|
||||
address: 130
|
||||
input_type: holding
|
||||
data_type: uint32
|
||||
scale: 1
|
||||
precision: 0
|
||||
unit_of_measurement: "W"
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
unique_id: charger_on_off_raw
|
||||
|
||||
- name: Charger Charge State Raw
|
||||
slave: 223
|
||||
address: 2318
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 1
|
||||
state_class: measurement
|
||||
unique_id: charger_charge_state_raw
|
||||
|
||||
- name: Charger Error Code
|
||||
slave: 223
|
||||
address: 2319
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 1
|
||||
state_class: measurement
|
||||
unique_id: charger_error_code
|
||||
|
||||
- name: Charger Relay State
|
||||
slave: 223
|
||||
address: 2320
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 1
|
||||
state_class: measurement
|
||||
unique_id: charger_relay_state
|
||||
|
||||
- name: Charger Low Voltage Alarm
|
||||
slave: 223
|
||||
address: 2321
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 1
|
||||
state_class: measurement
|
||||
unique_id: charger_low_voltage_alarm
|
||||
|
||||
- name: Charger High Voltage Alarm
|
||||
slave: 223
|
||||
address: 2322
|
||||
input_type: holding
|
||||
data_type: uint16
|
||||
scale: 1
|
||||
state_class: measurement
|
||||
unique_id: charger_high_voltage_alarm
|
||||
|
||||
template:
|
||||
- sensor:
|
||||
@@ -762,208 +439,34 @@ template:
|
||||
{{ v100 }}
|
||||
{% endif %}
|
||||
|
||||
- name: MultiPlus State
|
||||
unique_id: multiplus_state
|
||||
availability: "{{ is_number(states('sensor.multiplus_state_raw')) }}"
|
||||
- name: Charger On Off
|
||||
state: >-
|
||||
{% set v = states('sensor.multiplus_state_raw') | int(-1) %}
|
||||
{{ {
|
||||
0:'Off',1:'Low power',2:'Fault',3:'Bulk',4:'Absorption',5:'Float',
|
||||
6:'Storage',7:'Equalize',8:'Pass-through',9:'Inverting',
|
||||
10:'PowerAssist',11:'Power supply',244:'Sustain',252:'External control'
|
||||
}.get(v, 'Unknown') }}
|
||||
{% set v = states('sensor.charger_on_off_raw')|int %}
|
||||
{{ {0:'Off',1:'On',2:'Error',3:'Unavailable'}.get(v, 'Unknown') }}
|
||||
|
||||
# Keep the existing charger entities and energy history.
|
||||
- name: Charger Charge State
|
||||
availability: "{{ is_number(states('sensor.multiplus_charge_state_raw')) }}"
|
||||
state: >-
|
||||
{% set v = states('sensor.multiplus_charge_state_raw') | int(-1) %}
|
||||
{% set v = states('sensor.charger_charge_state_raw')|int %}
|
||||
{{ {
|
||||
0:'Initialising',1:'Bulk',2:'Absorption',3:'Float',4:'Storage',
|
||||
5:'Absorption repeat',6:'Forced absorption',7:'Equalize',
|
||||
8:'Bulk stopped',9:'Unknown'
|
||||
}.get(v, 'Unknown') }}
|
||||
|
||||
- name: MultiPlus Active Input
|
||||
unique_id: multiplus_active_input
|
||||
availability: "{{ is_number(states('sensor.multiplus_active_input_raw')) }}"
|
||||
state: >-
|
||||
{{ {0:'AC input 1',1:'AC input 2',240:'Disconnected'}
|
||||
.get(states('sensor.multiplus_active_input_raw') | int(-1), 'Unknown') }}
|
||||
|
||||
# VE.Bus DC current is positive while charging and negative while inverting.
|
||||
- name: MultiPlus DC Power
|
||||
unique_id: multiplus_dc_power
|
||||
unit_of_measurement: "W"
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
availability: >-
|
||||
{{ is_number(states('sensor.multiplus_battery_voltage'))
|
||||
and is_number(states('sensor.multiplus_battery_current')) }}
|
||||
state: >-
|
||||
{{ (states('sensor.multiplus_battery_voltage') | float(0)
|
||||
* states('sensor.multiplus_battery_current') | float(0)) | round(1) }}
|
||||
0:'Off',1:'Low Power',2:'Fault',3:'Bulk',4:'Absorption',5:'Float',
|
||||
6:'Storage',7:'Equalize/Manual',8:'External Control'
|
||||
}.get(v,'Unknown') }}
|
||||
|
||||
- name: "Charger DC Wattage"
|
||||
unique_id: charger_dc_wattage
|
||||
unit_of_measurement: "W"
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
availability: "{{ is_number(states('sensor.multiplus_dc_power')) }}"
|
||||
state: >-
|
||||
{{ [states('sensor.multiplus_dc_power') | float(0), 0] | max }}
|
||||
|
||||
- name: MultiPlus Inverter DC Power
|
||||
unique_id: multiplus_inverter_dc_power
|
||||
unit_of_measurement: "W"
|
||||
device_class: power
|
||||
state_class: measurement
|
||||
availability: "{{ is_number(states('sensor.multiplus_dc_power')) }}"
|
||||
state: >-
|
||||
{{ [0 - states('sensor.multiplus_dc_power') | float(0), 0] | max }}
|
||||
{% set v = states('sensor.charger_output_1_voltage')|float(0) %}
|
||||
{% set a = states('sensor.charger_output_1_current')|float(0) %}
|
||||
{{ (v * a) | round(1) }}
|
||||
|
||||
- binary_sensor:
|
||||
- name: MultiPlus AC Input Connected
|
||||
unique_id: multiplus_ac_input_connected
|
||||
device_class: power
|
||||
# Register 29 identifies the selected input; it alone does not establish
|
||||
# that the Multi is using AC. Keep the entity ID, but report active use.
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_active_input_raw') | int(-1) in [0, 1, 240]
|
||||
and states('sensor.multiplus_mode_raw') | int(-1) in [1, 2, 3, 4]
|
||||
and states('sensor.multiplus_state_raw') | int(-1)
|
||||
in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 244, 252] }}
|
||||
state: >-
|
||||
{{ states('sensor.multiplus_active_input_raw') | int(-1) in [0, 1]
|
||||
and states('sensor.multiplus_mode_raw') | int(-1) in [1, 2, 3]
|
||||
and states('sensor.multiplus_state_raw') | int(-1)
|
||||
in [3, 4, 5, 6, 7, 8, 10, 11, 244, 252] }}
|
||||
|
||||
- name: MultiPlus High Temperature Alarm
|
||||
unique_id: multiplus_high_temperature_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_high_temperature_alarm_raw') | int(-1) in [0, 1, 2] }}
|
||||
state: "{{ states('sensor.multiplus_high_temperature_alarm_raw') | int(0) > 0 }}"
|
||||
|
||||
- name: MultiPlus Low Battery Alarm
|
||||
unique_id: multiplus_low_battery_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_low_battery_alarm_raw') | int(-1) in [0, 1, 2] }}
|
||||
state: "{{ states('sensor.multiplus_low_battery_alarm_raw') | int(0) > 0 }}"
|
||||
|
||||
- name: MultiPlus Overload Alarm
|
||||
unique_id: multiplus_overload_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_overload_alarm_raw') | int(-1) in [0, 1, 2] }}
|
||||
state: "{{ states('sensor.multiplus_overload_alarm_raw') | int(0) > 0 }}"
|
||||
|
||||
- name: MultiPlus Ripple Alarm
|
||||
unique_id: multiplus_ripple_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_ripple_alarm_raw') | int(-1) in [0, 1, 2] }}
|
||||
state: "{{ states('sensor.multiplus_ripple_alarm_raw') | int(0) > 0 }}"
|
||||
|
||||
- name: MultiPlus Temperature Sensor Alarm
|
||||
unique_id: multiplus_temperature_sensor_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_temperature_sensor_alarm_raw') | int(-1) in [0, 1, 2] }}
|
||||
state: "{{ states('sensor.multiplus_temperature_sensor_alarm_raw') | int(0) > 0 }}"
|
||||
|
||||
- name: MultiPlus Voltage Sensor Alarm
|
||||
unique_id: multiplus_voltage_sensor_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_voltage_sensor_alarm_raw') | int(-1) in [0, 1, 2] }}
|
||||
state: "{{ states('sensor.multiplus_voltage_sensor_alarm_raw') | int(0) > 0 }}"
|
||||
|
||||
- name: MultiPlus Grid Lost Alarm
|
||||
unique_id: multiplus_grid_lost_alarm
|
||||
device_class: problem
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_grid_lost_alarm_raw') | int(-1) in [0, 2] }}
|
||||
state: "{{ is_state('sensor.multiplus_grid_lost_alarm_raw', '2') }}"
|
||||
|
||||
- name: MultiPlus PowerAssist Enabled
|
||||
unique_id: multiplus_powerassist_enabled
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_powerassist_enabled_raw') | int(-1) in [0, 1] }}
|
||||
state: "{{ is_state('sensor.multiplus_powerassist_enabled_raw', '1') }}"
|
||||
|
||||
- name: MultiPlus UPS Enabled
|
||||
unique_id: multiplus_ups_enabled
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_ups_function_raw') | int(-1) in [0, 1] }}
|
||||
# Victron register 109 uses 0 for enabled and 1 for disabled.
|
||||
state: "{{ is_state('sensor.multiplus_ups_function_raw', '0') }}"
|
||||
|
||||
# These controls read their state from the Multi; they never write on startup.
|
||||
# GX/Digital Multi Control/VE.Bus BMS settings can restrict remote control.
|
||||
- select:
|
||||
- name: MultiPlus Mode
|
||||
unique_id: multiplus_mode
|
||||
icon: mdi:power-settings
|
||||
availability: >-
|
||||
{{ states('sensor.multiplus_mode_raw') | int(-1) in [1, 2, 3, 4] }}
|
||||
state: >-
|
||||
{{ {1:'Charger only',2:'Inverter only',3:'On',4:'Off'}
|
||||
.get(states('sensor.multiplus_mode_raw') | int(-1), 'Unknown') }}
|
||||
options: "{{ ['On', 'Charger only', 'Inverter only', 'Off'] }}"
|
||||
select_option:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ states('sensor.multiplus_mode_raw') | int(-1) in [1, 2, 3, 4]
|
||||
and option in ['On', 'Charger only', 'Inverter only', 'Off'] }}
|
||||
- action: modbus.write_register
|
||||
data:
|
||||
hub: victron_gx
|
||||
slave: *multiplus_unit_id
|
||||
address: 33
|
||||
value: "{{ {'Charger only':1,'Inverter only':2,'On':3,'Off':4}[option] }}"
|
||||
- delay:
|
||||
seconds: 2
|
||||
- action: homeassistant.update_entity
|
||||
target:
|
||||
entity_id:
|
||||
- sensor.multiplus_mode_raw
|
||||
- sensor.multiplus_state_raw
|
||||
- sensor.multiplus_active_input_raw
|
||||
|
||||
- number:
|
||||
- name: MultiPlus AC Input Current Limit
|
||||
unique_id: multiplus_ac_input_current_limit
|
||||
icon: mdi:current-ac
|
||||
device_class: current
|
||||
unit_of_measurement: "A"
|
||||
min: 0
|
||||
# Van shore-power plug rating; this is a UI bound, not a startup setting.
|
||||
max: 30
|
||||
step: 0.1
|
||||
availability: >-
|
||||
{{ is_number(states('sensor.multiplus_ac_input_current_limit_readback'))
|
||||
and states('sensor.multiplus_ac_input_current_limit_readback') | float(-1) >= 0 }}
|
||||
state: "{{ states('sensor.multiplus_ac_input_current_limit_readback') | float(0) }}"
|
||||
set_value:
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ is_number(states('sensor.multiplus_ac_input_current_limit_readback'))
|
||||
and is_number(value) and 0 <= value | float(-1) <= 30 }}
|
||||
- action: modbus.write_register
|
||||
data:
|
||||
hub: victron_gx
|
||||
slave: *multiplus_unit_id
|
||||
address: 22
|
||||
# Register 22 is in tenths of an amp: 10.8 A -> 108.
|
||||
value: "{{ (value | float * 10) | round(0) | int }}"
|
||||
- delay:
|
||||
seconds: 2
|
||||
- action: homeassistant.update_entity
|
||||
target:
|
||||
entity_id: sensor.multiplus_ac_input_current_limit_readback
|
||||
- name: Charger Low Voltage Alarm Active
|
||||
state: "{{ states('sensor.charger_low_voltage_alarm')|int == 2 }}"
|
||||
- name: Charger High Voltage Alarm Active
|
||||
state: "{{ states('sensor.charger_high_voltage_alarm')|int == 2 }}"
|
||||
|
||||
sensor:
|
||||
- platform: integration
|
||||
@@ -993,16 +496,6 @@ sensor:
|
||||
max_sub_interval:
|
||||
minutes: 5
|
||||
|
||||
- platform: integration
|
||||
source: sensor.multiplus_inverter_dc_power
|
||||
name: MultiPlus Inverter DC Energy
|
||||
unique_id: multiplus_inverter_dc_energy
|
||||
unit_prefix: k
|
||||
round: 2
|
||||
method: trapezoidal
|
||||
max_sub_interval:
|
||||
minutes: 5
|
||||
|
||||
utility_meter:
|
||||
dc_load_energy_daily:
|
||||
source: sensor.dc_system_energy
|
||||
@@ -1027,11 +520,3 @@ utility_meter:
|
||||
charger_dc_wattage_monthly:
|
||||
source: sensor.dc_charger_energy
|
||||
cycle: monthly
|
||||
|
||||
multiplus_inverter_dc_energy_daily:
|
||||
source: sensor.multiplus_inverter_dc_energy
|
||||
cycle: daily
|
||||
|
||||
multiplus_inverter_dc_energy_monthly:
|
||||
source: sensor.multiplus_inverter_dc_energy
|
||||
cycle: monthly
|
||||
Reference in new issue
Block a user