uplink
uplink copied to clipboard
feat: support actions on new topics
Closes #
Changes
Why?
Broker will soon send action on specifically named topics of the format:
/tenants/{tenant_id}/devices/{device_id}/actions/{action_name}
Uplink is expected to respond to these actions on special topics of the format:
/tenants/{tenant_id}/devices/{device_id}/action_status/{action_name}
Trials Performed
Tested with the following commands:
mosquitto_sub -h stage.bytebeam.io -p 1883 -t /tenants/demo/devices/1002/action_status/lock
... # in another terminal
mosquitto_pub -h stage.bytebeam.io -t /tenants/demo/devices/1002/actions/lock -m '{ "action_id": "1", "kind": "process", "name": "lock", "payload": "{}" }'
It was observed that actions was received and responded to by uplink appropriately:
[{"action_id":"1","sequence":0,"timestamp":1700289329194,"state":"Received","progress":0,"errors":[]}]
[{"action_id":"1","sequence":1,"timestamp":1700289329194,"state":"in_progress","progress":13,"errors":[]}]
[{"action_id":"1","sequence":2,"timestamp":1700289329195,"state":"in_progress","progress":26,"errors":[]}]
[{"action_id":"1","sequence":3,"timestamp":1700289330195,"state":"in_progress","progress":36,"errors":[]}]
[{"action_id":"1","sequence":4,"timestamp":1700289331195,"state":"in_progress","progress":46,"errors":[]}]
[{"action_id":"1","sequence":5,"timestamp":1700289332195,"state":"in_progress","progress":50,"errors":[]}]
[{"action_id":"1","sequence":6,"timestamp":1700289333195,"state":"in_progress","progress":60,"errors":[]}]
[{"action_id":"1","sequence":7,"timestamp":1700289334195,"state":"in_progress","progress":77,"errors":[]}]
[{"action_id":"1","sequence":8,"timestamp":1700289335194,"state":"in_progress","progress":87,"errors":[]}]
[{"action_id":"1","sequence":9,"timestamp":1700289336195,"state":"in_progress","progress":96,"errors":[]}]
[{"action_id":"1","sequence":10,"timestamp":1700289337195,"state":"Completed","progress":100,"errors":[]}]
Similar behavior is observed in the case of sending to old topic and subscribing to older response topic:
mosquitto_sub -h stage.bytebeam.io -p 1883 -t /tenants/demo/devices/1002/action/status
... # in another terminal
mosquitto_pub -h stage.bytebeam.io -t /tenants/demo/devices/1002/actions -m '{ "action_id": "1", "kind": "process", "name": "lock", "payload": "{}" }'
Uplink uses old topic to respond:
[{"action_id":"1","sequence":0,"timestamp":1700289329194,"state":"Received","progress":0,"errors":[]}]
[{"action_id":"1","sequence":1,"timestamp":1700289329194,"state":"in_progress","progress":13,"errors":[]}]
[{"action_id":"1","sequence":2,"timestamp":1700289329195,"state":"in_progress","progress":26,"errors":[]}]
[{"action_id":"1","sequence":3,"timestamp":1700289330195,"state":"in_progress","progress":36,"errors":[]}]
[{"action_id":"1","sequence":4,"timestamp":1700289331195,"state":"in_progress","progress":46,"errors":[]}]
[{"action_id":"1","sequence":5,"timestamp":1700289332195,"state":"in_progress","progress":50,"errors":[]}]
[{"action_id":"1","sequence":6,"timestamp":1700289333195,"state":"in_progress","progress":60,"errors":[]}]
[{"action_id":"1","sequence":7,"timestamp":1700289334195,"state":"in_progress","progress":77,"errors":[]}]
[{"action_id":"1","sequence":8,"timestamp":1700289335194,"state":"in_progress","progress":87,"errors":[]}]
[{"action_id":"1","sequence":9,"timestamp":1700289336195,"state":"in_progress","progress":96,"errors":[]}]
[{"action_id":"1","sequence":10,"timestamp":1700289337195,"state":"Completed","progress":100,"errors":[]}]