Product/components used and version/fix level:
Cumulocity, version/fix 10.11
Detailed explanation of the problem:
Custom operations are created on the platform using REST API.
Agent/device agent is using MQTT and is subscribed on topic s/ds for notification.
Out of box operations are getting triggered, but we have custom operation that is created by custom UI using webSDK (REST). Agent is not getting this trigger on topic s/ds because its a custom operation.
Is there a way the agent will get notificiation. Please note operation is created by custom UI using webSDK, but the agent needs to be notified on MQTT.
Hi,
If you want to be notified through MQTT, you need to create a SmartREST template that will match your operation.
The way SmartREST templates match an operation is rather simple, you just need something in your operation that helps differentiate it. Say you have an operation that looks like that:
{
"myCustomFragment": {
"someData": "someValue"
}
}
Then most probably you want to create a SmartREST template that will match “myCustomFragment” fragment.
If you do that through the UI, just go to “Device Types” → “SmartREST templates” then create a new template.
Be careful with the template ID as this will be part of the MQTT topic you’ll have to subscribe to (s/dc/<template ID>).
Create a new response: response ID can be whatever you want, again be careful as it will be part of the message sent to you through MQTT so you know what operation it is.
You can leave “base pattern” empty.
Then, in patterns, simply add “myCustomFragment”, save and that’s it.
1 Like
Hi Cyril Poder,
Here is the custom operation
{
“deviceId”: “123456”,
“description”: “Firmware cancel request”,
“hr_FirmwareCancellation”: {}
}
and in MQTT box, I have subscribed to s/dc/hr_FirmwareCancellation, but not getting anyting in MQTTbox.
Did I miss anything? Appreciate your help.
Regards,
Nagesh.
The condition in your response template is missing.
Just add hr_FirmwareCancellation
there too otherwise no Message will be created.
Patterns describe which information will be added to that message in the order you have defined it. In your case just nothing as hr_FirmwareCancellation
is an empty object. So the message will basically look like this: 1300,
As Cyril stated it is important that the the owner of the device matches the user used in MQTTBox. Also the ClientID must match the c8y_Serial.
For a simple test just do the following:
- Create a new device using MQTTBox
100,TestDevice
- Subscribe to
s/dc/hr_FirmwareCancellation
in MQTTBox.
- Create the Operation (Postman or UI etc.)
- You should have received you message
1300
with the properties you have defined.