Hallo,
ich möchte mir einen Sensor bauen, der mir die Pool-Temperatur abhängig davon ob die Poolpumpe an ist schreibt. Die Temperatur wird in einem Rohr gemessen und ist nur korrekt, wenn die Pumpe läuft.
Wie würdet Ihr am Besten vorgehen?
Martin
Hallo,
ich möchte mir einen Sensor bauen, der mir die Pool-Temperatur abhängig davon ob die Poolpumpe an ist schreibt. Die Temperatur wird in einem Rohr gemessen und ist nur korrekt, wenn die Pumpe läuft.
Wie würdet Ihr am Besten vorgehen?
Martin
Ein Template Sensor als Helfer. Wenn Switch Pool Pumpe = “on”
Dann die Temperatur von Temp Sensor, sonst Temp = 0
{{ iif(is_state('switch.xyz', 'on'), states('sensor.temeperatur_xyz') | default(0), 0) }}
Gruß
Osorkon
Sehr gut, vielen Dank. Könnte man auch statt “0” bei Pumpe aus, den letzten Wert vom Temperatur Sensor “speichern”, sprich der Wert wird dann eingefroren bis die Pumpe wieder läuft?
Das geht natürlich auch.
Dazu braucht es aber einen weiteren Helfer.
Einen Trigger based Template Sensor. Der beim Ausschalten der Pumpe den Temperaturwert speichert.
Bsp. Trigger Based Template Sensor:
#configuration.yaml
template:
- trigger:
- platform: state
entity_id: switch.xyz
from: "on"
to: "off"
sensor:
name: Gespeicherte Temperatur
state: |
{{ states('sensor.temeperatur_xyz') | float(0)}}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
unique_id: 341ef3cc-df9c-4c0a-b4ec-2af0a053e6fb
Das Template für den Temperatur Sensor würde dann so ausschauen:
{{ iif(is_state('switch.xyz', 'on'), states('sensor.temeperatur_xyz') | float(0), states('sensor.gespeicherte_temperatur') | float(0)) }}
Gruß
Osorkon
Sehr geil, funktioniert ![]()
Hallo, ich hänge mich mal hier ran. Ich habe genau das gleiche “Problem”.
Ich habe jetzt erst mal nur den template Sensor erstellt und das funktioniert.
Das mit dem letzten Wert speichern habe ich nur insoweit begriffen, da ich nicht weiß welche unique_id gemeint ist.
Und; ist es möglich zusätzlich zur Speicherung bei Schalter0 die neue Aktualisierung bei “Pumpe an” erst nach 5 Minuten zu beginnen? Dann nämlich ist bei uns erst die Temperatur im Rohr = der Pooltemperatur.
Das ist mein template sensor:
{{ iif(is_state('switch.poolfilterpumpe', 'on'), states('sensor.pooltemperatur_temperature') | default(0), 0) }}
Danke!
by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Ist die Vorlage nicht ausreichend?
In Deinem Fall willst Du erst eine Temperatur angezeigt bekommen wenn die Pool Pumpe 5 min am Stück läuft.
Wenn Sie ausgeschaltet ist, soll 0°C angezeigt werden, richtig?
Da mann bei den Trigger based Template Sensoren keine Bedingungen verwenden kann, musst Du Dir auch mit einem Helfer Sensor behelfen.
In dem Fall Pool Start Temperatur Dieser nimmt den Wert 0 an wenn die Pumpe ausgeschaltet wird und wenn die Pumpe 5 min läuft, nimmt er den Wert von sensor.pooltemperatur_temperature
Der eigentliche Template Sensor für die Pool Temperatur, nimmt nur den Wert vom sensor.pooltemperatur_temperature an, wenn der Sensor Pool Start Temperatur größer 0 ist, also wenn die Pumpe mindestens 5 min läuft, ansonsten 0.
template:
- trigger:
- platform: state
entity_id: switch.poolfilterpumpe
from: "off"
to: "on"
for:
hours: 0
minutes: 5
seconds: 0
id: ein
- platform: state
entity_id: switch.poolfilterpumpe
from: "on"
to: "off"
id: aus
sensor:
name: Pool Start Temperatur
state: |
{% if trigger.id == "ein" %}
{{ states('sensor.pooltemperatur_temperature') | float(0)}}
{% elif trigger.id == "aus" %}
0
{% endif %}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
unique_id: d323043d-fb3e-49fd-8488-03b5b3496f30
- sensor:
- name: Pool Temperatur
state: |
{% if states('sensor.pool_start_temperatur') | float(0) > 0 %}
{{ states('sensor.pooltemperatur_temperature') | float(0) }}
{% else %}
0
{% endif %}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
unique_id: dc12b915-365a-4412-9cb5-f80bf542372a
Gruß
Osorkon
Hallo und Danke,
Wenn Pumpe aus, soll immer der letzte Wert erhalten bleiben (also nicht 0). Nur wenn Pumpe mindestens 5min. läuft soll der Wert aktualisiert werden.
Die Vorlagen sind für mich Gold wert, aber ich kann die einfach nicht umschreiben auf meine Bedürfnisse. Ich glaube, das werde ich nie können ![]()
Wo muss der Code hin? In configuration.yaml ?
Dann eben so:
template:
- trigger:
- platform: state
entity_id: switch.poolfilterpumpe
from: "off"
to: "on"
for:
hours: 0
minutes: 5
seconds: 0
id: ein
- platform: state
entity_id: switch.poolfilterpumpe
from: "on"
to: "off"
id: aus
sensor:
name: Pool Start Temperatur
state: |
{% if trigger.id == "ein" %}
{{ states('sensor.pooltemperatur_temperature') | float(0)}}
{% elif trigger.id == "aus" %}
0
{% endif %}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
unique_id: d323043d-fb3e-49fd-8488-03b5b3496f30
- sensor:
- name: Pool Temperatur
state: |
{% if states('sensor.pool_start_temperatur') | float(0) > 0 %}
{{ states('sensor.pooltemperatur_temperature') | float(0) }}
{% else %}
{{ this.state }}
{% endif %}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
unique_id: dc12b915-365a-4412-9cb5-f80bf542372a
Gruß
Osorkon
Hallo und recht herzlichen Dank!
Es scheint zu funktionieren. Endlich! Ich allein bin einfach zu blöd dafür…
Jetzt folgt für mich der nächste (letzte) Schritt, denn ich möchte die Temperatur auf meiner Homepage darstellen, also da hin senden.
Aber erst mal durchatmen ![]()
Viele dankende Grüße
DeTTeC61