WeHeat - Home Assistant Dashboard
Met al die data in je Home Assistant omgeving kan je natuurlijk een heel erg mooi dashboard bouwen, misschien niet de allerhoogste prioriteit, maar wel heel mooi om naar te kijken natuurlijk :)
In dit artikel
Zodra je in Home Assistant de WeHeat integratie geactiveerd en gekoppeld hebt krijg je een hele vracht met data tot je beschikking. Dat is natuurlijk mooi, maar in het geval van WeHeat is er dan niet zo heel veel wat je kan met die data, anders dan er naar te kijken. Afhankelijk van welke thermostaat je hebt kan je die natuurlijk wel ook via Home Assistant aansturen, maar dat is een verhaal voor een andere keer.

Dus, sturing via Home Assistant behoort niet tot de mogelijkheden, maar het maken van een dashboard om te zien waar je systeem mee bezig is natuurlijk wel.
Aan het einde van dit bericht deel ik de code van het hele dashboard, met een find and replace actie zou het overgrote deel van het dashboard ook meteen voor jou moeten werken. Wel is het zo dat ik via HACS een extra module geinstalleerd heb voor de grafieken die ik gebruikt heb. Dit betreft de Statistics Graph Chart Card, hiermee krijg je erg veel nieuwe mogelijkheden voor grafieken en weergaves, en die zijn essentieel voor de dashboards die ik gebruik.
Ik heb een aantal blokken uitgelicht met wat toelichting.
Thermostaat en temperatuur

Hier kijken we naar de gevraagde temperatuur, de kamertemperatuur (uit de thermostaat) en de buitentemperatuur, wat hier wel mooi is dat je ook de impact van de buitentemperatuur op de binnentemperatuur goed kan zien. In theorie moeten de thermostaat en ruimte vrij dicht op elkaar blijven zitten, maar je kan hier dus ook goed zien hoeveel tijd er nodig geweest is om de gewenste temperatuur te behalen.
Aanvoer, retour en doeltemperatuur

Je wil bij een lage temperatuur systeem als je doel temperatuur voor het CV water 30 graden is grofweg 26-28 graden aan retour temperatuur hebben. Via deze weergave kan je dat mooi in de gaten houden. De pieken die je in de grafiek ziet zijn overigens de momenten waarop het vat met tapwater opgewarmd wordt tot grofweg 55 graden (200 liter op 55 graten is onze normale temperatuur en warm water voorraad, als dat ooit krap wordt kunnen we dat verder verhogen.
Temperatuur boilervat

Hier boven gaf ik al kort wat aan over de temperatuur van het boilervat. Voor ons werkt het opwarmen op een goedkoop moment tot 55 graden prima met de hoeveelheid die we douchen of warm water gebruiken in de badkamer of keuken (icm de quooker). Het is een goed inzicht om naar het verloop over tijd te kijken. Afhankelijk van de data in deze grafiek kan je bepalen om de basis temperatuur, of de momenten van verwarmen aan te passen zodat dat beter past bij het verbruiksprofiel.
Verbruiksinformatie

Verwarmen kost natuurlijk energie, en energie kost geld. Dus in deze weergave kan je goed zien voor welke onderdelen van het verwarmingssysteem heoveel energie verbruikt wordt. Je ziet meteen in het volgende blok ook precies wat die elektrische energie aan warmte opgeleverd heeft en daarmee indirect dus ook het rendement van het systeem.
Compressorbelasting

Het centrale component is de compressor, de belasting hiervan geeft een goed beeld van hoeveel capaciteit er nog over is in het systeem en hoe dicht je op de limiet zit. De kans dat dit data is waar je echt iets mee moet is erg klein, maar als je met een buiten temperatuur van 10 graden de compressor de volledige tijd op vol vermogen (let op, dit volle vermogen wordt eventueel beperkt door de geluidsinstellingen die je instelt voor je warmtepomp) ziet draaien weet je natuurlijk wel dat je een probleem hebt.
Wat in dit overzicht ook wel aardig is is dat je mooi het verschil tussen het dag en nacht vermogen aan de hand van je geluidsinstellingen kan zien.
Het dasboard
Strikt gezien is het een view, en om tot de view te komen zijn er een paar dingen belangrijk:
- Aanmaken extra velden
- Vervang het serienummer in de yaml code van de view door jouw nummer / de naam van de entity in Home Assistant.
Aanmaken extra velden
We hebben naast de standaard velden een paar extra waardes nodig. Je kan deze allemaal toevoegen in de configuration.yaml van Home Assistant (voor meer informatie kan je in dit artikel meer informatie vinden over hoe je die file aan kan passen). In een aantal gevallen zie je sn_xxx staan, zie hier onder bij het stukje velden vervangen hoe je aan de correcte waaarde komt voor dit veld.
sensor:
- platform: integration
source: sensor.sn_xxx_input_power
name: energieverbruik_weheat_lifetime
unit_prefix: k
round: 2
method: left
- platform: integration
source: sensor.weheat_power_dhw
name: energieverbruik_weheat_dhw
unit_prefix: k
round: 2
method: left
- platform: integration
source: sensor.weheat_power_cv
name: energieverbruik_weheat_cv
unit_prefix: k
round: 2
method: left
- platform: integration
source: sensor.weheat_power_defrost
name: energieverbruik_weheat_defrost
unit_prefix: k
round: 2
method: left
- platform: integration
source: sensor.weheat_power_legionella
name: energieverbruik_weheat_legionella
unit_prefix: k
round: 2
method: left
En dan in mijn geval staan de template sensoren in een andere config file. Deze is in de hoofd configuration.yaml geinclude met deze eenvoudige regel:
template: !include templates.yamlEn dan in de templates.yaml file:
- sensor:
- name: "WeHeat Power CV"
state: >-
{% if states('sensor.sn_xxx') == 'heating' %}
{{ states('sensor.sn_xxx_input_power') | float }}
{% else %}
0
{% endif %}
unit_of_measurement: "W"
device_class: "power"
- name: "WeHeat Power DHW"
state: >-
{% if states('sensor.sn_xxx') == 'dhw' %}
{{ states('sensor.sn_xxx_input_power') | float }}
{% else %}
0
{% endif %}
unit_of_measurement: "W"
device_class: "power"
- name: "WeHeat Power Legionella"
state: >-
{% if states('sensor.sn_xxx') == 'legionella_prevention' %}
{{ states('sensor.sn_xxx_input_power') | float }}
{% else %}
0
{% endif %}
unit_of_measurement: "W"
device_class: "power"
- name: "WeHeat Power Defrost"
state: >-
{% if states('sensor.sn_xxx') == 'defrosting' %}
{{ states('sensor.sn_xxx_input_power') | float }}
{% else %}
0
{% endif %}
unit_of_measurement: "W"
device_class: "power"
- name: "Water Temperatuur Opgenomen"
unit_of_measurement: "°C"
device_class: temperature
state: >
{% set inlet = states('sensor.sn_xxx_water_inlet_temperature') | float(0) %}
{% set outlet = states('sensor.sn_xxx_water_outlet_temperature') | float(0) %}
{{ (inlet - outlet) | round(1) }}Dit zou alle missende velden aan moeten maken voor het dashboard wat we hier onder toevoegen.
Velden vervangen
In de onderstaande view staat een aantal keer "sn_xxx", dat is de identifier van mijn WeHeat systeem, en die is zeer waarschijnlijk anders bij die van jou. Je vind deze informatie door te kijken in Home Assistant in Settings -> Devices & Services -> WeHeat en klik hier op de puntjes:

En kies daar voor "55 Entities" dit aantal kan over tijd varieren, maar dit brengt je naar het overzicht met alle entity id's als je hier zoekt kan je de passende waarde vinden die je moet gebruiken in plaats van mijn serienummer.
De view
Hier onder vind je dan de totale code voor de view. Als je de stappen uit dit bericht (inclusief de HACS toevoeging voor de diagrammen) goed gevolgd hebt zou je met het onderstaande voorbeeld een goede versie van dit dashboard voor jezelf moeten kunnen maken.
type: masonry
title: Warmtepomp
path: warmtepomp
icon: mdi:heat-pump-outline
theme: Backend-selected
background:
opacity: 100
alignment: center
size: cover
repeat: no-repeat
attachment: scroll
badges:
- type: entity
entity: sensor.sn_xxx
name: Status
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_outside_temperature
name: Buiten
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_input_power
name: Opgenomen
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_output_power
name: Afgegeven
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_cop
name: COP
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_current_room_temperature
name: Kamer
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_dhw_top_temperature
name: Vat top
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_dhw_bottom_temperature
name: Vat bottom
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.sn_xxx_central_heating_inlet_temperature
show_name: true
show_state: true
show_icon: true
- type: entity
entity: sensor.water_temperatuur_opgenomen
show_name: true
show_state: true
show_icon: true
cards:
- type: vertical-stack
title: Actueel
cards:
- type: custom:statistics-graph-chart-card
card_header: Vermogen & rendement
card_icon: mdi:heat-pump-outline
chart_mode: gauge
hours_to_show: 1
points_per_hour: 60
gauge_columns: 3
gauge_value_position: below
state_layout: horizontal
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_input_power
statistic_id: null
name: Opgenomen
color: '#ff4757'
lower_bound: '0'
upper_bound: '2500'
aggregate_func: last
decimals: 0
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
direction: vertical
transition: hard
values:
- value: 0
color: '#00cec9'
- value: 1000
color: '#f1c40f'
- value: 1800
color: '#e67e22'
- value: 2500
color: '#ff4757'
- entity: sensor.sn_xxx_output_power
statistic_id: null
name: Afgegeven
color: '#378ADD'
lower_bound: '0'
upper_bound: '6000'
aggregate_func: last
decimals: 0
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
direction: vertical
transition: hard
values:
- value: 0
color: '#378ADD'
- value: 2000
color: '#2ecc71'
- value: 6000
color: '#27ae60'
- entity: sensor.sn_xxx_cop
statistic_id: null
name: COP
color: '#2ecc71'
lower_bound: '0'
upper_bound: '7'
aggregate_func: last
decimals: 1
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
direction: vertical
transition: hard
values:
- value: 0
color: '#ff4757'
- value: 2.5
color: '#ff9800'
- value: 3.5
color: '#cddc39'
- value: 4.5
color: '#4caf50'
annotations: []
- type: history-graph
title: Bedrijfsstatus
hours_to_show: 24
entities:
- entity: sensor.sn_xxx
name: Status
- entity: switch.vloerverwarmingpomp
name: Vloerverwarmingpomp
- entity: binary_sensor.sn_xxx_indoor_unit_water_pump
name: Waterpomp
- entity: binary_sensor.weheat_indoor_unit_dhw_valve_or_water_pump
name: Boiler klep/pomp
- entity: binary_sensor.sn_xxx_indoor_unit_auxiliary_water_pump
name: Hulppomp
- entity: binary_sensor.sn_xxx_indoor_unit_electric_heater
name: Elektrisch element
- type: vertical-stack
title: Vermogen
cards:
- type: custom:statistics-graph-chart-card
card_header: Opgenomen vs afgegeven
show_legend: true
show_interval_picker: true
interval_options:
- 8H
- 12H
- 24H
- 3D
- 7D
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_input_power
statistic_id: null
name: Opgenomen (elektrisch)
color: '#ff4757'
line_width: 1
decimals: 0
show_in_legend: true
legend_stats:
- min
- avg
- max
- live
- entity: sensor.sn_xxx_output_power
statistic_id: null
name: Afgegeven (warmte)
color: '#378ADD'
line_width: 1
decimals: 0
show_in_legend: true
legend_stats:
- min
- avg
- max
- live
annotations: []
- type: custom:statistics-graph-chart-card
card_header: Vermogen per modus
show_legend: true
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.weheat_power_cv
statistic_id: null
name: CV
color: '#ff4757'
line_width: 1
show_in_legend: true
- entity: sensor.weheat_power_dhw
statistic_id: null
name: Warm water
color: '#378ADD'
line_width: 1
show_in_legend: true
- entity: sensor.weheat_power_defrost
statistic_id: null
name: Ontdooien
color: '#00cec9'
line_width: 1
show_in_legend: true
- entity: sensor.weheat_power_legionella
statistic_id: null
name: Legionella
color: '#f39c12'
line_width: 1
show_in_legend: true
annotations: []
- type: custom:statistics-graph-chart-card
card_header: COP
show_legend: true
show_interval_picker: true
interval_options:
- 24H
- 3D
- 7D
- 14D
points_per_hour: 6
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_cop
statistic_id: null
name: COP
color: '#2ecc71'
line_width: 1
decimals: 1
show_in_legend: true
legend_stats:
- min
- avg
- max
- live
annotations: []
- type: vertical-stack
title: Verwarming
visibility:
- condition: state
entity: climate.thermostaat
state: heat
cards:
- type: custom:statistics-graph-chart-card
card_header: Ruimtetemperatuur
card_icon: mdi:home-thermometer
show_legend: true
points_per_hour: 6
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_room_temperature_setpoint
statistic_id: null
name: Thermostaat
color: '#ff4757'
line_width: 1
show_in_legend: true
legend_stats:
- live
- entity: sensor.sn_xxx_current_room_temperature
statistic_id: null
name: Kamer
color: '#378ADD'
line_width: 1
show_in_legend: true
legend_stats:
- min
- max
- live
- entity: sensor.sn_xxx_outside_temperature
statistic_id: null
name: Buiten
color: '#95a5a6'
line_width: 1
show_in_legend: true
legend_stats:
- min
- max
- live
annotations: []
- type: custom:statistics-graph-chart-card
card_header: Watertemperaturen
card_icon: mdi:radiator
show_legend: true
show_interval_picker: true
interval_options:
- 8H
- 12H
- 24H
- 3D
- 7D
- 14D
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_water_outlet_temperature
statistic_id: null
name: Aanvoer (outlet)
color: '#ff4757'
line_width: 1
show_in_legend: true
legend_stats:
- min
- max
- live
- entity: sensor.sn_xxx_water_inlet_temperature
statistic_id: null
name: Retour (inlet)
color: '#378ADD'
line_width: 1
show_in_legend: true
legend_stats:
- min
- max
- live
- entity: sensor.sn_xxx_water_target_temperature
statistic_id: null
name: Doel
color: '#2ecc71'
line_width: 1.5
show_in_legend: true
legend_stats:
- live
- entity: sensor.sn_xxx_central_heating_inlet_temperature
statistic_id: null
name: CV inlet
color: '#f39c12'
line_width: 1
show_in_legend: true
legend_stats:
- live
annotations: []
- type: custom:statistics-graph-chart-card
card_header: Debiet CV-pomp
card_icon: mdi:pump
show_legend: true
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.weheat_central_heating_pump_flow
statistic_id: null
name: CV-pomp
color: '#378ADD'
line_width: 1
show_in_legend: true
legend_stats:
- min
- avg
- max
- live
annotations: []
- type: vertical-stack
title: Warm water
cards:
- type: custom:statistics-graph-chart-card
card_header: Boilervat
card_icon: mdi:water-boiler
chart_mode: gauge
hours_to_show: 1
points_per_hour: 60
gauge_columns: 3
gauge_value_position: below
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_dhw_top_temperature
statistic_id: null
name: Bovenin
color: '#ff4757'
lower_bound: '10'
upper_bound: '65'
aggregate_func: last
decimals: 1
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
values:
- value: 10
color: '#378ADD'
- value: 35
color: '#ffc107'
- value: 45
color: '#ff9800'
- value: 55
color: '#f44336'
- entity: sensor.sn_xxx_dhw_bottom_temperature
statistic_id: null
name: Onderin
color: '#378ADD'
lower_bound: '10'
upper_bound: '65'
aggregate_func: last
decimals: 1
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
values:
- value: 10
color: '#378ADD'
- value: 35
color: '#ffc107'
- value: 45
color: '#ff9800'
- value: 55
color: '#f44336'
- entity: sensor.wasruimte_weheat_dhw_target_temperature
statistic_id: null
name: Doel
color: '#2ecc71'
lower_bound: '10'
upper_bound: '65'
aggregate_func: last
decimals: 0
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
values:
- value: 10
color: '#378ADD'
- value: 35
color: '#ffc107'
- value: 45
color: '#ff9800'
- value: 55
color: '#f44336'
annotations: []
- type: custom:statistics-graph-chart-card
card_header: Temperatuur vat
show_legend: true
show_interval_picker: true
interval_options:
- 12H
- 24H
- 3D
- 7D
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_dhw_top_temperature
statistic_id: null
name: Bovenin
color: '#ff4757'
line_width: 1
show_in_legend: true
legend_stats:
- min
- max
- live
- entity: sensor.sn_xxx_dhw_bottom_temperature
statistic_id: null
name: Onderin
color: '#378ADD'
line_width: 1
show_in_legend: true
legend_stats:
- min
- max
- live
- entity: sensor.wasruimte_weheat_dhw_target_temperature
statistic_id: null
name: Doel
color: '#2ecc71'
line_width: 1.5
show_in_legend: true
annotations: []
- type: custom:statistics-graph-chart-card
card_header: Debiet boilerpomp
card_icon: mdi:pump
show_legend: true
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_dhw_pump_flow
statistic_id: null
name: Boilerpomp
color: '#f39c12'
line_width: 1
show_in_legend: true
legend_stats:
- max
- live
annotations: []
- type: vertical-stack
title: Compressor
cards:
- type: custom:statistics-graph-chart-card
card_header: Compressor
card_icon: mdi:heat-pump-outline
chart_mode: gauge
hours_to_show: 1
points_per_hour: 60
gauge_columns: 3
gauge_value_position: below
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_compressor_usage
statistic_id: null
name: Belasting
color: '#ff4757'
lower_bound: '0'
upper_bound: '100'
aggregate_func: last
decimals: 0
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
values:
- value: 0
color: '#4caf50'
- value: 50
color: '#ffc107'
- value: 80
color: '#ff9800'
- value: 95
color: '#f44336'
- entity: sensor.sn_xxx_compressor_speed
statistic_id: null
name: Toerental
color: '#378ADD'
lower_bound: '0'
upper_bound: '5400'
aggregate_func: last
decimals: 0
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
values:
- value: 0
color: '#4caf50'
- value: 2700
color: '#ffc107'
- value: 4300
color: '#ff9800'
- value: 5100
color: '#f44336'
- entity: sensor.sn_xxx_outside_temperature
statistic_id: null
name: Buiten
color: '#95a5a6'
lower_bound: '-15'
upper_bound: '35'
aggregate_func: last
decimals: 1
align_state: bottom-center
name_position: below
state_adaptive_color: true
gradient: false
color_thresholds:
enabled: true
values:
- value: -15
color: '#0984e3'
- value: 0
color: '#00cec9'
- value: 15
color: '#4caf50'
- value: 25
color: '#ff9800'
annotations: []
- type: custom:statistics-graph-chart-card
card_header: Compressorbelasting
show_legend: true
show_interval_picker: true
interval_options:
- 8H
- 12H
- 24H
- 3D
- 7D
points_per_hour: 12
tooltip_match_axis: false
tooltip_order: default
height: auto
x_grid_style: dashed
y_grid_style: dashed
entities:
- entity: sensor.sn_xxx_compressor_usage
statistic_id: null
name: Belasting (%)
color: '#ff4757'
line_width: 1
show_in_legend: true
legend_stats:
- avg
- max
- live
annotations: []
- type: vertical-stack
title: Energie
cards:
- type: statistics-graph
title: Stroomverbruik per dag
period: day
chart_type: bar
days_to_show: 7
stat_types:
- change
entities:
- entity: sensor.weheat_electricity_used_heating
name: Verwarming
- entity: sensor.weheat_electricity_used_dhw
name: Warm water
- entity: sensor.weheat_electricity_used_defrost
name: Ontdooien
- entity: sensor.weheat_electricity_used_cooling
name: Koeling
- entity: sensor.weheat_electricity_used_standby
name: Stand-by
- entity: sensor.wasruimte_weheat_electricity_used_indoor_unit
name: Binnenunit
- type: statistics-graph
title: Warmte-opbrengst per dag
period: day
chart_type: bar
days_to_show: 7
stat_types:
- change
entities:
- entity: sensor.weheat_energy_output_heating
name: Verwarming
- entity: sensor.weheat_energy_output_dhw
name: Warm water
- entity: sensor.weheat_energy_output_defrost
name: Ontdooien
- entity: sensor.weheat_energy_output_cooling
name: Koeling
- type: statistics-graph
title: Verbruik vs opbrengst (totaal)
period: day
chart_type: line
days_to_show: 14
stat_types:
- change
entities:
- entity: sensor.weheat_electricity_used
name: Stroomverbruik
- entity: sensor.weheat_total_energy_output
name: Warmte-opbrengst
- type: vertical-stack
title: Koeling
cards:
- type: tile
entity: sensor.wasruimte_weheat_cooling_state
name: Koelstatus
- type: tile
entity: sensor.wasruimte_weheat_cooling_conditions_met
name: Voorwaarden voldaan
- type: tile
entity: sensor.wasruimte_weheat_cooling_blocked_by
name: Geblokkeerd door
- type: tile
entity: sensor.wasruimte_weheat_last_cooling
name: Laatst gekoeld
- type: tile
entity: sensor.wasruimte_weheat_air_outlet_temperature
name: Luchtuitlaat temperatuur
visibility:
- condition: state
entity_id: sensor.wasruimte_weheat_cooling_state
state:
- active
for:
hours: 0
minutes: 1
seconds: 0Mocht je eventueel nog vragen hebben kan je deze altijd stellen in de comments, dan kijk ik of ik je verder kan helpen.




Reacties