Sorry, that’s completely my fault (I should’ve tested it first). The trigger state node wont pass msg.data.attribute.fan. Heres a Poll (as you originally wanted) that will.
I try and avoid Polls running 24/7, but if you’re adding this to an existing flow, you could trigger it with a current state node and then add the switch after that.
But if you just want this to be looking for the fan to be on (every 60s) then this flow will work,
[{"id":"66093b3b.9510f4","type":"switch","z":"708e6065.155a58","name":"Grab & Output Fan (ON) Property","property":"data.attributes.fan","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":480,"y":300,"wires":[["9f00daf2.e4acb"],["652c0620.9fc4b8"]]},{"id":"9f00daf2.e4acb","type":"debug","z":"708e6065.155a58","name":">> Turn AUX Fan Switch on.....","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":260,"wires":[]},{"id":"55a5a3a9.4c1acc","type":"poll-state","z":"708e6065.155a58","name":"Poll Ecobee Thermostat (60s)","server":"41c2e4cc.1954cc","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"updateinterval":"60","updateIntervalUnits":"seconds","outputinitially":true,"outputonchanged":true,"entity_id":"climate.home","state_type":"str","halt_if":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":180,"y":300,"wires":[["66093b3b.9510f4"]]},{"id":"652c0620.9fc4b8","type":"debug","z":"708e6065.155a58","name":">> Otherwise...","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":760,"y":320,"wires":[]},{"id":"41c2e4cc.1954cc","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
Keep in mind, the msg.payload will still be the current HVAC mode (eg, heat_cool, “cool”, “heat”) after the switch; but the switch will only allow the payload to continue if it detects msg.data.attributes.fan = on. Otherwise it spits out the payload to “otherwise” (aka. off). So you may need a change node payload after the switch; something like “set msg.payload to on” depending on how you flow goes.
Heres the flow with the change nodes…
[{"id":"66093b3b.9510f4","type":"switch","z":"708e6065.155a58","name":"Grab & Output Fan (ON) Property","property":"data.attributes.fan","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":480,"y":300,"wires":[["f0e498b1.8a9aa"],["9abb5a94.d98f4"]]},{"id":"55a5a3a9.4c1acc","type":"poll-state","z":"708e6065.155a58","name":"Poll Ecobee Thermostat (60s)","server":"41c2e4cc.1954cc","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"updateinterval":"60","updateIntervalUnits":"seconds","outputinitially":true,"outputonchanged":true,"entity_id":"climate.home","state_type":"str","halt_if":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":180,"y":300,"wires":[["66093b3b.9510f4"]]},{"id":"f0e498b1.8a9aa","type":"change","z":"708e6065.155a58","name":"Msg.payload >> on","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":260,"wires":[[]]},{"id":"9abb5a94.d98f4","type":"change","z":"708e6065.155a58","name":"Msg.payload >> off","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":340,"wires":[[]]},{"id":"41c2e4cc.1954cc","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
And if you want the specific property path for anything, run the inject node, and look here. This button will copy the attribute path.