DIY Bodenfeuchtemesser mit ESPHome

dann muss in der esphome für den sensor.yaml folgendes stehen

esp8266:
  board: d1_mini

Und siehe dir das noch an → Bodenfeuchtesensoren ESP32 D1 mini ESPHome - #4 von Elektromat

Ja, das habe auf Anraten im verlinkten Thread so geändert.
Danke Dir.

Habe nun als Auslöser für an und aus zwei Zeitangaben als ID benutzt, zum Testen.
So funktioniert die Automation. Um bestimmte Zeit hat der Shely ausgelöst, min Min. später ausgegangen.
Nur mit der jetzigen Bedingung für die Unterschreitung der Min. Feuchte und Überschreitung der max. Feuchte geht es nicht.

Irgendwo mache ich einen Denkfehler, nur sehen tur ich ihn nicht.
Vielleicht Ihr?

alias: Bewässerung Gewächshaus
description: >-
  Steuert das Hunter-Magnetventil basierend auf Tageszeit, Saison und
  Bodenfeuchtigkeit
triggers:
  - entity_id:
      - sensor.durchschnitt_bodenfeuchte_gewachshaus
    below: 70
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
    id: Boden zu trocken
    enabled: true
  - entity_id:
      - sensor.durchschnitt_bodenfeuchte_gewachshaus
    above: 90
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
    id: Boden nass genug
    enabled: true
conditions:  #deaktiviert um ohne Conditions zu testen
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: sun
            after: sunrise
            before: sunset
          - condition: template
            value_template: "{{ now().month >= 5 and now().month <= 10 }}"
          - condition: numeric_state
            entity_id: sensor.durchschnitt_bodenfeuchte_gewachshaus
            below: 50
      - condition: numeric_state
        entity_id: sensor.bodenfeuchte
        above: 80
    enabled: false
actions:
  - if:
      - condition: trigger
        id:
          - Boden zu trocken
    then:
      - action: switch.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: switch.bewasserung_gewachshaus_switch_0
  - if:
      - condition: trigger
        id:
          - Boden nass genug
    then:
      - action: switch.turn_off
        metadata: {}
        data: {}
        target:
          entity_id: switch.bewasserung_gewachshaus_switch_0

Vielleicht ohne ID arbeiten und einfach über die Bedingung:
Wenn Feuchte <80% schalter an, ansonsten aus.

Dennoch würde mich brennend interessieren, warum die jetzige Aktion nicht läuft. Ich sehe keinen Wald vor lauter Bäume

Ich habe meine Automationen bisher meist durch viel Probieren und Kopieren aus Vorlagen erstellt und eher nicht durch Lesen der Spezifikationen.
Das Ganze sieht für mich eigentlich gut aus und sollte funktionieren. Mir fällt nur auf, dass ich if-Abfragen immer nur mit “condition: state” oder “condition: numeric_state” durchgefürt habe, aber nie mit “condition: trigger”.
Bei “condition: trigger” kommt bei mit immer die Choose-Struktur zum Einsatz:

alias: Bewässerung Gewächshaus
description: >-
  Steuert das Hunter-Magnetventil basierend auf Tageszeit, Saison und
  Bodenfeuchtigkeit
triggers:
  - entity_id:
      - sensor.durchschnitt_bodenfeuchte_gewachshaus
    below: 70
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
    id: Boden_zu_trocken
    enabled: true
  - entity_id:
      - sensor.durchschnitt_bodenfeuchte_gewachshaus
    above: 90
    for:
      hours: 0
      minutes: 5
      seconds: 0
    trigger: numeric_state
    id: Boden_nass_genug
    enabled: true
conditions:  #deaktiviert um ohne Conditions zu testen
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: sun
            after: sunrise
            before: sunset
          - condition: template
            value_template: "{{ now().month >= 5 and now().month <= 10 }}"
          - condition: numeric_state
            entity_id: sensor.durchschnitt_bodenfeuchte_gewachshaus
            below: 50
      - condition: numeric_state
        entity_id: sensor.bodenfeuchte
        above: 80
    enabled: false
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Boden_zu_trocken
        sequence:
          - action: switch.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: switch.bewasserung_gewachshaus_switch_0

      - conditions:
          - condition: trigger
            id:
              - Boden_nass_genug
        sequence:
          - action: switch.turn_off:
            metadata: {}
            data: {}
            target:
              entity_id: switch.bewasserung_gewachshaus_switch_0

Vielleicht ist das nochmal einen Versuch Wert, obwohl es keinen Unterschied machen sollte.

Hier ist ein Tippfehler drin:

Was ich nicht verstehe: Wieso soll sensor.durchschnitt_bodenfeuchte_gewachshaus bei unter 70 triggern, aber in den Bedingungen unter 50 sein?

Und auch wenn ich wie eine Platte mit Sprung klinge: Ein Blick in die trace hilft in den meisten Fällen.

Der Teil mit dem Durchschnitt ist ja disabled, den habe ich nur aus der Vorlage kopiert.
Für einen weiteren Test würde ich den Teil wohl auch erst einmal löschen. Nicht das der “enabled: false” Befehl nur eine Teil der “and” condistion abschaltet und dieser eigentlich deaktivierte Code-Teil den Fehler produziert.

Mir gefällt die deaktivierte Condition nicht so richtig. Wenn der Boden vor Sonnenaufgang bereits zu tocken wäre, dann würde die “zu trocken” Automation nie auslösen.

Da steht leider nur nicht ausgeführt oder so.

Interessant finde ich, die Automatisierung stoppt definitiv den manuell gestarteten Bewässerungvorgang
Also es kann “nur” nicht ausgelöst werden


PS.
Jetzt, wo ich die Bilder des Trases gemacht habe,bhabe ich allerdings einen Eintrag gefunden, der zwischen dem gescheiterten Versuch und dem Ausschalten lag.
Zu der Zeit habe ich die Bewässerung manuell ausgelöst. Scheint als hätte die Automation doch den Shelly getriggert (obwohl er bereits an war)



So ganz verstehe ich es immer noch nicht.
Vermutlich muss ich an den Schwellwerten was machen…

Das ist ja nur die trace der funktionierenden Automation. Aktiviere doch noch mal den Bedingungsblock und schau dann noch mal in die trace.

Kitty, es geht nicht um die Bedingungen.
Es ging darum, dass due Automation nicht gestattet hat als der Sensorwert den unteren Schwellenwert unterschritten hat.
Nun sehe ich, dass nachdem die Automation nicht ausgeführt wurde und ich den Shelly manuell eingeschaltet habe, die Automation dann doch irgendwann losging. Kann ich mir nicht erklären, warum es mittendrin passiert ist als der Sensorwert bereits die untere Schwellw überschritten hat.