Writeable Property
LoRaWAN does not have the notion of writing/setting a property (or running an action, for that matter); it is only possible to enqueue a message that then need to be processed by the device.
There is already a (generic) action on the thing description to enqueue a message. Apart from the message body itself (either as binary data (i.e., base64 encoded), or as a JSON object (only if the device profile has a codec set)) this requires an fPort to be specified.
The device driver has "setProperty" functionality using the "enqueue" mechanism. Since this needs an fPort, it is possible to specify the fPort in the "@type" of the property itself. If not set, a default value of 1 is used. It is up to the end device to use (validate/verify) the fPort value.
"thermostat": {
"title": "Thermostat",
"type": "number",
"@type": [
"swx:lorawan,f_port=1"
],
"readOnly": false
},