Automated Dyson AM09 (Combined with Broadlink RM Pro 4 & Temperature Sensor)

Hi all,
Totally new to Home Assistant and any level of programming in general… The current lockdown situation has had me looking at things to keep me occupied. :smile:

The community posts have been a great to help to build up my understanding piece by piece… still a long way to go! I thought I’d share my first real “success” for any similar newbies and welcome any constructive feedback.

Background:
I live in a small apartment and the air conditioning isn’t the best for heating. I have a pair of dyson AM09 fan heaters which are great to heat the rooms when needed.

I was playing around trying to combine the dyson and the broadlink IR blaster thermometer into a thermostat system. My goals were to have a desired temperature, and then have the IR blaster to switch the Dyson heater on or off (including the oscillation of the fan) depending on the rooms current temperature. I also wanted this to link to my presence and if I was home or not

Solution:
To do this, I created an on/off input switch to switch the system on/off, along with a slider to set the desired temperature (at present I have the one on/off slider to cover the temperature for both rooms).

I then used Node-Red to create the flow, the image below is for the one room. I’ve duplciated the flow for the other room, changing the Entity ID’s to suit the IR blaster , temperature sensor etc.

As the Dyson doens’t report it’s current status, I’ve created the flow to ensure the osciallation sets to off each time the fan is turned off by the flow.

Only shortfall I’m aware of at present is that the Dyson will turn on based on the mode (hot or cold), fan speed and temperature that it last used. I considered creating a script to replace “Power On” to cycle thorugh the required IR triggers, but I don’t see any need for that at presnt.

Here’s the Node Red export for anyone who wants to look at it. I’m probably 5 days into playing with Home Assistant; any feedback for improving the flow would be very welcome!

[{"id":"729b98d6.5426b8","type":"tab","label":"Living Room Heater","disabled":false,"info":""},{"id":"c95c2173.4aeaf","type":"api-current-state","z":"729b98d6.5426b8","name":"Target Temperature","server":"eb3f6de2.d24e9","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"input_number.temperature","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":990,"y":460,"wires":[["cdbb47c.a7192b8"]]},{"id":"6b526a0e.e3cab4","type":"api-current-state","z":"729b98d6.5426b8","name":"Current Temperature","server":"eb3f6de2.d24e9","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"sensor.bedroom_sensor_temperature","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":1000,"y":680,"wires":[["9dcef4b5.02ef88"]]},{"id":"accca21d.d8a45","type":"ramp-thermostat","z":"729b98d6.5426b8","name":"Temp","profile":"42fe7fd1.29a9","hysteresisplus":".3","hysteresisminus":"0","x":1330,"y":560,"wires":[["dae0a2d8.49aea"],[],[]]},{"id":"9dcef4b5.02ef88","type":"change","z":"729b98d6.5426b8","name":"Set Current","rules":[{"t":"set","p":"topic","pt":"msg","to":"setCurrent","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1190,"y":680,"wires":[["accca21d.d8a45"]]},{"id":"cdbb47c.a7192b8","type":"change","z":"729b98d6.5426b8","name":"Set Target","rules":[{"t":"set","p":"topic","pt":"msg","to":"setTarget","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1180,"y":460,"wires":[["accca21d.d8a45"]]},{"id":"ba290a56.bddb18","type":"inject","z":"729b98d6.5426b8","name":"","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":580,"wires":[["f1f68ea8.7c8ad"]]},{"id":"dae0a2d8.49aea","type":"switch","z":"729b98d6.5426b8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1470,"y":540,"wires":[["f0e05d57.a73bb"],["5fc2e569.a10fac"]]},{"id":"7f213e40.522c8","type":"api-current-state","z":"729b98d6.5426b8","name":"","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"home","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"device_tracker.iphone","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":830,"y":580,"wires":[["c95c2173.4aeaf","6b526a0e.e3cab4"],["1171cf6e.eca101","e04043b2.81f72"]]},{"id":"f1f68ea8.7c8ad","type":"api-current-state","z":"729b98d6.5426b8","name":"","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"input_boolean.living_room_heater","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":460,"y":580,"wires":[["7f213e40.522c8"],[]]},{"id":"aadaf048.6f342","type":"server-state-changed","z":"729b98d6.5426b8","name":"","server":"eb3f6de2.d24e9","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.living_room_heater","entityidfiltertype":"exact","outputinitially":true,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"x":450,"y":740,"wires":[["7f213e40.522c8"],["1171cf6e.eca101","e04043b2.81f72"]]},{"id":"f0e05d57.a73bb","type":"api-current-state","z":"729b98d6.5426b8","name":"Dyson Power On?","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.dyson_heater_power","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":1670,"y":520,"wires":[["60edbab6.10ffe4"],["8ed54daa.50c5d"]]},{"id":"8ed54daa.50c5d","type":"api-call-service","z":"729b98d6.5426b8","name":"Power On","server":"eb3f6de2.d24e9","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"switch.dyson_heater_power","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1900,"y":560,"wires":[["60edbab6.10ffe4"]]},{"id":"6597b437.dfa02c","type":"api-call-service","z":"729b98d6.5426b8","name":"Power Off","server":"eb3f6de2.d24e9","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.dyson_heater_power","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":2160,"y":640,"wires":[[]]},{"id":"5fc2e569.a10fac","type":"api-current-state","z":"729b98d6.5426b8","name":"Dyson Power Off?","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.dyson_heater_power","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":1670,"y":580,"wires":[["aba1698f.1a9108"],[]]},{"id":"60edbab6.10ffe4","type":"api-current-state","z":"729b98d6.5426b8","name":"Oscillate On?","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.dyson_heater_oscillate","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":2060,"y":500,"wires":[[],["c2ffc66.f548638"]]},{"id":"c2ffc66.f548638","type":"api-call-service","z":"729b98d6.5426b8","name":"Oscillate On","server":"eb3f6de2.d24e9","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"switch.dyson_heater_oscillate","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":2250,"y":540,"wires":[[]]},{"id":"aba1698f.1a9108","type":"api-call-service","z":"729b98d6.5426b8","name":"Oscillate Off","server":"eb3f6de2.d24e9","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.dyson_heater_oscillate","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1910,"y":620,"wires":[["6597b437.dfa02c"]]},{"id":"1171cf6e.eca101","type":"api-current-state","z":"729b98d6.5426b8","name":"Power On?","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.dyson_heater_power","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":970,"y":780,"wires":[["46f226f5.7063f8"],[]]},{"id":"432af1f4.b0ea","type":"api-call-service","z":"729b98d6.5426b8","name":"Oscillate Off","server":"eb3f6de2.d24e9","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.dyson_heater_oscillate","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1170,"y":860,"wires":[[]]},{"id":"7f83625c.31688c","type":"api-call-service","z":"729b98d6.5426b8","name":"Power Off","server":"eb3f6de2.d24e9","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.dyson_heater_power","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1280,"y":780,"wires":[[]]},{"id":"46f226f5.7063f8","type":"delay","z":"729b98d6.5426b8","name":"","pauseType":"delay","timeout":"400","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1130,"y":780,"wires":[["7f83625c.31688c"]]},{"id":"e04043b2.81f72","type":"api-current-state","z":"729b98d6.5426b8","name":"Oscillate On?","server":"eb3f6de2.d24e9","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.dyson_heater_oscillate","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":980,"y":860,"wires":[["432af1f4.b0ea"],[]]},{"id":"eb3f6de2.d24e9","type":"server","z":"","name":"Home Assistant","addon":true},{"id":"42fe7fd1.29a9","type":"profile","z":"","name":"Home","time1":"00:00","temp1":"0","time2":"23:59","temp2":"0","time3":"","temp3":"","time4":"","temp4":"","time5":"","temp5":"","time6":"","temp6":"","time7":"","temp7":"","time8":"","temp8":"","time9":"","temp9":"","time10":"","temp10":""}]
2 Likes

Awe man!! I bought a broadlink RM and thought it was incompatible with the AM09.

I have one of those fans and want to do the same. What broadlink and thermostat are you using?