@GeeMan some of your config does not seem to relate to your outputs. Let’s go through each bit.
tuya-mqtt script
config.json - topic is tuya/switch but from your MQTT Explorer output I don’t see the /switch in your tree. It’s also limiting to add the switch part as you might add additional tuya devices later. Let’s just make it tuya/
devices.conf - I also don’t get why your config shows the name as “Wall Plate” yet in your mqtt output it’s switchwall_plate. Call me suspicious of spaces in linux but change devices.conf to be switchwall_plate like your output. It does make me wonder how this is working though or if you have multiple instances? Also make sure you are aware how to update the devices.conf as you have to create a new-devices.conf and use the merge-devices.js to have it updated.
So now either you have found your issue or it’s as it was before where the state of the Tuya switch is updating in Openhab (when controlled directly from device or tuya app) but you cannot control it from Openhab.
The next step would be to put the binding and the tuya-mqtt script into debug and see what happens.
Openhab
ssh openhab@localhost -p 8101
password is habopen
log:set DEBUG org.openhab.binding.mqtt
Ctrl+D to exit
tuya-mqtt script
now start the tuya-mqtt script like so (add sudo or whatever is required for how you set it up)
DEBUG=tuya-mqtt:* node tuya-mqtt.js
Now when I switch on from openhab.log I get:
2022-04-26 07:57:22.856 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value ON to topic tuya/outdoor_gpo1/dps/1/command
2022-04-26 07:57:24.345 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value OFF to topic tuya/outdoor_gpo1/dps/1/command
and in the screen output from the tuya-mqtt script
tuya-mqtt:command Received MQTT message -> {"topic":"tuya/outdoor_gpo1/dps/1/command","message":"true"} +0ms
tuya-mqtt:command Received command for DPS1: true +0ms
tuya-mqtt:tuyapi Set device bff416b919185d3cd79hba -> {"dps":"1","set":true} +796ms
tuya-mqtt:tuyapi Received JSON data from device bff416b919185d3cd79hba -> {"101":true} +27ms
tuya-mqtt:state MQTT DPS JSON: tuya/outdoor_gpo1/dps/state -> {"101":true} +822ms
tuya-mqtt:state MQTT DPS101: tuya/outdoor_gpo1/dps/101/state -> true +0ms
tuya-mqtt:tuyapi Received JSON data from device bff416b919185d3cd79hba -> {"1":true} +6ms
tuya-mqtt:state tuya/outdoor_gpo1/switch_1 ON +6ms
tuya-mqtt:state MQTT DPS JSON: tuya/outdoor_gpo1/dps/state -> {"1":true} +0ms
tuya-mqtt:state MQTT DPS1: tuya/outdoor_gpo1/dps/1/state -> true +0ms
tuya-mqtt:command Received MQTT message -> {"topic":"tuya/outdoor_gpo1/dps/1/command","message":"false"} +1s
tuya-mqtt:command Received command for DPS1: false +1s
tuya-mqtt:tuyapi Set device bff416b919185d3cd79hba -> {"dps":"1","set":false} +1s
tuya-mqtt:tuyapi Received JSON data from device bff416b919185d3cd79hba -> {"101":false} +19ms
tuya-mqtt:state MQTT DPS JSON: tuya/outdoor_gpo1/dps/state -> {"101":false} +1s
tuya-mqtt:state MQTT DPS101: tuya/outdoor_gpo1/dps/101/state -> false +0ms
tuya-mqtt:tuyapi Received JSON data from device bff416b919185d3cd79hba -> {"1":false} +61ms
tuya-mqtt:state tuya/outdoor_gpo1/switch_1 OFF +61ms
tuya-mqtt:state MQTT DPS JSON: tuya/outdoor_gpo1/dps/state -> {"1":false} +1ms
tuya-mqtt:state MQTT DPS1: tuya/outdoor_gpo1/dps/1/state -> false +0ms
Hopefully this should help you find when the breakdown is happening. If after all this it’s still not working, I would suggest creating a thing file rather than letting Paper UI create it as that is the last difference between our setups.