Place your fullchain.pem and privkey.pem in folder /ssl
Apply SSL to your HA Instance by adding the following code to your configuration.yaml
# SSL Certificate
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Place your fullchain.pem and privkey.pem in folder /ssl
Apply SSL to your HA Instance by adding the following code to your configuration.yaml
# SSL Certificate
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
(This article is in dutch language because it is only applicable on dutch TV providers)
Hierbij mijn werkende configuratie voor IPTV met pfSense als router.
Hierbij is op glasvezelaansluiting een NTU gemonteerd die het optische signaal omzet naar koper/UTP.
Ik maak gebruik van een Qotom computer die voorzien is van 6 netwerk interfaces (Intell chipset). Daardoor heb ik interfaces Igb0 t/m Igb5 tot mijn beschikking. Daarbij heb ik gekozen om mijn interne IPTV via een apart VLAN te laten lopen. Dit is NIET noodzakelijk. Dit kan namelijk ook gewoon via LAN.
Als je dat wil doen, zorg dan dat je de firewall rules uit IPTV_LAN overneemt (incl. ip options!) naar je LAN firewall rules.
Hieronder een reeks screenshots zoals ik het geconfigureerd heb.
Voor vragen kun je me altijd benaderen via comments onder aan deze pagina. (registreren noodzakelijk i.v.m. spam)
In mijn configuratie zijn onderstaande aansluitingen van belang:
Igb0 = WAN (verbonden via UTP-kabel aan de NTU)
Igb1 = LAN
Igb3 = IPTV_LAN
Let op! Bij de bovenste regel is via Advanced options ‘Allow IP options’ aangevinkt’
Let op! Bij de bovenste 2 regels is via Advanced options ‘Allow IP options’ aangevinkt’
Set Outbound Nat mode op ‘Hybrid mode’.
Zorg dat je onderstaande mapping toevoegd. Er zullen ook automatische rules aangemaakt worden.
EXTRA AANDACHT VOOR:
Then you have the following error code:
” Unable to update “Snap Store”:
(null): cannot refresh “snap-store”: snap “snap-store” has
running apps (ubuntu-software)”
Force stop snap-store and refresh:snap-store --quit && sudo snap refresh snap-store
This updates the snap store store.
Backup the following folders/files:
/var/lib/pve-cluster/config.db
/etc/corosync/*
/etc/network/interfaces
/etc/hostname
/etc/hosts
Add the following code to your mqtt.yaml file:
sensor:
# Grid meter power
- state_topic: "venus-home/N/c0619xxxxxx/grid/30/Ac/Power"
name: "Grid power"
unique_id: "grid_meter_power"
device_class: power
value_template: '{{ value_json.value | round(0) }}'
unit_of_measurement: "W"
icon: mdi:TransmissionTower
# Victron alarms
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/CellImbalance"
name: "Alarm cell imbalance"
unique_id: "alarm_battery_cell_imbalance"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/ChargeBlocked"
name: "Alarm Charge blocked"
unique_id: "alarm_battery_charge_blocked"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/DischargeBlocked"
name: "Alarm Discharge blocked"
unique_id: "alarm_battery_discharge_blocked"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/HighChargeCurrent"
name: "Alarm high charge current"
unique_id: "alarm_battery_high_charge_current"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/HighChargeTemperature"
name: "Alarm high charge temperature"
unique_id: "alarm_battery_high_charge_temperature"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/HighDischargeCurrent"
name: "Alarm high discharge current"
unique_id: "alarm_battery_high_discharge_current"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/HighTemperature"
name: "Alarm high temperature"
unique_id: "alarm_battery_high_temperature"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/HighVoltage"
name: "Alarm high voltage"
unique_id: "alarm_battery_high_voltage"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/InternalFailure"
name: "Alarm internal failure"
unique_id: "alarm_battery_internal_failure"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/LowChargeTemperature"
name: "Alarm low charge temperature"
unique_id: "alarm_battery_low_charge_temp"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/LowTemperature"
name: "Alarm low temperature"
unique_id: "alarm_battery_low_temp"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Alarms/LowVoltage"
name: "Alarm low voltage"
unique_id: "alarm_battery_low_voltage"
value_template: >
{% if value_json.value == 0 %}
OK
{% elif value_json.value == 1 %}
Warning
{% elif value_json.value == 2 %}
Alarm
{% endif %}
# Victron Cerbo GX Serial number
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Serial"
name: "Cerbo GX Serial number"
unique_id: "victron_cerbo_serial"
value_template: '{{ value_json.value }}'
# Active SoC limit
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Control/ActiveSocLimit"
name: "Active SoC limit"
unique_id: "active_soc_limit"
device_class: battery
unit_of_measurement: "%"
value_template: '{{ value_json.value | round(0)}}'
icon: mdi:battery-low
# AC ActiveIN L1 Current
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Ac/ActiveIn/L1/Current"
name: "AC ActiveIn L1 Current"
unique_id: "victron_activein_L1_current"
device_class: current
value_template: '{{ value_json.value |float(0)|round(2) }}'
unit_of_measurement: "A"
icon: mdi:power-socket-eu
# AC ActiveIN L1 Current
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Ac/ActiveIn/L2/Current"
name: "AC ActiveIn L2 Current"
unique_id: "victron_activein_L2_current"
device_class: current
value_template: '{{ value_json.value |float(0)|round(2) }}'
unit_of_measurement: "A"
icon: mdi:power-socket-eu
# AC ActiveIN L1 Current
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Ac/ActiveIn/L3/Current"
name: "AC ActiveIn L3 Current"
unique_id: "victron_activein_L3_current"
device_class: current
value_template: '{{ value_json.value |float(0)|round(2) }}'
unit_of_measurement: "A"
icon: mdi:power-socket-eu
# Grid Lost Status
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Alarms/GridLost"
name: "Grid Lost Status"
unique_id: "victron_grid_lost_status"
value_template: >
{% if value_json.value == 0 %}
Grid Connected
{% elif value_json.value == 2 %}
Grid Lost
{% endif %}
# Current Grid Setpoint
- state_topic: "venus-home/N/c0619xxxxxx/settings/0/Settings/CGwacs/AcPowerSetPoint"
name: "Current grid setpoint"
unique_id: "current_grid_setpoint"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
# Battery percentage
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Soc"
name: "Battery Percent"
unique_id: "battery_percent"
device_class: battery
value_template: '{{ value_json.value | round(1) }}'
unit_of_measurement: "%"
# Battery percentage
- state_topic: "venus-home/N/c0619xxxxxx/battery/512/Soh"
name: "Battery Health"
unique_id: "battery_health"
device_class: battery
value_template: '{{ value_json.value | round(1) }}'
unit_of_measurement: "%"
# AC Loads
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/P"
name: "AC Loads"
unique_id: "ac_loads"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# L1 Load
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L1/P"
name: "L1 Load"
unique_id: "L1_load"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# L1 Output Voltage
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L1/V"
name: "L1 Output Voltage"
unique_id: "L1_Output_Voltage"
device_class: voltage
value_template: '{{ value_json.value|round(1) }}'
unit_of_measurement: "V"
icon: mdi:power-socket-eu
# L1 Output frequency
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L1/F"
name: "L1 output frequency"
unique_id: "L1_output_frequency"
device_class: frequency
value_template: '{{ value_json.value|round(1) }}'
unit_of_measurement: "Hz"
icon: mdi:sine-wave
# L2 Load
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L2/P"
name: "L2 Load"
unique_id: "L2_load"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# L2 Output Voltage
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L2/V"
name: "L2 Output Voltage"
unique_id: "L2_Output_Voltage"
device_class: voltage
value_template: '{{ value_json.value|round(1) }}'
unit_of_measurement: "V"
icon: mdi:power-socket-eu
# L2 Output frequency
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L2/F"
name: "L2 output frequency"
unique_id: "L2_output_frequency"
device_class: frequency
value_template: '{{ value_json.value|round(1) }}'
unit_of_measurement: "Hz"
icon: mdi:sine-wave
# L3 Load
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L3/P"
name: "L3 Load"
unique_id: "L3_load"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# L3 Output Voltage
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L3/V"
name: "L3 Output Voltage"
unique_id: "L3_Output_Voltage"
device_class: voltage
value_template: '{{ value_json.value|round(1) }}'
unit_of_measurement: "V"
icon: mdi:power-socket-eu
# L3 Output frequency
- state_topic: "venus-home/N/c0619xxxxxx/vebus/276/Ac/Out/L3/F"
name: "L3 output frequency"
unique_id: "L3_output_frequency"
device_class: frequency
value_template: '{{ value_json.value|round(1) }}'
unit_of_measurement: "Hz"
icon: mdi:sine-wave
# L1 Grid
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Ac/Grid/L1/Power"
name: "L1 Grid"
unique_id: "L1_grid"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# L2 Grid
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Ac/Grid/L2/Power"
name: "L2 Grid"
unique_id: "L2_grid"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# L3 Grid
- state_topic: "venus-home/N/c0619xxxxxx/system/0/Ac/Grid/L3/Power"
name: "L3 Grid"
unique_id: "L3_grid"
device_class: power
value_template: '{{ value_json.value }}'
unit_of_measurement: "W"
icon: mdi:power-socket-eu
# DC Loads
- name: "DC Loads"
device_class: power
unique_id: "dc_loads"
state_topic: "venus-home/N/c0619xxxxxx/system/0/Dc/System/Power"
value_template: '{{ value_json.value|float(0)|round(0) }}'
unit_of_measurement: "W"
icon: mdi:power
# Net Solar Production
- name: "Current Solar Production"
unique_id: "net_solar_production"
device_class: power
state_topic: "venus-home/N/c0619xxxxxx/system/0/Dc/Pv/Power"
value_template: '{{ value_json.value|float(0)|round(0) }}'
unit_of_measurement: "W"
icon: mdi:solar-power
# Battery Voltage
- name: "Battery Voltage"
unique_id: "battery_voltage"
device_class: voltage
state_topic: "venus-home/N/c0619xxxxxx/system/0/Dc/Battery/Voltage"
value_template: '{{ value_json.value|float(0)|round(1) }}'
unit_of_measurement: "V"
# Battery Temp (If you have a temp sensor)
- name: "Battery Temp"
device_class: temperature
unique_id: "battery_temperature"
state_topic: "venus-home/N/c0619xxxxxx/system/0/Dc/Battery/Temperature"
value_template: '{{ ((value_json.value * 9/5) + 32) | round(0) }}'
unit_of_measurement: "°F"
# Net load going in/out of your battery
- name: "Battery Load"
unique_id: "battery_load"
device_class: power
state_topic: "venus-home/N/c0619xxxxxx/system/0/Dc/Vebus/Power"
value_template: '{{ value_json.value |float(0)|round(0) }}'
unit_of_measurement: "W"
# Net current going in/out of your battery
- name: "Battery Current"
unique_id: "battery_current"
device_class: current
state_topic: "venus-home/N/c0619xxxxxx/system/0/Dc/Vebus/Current"
value_template: '{{ value_json.value |float(0)|round(0) }}'
unit_of_measurement: "A"
# Temperature Multiplus II - Phase 1
- name: "Temperature MPII #1"
unique_id: "temp_mpII_1"
device_class: temperature
state_topic: "venus-home/N/c0619xxxxxx/temperature/25/Temperature"
value_template: '{{ value_json.value |float(0)|round(0) }}'
unit_of_measurement: "°C"
# Temperature Multiplus II - Phase 2
- name: "Temperature MPII #2"
unique_id: "temp_mpII_2"
device_class: temperature
state_topic: "venus-home/N/c0619xxxxxx/temperature/26/Temperature"
value_template: '{{ value_json.value |float(0)|round(0) }}'
unit_of_measurement: "°C"
# Temperature Multiplus II - Phase 3
- name: "Temperature MPII #3"
unique_id: "temp_mpII_3"
device_class: temperature
state_topic: "venus-home/N/c0619xxxxxx/temperature/27/Temperature"
value_template: '{{ value_json.value |float(0)|round(0) }}'
unit_of_measurement: "°C"
# Temperature Multiplus II - Phase 3
- name: "Pylontech battery power"
unique_id: "pylontech_batt_power"
device_class: power
state_topic: "venus-home/N/c0619xxxxxx/battery/512/Dc/0/Power"
value_template: '{{ value_json.value |round(0) }}'
unit_of_measurement: "W"
# Current State of your Inverter
- name: "Inverter State"
unique_id: "inverter_state"
state_topic: "venus-home/N/c0619xxxxxx/system/0/SystemState/State"
value_template: >
{% if value_json.value == 0 %}
Off
{% elif value_json.value == 1 %}
Low power
{% elif value_json.value == 2 %}
VE.Bus Fault condition
{% elif value_json.value == 3 %}
Bulk charging
{% elif value_json.value == 4 %}
Absorption charging
{% elif value_json.value == 5 %}
Float charging
{% elif value_json.value == 6 %}
Storage mode
{% elif value_json.value == 7 %}
Equalize
{% elif value_json.value == 8 %}
Passthru
{% elif value_json.value == 9 %}
Inverting
{% elif value_json.value == 10 %}
Assisting
{% elif value_json.value == 252 %}
External control
{% elif value_json.value == 256 %}
Discharging
{% elif value_json.value == 257 %}
Sustain
{% elif value_json.value == 258 %}
Recharging
{% elif value_json.value == 259 %}
Scheduled recharging
{% else %}
Error - No Data
{% endif %}
# Current state of your charge controller
- name: "Solar Charger State"
unique_id: "solar_charger_state"
state_topic: "venus-home/N/c0619xxxxxx/solarcharger/289/State"
value_template: >
{% if value_json.value == 0 %}
Off
{% elif value_json.value == 2 %}
Fault
{% elif value_json.value == 3 %}
Bulk
{% elif value_json.value == 4 %}
Absorption
{% elif value_json.value == 5 %}
Float
{% elif value_json.value == 6 %}
Storage
{% elif value_json.value == 7 %}
Equalize
{% else %}
Error - No Data
{% endif %}
switch:
#Multiplus Entladeleistung Begrenzen !Number
- unique_id: multiplus_switch_discharge_power
name: Inverter Power
command_topic: "venus-home/W/c0619xxxxxx/settings/0/Settings/CGwacs/MaxDischargePower"
payload_on: '{"value": 1000}'
payload_off: '{"value": -1}'
state_topic: "venus-home/N/c0619xxxxxx/settings/0/Settings/CGwacs/MaxDischargePower"
value_template: >
{% if value_json.value | int == -1 %}
{% set state_limit = 'OFF' %}
{% else %}
{% set state_limit = 'ON' %}
{% endif %}
{{ state_limit }}
state_on: 'ON'
state_off: 'OFF'
device: {
identifiers: [
"Victron Cerbo GX"
],
manufacturer: "Victron Energy",
model: "Cerbo GX",
name: "Cerbo GX"}
#Multiplus AC PV-Überschuss einspeisen
- unique_id: multiplus_allow_ac_feed_in
name: Multiplus allow AC feed in
command_topic: "venus-home/W/c0619xxxxxx/settings/0/Settings/CGwacs/PreventFeedback"
payload_on: '{"value": 0}'
payload_off: '{"value": 1}'
state_topic: "venus-home/N/c0619xxxxxx/settings/0/Settings/CGwacs/PreventFeedback"
value_template: "{{ value_json.value | int }}"
state_on: '0'
state_off: '1'
device: {
identifiers: [
"Victron Cerbo GX"
],
manufacturer: "Victron Energy",
model: "Cerbo GX",
name: "Cerbo GX"}
#Multiplus DC PV-Überschuss einspeisen
- unique_id: multiplus_allow_dc_feed_in
name: Multiplus allow DC feed in
command_topic: "venus-home/W/c0619xxxxxx/settings/0/Settings/CGwacs/OvervoltageFeedIn"
payload_on: '{"value": 1}'
payload_off: '{"value": 0}'
state_topic: "venus-home/N/c0619xxxxxx/settings/0/Settings/CGwacs/OvervoltageFeedIn"
value_template: "{{ value_json.value | int }}"
state_on: '1'
state_off: '0'
device: {
identifiers: [
"Victron Cerbo GX"
],
manufacturer: "Victron Energy",
model: "Cerbo GX",
name: "Cerbo GX"}
- platform: ping
host: 192.168.178.1
name: ping Fritzbox
count: 2
scan_interval: 30
In this example the home battery system has a capacity of 300Ah (15kWh / 48V).
As a safe minimal value is 15% capacity left is chosen. When grid is failing, there is still 2.5kWh left. When charging occurs, this will be shown instead of the remaining time.
You can use the created sensor ‘sensor.template_time_left_on_battery_min_soc’ to display on your dashboard.
- sensor:
- unique_id: time_left_on_battery_min_soc
# unit_of_measurement: "Hours"
icon: mdi:sort-clock-ascending
state: >
{% set battery_current = states('sensor.battery_current')|float %}
{% set battery_soc = states('sensor.battery_percent')|float %}
{% set loads_current = states('sensor.ac_loads')|float/states('sensor.battery_voltage')|float %}
{% set battery_min_soc = 15 %}
{% set battery_max_capacity = 300 %}
{% if (battery_soc-battery_min_soc) < 0 %}
{{ 0 }}
{% elif (loads_current) < 0 %}
{{ 'Charging' }}
{% else %}
{{ ((((battery_soc-battery_min_soc)*battery_max_capacity)/100)/loads_current | float ) | round(2) }}
{% endif %}
template:
# Solar production - Prevent showing unavailable instead of 0
- sensor:
- name: "Solar Current Power"
unit_of_measurement: "W"
state: "{{ 0 if states('sensor.on_grid_l1_power') == 'unavailable' else states('sensor.on_grid_l1_power' ) }}"
When you run into this error:
“TASK ERROR: zfs error: cannot create ‘rpool/vm-302-state-update’: dataset already exists”
Try this solution:
zfs destroy rpool/vm-302-state-update
1: have a look what is there:
ls -alh /dev/disk/by-id/
zpool status
zpool list -v
2: set the hard drive you want to change offline:
zpool offline "POOLNAME" "HARD-DRIVE-ID or the whole path"
## example:
zpool offline rpool wwn-0x50014ee25ba1a5e4
3: change the hard drives physically
shutdown and replace the disk (no hot-swap)
4: create an empty GPT Partition Table on the new hdd with parted:
parted /dev/new-disk
(parted)# print
(parted)# mklabel GPT
(parted)# Yes
(parted)# q
5: replace them in the ZFS Pool:
zpool replace "POOLNAME" "HARD-DRIVE-ID or the whole path old hard drive" "HARD-DRIVE-ID or the whole path NEW hard drive"
## example:
zpool replace rpool wwn-0x50014ee25ba1a5e4 wwn-0x5000cca27edf438f
6: have a look what’s going on:
zpool status
....
resilver in progress since Sat Feb 29 11:43:52 2020
328G scanned at 3,77G/s, 75,5G issued at 888M/s, 328G total
8,83G resilvered, 23,01% done, 0 days 00:04:51 to go
....