Relais Ansteuerung: Automation startet nicht zuverlässig

Hallo zusammen,
ich bin neu hier und beschäftige mich auch erst seit ein paar Wochen mit Home Assistant. Ich habe ein Problem mit einer Automation, die einen Lüfter in einem Werkstattraum je nach Absoluter Luftfeuchtigkeit schalten soll. Sobald die Luftfeuchtigkeit einen Wert übersteigt, soll der Lüfter laufen. Bedingung: Die Aussen-Temperatur ist über 5°C und der Lüfter ist seit 2 Minuten aus. Später will ich die Zeit noch hoch setzen aber zum testen habe ich die erst mal auf 2 Minuten gestellt. Der Wert der absoluten Luftfeuchtigkeit wird in einem Template Helfer berechnet. Das habe ich mir beim Youtube Kanal von “Raum & Außen Smart” abgeschaut. Leider läuft die Automation nicht zuverlässig. Mittlerweile habe ich heraus bekommen, wenn ich den Template Helfer manuell “Neu lade” der Lüfter anläuft. Nun habe ich zum Testen eine Automation erstellt, die jede Minute den Template Helfer neu lädt. Aber auch das hat keine wirkliche Kontinuität gebracht. :slightly_frowning_face:

Ich würde mich freuen, wenn Ihr euch die Automation mal anschauen könntet. Ich komme einfach nicht weiter.

Ich habe die Yaml Codes als Bilder angehängt.

Beste Grüße Jens


Aus meiner Sicht hat deine Automation mehrere Schwachstellen.

Ich würde bei Schwellwerttriggern immer eine Wartezeit mit einbauen ( z.B. above 0.9 für eine Minute) damit, wenn der Wert an der Grenze hin und her springt, die Automation nicht mehrmals getriggert wird.

„conditions“ sind immer „UND“ verknüpft und müssen alle erfüllt sein, damit die Automation ausgeführt wird. Jetzt ist das Lüfterrelais z.B. noch nicht für zwei Minuten aus, wenn die Automation durch Luftfeuchtigkeit above 0.9 getriggert wird. Eine weitere Triggerung würde nur erfolgen, wenn die Luftfeuchtigkeit unter 0.9 fällt und wieder darüber ansteigt. Steigt die Luftfeuchtigkeit nach der ersten Triggerung nur noch, dann wird die Automation in diesem Fall nie ausgelöst.

Als Drittes würde ich keine langen Wartezeiten oder aufwendige Schleifen in eine Automation einbauen. Für die Ausführungszeit ist die Automation taub und blind. Besser wäre es, z.B. einen Timer zu verwenden, der zum Abschalten nach 55 Minuten einen weiteren Trigger auslöst.

alias: Automatische Lüftung Zerspanerbude
description: >-
  Lüftet automatisch... 
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.diff_absolut_zerspanerbude_innen_aussen
    for:
      hours: 0
      minutes: 1
      seconds: 0
    above: 0.9
    id: ID_Zu_Feucht
  - trigger: event
    event_type: timer.finished
    event_data:
      entity_id: timer.timer_lueftung_zerspanerbude
    id: ID_Timer_Lueftung_Finished
conditions: [] 
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - ID_Zu_Feucht
        sequence:
          - if:
              - condition: and
                conditions:
                  - condition: state
                    entity_id: switch.lufterrelais_zerspanerbude_switch_0
                    state: "off"
                  - condition: numeric_state
                    entity_id: sensor.shellyhtg3_543204638e_44_temperature
                    above: 5 
            then:
              - action: switch.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: switch.lufterrelais_zerspanerbude_switch_0
              - action: timer.start
                data:
                  duration: "00:55:00"
                target:
                  entity_id: timer_lueftung_zerspanerbude
      - conditions:
          - condition: trigger
            id:
              - ID_Timer_Lueftung_Finished
        sequence:
          - action: switch.turn_off
			metadata: {}
			data: {}
			target:
			  entity_id: switch.lufterrelais_zerspanerbude_switch_0
mode: single

timer_lueftung_zerspanerbude über Einstellungen=>Geräte&Dienste=>Helfer anlegen.
Die zwei Minuten Wartezeit könnte man über einen weiteren Timer oder einem weiteren Start des Timers für zwei Minuten und zusätzlichen if-Bedingungen realisieren (man kann auch abfragen ob Timer nicht laufen, siehe Timer - Home Assistant).
Vollständigerhalber müsste man auch noch einen Trigger hinzufügen, wenn die Temperatur über 5 Grad steigt und dann im Event-Zweig prüfen, ob es zu feucht ist und gegebenenfalls die Lüftung einschalten und den Timer starten…

Hallo Lutz,

erstmal vielen herzlichen Dank für deine Rückmeldung und das du mir hilfst. :grinning:

Ich habe den Yaml Code wie folgt eingefügt:

alias: Automatische Lüftung Zerspanerbude
description: >-
  Lüftet automatisch bei hoher Luftfeuchtigkeitsdifferenz und ausreichend hoher
  Temperatur
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.diff_absolut_zerspanerbude_innen_aussen
    for:
      hours: 0
      minutes: 1
      seconds: 0
    above: 0.9
    id: ID_Zu_Feucht
  - trigger: event
    event_type: timer.finished
    event_data:
      entity_id: timer.timer_lueftung_zerspanerbude
    id: ID_Timer_Lueftung_Finished
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - ID_Zu_Feucht
        sequence:
          - if:
              - condition: and
                conditions:
                  - condition: state
                    entity_id: switch.lufterrelais_zerspanerbude_switch_0
                    state: "off"
                  - condition: numeric_state
                    entity_id: sensor.shellyhtg3_543204638e_44_temperature
                    above: 5
            then:
              - action: switch.turn_on
                metadata: {}
                data: {}
                target:
                  entity_id: switch.lufterrelais_zerspanerbude_switch_0
              - action: timer.start
                data:
                  duration: "00:55:00"
                target:
                  entity_id:
                    - timer.timer_lueftung_zerspanerbude
      - conditions:
          - condition: trigger
            id:
              - ID_Timer_Lueftung_Finished
        sequence:
          - action: switch.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: switch.lufterrelais_zerspanerbude_switch_0
mode: single

Auch habe ich wie geschrieben den Template Helfer für den Timer: timer_lueftung_zerspanerbude erstellt. Leider startet der Lüfter immer noch nicht, obwohl es über 5 Grad sind und die Differenz absolute Luftfeuchtigkeit über 2,8 liegt.

Siehst du noch einen Fehler?

Beste Grüße

Da solltest Du mal in die Traces schauen, was passiert ist. Wurde der above 0.9 Trigger ausgelöst? Welchen Weg ist die Automation gegangen?
Was war der Zustand von “switch.lufterrelais_zerspanerbude_switch_0” zu diesem Zeitpunkt? “off” oder “unknown”? Hast du nach der Änderung Homeassistant neu gestartet oder wenigstens die Automationen über Entwicklerwerkzeuge=>Zustände=>Automationen neu geladen?

Hallo,
ja ich hatte nach der Änderung Home Assistant neu gestartet. Ich habe eben wie vorgeschlagen in die Traces geschaut. Dort habe ich gesehen, das die Entität des Temperatursensors nicht “erkannt” wurde.

Die Bezeichnung war aber richtig. Ich habe die Entität dann noch mal neu ausgewählt und dann hat es geklappt. Aktuell schaltet der Lüfter ein. Ich hoffe das die Automation jetzt stabil läuft.
Vielen Dank für deine Hilfe. Falls es doch noch mal zu Problemen kommt, würde ich mich noch mal melden. :upside_down_face:

Hallo,
leider läuft meine Lüftungsteuerung immer noch nicht selbstständig. Die Automation startet nur, wenn ich den Template Helfer, der die Differenz Absolute Luftfeuchtigkeit berechnet, manuell über den Button “Neu laden” starte. Erst dann bekommt meine Automation den Wert übermittelt und führt die Aktion aus.
Was kann ich tun, damit der Wert regelmäßig übertragen/abgefragt wird?

Schau dir mal folgendes Simon Video an: https://www.youtube.com/watch?v=WuAtSwXkk1Y&t=226s
(ab 3:40 wird es interessant).
Der Code ist unter Mit Home Assistant richtig lüften und Schimmelbildung vorbeugen zu finden.

(Achtung: Nach Änderungen in der configuration.yaml die Konfiguration prüfen über Entwicklerwerkzeuge=>YAML=>Überprüfen und neu starten=>KONFIGURATION PRÜFEN und wenn OK dann neu starten)

Hallo,

ich habe die Berechnung wie Simon jetzt in der configuartion.yaml eingefügt und die Entität in der Automatisierung ausgetauscht. Leider läuft die Automation immer noch nicht. Ich habe den Eindruck das die Automation den Wert nur einmal abruft und dann in Zukunft nicht mehr. Wenn ich Änderungen vornehme, läuft die Automation einmal durch und dann bleibt sie wie im Bild gezeigt stehen.


Die Differenz der absoluten Luftfeuchtigkeit ist aber über 0,9. Ich überwache den Wert in meinem Dashboard.

Muss ich vielleicht in der Automation von “Feste Zahl” auf “Numerischen Wert” umstellen?

Ich bin Home Assistant Neuling, entschuldigt evtl. dumme Fragen.

Das Umändern auf “Numerischen Wert” bewirkt nur, dass du die Zahl 0,9 nicht mehr fest vorgibst, sondern von einer anderen Entität einliest.
Das Problem wird der Trigger sein. Er ist ein Schwellwerttrigger und löst nur aus, wenn der Schwellwert überschritten wird, also von unter 0,9 auf über 0,9 geht für eine Minute. Um nochmal schalten zu können, muss der Wert erst unter 0,9 fallen. Wenn der Wert beim Start des Programms bereits über 0,9 ist, dann löst die Automation auch nicht aus.

Die Automation ist nicht stehengeblieben, sondern durchgelaufen.

Zum Abschalten würdest Du einen weitern Trigger, z.B. unter 0,89 für 1 Minute oder eben einen Trigger, der beim timer.finished Event auslöst benötigen.

Ich habe mir für die Entfeuchtung eines Gewächshauses eine Automation erstellt. Allerdings benutze ich den Wert der Luftfeuchtigkeit eines Temperaturmessers (ThermoPro TP357S).
Die Dinger haben sich zumindest bei mir im Winter auch draußen bewährt und kosten nicht die Welt. Allerdings habe ich im Garten einen ESP32 als Bluetooth-Proxy am Laufen.

Auch ich hatte anfangs damit zu kämpfen, dass bestimmte Werte nur bei einer Änderung zum Tragen kommen, aber nicht wenn der Wert sich bereits unter dem Schwellwert befindet.
Ich habe die entsprechenden Entitäten einfach quasi “über Kreuz” in die Automation eingetragen
und folgendermaßen gelöst, vielleicht gibt Dir das ja weitere Denkanstöße.

Luftentfeuchter einschalten:

Wenn Luftfeuchtigkeit für die Dauer von 10 Minuten >90%,
oder wenn Temperatur sich für die Dauer von 10s >6,5°C ändert,

Aber nur wenn Luftfeuchtigkeit >90%,
und nur wenn Temperatur >6,5°C ist,

Dann schalte Luftentfeuchter ein.

Analog dazu entsprechend eine Ausschalt-Automation, die den Entfeuchter entweder bei <5°C oder bei Luftfeuchtigkeit <85% wieder ausschaltet:

Das Ganze habe ich noch mit einem Fensterkontakt an der Tür des Gewächshauses eingebunden, der die Entfeuchtung natürlich aussetzen soll, sobald die Tür des Gewächshauses geöffnet wird, bzw. offen steht.
Dieser Kontakt ist aktuell defekt und wird durch einen neuen Fensterkontakt ersetzt, dann ist der auch wieder in der Automation mit drin.

Hallo zusammen,

ich habe das Problem mit dem wieder einschalten, wenn der Wert nicht unter 0,9 gefallen ist, nicht hinbekommen. Ich habe jetzt 3 Abende rumgebastelt und es versucht, aber ich musste erkennen das meine Programmierkenntnisse hierfür noch nicht ausreichend sind. Vielleicht bekomme ich es hin, wenn ich mehr Erfahrung in Home Assistant habe.
Ich habe die Lüftung jetzt erst mal auf einfache Weise gelöst. Also ohne einen Timer. Die Lüftung schaltet sich bei einer Differenz absolute Luftfeuchtigkeit von 1,1 ein und schaltet sich bei 0,9 wieder aus. Berücksichtigt wird noch, das bei einer Rauminnentemperatur unter 5 °C die Lüftung ausgeschaltet bleibt.

Vielen Dank für eure Hilfe und die Tipps. :slightly_smiling_face: