Signalstatus nach Bootup wird nicht berücksichtigt

Moin zusammen.

Ich bin dabei meine eigene Regelung für die Abwasserpumpe zu erstellen.
Nun ist es so, dass bei der Programmierung erst auf Statusänderung reagiert wird.
Hier ein paar Beispiele:

  • Level zum Einschalten der Pumpe erreicht, aber wird nicht eingeschaltet
  • Eingang für Motorschutz oder Temperaturüberwachung sind low, kriege aber keine Fehlermeldung
    Ich muss immer erst einen Signalwechsel vollziehen, also high zu low und wieder high oder Level unterschreiten und dann wieder überschreiten.
    Hier mal mein Programm:
# analoger Eingang
sensor:
  - platform: adc
    pin: A0
    name: "Pegelstand" 
    id: pegelstand
    filters:
      - calibrate_linear:
        - 0.001 -> 100
        - 1.000 -> 0
    unit_of_measurement: "%"
    accuracy_decimals: 0
    update_interval: 10s
    on_value_range:
      - above: 90.0
        then:
          - switch.turn_on: awp
          - delay: 120s
          - if:
              condition:
                and:
                  - switch.is_on: awp
                  - sensor.in_range:
                      id: pegelstand
                      above: 71.0
              then:
                - logger.log: "Zeitüberschreitung"
                - switch.turn_off: awp
                - text_sensor.template.publish:
                    id: meldungen
                    state: !lambda 'return "Zeitüberschreitung";'
      - below: 70.0
        then:
          - switch.turn_off: awp
          - text_sensor.template.publish:
              id: meldungen
              state: !lambda 'return "alles ok";'

# digitale Eingänge  
binary_sensor:
  - platform: gpio
    pin: 
      number: 14
      mode:
        input: true
    name: "Motorschutz"
    id: motorschutz
    publish_initial_state: true
    on_release:
    - switch.turn_off: awp
    - logger.log: "Motorschutz ausgelöst"
    - text_sensor.template.publish:
        id: meldungen
        state: !lambda 'return "Motorschutz ausgelöst";'
    on_press: 
    - text_sensor.template.publish:
        id: meldungen
        state: !lambda 'return "alles ok";'
  - platform: gpio
    pin: 
      number: 12
      mode:
        input: true
    name: "Temp3031"
    id: temp3031
    publish_initial_state: true
    on_release:
    - delay: 10s
    - switch.turn_off: awp
    - logger.log: "Temperaturvorwarnung"
    - text_sensor.template.publish:
        id: meldungen
        state: !lambda 'return "Temperaturvorwarnung";'
    on_press: 
    - text_sensor.template.publish:
        id: meldungen
        state: !lambda 'return "alles ok";'
  - platform: gpio
    pin: 
      number: 13
      mode:
        input: true
    name: "Übertemperatur"
    id: temp3032
    publish_initial_state: true
    on_release:
    - delay: 1s
    - switch.turn_off: awp
    - logger.log: "Übertemperatur"
    - text_sensor.template.publish:
        id: meldungen
        state: !lambda 'return "Übertemperatur";'
    on_press: 
    - text_sensor.template.publish:
        id: meldungen
        state: !lambda 'return "alles ok";'
  
# digitale Ausgänge
switch:
  - platform: gpio
    pin: D8
    name: "AWP Ein"
    id: awp   

# api
text_sensor:
  - platform: template
    name: "Meldungen"
    id: meldungen
    update_interval: 10s    

Bei meiner Poolsteuerung habe ich das gleiche Problem.
Wäre dankbar für den entscheidenden Tipp.

Gruß Thorsten

Ich habe eine Lösung gefunden:

sensor:
  - platform: adc
    pin: A0
    name: "Pegelstand" 
    id: pegelstand
    filters:
      - calibrate_linear:
        - 0.001 -> 100    # 0V = 150mm
        - 1.000 -> 0      # 10V = 1500mm
      - lambda: return x;
    unit_of_measurement: "%"
    accuracy_decimals: 0
    update_interval: 10s
    on_value:
      then:
        - lambda: |-
            if ((id(pegelstand).state >90) && (id(meldungen).state == "alles ok")){id(awp).turn_on();}
        - if:
            condition:
              and:
                - switch.is_on: awp
                - sensor.in_range:
                    id: pegelstand
                    above: 71.0
            then:
              - delay: 120s
              - logger.log: "Zeitüberschreitung"
              - switch.turn_off: awp
              - text_sensor.template.publish:
                  id: meldungen
                  state: !lambda 'return "Zeitüberschreitung";'

        - if:
            condition:
              lambda: 'return id(pegelstand).state <70;'
            then:
              - switch.turn_off: awp
              - text_sensor.template.publish:
                  id: meldungen
                  state: !lambda 'return "alles ok";'