Update cover status with Door Window Sensor

Hi, I have 2 shutters (left and right) on my bedroom windows which I can operate using a Sonoff RF Bridge using MQTT. I’ve found that sometimes the command doesn’t work (perhaps RF interference) so I want to resend the command when it doesn’t work. I’ve recently purchased some Xiaomi Door Window sensors which have been attached to the shutters and correctly report whether they are open or closed. How would I integrate their feedback to my open/close script below to allow the command to be repeated in the event they don’t close successfully?

Because there are 2 shutters and I could not successfully decode the RFraw command that closes both I close one, wait 1.2 seconds for the command to process and then close the second. The close script also has a check to make sure the balcony door is closed after I damaged the shutter in the past from closing it over the door…

Configuration.yaml

cover:
  - platform: mqtt
    unique_id: Left_Bedroom_Shutter
    name: "Left Bedroom Shutter"
    command_topic: "cmnd/bedroom_rf_bridge/backlog"
    payload_open: "rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A1A1A192A19292A1A192A192A192929 55;rfraw 0"
    payload_close: "rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A192A1A1A1A19292A19292A1A1A192929 55;rfraw 0"
    payload_stop: "rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A192A1A1A19292A192A1A1A1A192929 55;rfraw 0"

  - platform: mqtt
    unique_id: Right_Bedroom_Shutter
    name: "Right Bedroom Shutter"
    command_topic: "cmnd/bedroom_rf_bridge/backlog"
    payload_open: "rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A1A1A1A192A19292A1A192A19292A1A19 55;rfraw 0"
    payload_close: "rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A192A1A1A1A19292A19292A1A192A1A19 55;rfraw 0"
    payload_stop: "rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A1A192A1A1A19292A192A1A1A192A1A19 55;rfraw 0"

  - platform: template
    covers:
      bedroom_shutters:
        device_class: shutter
        friendly_name: "Bedroom Shutters"
        unique_id: Bedroom_Shutters
        value_template: "{{ states('sensor.bedroom_shutters')|float > 0 }}"
        open_cover:
          service: script.open_bedroom_shutters
        close_cover:
          service: script.close_bedroom_shutters
        stop_cover:
          service: script.stop_bedroom_shutters

scripts.yaml

close_bedroom_shutters:
  alias: Close Bedroom Shutters
  sequence:
  - condition: not
    conditions:
    - condition: state
      entity_id: binary_sensor.balcony_door_sensor
      state: Open
  - service: mqtt.publish
    data:
      topic: cmnd/bedroom_rf_bridge/backlog
      payload: rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A192A1A1A1A19292A19292A1A1A192929
        55;rfraw 0
  - delay: '2'
  - service: mqtt.publish
    data:
      topic: cmnd/bedroom_rf_bridge/backlog
      payload: rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A192A1A1A1A19292A19292A1A192A1A19
        55;rfraw 0
  mode: single
  icon: mdi:window-shutter
open_bedroom_shutters:
  alias: Open Bedroom Shutters
  sequence:
  - service: mqtt.publish
    data:
      topic: cmnd/bedroom_rf_bridge/backlog
      payload: rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A1A1A1A192A19292A1A192A19292A1A19
        55;rfraw 0
  - delay:
      milliseconds: 1200
  - service: mqtt.publish
    data:
      topic: cmnd/bedroom_rf_bridge/backlog
      payload: rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A1A1A192A19292A1A192A192A192929
        55;rfraw 0
  mode: single
  icon: mdi:window-shutter
stop_bedroom_shutters:
  alias: Stop Bedroom Shutters
  sequence:
  - service: mqtt.publish
    data:
      topic: cmnd/bedroom_rf_bridge/backlog
      payload: rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A1A192A1A1A19292A192A1A1A192A1A19
        55;rfraw 0
  - delay:
      milliseconds: 1200
  - service: mqtt.publish
    data:
      topic: cmnd/bedroom_rf_bridge/backlog
      payload: rfraw AA B0 4C 04 08 1374 0258 0118 1388 38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A192A1A1A19292A192A1A1A1A192929
        55;rfraw 0 55;rfraw 0
  mode: single
  icon: mdi:window-shutter

The script is complicated as it is and I hate MQTT (this is my only MQQT device) so not really sure how to make this happen…

Have also just tried this using a repeat “While” loop and binary sensor state sensing, didn’t appear to work.

alias: Close Bedroom Shutters
sequence:
  - repeat:
      while:
        - condition: state
          entity_id: binary_sensor.left_shutter
          state: 'on'
        - condition: state
          entity_id: binary_sensor.right_shutter
          state: 'on'
      sequence:
        - condition: not
          conditions:
            - condition: state
              entity_id: binary_sensor.balcony_door_sensor
              state: Open
        - service: mqtt.publish
          data:
            topic: cmnd/bedroom_rf_bridge/backlog
            payload: >-
              rfraw AA B0 4C 04 08 1374 0258 0118 1388
              38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A192A1A1A1A19292A19292A1A1A192929
              55;rfraw 0
        - delay:
            milliseconds: 2000
        - service: mqtt.publish
          data:
            topic: cmnd/bedroom_rf_bridge/backlog
            payload: >-
              rfraw AA B0 4C 04 08 1374 0258 0118 1388
              38192A192A1A1A19292A1929292A19292A19292A19292A1A1929292A192A1A1A1A1A1A1A1A1A1A192A1A1A1A1A1A1A1A1A1A192A1A1A1A19292A19292A1A192A1A19
              55;rfraw 0
        - delay:
            hours: 0
            minutes: 1
            seconds: 0
            milliseconds: 0
mode: single
icon: mdi:window-shutter