@David_M. You can use Node Red to subscribe/publish MQTT messages and update custom switches entities based on the MQTT calls… I have set up to schedule to switch on the heater … import the following node red flow as an example of the calls you can make via MQTT… a bit messy but should work
[{“id”:“be405609.293978”,“type”:“mqtt out”,“z”:“a5040b9a.03aa78”,“name”:“Switch Heater ON”,“topic”:“homeassistant/brivis/ha/mode/set”,“qos”:"",“retain”:"",“broker”:“cef5e894.160838”,“x”:730,“y”:340,“wires”:[],“info”:“msg.payload=“heat””},{“id”:“f139997.cb83368”,“type”:“inject”,“z”:“a5040b9a.03aa78”,“name”:“Start 7:00 Weekday”,“topic”:"",“payload”:"",“payloadType”:“date”,“repeat”:"",“crontab”:“00 07 * * 1,2,3,4,5”,“once”:false,“onceDelay”:0.1,“x”:160,“y”:340,“wires”:[[“1c6cf564.efafcb”,“c01fa1c4.a4c1e”]]},{“id”:“1c6cf564.efafcb”,“type”:“function”,“z”:“a5040b9a.03aa78”,“name”:“Payload “heat””,“func”:“msg.payload=“heat”\nreturn msg;”,“outputs”:1,“noerr”:0,“x”:490,“y”:340,“wires”:[[“be405609.293978”]]},{“id”:“c01fa1c4.a4c1e”,“type”:“delay”,“z”:“a5040b9a.03aa78”,“name”:"",“pauseType”:“delay”,“timeout”:“5”,“timeoutUnits”:“seconds”,“rate”:“1”,“nbRateUnits”:“1”,“rateUnits”:“second”,“randomFirst”:“1”,“randomLast”:“5”,“randomUnits”:“seconds”,“drop”:false,“x”:470,“y”:440,“wires”:[[“617b061e.8ac0e8”]]},{“id”:“617b061e.8ac0e8”,“type”:“function”,“z”:“a5040b9a.03aa78”,“name”:“Set 20 Degrees”,“func”:“msg.payload=“20”\nreturn msg;”,“outputs”:1,“noerr”:0,“x”:690,“y”:440,“wires”:[[“2f3be1bb.60b5ce”]]},{“id”:“2f3be1bb.60b5ce”,“type”:“mqtt out”,“z”:“a5040b9a.03aa78”,“name”:“Set Temperature”,“topic”:“homeassistant/brivis/ha/temperature/set”,“qos”:"",“retain”:"",“broker”:“cef5e894.160838”,“x”:940,“y”:440,“wires”:[],“info”:“msg.payload=“21"”},{“id”:“26395e6a.ec8992”,“type”:“inject”,“z”:“a5040b9a.03aa78”,“name”:“Start 8:20 Weekend”,“topic”:”",“payload”:"",“payloadType”:“date”,“repeat”:"",“crontab”:“20 08 * * 4,0”,“once”:false,“onceDelay”:0.1,“x”:160,“y”:480,“wires”:[[“1c6cf564.efafcb”,“c01fa1c4.a4c1e”]]},{“id”:“cef5e894.160838”,“type”:“mqtt-broker”,“z”:"",“name”:"",“broker”:“192.168.1.45”,“port”:“1883”,“clientid”:"",“usetls”:false,“compatmode”:false,“keepalive”:“60”,“cleansession”:true,“birthTopic”:"",“birthQos”:“0”,“birthPayload”:"",“closeTopic”:"",“closeQos”:“0”,“closePayload”:"",“willTopic”:"",“willQos”:“0”,“willPayload”:""}]