Automation: Steckdose in Abhängigkeit der Feuchtigkeit ein-/ausschalten

Hallo zusammen,
ich habe mir erst vor kurzem HA eingerichtet und füge nun nach und nach Neues hinzu. Aktuell hänge ich bei folgendem Problem:
Ich möchte im Badezimmer eine Steckdose über die Feuchtigkeit steuern. An dieser Steckdose soll ein Luftentfeuchter betrieben werden. Ich habe mir eine Testautomation mit einer anderen Steckdose erstellt (die für das Bad kommt erst noch).

  1. Helfer eingerichtet (numerisch):
    “Luftentfeuchter Bad DG” → Entität: input_number.luftentfeuchter_bad_dg
  2. Automation “Feuchtigkeitsregelung Badezimmer DG” erstellt:
alias: Feuchtigkeitsregelung
description: Feuchtigkeitsregelung Badezimmer DG
trigger:
  - platform: template
    value_template: >-
      {{ states('sensor.sensor_bad_humidity') | float  >
      states('input_number.luftentfeuchter_bad_dg')|float +1}}
    id: switchOn
  - platform: template
    value_template: >-
      {{states('sensor.sensor_bad_humidity') | float <
      states('input_number.luftentfeuchter_bad_dg')|float -10}}
    id: switchOff
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: switchOff
        sequence:
          - service: switch.turn_off
            target:
              entity_id: switch.drucker_alt_s_w
            data: {}
      - conditions:
          - condition: trigger
            id: switchOn
        sequence:
          - service: switch.turn_on
            target:
              entity_id: switch.drucker_alt_s_w
            data: {}
    default: []
mode: single

Obwohl die Luftfeuchtigkeit schon über 5% vom Sollwert ist, schaltet die Steckdose nicht ein.

Anmerkung: Die Steckdose ist über die Local Tuya Integrität in HA eingebunden, falls das von Belang sein sollte.

Wer kann mir hier einen Tipp geben?

Vielen Dank für Eure Hilfe.

Hallo,

ich würde den Zustand des Switch mit in die Templates nehmen.

alias: Feuchtigkeitsregelung
description: Feuchtigkeitsregelung Badezimmer DG
trigger:
  - platform: template
    value_template: >-
      {{ states('sensor.sensor_bad_humidity') | float  >
      states('input_number.luftentfeuchter_bad_dg')|float +1 and states('switch.drucker_alt_s_w') == 'off' }}
    id: switchOn
  - platform: template
    value_template: >-
      {{states('sensor.sensor_bad_humidity') | float <
      states('input_number.luftentfeuchter_bad_dg')|float -10 and states('switch.drucker_alt_s_w') == 'on' }}
    id: switchOff
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: switchOff
        sequence:
          - service: switch.turn_off
            target:
              entity_id: switch.drucker_alt_s_w
            data: {}
      - conditions:
          - condition: trigger
            id: switchOn
        sequence:
          - service: switch.turn_on
            target:
              entity_id: switch.drucker_alt_s_w
            data: {}
    default: []
mode: single

Das ist genau das Problem, der Wert hat die Triggergrenze schon überschritten. Der Trigger löst nur in dem Moment aus, wo die Luftfeuchtigkeit von <5 auf >5 steigt.
Die Automation wird also funktionieren, du kannst es nur nicht testen, da der Zustand schon längst überschritten.

Hallo Maxe,

da kann ich jetzt nicht ganz folgen…du schreibst <5 auf >5 steigt? Ich hatte doch im Helfer den Zielwert auf 50% definiert. Wenn jetzt der Wert größer 1 steigt (also über 51%) soll der Luftentfeuchter einschalten und bis auf - 10% (also bis 41%) laufen. Ist die Logik bzw. Automation denn hier so richtig?

Und jetzt sagst du, wenn ich die Automation erstelle und YAML neu starte, und die Luftfeuchtigkeit zu dem Zeitpunkt z.B. schon bei 56% ist, funktioniert das nicht?

Nachtrag, es funktioniert: Habe gerade den Zielwert kurz unter den aktuellen wert gesetzt und 2 Mal auf den Sensor gepustet. Luftfeuchtigkeit ist hochgegangen und die Steckdose angegangen. :slight_smile:

1 „Gefällt mir“

Bis gerade kannte ich den Zielwert nicht, nur die 5%. Deshalb hatte ich sie in meinem Bsp. genannt.

Aber das ändert ja nix an der Tatsache, dass der Trigger nur auslöst, wenn der Zustand sich dahin gehend ändert, was du angegeben hast: von kleiner 51 auf über 51. Ist der Wert schon über 51, wird nix mehr getriggert.

Alles gut :grinning:

Das heisst aber auch, wenn der Luftenfeuchter dann sagen wir bei 48% gerade entfeuchtet und ich HomeAssistant neu starte wird die Steckdose nicht wieder eingeschaltet? Oder das gleiche Beispiel, wenn er bei 54% entfeuchtet…wird die Steckdose dann auch nicht wieder eingeschaltet?

Wie kann man das umgehen?

Wenn du HA neu startest, ändert sich ja nix am Zustand der Steckdose. Die läuft weiter. Die bleibt an, bis der Wert wieder unter 40 fällt.

Und weil wir es gerade hatten: float braucht einen default-Wert, da dieser sonst meist beim Neustart unavailable wird und deine Rechnung zu Fehlern führt. Also besser so in der Art

    value_template: >-
      {{states('sensor.sensor_bad_humidity') | float(0) <
      states('input_number.luftentfeuchter_bad_dg')|float(0) -10}}

Hier würde ich beim float sogar fast die 50 als default setzen :wink:

@sirector:

Aber den Default Wert übergebe ich doch über den Helfer “Luftentfeuchter Bad DG” → Entität: input_number.luftentfeuchter_bad_dg ?
Wird der Wert da beim Neustart auch unavailable?

grafik