I like to use JSONata in the change node in combination with a filter node to limit repeated messages to do this sort of thing.
e.g.
[{"id":"8b48b1d7ea63411d","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Owl/Away/HotWateR","payload":"on","payloadType":"str","x":130,"y":4600,"wires":[["f41e062cab9769c2"]]},{"id":"f41e062cab9769c2","type":"join","z":"da8a6ef0b3c9a5c8","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":410,"y":4680,"wires":[["cf0b16afe5f152c9"]]},{"id":"bbdd42f7060df635","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Owl/Away/HotWateR","payload":"off","payloadType":"str","x":130,"y":4640,"wires":[["f41e062cab9769c2"]]},{"id":"d4e2ea6db1225b06","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Owl/Away/HeatingUpstairs","payload":"on","payloadType":"str","x":160,"y":4680,"wires":[["f41e062cab9769c2"]]},{"id":"3d511336015abe66","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Owl/Away/HeatingUpstairs","payload":"off","payloadType":"str","x":160,"y":4720,"wires":[["f41e062cab9769c2"]]},{"id":"72d7a9c505afb22a","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Owl/Away/HeatingDownstairs","payload":"on","payloadType":"str","x":150,"y":4760,"wires":[["f41e062cab9769c2"]]},{"id":"5ceea35d519d6136","type":"inject","z":"da8a6ef0b3c9a5c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Owl/Away/HeatingDownstairs","payload":"off","payloadType":"str","x":150,"y":4800,"wires":[["f41e062cab9769c2"]]},{"id":"cf0b16afe5f152c9","type":"change","z":"da8a6ef0b3c9a5c8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"\"on\" in $$.payload.* ? \"off\" : \"on\"","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"Owl/Away","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":560,"y":4680,"wires":[["7841e6ea5ad985fd"]]},{"id":"7841e6ea5ad985fd","type":"rbe","z":"da8a6ef0b3c9a5c8","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":710,"y":4680,"wires":[["9b498d9f9b9b0b73"]]},{"id":"9b498d9f9b9b0b73","type":"debug","z":"da8a6ef0b3c9a5c8","name":"debug 231","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":510,"y":4540,"wires":[]}]
JSONata expression after join
"on" in $$.payload.* ? "off" : "on"