Helfer für Mittelwert von Temperaturen

Moin zusammen,

ich habe einen Außentemperatursensor, der für mehrere Automationen als Referenzwert gilt. Dieser ist heute Nacht aufgefallen und damit auch die Heizungsregelung. Es war ganz schön frisch heute morgen.

Nun habe ich mir überlegt, dass ich mehrere Sensoren für Außentemperaturen nehme und aus denen einen Mittelwert bilde. Wenn dann einer ausfällt habe ich immer noch einen Wert für die Regelungen.

So weit zur Theorie, aber ich habe aktuell keine Idee, wie ich diesen Helfer erstellen soll?

Kann mir jemand bitte auf die Sprünge helfen?

Vielen Dank!

nimm einen Kombinationssensor, dort kannst du sogar verschiedene Mittelwerte wählen, z.B.

2 „Gefällt mir“

Was passiert wenn einer dieser Entitäten nicht mehr erreichbar ist?

Deine Vorbehalte gegenüber dem Kombinationssensor können hier entschärft werden - die Doku sagt klar:

If the source sensor provides an unknown state, it will be ignored in the calculation except for sum where it will set the state to unknown.

2 „Gefällt mir“

Danke!!

Ich habe nun diesen Helfer angelegt

Kann ihn aber nicht zuordnen

WAs mache ich falsch?

Es ist nicht auszuschließen, dass mal Zigbee, WLAN oder Bluetooth ausfällt.
Dadurch würden auch mehrere installierte Sensoren ausfallen.

Um dem zu begegnen, könnte man evtl. einen Wetter-Dienst-Sensor wie zB. „sensor.swis_punkt_dwd_temperatur“ in den Kombinationssensor einbauen.
Der liegt dann evtl. wenige Zentel Grad daneben, was aber für die Außentemperaturführung einer Heizung nicht schlimm ist.

Bei mir würden die Thermostate auch bei Ausfall eines der o.g. Netze weiter funktionieren, da Homematic ein eigenes Funknetz hat.

Habe es mal getestet - scheint zu funktionieren:


Da ich bereits mal einen Ausfall meines Aussentemperatur-Sensor hatte und dadurch Better Thermostat „ausgestiegen“ ist, werde ich das jetzt so produktiv einsetzen - Danke für die Inspiration. :folded_hands:

Das ist klar, aber dann habe ich auch ganz andere Probleme.

Der Wetterdienst ist mir zu ungenau.

Ich habe zum Beispiel eine kleine Spielerei für den Sommer, wo er mit mitteilt, wenn die Außentemperatur höher als die Schlafzimmertemperatur ist, dass ich das Fenster besser schließen sollte.

Ich habe mal den Entwickler vom Blueprint angeschrieben, wo das Problem sein könnte.

Aus sportlichem Ehrgeiz habe ich einen Kombinationssensor für die Außentemperatur erstellt, der zwei Quellen nutzt: einen physischen DS18B20-Sensor sowie die Daten des DWD-Wetterdienstes.

Dieses Szenario habe ich mit Grafana aufgezeichnet und das Ergebnis ist überraschend gut. Über einen Zeitraum von zwei Tagen betrachtet, liegt die maximale Abweichung zwischen dem DS18B20 und dem DWD-Sensor bei ca. 1 °C.

Aufgrund dieser positiven Werte habe ich den Kombinationssensor nun in Better Thermostat eingebunden. Dadurch profitiere ich von einer hohen Redundanz, sollte entweder der eigene Außensensor oder der DWD-Dienst ausfallen. Dass beide Quellen gleichzeitig versagen, halte ich für relativ unwahrscheinlich.

Dazu folgende Aussage:

Die Grenze der Vernachläßigbarkeit

Man kann eine Abweichung von bis zu 2 °C bis 3 °C als weitgehend vernachlässigbar ansehen.
Hier ist die Begründung, warum dieser Bereich noch tolerierbar ist:

  • Hysterese der Hardware: Die meisten smarten Heizkörperthermostate (TRVs) haben eine mechanische oder softwareseitige Ungenauigkeit von etwa $\pm 0,5$ °C bis $1,0$ °C. Ein kleiner Fehler in der Außentemperatur geht in dieser Grundtoleranz oft unter.
  • Trägheit des Systems: Wassergeführte Heizungen sind extrem träge. Eine falsche Außentemperatur von 2 °C ändert die berechnete Vorlauftemperatur (falls über BT gesteuert) nur minimal, was durch den Raumsensor (Internal Sensor) in BT sofort wieder eingefangen wird.
  • Der „Internal Sensor“ dominiert: Better Thermostat priorisiert immer die Differenz zwischen dem Raumsensor und dem Sollwert. Die Außentemperatur dient primär als Predictor (Vorhersagefaktor). Solange der Raumsensor präzise ist, korrigiert BT das Ventil so lange, bis die Zieltemperatur erreicht ist – egal, ob es draußen laut Sensor 4 °C oder 7 °C sind.

Ab wann wird es kritisch?

Ab einer Abweichung von mehr als 5 °C treten spürbare Effekte auf:

  1. Overshooting: Wenn der Sensor -5 °C anzeigt, es aber eigentlich 0 °C sind, denkt BT, der Raum würde viel schneller auskühlen. Das Ventil öffnet zu weit, und die Zieltemperatur wird wahrscheinlich überschritten.
  2. Träges Aufheizen: Zeigt der Sensor 10 °C an, obwohl es 5 °C sind, drosselt BT die Heizleistung zu früh, und der Raum braucht deutlich länger, um warm zu werden.

Vergleich der Fehlergrößen

Abweichung Einstufung Auswirkung auf den Komfort
< 1 °C Ignorierbar Keine messbare Auswirkung.
1 °C - 3 °C Vernachlässigbar System regelt sich über den Raumsensor ein; kaum Effizienzverlust.
3 °C - 5 °C Tolerabel Erste leichte Schwankungen in der Zieltemperatur möglich.
> 5 °C Korrekturbedarf BT arbeitet ineffizient; Gefahr von Schwingungen (Auf/Zu).

EDIT:

Ganz so eionfach war es dann doch nicht.
BT hat den Kombinationssensor nicht akzeptiert.
BT ist sehr wählerisch. Wenn der Sensor nur eine Zahl liefert, aber nicht explizit sagt „Ich bin vom Typ Temperatur“, wird er in der Liste ausgeblendet.
Es musste ein Template-Sensor erstellt werden:

{% set sensor1 = states('sensor.aussenthermometer_aussentemperatur') | float(none) %}
{% set sensor2 = states('sensor.swis_punkt_dwd_temperatur') | float(none) %}

{% if sensor1 is not none and sensor2 is not none %}
  {{ ((sensor1 + sensor2) / 2) | round(2) }}
{% elif sensor1 is not none %}
  {{ sensor1 }}
{% elif sensor2 is not none %}
  {{ sensor2 }}
{% else %}
  unavailable
{% endif %}

Dieser kann dann in BT eingebaut werden:

Kaum macht man es richtig - schon funktioniert es! :slight_smile:

5 „Gefällt mir“

Danke für den EDIT!

Das war bei mir dann sicher auch das Problem!

ein bisschen off-topic, doch mich interessiert, wieso ein Temperatursensor vom Wetterdienst oder einem dafür gebauten Gerät keine Einheit liefert. :wink:

1 „Gefällt mir“

Gute Frage.

Die Einheit °C hat er ja.

Ich glaube, was ihm für BT fehlt ist :

        device_class: temperature
        state_class: measurement

Aber damit ist deine Frage leider auch nicht beantwortet.

1 „Gefällt mir“