Hi all,
yesterday I setup my Modbus-Interface for accessing my Fröling SP Dual (furnance system).
Since it is interesing for me to dig into the data later on, I decided to add an InfluxDB also.
Only problem is, that the tempature data is changing nit that often, but I want 5mins data in the Influx, so I decided to add some template sensors, that will update every 5min and just forward them to InfluxDB.
But that was not working. I did some debugging and decided to just add on test-template-sensor (Test Zähler) that shoul update every minute and count up.
But it seems that the trigger is not working. Last update timestamp is not changing.
What am I doing wrong?
I have several sensors in my template.yaml, only the test-sensor should be triggered . The other ones should work outside the trigger.
The template.yaml is included in the configuration.yaml the right way. All the other template sensors are working fine.
Here is my template.yaml
# template.yaml
- trigger:
- trigger: time_pattern
minutes: "/1"
sensor:
- name: "Test Zähler"
unique_id: test_zaehler
state: >
{% set last = states('sensor.test_zaehler') | int(0) %}
{{ last + 1 }}
unit_of_measurement: "count"
- sensor:
- name: "Regenanzeige"
unique_id: sensor_regenanzeige
state: >
{% set regen_an = is_state('input_boolean.regenreaktion', 'on') %}
{% set menge = states('input_number.niederschlagsmenge') | float(0) %}
{{ 'Regen an' if regen_an else 'Regen aus' }} – {{ menge }} mm
- name: "Geosphere forecast list"
unique_id: 465e8edd-9b79-4495-81fa-92236818f8e2
state: OK
attributes:
list: >
{% set timestamps = state_attr('sensor.geosphere_forecast','timestamps') %}
{% set data = state_attr('sensor.geosphere_forecast','features')[0]['properties']['parameters']['rr']['data'] %}
{% set ns = namespace(out=[]) %}
{% for t, d in zip(timestamps, data) %}
{% set ns.out = ns.out + [{t: d}] %}
{% endfor %}
{{ ns.out }}
- name: "Froeling Anlagenzustand"
unique_id: "froeling_anlagenzustand"
state: >
{% set mapper = {
'0' : 'Dauerlast',
'1' : 'Brauchwasser',
'2' : 'Automatik',
'3' : 'Scheitholzbetrieb',
'4' : 'Reinigen',
'5' : 'Ausgeschaltet',
'6' : 'Extraheizen',
'7' : 'Kaminkehrer',
'8' : 'Reinigen' } %}
{% set state = states.sensor.froeling_anlagenzustand_enum.state %}
{{ mapper[state] if state in mapper else 'Unknown' }}
icon: >
{% if this.state == 'Automatik' %}
mdi:refresh-auto
{% elif this.state == 'Brauchwasser' %}
mdi:water-pump
{% elif this.state == 'Dauerlast' %}
mdi:hours-24
{% else %}
mdi:alert-circle
{% endif %}
- name: "Froeling Ziel Solarladung"
unique_id: "froeling_ziel_solarladung"
state: >
{% set mapper = {
0: 'keine Solarladung',
1: 'Puffer',
2: 'Boiler'
} %}
{% set state = states('sensor.froeling_ziel_solarladung_enum') | int %}
{{ mapper[state] if state in mapper else 'Unbekannt' }}
icon: >
{% if this.state == 'Puffer' %}
mdi:water-boiler
{% elif this.state == 'Boiler' %}
mdi:water-pump
{% else %}
mdi:solar-power
{% endif %}
- name: "Froeling Kesselzustand"
unique_id: "froeling_kesselzustand"
state: >
{% set mapper = {
'0' : 'STÖRUNG',
'1' : 'Kessel Aus',
'2' : 'Anheizen',
'3' : 'Heizen',
'4' : 'Feuererhaltung',
'5' : 'Feuer Aus',
'6' : 'Tür offen',
'7' : 'Vorbereitung',
'8' : 'Vorwärmen',
'9' : 'Zünden',
'10' : 'Abstellen Warten',
'11' : 'Abstellen Warten1',
'12' : 'Abstellen Einschub1',
'13' : 'Abstellen Warten2',
'14' : 'Abstellen Einschub2',
'15' : 'Abreinigen',
'16' : '2h warten',
'17' : 'Saugen / Heizen',
'18' : 'Fehlzündung',
'19' : 'Betriebsbereit',
'20' : 'Rost schließen',
'21' : 'Stoker leeren',
'22' : 'Vorheizen',
'23' : 'Saugen',
'24' : 'RSE schließen',
'25' : 'RSE öffnen',
'26' : 'Rost kippen',
'27' : 'Vorwärmen-Zünden',
'28' : 'Resteinschub',
'29' : 'Stoker auffüllen',
'30' : 'Lambdasonde aufheizen',
'31' : 'Gebläsenachlauf I',
'32' : 'Gebläsenachlauf II',
'33' : 'Abgestellt',
'34' : 'Nachzünden',
'35' : 'Zünden Warten',
'36' : 'FB: RSE schließen',
'37' : 'FB: Kessel belüften',
'38' : 'FB: Zünden',
'39' : 'FB: min. Einschub',
'40' : 'RSE schließen',
'41' : 'STÖRUNG: STB/NA',
'42' : 'STÖRUNG: Kipprost',
'43' : 'STÖRUNG: FR-Überdr.',
'44' : 'STÖRUNG: Türkont.',
'45' : 'STÖRUNG: Saugzug',
'46' : 'STÖRUNG: Umfeld',
'47' : 'FEHLER: STB/NA',
'48' : 'FEHLER: Kipprost',
'49' : 'FEHLER: FR-Überdr.',
'50' : 'FEHLER: Türkont.',
'51' : 'FEHLER: Saugzug',
'52' : 'FEHLER: Umfeld',
'53' : 'FEHLER: Stoker',
'54' : 'STÖRUNG: Stoker',
'55' : 'FB: Stoker leeren',
'56' : 'Vorbelüften',
'57' : 'STÖRUNG: Hackgut',
'58' : 'FEHLER: Hackgut',
'59' : 'NB: Tür offen',
'60' : 'NB: Anheizen',
'61' : 'NB: Heizen',
'62' : 'FEHLER: STB/NA',
'63' : 'FEHLER: Allgemein',
'64' : 'NB: Feuer Aus',
'65' : 'Selbsttest aktiv',
'66' : 'Fehlerbeh. 20min',
'67' : 'FEHLER: Fallschacht',
'68' : 'STÖRUNG: Fallschacht',
'69' : 'Reinigen möglich',
'70' : 'Heizen - Reinigen',
'71' : 'SH Anheizen',
'72' : 'SH Heizen',
'73' : 'SH Heiz/Abstell',
'74' : 'STÖRUNG sicher',
'75' : 'AGR Nachlauf',
'76' : 'AGR reinigen',
'77' : 'Zündung AUS',
'78' : 'Filter reinigen',
'79' : 'Anheizassistent',
'80' : 'SH Zünden',
'81' : 'SH Störung',
'82' : 'Sensorcheck'
} %}
{% set state = states.sensor.froeling_kesselzustand_enum.state %}
{{ mapper[state] if state in mapper else 'Unbekannt' }}
icon: >
{% if this.state in ['Betriebsbereit', '2h warten', 'Kessel Aus', 'Feuer Aus', 'Abgestellt'] %}
mdi:sleep
{% elif this.state in ['Zünden', 'Vorwärmen', 'Vorheizen', 'Anheizen', 'NB: Anheizen', 'SH Anheizen', 'Vorwärmen-Zünden'] %}
mdi:fire
{% elif this.state in ['Heizen', 'NB: Heizen', 'SH Heizen', 'Heizen - Reinigen'] %}
mdi:fire
{% elif this.state in ['Vorbereitung', 'Nachzünden', 'Anheizassistent', 'SH Zünden'] %}
mdi:fire
{% elif this.state in ['Abstellen Warten', 'Abstellen Warten1', 'Abstellen Warten2', 'Abstellen Einschub1', 'Abstellen Einschub2', 'NB: Feuer Aus'] %}
mdi:sleep
{% elif 'STÖRUNG' in this.state or 'FEHLER' in this.state %}
mdi:alert-circle
{% elif 'NB:' in this.state %}
mdi:alert
{% else %}
mdi:alert-circle
{% endif %}
- name: "Froeling HK1 Heizmodus"
unique_id: "froeling_hk1_heizmodus"
state: >
{% set mapper = {
'0' : 'Aus',
'1' : 'Automatik',
'2' : 'Extraheizen',
'3' : 'Absenken',
'4' : 'Dauerabsenken',
'5' : 'Partybetrieb' } %}
{% set state = states.sensor.froeling_hk1_heizmodus_enum.state %}
{{ mapper[state] if state in mapper else 'Unknown' }}
icon: >
{% if this.state == 'Aus' %}
mdi:power
{% elif this.state == 'Automatik' %}
mdi:clock
{% elif this.state == 'Extraheizen' %}
mdi:sun-clock
{% elif this.state == 'Absenken' %}
mdi:moon-waning-crescent
{% elif this.state == 'Dauerabsenken' %}
mdi:thermometer-minus
{% elif this.state == 'Partybetrieb' %}
mdi:white-balance-sunny
{% else %}
mdi:alert-circle
{% endif %}
- name: "Froeling HK2 Heizmodus"
unique_id: "froeling_hk2_heizmodus"
state: >
{% set mapper = {
'0' : 'Aus',
'1' : 'Automatik',
'2' : 'Extraheizen',
'3' : 'Absenken',
'4' : 'Dauerabsenken',
'5' : 'Partybetrieb' } %}
{% set state = states.sensor.froeling_hk2_heizmodus_enum.state %}
{{ mapper[state] if state in mapper else 'Unknown' }}
icon: >
{% if this.state == 'Aus' %}
mdi:power
{% elif this.state == 'Automatik' %}
mdi:clock
{% elif this.state == 'Extraheizen' %}
mdi:sun-clock
{% elif this.state == 'Absenken' %}
mdi:moon-waning-crescent
{% elif this.state == 'Dauerabsenken' %}
mdi:thermometer-minus
{% elif this.state == 'Partybetrieb' %}
mdi:white-balance-sunny
{% else %}
mdi:alert-circle
{% endif %}
- name: "Froeling Pelletslager Gesamtinhalt"
unique_id: froeling_pelletslager_gesamtinhalt
unit_of_measurement: "t"
device_class: weight
state_class: measurement
state: >
{% set verbrauch_t = states('sensor.froeling_pellets_verbrauch_tonne') | float(0) %}
{% set verbrauch_kg = states('sensor.froeling_pellets_verbrauch_kg') | float(0) %}
{% set rest = states('sensor.froeling_pellets_lager_restmenge') | float(0) %}
{{ (verbrauch_t + (verbrauch_kg / 1000) + rest) | round(2) }}
icon: mdi:scale-balance
- name: "Froeling Pelletslager Füllgrad"
unique_id: froeling_pelletslager_fuellgrad
unit_of_measurement: "%"
device_class: battery
state_class: measurement
state: >
{% set verbrauch_t = states('sensor.froeling_pellets_verbrauch_tonne') | float(0) %}
{% set verbrauch_kg = states('sensor.froeling_pellets_verbrauch_kg') | float(0) %}
{% set rest = states('sensor.froeling_pellets_lager_restmenge') | float(0) %}
{% set gesamt = verbrauch_t + (verbrauch_kg / 1000) + rest %}
{% if gesamt > 0 %}
{{ (rest / gesamt * 100) | round(1) }}
{% else %}
0
{% endif %}
icon: >
{% set fuell = states('sensor.froeling_pelletslager_fuellgrad') | float(0) %}
{% if fuell > 70 %}
mdi:silo
{% elif fuell > 30 %}
mdi:silo-outline
{% else %}
mdi:silo-alert
{% endif %}