To help you out a little this is my log when opening the gate, stopping it and closing it again.
17:15:17 MQT: tele/frontgate/SENSOR = {"Time":"2020-05-25T17:15:17","Switch2":"closed"}
17:15:50 MQT: stat/frontgate/RESULT = {"POWER1":"closed"}
17:15:50 MQT: stat/frontgate/POWER1 = closed (retained)
17:15:50 MQT: cmnd/gatestate/POWER2 = open (retained)
17:15:51 MQT: stat/frontgate/RESULT = {"POWER1":"open"}
17:15:51 MQT: stat/frontgate/POWER1 = open (retained)
17:15:56 MQT: stat/frontgate/RESULT = {"POWER1":"closed"}
17:15:56 MQT: stat/frontgate/POWER1 = closed (retained)
17:15:57 MQT: stat/frontgate/RESULT = {"POWER1":"open"}
17:15:57 MQT: stat/frontgate/POWER1 = open (retained)
17:15:58 MQT: stat/frontgate/RESULT = {"POWER1":"closed"}
17:15:58 MQT: stat/frontgate/POWER1 = closed (retained)
17:15:59 MQT: stat/frontgate/RESULT = {"POWER1":"open"}
17:15:59 MQT: stat/frontgate/POWER1 = open (retained)
17:16:09 MQT: cmnd/gatestate/POWER2 = closed (retained)
and my code for it.
Code:
- platform: mqtt
name: "Front Gate"
state_topic: "cmnd/gatestate/POWER2"
command_topic: "cmnd/frontgate/POWER"
availability_topic: "tele/frontgate/LWT"
payload_open: "ON"
payload_close: "ON"
payload_stop: "ON"
state_open: "open"
state_closed: "closed"
payload_available: "Online"
payload_not_available: "Offline"
optimistic: false
retain: false
Good chance you also aren't using the cmnd topic for the state in HA.