Terrariumsteuerung

Hallo!

Ich bin neu im Thema HA und würde gerne eine Terrariumsteuerung implementieren. Zunächst mal für ein Terrarium, und wenn das funktioniert, für weitere.
Meine Zielstellung ist, dass ich die Temperatur mit einem Thermostat im Terrarium überprüfen und dann die Heizung über eine Steckdose ein- bzw. aus schalte.
Dazu habe ich bereits folgendes gemacht. Ich hab mit dem RaspBee II ein Thermostat eingebunden. Das funktioniert auch und liefert die aktuelle Temperatur im Terrarium (sensor.lumi_lumi_weather_temperatur). :slightly_smiling_face:

Jetzt wollte ich mit der “Scheduler Card” einen Zeitplan erstellen, wann, welche Temperatur im Terrarium sein soll. Da man Sensoren ohne Schaltung nicht direkt in die “Scheduler Card” einbinden kann, habe ich einen input_number Helfer (input_number.zieltemperatur_mr_t) angelegt, in dem die vorgegebenen Temperatur laut Zeitplan geschrieben wird. Auch das funktioniert. :wink:
Mein Problem ist jetzt, das ich eine Automation brauchen, die anhand der Zieltemperatur UND der aktuellen Temperaturn den Stecker für die Heizung an- oder ausschaltet. Am besten mit einer Toleranz von 2 Grad, damit die Heizung nicht die ganze Zeit ein- und ausgeschaltet wird. D.h. wenn die Zieltemperatur auf 30 Grad eingestellt ist und die aktuelle Temperatur 30 Grad erreicht hat, soll die Heizung aus gehen und erst wieder bei 28 Grad einschalten.

Und bei dieser Automation bin ich (noch) überfordert… :wink:

Viele Grüße,
Alex

Hallo @AlexK_privat ,
wird denn oft am Tage die Temperatur des Terrariums geändert? Wenn es nicht so oft ist, reichen ja vielleicht auch 2-3 Automatisierungen. Dann kann man die Hysterese leicht mit zwei Wenn-Einträgen erreichen.
Aber Du wirst Dir schon was dabei gedacht haben. Ich habe mal eine kleine Automatisierung drangehängt. Hier wird alle 20 Minuten der Status abgefragt und dann reagiert. Mit dieser Zeit kann man evtl. ja auch die Temperaturdifferenz erreichen.
Vielleicht kannst Du darauf aufbauen.

alias: Temperatursteuerung
description: ""
triggers:
  - trigger: time_pattern
    minutes: /20
conditions:
  - condition: template
    value_template: >-
      {{states('sensor.sensor.lumi_lumi_weather_temperatur')|float(0)|round(1) <=
      states('input_number.zieltemperatur_mr_t')|float(0)|round(1) -1.5 }}
actions:
  - if:
      - condition: and
        conditions:
          - condition: template
            value_template: >-
              {{states('sensor.lumi_lumi_weather_temperatur')|float(0)|round(1) <=
              states('input_number.zieltemperatur_mr_t')|float(0)|round(1) }}
    then:
      - action: switch.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: switch.name_steckdose
    else:
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.name_steckdose
mode: single

Da es sich um lebende Tiere handelt, würde ich auf jeden Fall eine weitere Automatisierung einbauen, die bei z.B. 31°C die Steckdose abschaltet. Je nach Steckdose kann man auch den Zustand (in diesem Fall) natürlich “Aus” nach einem Stromausfall oder aber die maximale Laufzeit “Ein” festlegen. Dann schaltet die Steckdose z.B. nach 40 Minuten selbst ab (meine Shelly-Steckdosen können das).
Kannst ja mal probieren und Dich gegebenenfalls melden.
mfg
Rainer

Hallo Rainer!
VIELEN Dank für die sehr umfangreiche Antwort!
Ich schau mir das YAML mal an!
Die Temperatur wir 4 - 5 mal am Tag geändert. Und man muss die Werte ab und zu anpassen. Da ist so ein Zeitplan übersichtlicher, wie ich finde.

Dein Hinweis auf die Sicherheit des Tieres gefällt mir SEHR gut! Das wäre die nächste Frage gewesen, ob es dafür Ideen gibt. :wink:

Viele Grüße,
Alex

So, jetzt hab ich schon eine Frage… man möge es mir verzeihen! :wink:

Warum wird das Statement

{{states(‘sensor.lumi_lumi_weather_temperatur’)|float(0)|round(1) <=
states(‘input_number.zieltemperatur_mr_t’)|float(0)|round(1) }}

2 x verwendet (beim ersten werden noch die 1,5 Grad Toleranz abgezogen)?

Sorry, für meine blöde Frage, aber ich würde den ganzen Spaß gerne verstehen… :wink:

DANKE und Gruß,
Alex

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Da ich vermute, dass die Änderungen jeden Tag gleich sind, könntest du dir auch entsprechende Helfer mit den entsprechenden Werten anlegen, die du dann in den Automationen nutzt.

Hallo @AlexK_privat
die obere wenn-Abfrage priorisiert m.E. in den Automationen. Hier soll die Automation erst ausgelöst werden, wenn die Temperatur unter (30°C minus 1,5 °C) ist. Vorher passiert da gar nichts. Die untere wenn-dann-sonst Automatik legt erst los, wenn die obere wenn-Abfrage “durchgelassen” hat. Die brauchst Du aber für “dann-sonst.” Das ganze ist nur 1 Ansatz. Man kann auch die Intervall-Zeit so einstellen, daß die Heizung in diesem Zeitraum die gewünschte Temperatur erreicht. Es war nur ein Beispiel für die Hysterese.
Ich denke, Du wirst sowieso erstmal mit den Heizzeiten wegen der Trägheit des Temperaturanstiegs experimentieren müssen. Es sei denn, Du setzt einen Lüfter ein (bei Reptilien wohl eher kaum).
Deine Hauptfrage bezog sich ja auf “input_number.”

mfg
Rainer

Ja, das ist richtig, @ttarzan
Aber ich habe mehrere Terrarien und darum hat dann jedes Terrarium einen eigenen Zeitplan mit eigenen unterschiedlichen Temperaturen. So ist das, finde ich, übersichtlicher. :slight_smile:

@rapahl, das habe ich mir jetzt schon fast gedacht… :wink: ich hab das jetzt mal so gelöst:

alias: Heizungssteuerung für Mr. T
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_number.zieltemperatur_mr_t
  - trigger: state
    entity_id:
      - sensor.lumi_lumi_weather_temperatur
conditions:
  - condition: state
    entity_id: input_boolean.hauptschlater_terrarium_mr_t
    state: "on"
actions:
  - if:
      - condition: and
        conditions:
          - condition: template
            value_template: >-
              {{states('sensor.lumi_lumi_weather_temperatur')|float(0)|round(1)
              <= states('input_number.zieltemperatur_mr_t')|float(0)|round(1) -
              2 }}
    then:
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: >-
            Die Zieltemperatur oder die aktuelle Temperatur hat sich geändert.
            Auslöser war "{{ state_attr(trigger.entity_id, 'friendly_name') }}"
            und die neue Temperatur ist {{ states(trigger.entity_id) }}°C. Und
            die Heizung wurde EINGESCHALTET
          title: Temperaturänderung
    else:
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: >-
            Die Zieltemperatur oder die aktuelle Temperatur hat sich geändert.
            Auslöser war "{{ state_attr(trigger.entity_id, 'friendly_name') }}"
            und die neue Temperatur ist {{ states(trigger.entity_id) }}°C. Und
            die Heizung wurde AUSGESCHALTET
          title: Temperaturänderung
mode: single

Sobald sich die Zieltemperatur (input_number.zieltemperatur_mr_t) ODER die aktuelle Temperatur im Terrarium (sensor.lumi_lumi_weather_temperatur) ändert, UND der Hauptschalter für die Heizung (input_boolean.hauptschlater_terrarium_mr_t) auf “on” ist, wird die Heizung an oder aus geschaltet.
(Momentan gebe ich nur eine Meldung aus, weil ich die Steckdose noch nicht habe… :wink: aber da kommt dann eine zusätzliche Action für die Steckdose dazu. )

Hallo Alex,
so kann man es machen. Hoffentlich hält sich die Anzahl der Messages in Grenzen.
mfg
Rainer