Appliance Flow Feedback

So I’ve just started down the node-red path and some of the things I’m slowly transferring over are my appliance automation’s. Looking to get some feedback on smarter ways than what I have currently done up and any errors or issues I can’t see. Hopefully this also helps other users looking to replicate the same flow. Will add the washing machine at a later stage.

Dishwasher Flow

[{"id":"ff6b69eb.07548","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Dishwasher Power","server":"50b24aa1.6e06f4","entityidfilter":"sensor.wemo_lounge_cpwr","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":111.21115112304688,"y":417.2820711135864,"wires":[["39be85c9.d0f39a"]]},{"id":"c7e70a50.4c1a","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Dishwasher Switch","server":"50b24aa1.6e06f4","entityidfilter":"switch.wemo_lounge","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"off","halt_if_type":"str","halt_if_compare":"is","outputs":2,"x":108.08332824707031,"y":566.0833129882812,"wires":[["d6d6f3b8.9f27a8","e0308621.738f68","a8635e50.0a7cb"],["adfdf861.00cfa"]]},{"id":"a8635e50.0a7cb","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Idle","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.wemo_lounge"},{"t":"regex","v":"Power Off","vt":"str","case":false,"propertyType":"msg","property":"state","topic":"sensor.wemo_dishwasher_status"},{"t":"lt","v":"2","vt":"str","propertyType":"msg","property":"power","topic":"sensor.wemo_lounge_cpwr"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":740.86669921875,"y":512.4166259765625,"wires":[["a95aec57.6117e"]]},{"id":"39be85c9.d0f39a","type":"change","z":"8fd93472.c11bf8","name":"Change","rules":[{"t":"move","p":"payload","pt":"msg","to":"power","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":293.21112060546875,"y":416.1153841018677,"wires":[["a8635e50.0a7cb","e0308621.738f68","d6d6f3b8.9f27a8"]]},{"id":"35c9fad0.a2c616","type":"change","z":"8fd93472.c11bf8","name":"Change","rules":[{"t":"move","p":"payload","pt":"msg","to":"state","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":274.42779541015625,"y":469.3654146194458,"wires":[["a8635e50.0a7cb","e0308621.738f68","6b29b4f3.ccd56c"]]},{"id":"77f039a9.84c2a8","type":"template","z":"8fd93472.c11bf8","name":"Idle","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Idle\"\n   }\n}","output":"str","x":1042.0833740234375,"y":514.0833435058594,"wires":[["24e277d6.c88b5"]]},{"id":"24e277d6.c88b5","type":"api-call-service","z":"8fd93472.c11bf8","name":"HA","server":"50b24aa1.6e06f4","service_domain":"","service":"","data":"","render_data":false,"mergecontext":"","output_location":"payload","output_location_type":"msg","x":1272.0833740234375,"y":462.0833435058594,"wires":[[]]},{"id":"e0308621.738f68","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Running","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.wemo_lounge"},{"t":"regex","v":"Idle|Clean","vt":"str","case":false,"propertyType":"msg","property":"state","topic":"sensor.wemo_dishwasher_status"},{"t":"gt","v":"10","vt":"str","propertyType":"msg","property":"power","topic":"sensor.wemo_lounge_cpwr"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":751.0833740234375,"y":462.0833435058594,"wires":[["d077e569.1c9d18"]]},{"id":"28d00f36.eff5d8","type":"template","z":"8fd93472.c11bf8","name":"Running","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Running\"\n   }\n}","output":"str","x":1051.0833740234375,"y":463.0833435058594,"wires":[["24e277d6.c88b5"]]},{"id":"d6d6f3b8.9f27a8","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Clean","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.wemo_lounge"},{"t":"eq","v":"Running","vt":"str","propertyType":"msg","property":"state","topic":"sensor.wemo_dishwasher_status"},{"t":"lt","v":"10","vt":"str","propertyType":"msg","property":"power","topic":"sensor.wemo_lounge_cpwr"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":741.0833740234375,"y":413.0833435058594,"wires":[["8940edab.1041d"]]},{"id":"b108ed95.28ef1","type":"template","z":"8fd93472.c11bf8","name":"Clean","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Clean\"\n   }\n}","output":"str","x":1039.0833740234375,"y":413.0833435058594,"wires":[["24e277d6.c88b5"]]},{"id":"adfdf861.00cfa","type":"template","z":"8fd93472.c11bf8","name":"Power Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Power Off\"\n   }\n}","output":"str","x":1047.0833740234375,"y":567.0833129882812,"wires":[["24e277d6.c88b5"]]},{"id":"be70be3c.71fa18","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Dishwasher State","server":"50b24aa1.6e06f4","entityidfilter":"sensor.wemo_dishwasher_status","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":101.42781066894531,"y":471.3654146194458,"wires":[["35c9fad0.a2c616"]]},{"id":"99f12cec.0a327","type":"delay","z":"8fd93472.c11bf8","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":647.7997436523438,"y":364.581974029541,"wires":[["d6d6f3b8.9f27a8"]]},{"id":"6b29b4f3.ccd56c","type":"api-current-state","z":"8fd93472.c11bf8","name":"Current State?","server":"50b24aa1.6e06f4","halt_if":"Running","halt_if_type":"str","halt_if_compare":"is_not","override_topic":false,"override_payload":false,"override_data":true,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":487.79974365234375,"y":364.41525650024414,"wires":[["99f12cec.0a327"],[]]},{"id":"a95aec57.6117e","type":"api-current-state","z":"8fd93472.c11bf8","name":"State?","server":"50b24aa1.6e06f4","halt_if":"Idle","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":888.0833129882812,"y":513.0833129882812,"wires":[["77f039a9.84c2a8"],[]]},{"id":"d077e569.1c9d18","type":"api-current-state","z":"8fd93472.c11bf8","name":"State?","server":"50b24aa1.6e06f4","halt_if":"Running","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":900.0833129882812,"y":462.0833435058594,"wires":[["28d00f36.eff5d8"],[]]},{"id":"8940edab.1041d","type":"api-current-state","z":"8fd93472.c11bf8","name":"State?","server":"50b24aa1.6e06f4","halt_if":"Clean","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":899.0833129882812,"y":410.0833435058594,"wires":[["b108ed95.28ef1"],[]]},{"id":"50b24aa1.6e06f4","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open"}]

Original Dishwasher yaml automation:

#Dishwasher

- alias: 'Set dishwasher active when power detected'
  hide_entity: True
  
  trigger:
    platform: numeric_state
    entity_id: sensor.wemo_lounge_cpwr
    above: 10
  
  condition:
    condition: or
    conditions:
      - condition: state
        entity_id: input_select.dishwasher_status
        state: Idle
      - condition: state
        entity_id: input_select.dishwasher_status
        state: Clean
  
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.dishwasher_status
        option: Running
   
   
- alias: 'Set dishwasher clean'
  hide_entity: True
  
  trigger:
    platform: numeric_state
    entity_id: sensor.wemo_lounge_cpwr
    below: 10
 
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: input_select.dishwasher_status
        state: Running
        for:
          minutes: 5
 
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.dishwasher_status
        option: Clean
      
- alias: 'Set dishwasher Idle'
  hide_entity: True
  
  trigger:
    platform: numeric_state
    entity_id: 'sensor.wemo_lounge_cpwr'
    below: '2'
  
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: switch.wemo_lounge
        state: 'on'
      - condition: or
        conditions: 
          - condition: state
            entity_id: input_select.dishwasher_status
            state: 'Running'
          - condition: state
            entity_id: input_select.dishwasher_status
            state: 'Power Off'
  
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.dishwasher_status
        option: Idle

.

Washing Machine Flow
Below is my flow for the washing machine which utilises the switch, power sensor, state sensor and a stopwatch Boolean.

[{"id":"22654bbd.f4fc64","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Washer Power","server":"50b24aa1.6e06f4","entityidfilter":"sensor.aeotec_ss_1_power","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":99.46906280517578,"y":737.6998901367188,"wires":[["1e54adf7.0c43f2"]]},{"id":"1d47e8b4.9611f7","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Washer Switch","server":"50b24aa1.6e06f4","entityidfilter":"switch.aeotec_ss_1_switch","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"off","halt_if_type":"str","halt_if_compare":"is","outputs":2,"x":96.34128952026367,"y":975.4370737075806,"wires":[["4fc81ac6.0a7304","f8067b8e.5187a8","1d476569.fd741b"],["873fa420.128438"]]},{"id":"f8067b8e.5187a8","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Idle","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"regex","v":"Power Off","vt":"str","case":false,"propertyType":"msg","property":"state","topic":"sensor.laundry_status"},{"t":"lt","v":"3","vt":"str","propertyType":"msg","property":"power","topic":"sensor.aeotec_ss_1_power"},{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"stopwatch","topic":"input_boolean.washer_stopwatch"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":740.9491806030273,"y":856.5528583526611,"wires":[["ce28efbb.c0d69"]]},{"id":"1e54adf7.0c43f2","type":"change","z":"8fd93472.c11bf8","name":"Change","rules":[{"t":"move","p":"payload","pt":"msg","to":"power","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":291.46903228759766,"y":736.533203125,"wires":[["4fc81ac6.0a7304","1d476569.fd741b","aefa549.d70c3a8","2752f0cf.12a0c"]]},{"id":"e7112e02.a0057","type":"change","z":"8fd93472.c11bf8","name":"Change","rules":[{"t":"move","p":"payload","pt":"msg","to":"state","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":272.68570709228516,"y":789.7832336425781,"wires":[["f8067b8e.5187a8","4fc81ac6.0a7304","4a80f5e6.22f3ec"]]},{"id":"dce9864b.7c08b8","type":"template","z":"8fd93472.c11bf8","name":"Idle","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Idle\"\n   }\n}","output":"str","x":1035.8194961547852,"y":863.1416435241699,"wires":[["f18c9794.f6b788"]]},{"id":"f18c9794.f6b788","type":"api-call-service","z":"8fd93472.c11bf8","name":"HA","server":"50b24aa1.6e06f4","service_domain":"","service":"","data":"","render_data":false,"mergecontext":"","output_location":"payload","output_location_type":"msg","x":1261.2970848083496,"y":824.707953453064,"wires":[[]]},{"id":"4fc81ac6.0a7304","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Cleaning","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"regex","v":"Idle","vt":"str","case":false,"propertyType":"msg","property":"state","topic":"sensor.laundry_status"},{"t":"gt","v":"10","vt":"str","propertyType":"msg","property":"power","topic":"sensor.aeotec_ss_1_power"},{"t":"eq","v":"off","vt":"str","propertyType":"msg","property":"stopwatch","topic":"input_boolean.washer_stopwatch"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":749.3412857055664,"y":782.5011625289917,"wires":[["91180e2b.cf941"]]},{"id":"e60276b0.a74728","type":"template","z":"8fd93472.c11bf8","name":"Cleaning","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Cleaning\"\n   }\n}","output":"str","x":1049.3412857055664,"y":783.5011625289917,"wires":[["f18c9794.f6b788"]]},{"id":"873fa420.128438","type":"template","z":"8fd93472.c11bf8","name":"Power Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Power Off\"\n   }\n}","output":"str","x":1045.9756927490234,"y":984.0473709106445,"wires":[["f18c9794.f6b788"]]},{"id":"e1597fe7.c413","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Washer State","server":"50b24aa1.6e06f4","entityidfilter":"sensor.laundry_status","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":89.68572235107422,"y":791.7832336425781,"wires":[["e7112e02.a0057"]]},{"id":"596f6c7e.b999a4","type":"delay","z":"8fd93472.c11bf8","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":656.0576553344727,"y":684.9997930526733,"wires":[["1d476569.fd741b"]]},{"id":"4a80f5e6.22f3ec","type":"api-current-state","z":"8fd93472.c11bf8","name":"Current State?","server":"50b24aa1.6e06f4","halt_if":"Cleaning","halt_if_type":"str","halt_if_compare":"is_not","override_topic":false,"override_payload":false,"override_data":true,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":486.05765533447266,"y":684.8330755233765,"wires":[["596f6c7e.b999a4"],[]]},{"id":"ce28efbb.c0d69","type":"api-current-state","z":"8fd93472.c11bf8","name":"State?","server":"50b24aa1.6e06f4","halt_if":"Idle","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":895.4636726379395,"y":857.2194538116455,"wires":[["dce9864b.7c08b8","dedbdcc6.a9392","efc569cb.3eaa28"],[]]},{"id":"91180e2b.cf941","type":"api-current-state","z":"8fd93472.c11bf8","name":"State?","server":"50b24aa1.6e06f4","halt_if":"Cleaning","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":898.3412246704102,"y":782.5011625289917,"wires":[["e60276b0.a74728","c4d0eb29.a90658"],[]]},{"id":"dedbdcc6.a9392","type":"template","z":"8fd93472.c11bf8","name":"Janet Complete","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"script\",\n  \"service\": \"janet_speech_engine\",\n  \"data\": {\n    \"call_greeting\": 1,\n    \"CustomMessage\": \"Wash cycle complete, enjoy the clean clothes!\"\n   }\n}","output":"str","x":1065.1168975830078,"y":901.7472906112671,"wires":[["f18c9794.f6b788"]]},{"id":"d9d76d0d.f56ed","type":"api-current-state","z":"8fd93472.c11bf8","name":"State?","server":"50b24aa1.6e06f4","halt_if":"Cleaning","halt_if_type":"str","halt_if_compare":"is_not","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":897.3412246704102,"y":730.5011625289917,"wires":[["1b7df5b2.57a9fa","84b8317c.8afdf"],[]]},{"id":"1d476569.fd741b","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Failed","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"eq","v":"Cleaning","vt":"str","propertyType":"msg","property":"state","topic":"sensor.laundry_status"},{"t":"lte","v":"0.0","vt":"str","propertyType":"msg","property":"power","topic":"sensor.aeotec_ss_1_power"}],"outputTopic":"washer_value","gateType":"and","emitOnlyIfTrue":true,"x":739.3412857055664,"y":733.5011625289917,"wires":[["d9d76d0d.f56ed"]]},{"id":"1b7df5b2.57a9fa","type":"template","z":"8fd93472.c11bf8","name":"Janet Failed","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"script\",\n  \"service\": \"janet_speech_engine\",\n  \"data\": {\n    \"call_greeting\": 1,\n    \"CustomMessage\": \"The Laundry cycle failed.\"\n   }\n}","output":"str","x":1058.5890159606934,"y":733.5945825576782,"wires":[["f18c9794.f6b788"]]},{"id":"22aa0e49.57d5f2","type":"server-state-changed","z":"8fd93472.c11bf8","name":"Washer Stopwatch","server":"50b24aa1.6e06f4","entityidfilter":"input_boolean.washer_stopwatch","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":107.98009490966797,"y":869.2593612670898,"wires":[["8ec8fec3.3130e"]]},{"id":"aefa549.d70c3a8","type":"api-current-state","z":"8fd93472.c11bf8","name":"Current Power >3?","server":"50b24aa1.6e06f4","halt_if":"3","halt_if_type":"num","halt_if_compare":"gt","override_topic":false,"override_payload":false,"override_data":true,"entity_id":"sensor.aeotec_ss_1_power","state_type":"str","outputs":2,"x":481.8118095397949,"y":924.0276956558228,"wires":[["968f162c.33cb38"],[]]},{"id":"968f162c.33cb38","type":"delay","z":"8fd93472.c11bf8","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":639.3488616943359,"y":922.6869640350342,"wires":[["f8067b8e.5187a8"]]},{"id":"8ec8fec3.3130e","type":"change","z":"8fd93472.c11bf8","name":"Change","rules":[{"t":"move","p":"payload","pt":"msg","to":"stopwatch","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":281.8811950683594,"y":860.7175121307373,"wires":[["f8067b8e.5187a8","4fc81ac6.0a7304","e4a25a92.8f9628"]]},{"id":"efc569cb.3eaa28","type":"template","z":"8fd93472.c11bf8","name":"Stopwatch Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_boolean\",\n  \"service\": \"turn_off\",\n  \"data\": {\n    \"entity_id\": \"input_boolean.washer_stopwatch\",\n   }\n}","output":"str","x":1064.0668640136719,"y":945.1311922073364,"wires":[["f18c9794.f6b788"]]},{"id":"c4d0eb29.a90658","type":"template","z":"8fd93472.c11bf8","name":"Stopwatch On","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_boolean\",\n  \"service\": \"turn_on\",\n  \"data\": {\n    \"entity_id\": \"input_boolean.washer_stopwatch\",\n   }\n}","output":"str","x":1065.721923828125,"y":824.5401611328125,"wires":[["f18c9794.f6b788"]]},{"id":"84b8317c.8afdf","type":"template","z":"8fd93472.c11bf8","name":"Persist Notification","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"persistent_notification\",\n  \"service\": \"create\",\n  \"data\": {\n    \"message\": \"Washer Cycle Failed\",\n    \"title\": \"Washing Machine\"\n   }\n}","output":"str","x":1077.2295265197754,"y":696.4123678207397,"wires":[["f18c9794.f6b788"]]},{"id":"2752f0cf.12a0c","type":"api-current-state","z":"8fd93472.c11bf8","name":"Current Power <1?","server":"50b24aa1.6e06f4","halt_if":"1","halt_if_type":"num","halt_if_compare":"lt","override_topic":false,"override_payload":false,"override_data":true,"entity_id":"sensor.aeotec_ss_1_power","state_type":"str","outputs":2,"x":480.3044662475586,"y":958.6975288391113,"wires":[["31413100.ca133"],[]]},{"id":"31413100.ca133","type":"delay","z":"8fd93472.c11bf8","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":649.3489418029785,"y":958.8643951416016,"wires":[["e4a25a92.8f9628"]]},{"id":"e4a25a92.8f9628","type":"and-gate","z":"8fd93472.c11bf8","name":"Set Reset","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"lt","v":"1","vt":"str","propertyType":"msg","property":"power","topic":"sensor.aeotec_ss_1_power"},{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"stopwatch","topic":"input_boolean.washer_stopwatch"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":832.0770835876465,"y":930.0572280883789,"wires":[["dce9864b.7c08b8","efc569cb.3eaa28"]]},{"id":"50b24aa1.6e06f4","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open"}]

Original washing machine yaml automation:

# Washing Machine

- id: 'washer_idle'
  alias: 'Washer Idle'
  hide_entity: True  
  trigger:
    - entity_id: sensor.aeotec_ss_1_power
      platform: numeric_state
      below: '3'
      for:
        minutes: 2
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: switch.aeotec_ss_1_switch
        state: 'on'
      - condition: state
        entity_id: group.family_info
        state: 'home'
      - condition: state
        entity_id: input_boolean.washer_stopwatch
        state: 'on'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.laundry_status
        option: Idle
    - service: script.janet_speech_engine
      data:
        call_greeting: 1
        CustomMessage: "Wash cycle complete, enjoy the clean clothes!"
    - service: input_boolean.turn_off
      entity_id: input_boolean.washer_stopwatch
      
- id: 'washer_running'
  alias: 'Washer Running'
  hide_entity: True  
  trigger:
    - entity_id: sensor.aeotec_ss_1_power
      platform: numeric_state
      above: 10
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: switch.aeotec_ss_1_switch
        state: 'on'
      - condition: state
        entity_id: input_boolean.washer_stopwatch
        state: 'off'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.laundry_status
        option: Cleaning
    - service: input_boolean.turn_on
      entity_id: input_boolean.washer_stopwatch
      
- id: 'washer_off'
  alias: 'Washer and Aeotec Off'
  hide_entity: True  
  trigger:
    - entity_id: switch.aeotec_ss_1_switch
      platform: state
      to: 'off'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.laundry_status
        option: Power Off
              
- id: 'washer_failed'
  alias: 'Washer has failed'
  hide_entity: True  
  trigger:
    - entity_id: sensor.aeotec_ss_1_current
      platform: state
      to: '0.0'
      for:
        minutes: 10
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: switch.aeotec_ss_1_switch
        state: 'on'
      - condition: state
        entity_id: input_select.laundry_status
        state: 'Cleaning'
  action:
    - service: script.janet_speech_engine
      data:
        call_greeting: 1
        CustomMessage: "The Laundry cycle failed."
        
    - service: persistent_notification.create
      data:
        message: "Washer Cycle Failed"
        title: "Washing Machine"        
        
- id: 'washer_reset'
  alias: 'Washer Reset'
  hide_entity: True  
  trigger:
    - entity_id: sensor.aeotec_ss_1_power
      platform: numeric_state
      below: '1'
      for:
        minutes: 30
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: switch.aeotec_ss_1_switch
        state: 'on'
      - condition: state
        entity_id: input_boolean.washer_stopwatch
        state: 'on'
  action:
    - service: input_select.select_option
      data:
        entity_id: input_select.laundry_status
        option: Idle
    - service: input_boolean.turn_off
      entity_id: input_boolean.washer_stopwatch

Looks good, nothing really jumps out at first glance as a problem. One thing I would recommend is changing the event-state node from substring to exact this will save a little on the cpu cycles. Also if you wanted to you could remove the On/Off switch and use the halt if logic in the event-state node.

Also hadn’t planned on adding custom output for the event-state nodes but I guess you have a use case for it.

Thanks for the feedback @Kermit. I’ve just updated the original post with the changes you recommended plus a few other bits to stop issues with constantly calling the service when true. I’ve also added the washing machine flow if you get a chance to also have a quick look over.

Both look good and if they function correctly no need to really change them. One thing I did notice was the and gate node doesn’t need inputs to have the payloads in the different locations because they track the value from the topic of the message. This allows you to remove the change nodes which also opens up the possibility to use a trigger-state node in place of a couple of the event-state nodes to move the current-state nodes logic into the trigger-state node. Wow, did that make sense?

In the and gate nodes you are already checking the status of sensor.wemo_dishwasher_status so you might be able to use that logic in there and not have to have the State? nodes after them. I didn’t remove them in my examples below but it should be possible.

None of this is tested but should give you some ideas on what I was trying to do.

[{"id":"e75bd8a1.3277a8","type":"server-state-changed","z":"1470632c.5748cd","name":"Dishwasher Power","server":"fec0965e.38fcf8","entityidfilter":"sensor.wemo_lounge_cpwr","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":122,"y":816,"wires":[["ff063765.e17228","c0a18c30.55a02","852d5a64.3f22f8"]]},{"id":"5394f09e.5a831","type":"server-state-changed","z":"1470632c.5748cd","name":"Dishwasher Switch","server":"fec0965e.38fcf8","entityidfilter":"switch.wemo_lounge","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"off","halt_if_type":"str","halt_if_compare":"is","outputs":2,"x":122,"y":912,"wires":[["ff063765.e17228","c0a18c30.55a02","852d5a64.3f22f8"],["628354c0.2bc8fc"]]},{"id":"852d5a64.3f22f8","type":"and-gate","z":"1470632c.5748cd","name":"Set Idle","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.wemo_lounge"},{"t":"regex","v":"Power Off","vt":"str","case":false,"propertyType":"msg","property":"state","topic":"sensor.wemo_dishwasher_status"},{"t":"lt","v":"2","vt":"str","propertyType":"msg","property":"power","topic":"sensor.wemo_lounge_cpwr"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":524,"y":912,"wires":[["2c55f984.45aa16"]]},{"id":"4bc2f942.aa3938","type":"template","z":"1470632c.5748cd","name":"Idle","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Idle\"\n   }\n}","output":"str","x":802,"y":912,"wires":[["936839d9.0a5f48"]]},{"id":"936839d9.0a5f48","type":"api-call-service","z":"1470632c.5748cd","name":"HA","server":"fec0965e.38fcf8","service_domain":"","service":"","data":"","render_data":false,"mergecontext":"","output_location":"payload","output_location_type":"msg","x":1010,"y":880,"wires":[[]]},{"id":"c0a18c30.55a02","type":"and-gate","z":"1470632c.5748cd","name":"Set Running","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.wemo_lounge"},{"t":"regex","v":"Idle|Clean","vt":"str","case":false,"propertyType":"msg","property":"state","topic":"sensor.wemo_dishwasher_status"},{"t":"gt","v":"10","vt":"str","propertyType":"msg","property":"power","topic":"sensor.wemo_lounge_cpwr"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":534,"y":864,"wires":[["b151ecb8.4c036"]]},{"id":"8d57a1bd.af236","type":"template","z":"1470632c.5748cd","name":"Running","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Running\"\n   }\n}","output":"str","x":812,"y":864,"wires":[["936839d9.0a5f48"]]},{"id":"ff063765.e17228","type":"and-gate","z":"1470632c.5748cd","name":"Set Clean","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.wemo_lounge"},{"t":"eq","v":"Running","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.wemo_dishwasher_status"},{"t":"lt","v":"10","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.wemo_lounge_cpwr"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":524,"y":816,"wires":[["95b52a11.cd2de8"]]},{"id":"c2425b60.65a6f8","type":"template","z":"1470632c.5748cd","name":"Clean","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Clean\"\n   }\n}","output":"str","x":802,"y":816,"wires":[["936839d9.0a5f48"]]},{"id":"628354c0.2bc8fc","type":"template","z":"1470632c.5748cd","name":"Power Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.dishwasher_status\",\n    \"option\": \"Power Off\"\n   }\n}","output":"str","x":812,"y":960,"wires":[["936839d9.0a5f48"]]},{"id":"2b16458d.2f3d5a","type":"delay","z":"1470632c.5748cd","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":348,"y":784,"wires":[["ff063765.e17228"]]},{"id":"2c55f984.45aa16","type":"api-current-state","z":"1470632c.5748cd","name":"State?","server":"fec0965e.38fcf8","halt_if":"Idle","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":674,"y":912,"wires":[["4bc2f942.aa3938"],[]]},{"id":"b151ecb8.4c036","type":"api-current-state","z":"1470632c.5748cd","name":"State?","server":"fec0965e.38fcf8","halt_if":"Running","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":674,"y":864,"wires":[["8d57a1bd.af236"],[]]},{"id":"95b52a11.cd2de8","type":"api-current-state","z":"1470632c.5748cd","name":"State?","server":"fec0965e.38fcf8","halt_if":"Clean","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.wemo_dishwasher_status","state_type":"str","outputs":2,"x":674,"y":816,"wires":[["c2425b60.65a6f8"],[]]},{"id":"19e717a4.e2b798","type":"trigger-state","z":"1470632c.5748cd","name":"Dishwasher State","server":"351c96ee.9dc3aa","entityid":"sensor.wemo_dishwasher_status","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"id":"clg70dtdk2m","targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is_not","comparatorValueDatatype":"str","comparatorValue":"Running"}],"constraintsmustmatch":"all","outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":122,"y":864,"wires":[["2b16458d.2f3d5a"],["c0a18c30.55a02","852d5a64.3f22f8"]]},{"id":"fec0965e.38fcf8","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open"}]

[{"id":"84899c7.a27e96","type":"server-state-changed","z":"1470632c.5748cd","name":"Washer Switch","server":"351c96ee.9dc3aa","entityidfilter":"switch.aeotec_ss_1_switch","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"off","halt_if_type":"str","halt_if_compare":"is","outputs":2,"x":128,"y":1296,"wires":[["aa86da27.dead08","d05fd0f8.e308e","63c36801.d18bf8"],["1bd62b04.7c2495"]]},{"id":"d05fd0f8.e308e","type":"and-gate","z":"1470632c.5748cd","name":"Set Idle","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"regex","v":"Power Off","vt":"str","case":false,"propertyType":"msg","property":"payload","topic":"sensor.laundry_status"},{"t":"lt","v":"3","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.aeotec_ss_1_power"},{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"input_boolean.washer_stopwatch"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":492,"y":1248,"wires":[["4c4b935e.faaebc"]]},{"id":"810f1997.bf67d8","type":"template","z":"1470632c.5748cd","name":"Idle","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Idle\"\n   }\n}","output":"str","x":786,"y":1248,"wires":[["384d06ec.81203a"]]},{"id":"384d06ec.81203a","type":"api-call-service","z":"1470632c.5748cd","name":"HA","server":"351c96ee.9dc3aa","service_domain":"","service":"","data":"","render_data":false,"mergecontext":"","output_location":"payload","output_location_type":"msg","x":1012.3479042053223,"y":1216.1550951004028,"wires":[[]]},{"id":"aa86da27.dead08","type":"and-gate","z":"1470632c.5748cd","name":"Set Cleaning","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"regex","v":"Idle","vt":"str","case":false,"propertyType":"msg","property":"payload","topic":"sensor.laundry_status"},{"t":"gt","v":"10","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.aeotec_ss_1_power"},{"t":"eq","v":"off","vt":"str","propertyType":"msg","property":"payload","topic":"input_boolean.washer_stopwatch"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":502,"y":1200,"wires":[["db8bb8e5.acd908"]]},{"id":"309b4145.710e3e","type":"template","z":"1470632c.5748cd","name":"Cleaning","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Cleaning\"\n   }\n}","output":"str","x":796,"y":1168,"wires":[["384d06ec.81203a"]]},{"id":"1bd62b04.7c2495","type":"template","z":"1470632c.5748cd","name":"Power Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Power Off\"\n   }\n}","output":"str","x":796,"y":1360,"wires":[["384d06ec.81203a"]]},{"id":"558b6afe.369ec4","type":"server-state-changed","z":"1470632c.5748cd","name":"Washer State","server":"351c96ee.9dc3aa","entityidfilter":"sensor.laundry_status","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"Cleaning","halt_if_type":"str","halt_if_compare":"is_not","outputs":2,"x":118,"y":1200,"wires":[["66cd291.5cfbcd8"],["aa86da27.dead08","d05fd0f8.e308e"]]},{"id":"66cd291.5cfbcd8","type":"delay","z":"1470632c.5748cd","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":326,"y":1088,"wires":[["63c36801.d18bf8"]]},{"id":"4c4b935e.faaebc","type":"api-current-state","z":"1470632c.5748cd","name":"State?","server":"351c96ee.9dc3aa","halt_if":"Idle","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":642,"y":1248,"wires":[["810f1997.bf67d8","2a9b437b.8baadc","f6eaabe.ca61e58"],[]]},{"id":"db8bb8e5.acd908","type":"api-current-state","z":"1470632c.5748cd","name":"State?","server":"351c96ee.9dc3aa","halt_if":"Cleaning","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":642,"y":1200,"wires":[["309b4145.710e3e","5be251d.fb46db"],[]]},{"id":"2a9b437b.8baadc","type":"template","z":"1470632c.5748cd","name":"Janet Complete","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"script\",\n  \"service\": \"janet_speech_engine\",\n  \"data\": {\n    \"call_greeting\": 1,\n    \"CustomMessage\": \"Wash cycle complete, enjoy the clean clothes!\"\n   }\n}","output":"str","x":816,"y":1280,"wires":[["384d06ec.81203a"]]},{"id":"49c2bd72.5aba14","type":"api-current-state","z":"1470632c.5748cd","name":"State?","server":"351c96ee.9dc3aa","halt_if":"Cleaning","halt_if_type":"str","halt_if_compare":"is_not","override_topic":false,"override_payload":false,"override_data":false,"entity_id":"sensor.laundry_status","state_type":"str","outputs":2,"x":642,"y":1120,"wires":[["620f6e90.bb4e8","64f716dc.ea4108"],[]]},{"id":"63c36801.d18bf8","type":"and-gate","z":"1470632c.5748cd","name":"Set Failed","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"eq","v":"Cleaning","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.laundry_status"},{"t":"lte","v":"0.0","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.aeotec_ss_1_power"}],"outputTopic":"washer_value","gateType":"and","emitOnlyIfTrue":true,"x":490.39210510253906,"y":1124.9483041763306,"wires":[["49c2bd72.5aba14"]]},{"id":"620f6e90.bb4e8","type":"template","z":"1470632c.5748cd","name":"Janet Failed","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"script\",\n  \"service\": \"janet_speech_engine\",\n  \"data\": {\n    \"call_greeting\": 1,\n    \"CustomMessage\": \"The Laundry cycle failed.\"\n   }\n}","output":"str","x":806,"y":1104,"wires":[["384d06ec.81203a"]]},{"id":"8c10391c.2c6ea8","type":"server-state-changed","z":"1470632c.5748cd","name":"Washer Stopwatch","server":"351c96ee.9dc3aa","entityidfilter":"input_boolean.washer_stopwatch","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":138,"y":1248,"wires":[["aa86da27.dead08","d05fd0f8.e308e","ab6ac6e2.0585f8"]]},{"id":"d5d222ab.59368","type":"delay","z":"1470632c.5748cd","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":316,"y":1168,"wires":[["d05fd0f8.e308e"]]},{"id":"f6eaabe.ca61e58","type":"template","z":"1470632c.5748cd","name":"Stopwatch Off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_boolean\",\n  \"service\": \"turn_off\",\n  \"data\": {\n    \"entity_id\": \"input_boolean.washer_stopwatch\",\n   }\n}","output":"str","x":816,"y":1312,"wires":[["384d06ec.81203a"]]},{"id":"5be251d.fb46db","type":"template","z":"1470632c.5748cd","name":"Stopwatch On","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"input_boolean\",\n  \"service\": \"turn_on\",\n  \"data\": {\n    \"entity_id\": \"input_boolean.washer_stopwatch\",\n   }\n}","output":"str","x":816,"y":1200,"wires":[["384d06ec.81203a"]]},{"id":"64f716dc.ea4108","type":"template","z":"1470632c.5748cd","name":"Persist Notification","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"domain\": \"persistent_notification\",\n  \"service\": \"create\",\n  \"data\": {\n    \"message\": \"Washer Cycle Failed\",\n    \"title\": \"Washing Machine\"\n   }\n}","output":"str","x":826,"y":1072,"wires":[["384d06ec.81203a"]]},{"id":"be2ff37e.cd5a1","type":"delay","z":"1470632c.5748cd","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":326,"y":1360,"wires":[["ab6ac6e2.0585f8"]]},{"id":"ab6ac6e2.0585f8","type":"and-gate","z":"1470632c.5748cd","name":"Set Reset","rules":[{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"switch.aeotec_ss_1_switch"},{"t":"lt","v":"1","vt":"str","propertyType":"msg","property":"payload","topic":"sensor.aeotec_ss_1_power"},{"t":"eq","v":"on","vt":"str","propertyType":"msg","property":"payload","topic":"input_boolean.washer_stopwatch"}],"outputTopic":"dishwasher_value","gateType":"and","emitOnlyIfTrue":true,"x":492,"y":1360,"wires":[["810f1997.bf67d8","f6eaabe.ca61e58"]]},{"id":"ec3dbb3d.6e8ec8","type":"trigger-state","z":"1470632c.5748cd","name":"Washer Power","server":"351c96ee.9dc3aa","entityid":"sensor.aeotec_ss_1_power","entityidfiltertype":"exact","debugenabled":false,"constraints":[],"constraintsmustmatch":"all","outputs":4,"customoutputs":[{"outputId":"w8fbyiusbu","messageType":"default","messageValue":"","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":">","comparatorValue":"3"},{"outputId":"trgir9hl3c","messageType":"default","messageValue":"","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"<","comparatorValue":"1"}],"outputinitially":false,"state_type":"str","x":128,"y":1136,"wires":[["63c36801.d18bf8","aa86da27.dead08"],[],["d5d222ab.59368"],["be2ff37e.cd5a1"]]}]

If you want more of an explanation on any of it let me know.

@Kermit If possible could you explain this to me? I do not have a programming background and I am unsure what the difference between Exact vs Substring is. I can assume Exact is what it sounds like, Exact.

The substring method determines whether a string contains the characters of a specified string.

Say you had several input_booleans

  • input_boolean.test1
  • input_boolean.test2

and you used test or input_boolean.test as your entity_id and selected substring it would return both of the input_booleans above because each one contains test and input_boolean.test within itself.

@gbboy how has this been working for you. I’m just switched from webcore in SmartThings to HA, and am looking to configure appliance automations in node red. What are the latest versions of your configs?

Thanks

Hi @tommyk203 , I ended up leaving my dishwasher automation with the built in yaml as it was simplier to do what I required.

As for the laundry I’ve attached my json for the node automation however I’ve since acquired a washing machine which has a built in API for GE which I can rely on. Hope this helps you :slight_smile:

[
    {
        "id": "5c64e846.51df48",
        "type": "trigger-state",
        "z": "8fd93472.c11bf8",
        "name": "Washer Complete",
        "server": "50b24aa1.6e06f4",
        "version": 0,
        "entityid": "input_select.laundry_status",
        "entityidfiltertype": "exact",
        "debugenabled": false,
        "constraints": [
            {
                "id": "lsmcswii30j",
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "previous_state",
                "propertyValue": "old_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "Cleaning"
            },
            {
                "id": "q4ssn1est5r",
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "Idle"
            }
        ],
        "outputs": 2,
        "customoutputs": [],
        "outputinitially": false,
        "state_type": "str",
        "x": 690,
        "y": 700,
        "wires": [
            [
                "eeb24b49.c0ccd8"
            ],
            []
        ]
    },
    {
        "id": "f3b397a1.3f1338",
        "type": "http request",
        "z": "8fd93472.c11bf8",
        "d": true,
        "name": "",
        "method": "POST",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "http://IP/assistant",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 990,
        "y": 700,
        "wires": [
            []
        ]
    },
    {
        "id": "eeb24b49.c0ccd8",
        "type": "function",
        "z": "8fd93472.c11bf8",
        "d": true,
        "name": "Janet",
        "func": "return {\n        \"payload\": {\n            \"command\": \"Hi there. Wash cycle complete, enjoy the clean clothes!\",\n            \"user\": \"janet\",\n            \"broadcast\": true \n    }\n};",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 850,
        "y": 700,
        "wires": [
            [
                "f3b397a1.3f1338"
            ]
        ]
    },
    {
        "id": "fea6f0ec.d52ff",
        "type": "api-call-service",
        "z": "8fd93472.c11bf8",
        "name": "Stopwatch off",
        "server": "50b24aa1.6e06f4",
        "version": 3,
        "service_domain": "input_boolean",
        "service": "turn_off",
        "entityId": "input_boolean.washer_stopwatch",
        "data": "",
        "mergecontext": "",
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "",
                "valueType": "data"
            }
        ],
        "queue": "none",
        "x": 549.166654586792,
        "y": 591.6666660308838,
        "wires": [
            [
                "3f61e214.4c1b9e",
                "49825341.99fbdc"
            ]
        ]
    },
    {
        "id": "3f61e214.4c1b9e",
        "type": "template",
        "z": "8fd93472.c11bf8",
        "name": "Set to Idle",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Idle\"\n   }\n}",
        "output": "str",
        "x": 700.0000133514404,
        "y": 592.6666679382324,
        "wires": [
            [
                "c10fc815.f607e8"
            ]
        ]
    },
    {
        "id": "c10fc815.f607e8",
        "type": "api-call-service",
        "z": "8fd93472.c11bf8",
        "name": "HA",
        "server": "50b24aa1.6e06f4",
        "version": 3,
        "service_domain": "",
        "service": "",
        "data": "",
        "mergecontext": "",
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "",
                "valueType": "data"
            }
        ],
        "queue": "none",
        "x": 816.9999771118164,
        "y": 592.6666679382324,
        "wires": [
            [
                "5c64e846.51df48"
            ]
        ]
    },
    {
        "id": "b68fc580.db0078",
        "type": "comment",
        "z": "8fd93472.c11bf8",
        "name": "Washer",
        "info": "",
        "x": 70,
        "y": 514.6666564941406,
        "wires": []
    },
    {
        "id": "1f0999b8.6c13f6",
        "type": "trigger-state",
        "z": "8fd93472.c11bf8",
        "name": "Washer Status",
        "server": "50b24aa1.6e06f4",
        "version": 0,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityid": "input_select.laundry_status",
        "entityidfiltertype": "exact",
        "debugenabled": false,
        "constraints": [
            {
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "previous_state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "Idle, Power Off",
                "propertyValue": "old_state.state"
            },
            {
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "current_state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "Cleaning",
                "propertyValue": "new_state.state"
            }
        ],
        "outputs": 2,
        "customoutputs": [],
        "outputinitially": false,
        "state_type": "str",
        "x": 99.99995422363281,
        "y": 566,
        "wires": [
            [
                "b9b4be5d.ae21b"
            ],
            []
        ]
    },
    {
        "id": "ae5326f5.bc8678",
        "type": "delay",
        "z": "8fd93472.c11bf8",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 395.99999809265137,
        "y": 591.6666660308838,
        "wires": [
            [
                "fea6f0ec.d52ff"
            ]
        ]
    },
    {
        "id": "b190d030.04a9a",
        "type": "inject",
        "z": "8fd93472.c11bf8",
        "name": "Manual Start",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 370.99996185302734,
        "y": 547.0000104904175,
        "wires": [
            [
                "ae5326f5.bc8678"
            ]
        ]
    },
    {
        "id": "b9b4be5d.ae21b",
        "type": "delay",
        "z": "8fd93472.c11bf8",
        "name": "",
        "pauseType": "delay",
        "timeout": "1",
        "timeoutUnits": "minutes",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 88.99996185302734,
        "y": 615.0000038146973,
        "wires": [
            [
                "88a02fa9.0ebd6"
            ]
        ]
    },
    {
        "id": "88a02fa9.0ebd6",
        "type": "trigger-state",
        "z": "8fd93472.c11bf8",
        "name": "Washer Power",
        "server": "50b24aa1.6e06f4",
        "version": 0,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityid": "sensor.aeotec_ss_1_electric_w",
        "entityidfiltertype": "exact",
        "debugenabled": false,
        "constraints": [
            {
                "id": "7u9werj421v",
                "targetType": "entity_id",
                "targetValue": "input_boolean.washer_stopwatch",
                "propertyType": "current_state",
                "propertyValue": "new_state.state",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "on"
            }
        ],
        "outputs": 2,
        "customoutputs": [],
        "outputinitially": false,
        "state_type": "str",
        "x": 120.99995422363281,
        "y": 659,
        "wires": [
            [
                "d9c555eb.904078"
            ],
            []
        ]
    },
    {
        "id": "d9c555eb.904078",
        "type": "ha-wait-until",
        "z": "8fd93472.c11bf8",
        "name": "",
        "server": "50b24aa1.6e06f4",
        "version": 0,
        "outputs": 2,
        "entityId": "sensor.aeotec_ss_1_electric_w",
        "entityIdFilterType": "exact",
        "property": "state",
        "comparator": "lt",
        "value": "2.65",
        "valueType": "num",
        "timeout": "40",
        "timeoutType": "num",
        "timeoutUnits": "seconds",
        "entityLocation": "",
        "entityLocationType": "none",
        "checkCurrentState": true,
        "blockInputOverrides": true,
        "x": 266.81249237060547,
        "y": 593.0602588653564,
        "wires": [
            [
                "ae5326f5.bc8678"
            ],
            []
        ]
    },
    {
        "id": "c5b2b966.39cf08",
        "type": "server-state-changed",
        "z": "8fd93472.c11bf8",
        "name": "Washer Power",
        "server": "50b24aa1.6e06f4",
        "version": 3,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityidfilter": "sensor.aeotec_ss_1_electric_w",
        "entityidfiltertype": "exact",
        "outputinitially": false,
        "state_type": "num",
        "haltifstate": "1",
        "halt_if_type": "num",
        "halt_if_compare": "gt",
        "outputs": 2,
        "output_only_on_state_change": true,
        "for": "30",
        "forType": "num",
        "forUnits": "seconds",
        "ignorePrevStateNull": false,
        "ignorePrevStateUnknown": true,
        "ignorePrevStateUnavailable": false,
        "ignoreCurrentStateUnknown": false,
        "ignoreCurrentStateUnavailable": false,
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "",
                "valueType": "entityState"
            },
            {
                "property": "data",
                "propertyType": "msg",
                "value": "",
                "valueType": "eventData"
            },
            {
                "property": "topic",
                "propertyType": "msg",
                "value": "",
                "valueType": "triggerId"
            }
        ],
        "x": 100,
        "y": 860,
        "wires": [
            [
                "50b5e336.b6c61c"
            ],
            []
        ]
    },
    {
        "id": "4e9199e3.af85b8",
        "type": "api-call-service",
        "z": "8fd93472.c11bf8",
        "name": "Start Stopwatch",
        "server": "50b24aa1.6e06f4",
        "version": 3,
        "debugenabled": false,
        "service_domain": "input_boolean",
        "service": "turn_on",
        "entityId": "input_boolean.washer_stopwatch",
        "data": "",
        "dataType": "json",
        "mergecontext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 480,
        "y": 860,
        "wires": [
            [
                "7cd4588a.99d588"
            ]
        ]
    },
    {
        "id": "50b5e336.b6c61c",
        "type": "api-current-state",
        "z": "8fd93472.c11bf8",
        "name": "Stopwatch off?",
        "server": "50b24aa1.6e06f4",
        "version": 2,
        "outputs": 2,
        "halt_if": "off",
        "halt_if_type": "str",
        "halt_if_compare": "is",
        "entity_id": "input_boolean.washer_stopwatch",
        "state_type": "str",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "payload",
                "propertyType": "msg",
                "value": "",
                "valueType": "entityState"
            },
            {
                "property": "data",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "x": 280,
        "y": 860,
        "wires": [
            [
                "4e9199e3.af85b8",
                "e075320f.48d3a",
                "fd84c548.8ba878"
            ],
            []
        ]
    },
    {
        "id": "62088795.97c1e8",
        "type": "api-call-service",
        "z": "8fd93472.c11bf8",
        "name": "Set Laundry Status",
        "server": "50b24aa1.6e06f4",
        "version": 3,
        "debugenabled": false,
        "service_domain": "input_select",
        "service": "set_options",
        "entityId": "input_select.laundry_status",
        "data": "{ \"option\": \"Cleaning\" }",
        "dataType": "json",
        "mergecontext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 870,
        "y": 860,
        "wires": [
            []
        ]
    },
    {
        "id": "7cd4588a.99d588",
        "type": "template",
        "z": "8fd93472.c11bf8",
        "name": "Set to Cleaning",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "{ \"domain\": \"input_select\",\n  \"service\": \"select_option\",\n  \"data\": {\n    \"entity_id\": \"input_select.laundry_status\",\n    \"option\": \"Cleaning\"\n   }\n}",
        "output": "str",
        "x": 680,
        "y": 860,
        "wires": [
            [
                "62088795.97c1e8"
            ]
        ]
    },
    {
        "id": "bf31d666.5da8a8",
        "type": "hourglass",
        "z": "8fd93472.c11bf8",
        "name": "",
        "persistId": "stopwatch",
        "humanizeLocale": "",
        "x": 740,
        "y": 780,
        "wires": [
            [
                "233e8c13.302e84"
            ]
        ]
    },
    {
        "id": "e075320f.48d3a",
        "type": "change",
        "z": "8fd93472.c11bf8",
        "name": "Start",
        "rules": [
            {
                "t": "set",
                "p": "command",
                "pt": "msg",
                "to": "start",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "status",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 450,
        "y": 780,
        "wires": [
            [
                "3d2e27f5.c2ce18"
            ]
        ]
    },
    {
        "id": "49825341.99fbdc",
        "type": "change",
        "z": "8fd93472.c11bf8",
        "name": "Stop",
        "rules": [
            {
                "t": "set",
                "p": "command",
                "pt": "msg",
                "to": "stop",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "status",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 450,
        "y": 740,
        "wires": [
            [
                "bf31d666.5da8a8"
            ]
        ]
    },
    {
        "id": "fd84c548.8ba878",
        "type": "change",
        "z": "8fd93472.c11bf8",
        "name": "Reset",
        "rules": [
            {
                "t": "set",
                "p": "command",
                "pt": "msg",
                "to": "reset",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 450,
        "y": 820,
        "wires": [
            [
                "bf31d666.5da8a8"
            ]
        ]
    },
    {
        "id": "fbee1f5b.805c5",
        "type": "ha-entity",
        "z": "8fd93472.c11bf8",
        "name": "Washer Stopwatch",
        "server": "50b24aa1.6e06f4",
        "version": 1,
        "debugenabled": false,
        "outputs": 1,
        "entityType": "sensor",
        "config": [
            {
                "property": "name",
                "value": "washer stopwatch"
            },
            {
                "property": "device_class",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            },
            {
                "property": "unit_of_measurement",
                "value": ""
            }
        ],
        "state": "elapsed.human",
        "stateType": "msg",
        "attributes": [],
        "resend": true,
        "outputLocation": "",
        "outputLocationType": "none",
        "inputOverride": "allow",
        "outputOnStateChange": false,
        "outputPayload": "$entity().state ? \"on\": \"off\"",
        "outputPayloadType": "jsonata",
        "x": 1030,
        "y": 780,
        "wires": [
            []
        ]
    },
    {
        "id": "3d2e27f5.c2ce18",
        "type": "delay",
        "z": "8fd93472.c11bf8",
        "name": "",
        "pauseType": "delay",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 580,
        "y": 780,
        "wires": [
            [
                "bf31d666.5da8a8"
            ]
        ]
    },
    {
        "id": "233e8c13.302e84",
        "type": "switch",
        "z": "8fd93472.c11bf8",
        "name": "",
        "property": "elapsed.human",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "a few seconds",
                "vt": "str"
            },
            {
                "t": "else"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 870,
        "y": 780,
        "wires": [
            [],
            [
                "fbee1f5b.805c5"
            ]
        ]
    }
]

What is “hourglass?” I get an error when i attempt to import your flow.

I used it to identify the time between msgs to identify runtime