Aller au contenu principal
CloudStudio

Recevoir des commandes

Comandos

Flujo básico de integración de comandos

Diagramme du flux de commandes pour attendre, exécuter l'action, répondre et mettre à jour l'état

El gateway, dispositivo o endpoint deberá estar escuchando por comandos suscribiendose al siguiente topic: **{client-secure-id}/commands/requests/{device-address}**

  • cliente-secure-id: es el usuario utilizado en la conexión. La estructura de topics incluye el id de usuario como primer elemento, dado que cada usuario tiene permiso únicamente para los topics que comiencen con ese ID.
  • device-address: Es el ingresado en el campo “address” al crear el dispositivo.

Esta respuesta deberá ser interpretada por el dispositivo, realizar las acciones correspondientes y responder a través del método de respuesta de comandos para informar si la ejecución del mismo fue correcta o no.

En caso de ser correcta, se deberá ejecutar el método para actualizar el estado del dispositivo según corresponda.

Por último, asegurarse de seguir escuchando comandos con el primer método mencionado.

1. Esperar por comandos

Para que un dispositivo esté escuchando por comandos debe suscribirse al topic: {client-secure-id}/commands/requests/{device-address}

  • cliente-secure-id: es el usuario utilizado en la conexión. La estructura de topics incluye el id de usuario como primer elemento, dado que cada usuario tiene permiso únicamente para los topics que comiencen con ese ID. Este valor se puede consultar en la sección de seguridad > configuración MQTT
  • device-address: Es el ingresado en el campo “address” al crear el dispositivo. Si es un dispositivo ya creado, este valor se puede obtener desde el listado:

Ligne d'appareil dans la liste avec son adresse surlignée en jaune

Respuesta

La respuesta es una lista dentro de la propiedad WaitForCommand_EndpointResult que tendrá cada uno de los comandos correspondientes:

{
    "Closure":null,
    "CommandID":1120907993,
    "CommandType":1,
    "Custom":null,
    "DeviceID":7246,
    "Dimmer":null,
    "EndpointID":113139,
    "Management":null,
    "OnOff":{
        "AutomaticOverrideMinutes":0,
        "CommandType":0
    },
    "Thermostat":null
}

Para mas información acerca de las propiedades de la respuesta ver la documentación

Según el tipo de comando que se haya ejecutado, se deberá tener en cuenta la propiedad correspondiente para conocer la acción a realizar.

Por ejemplo, si el CommandType es 1, quiere decir que es un comando para un endpoint tipo "Appliance". Por lo que se deberá tener en cuenta lo que se informe en la propiedad OnOff

Los distintos command types se pueden ver en esta documentación.

2. Responder un comando

En caso de haber recibido un comando y luego de ejecutar las acciones correspondientes en el dispositivo(hardware) se deberá responder el comando ya sea en caso de éxito o error.

Para informar que el comando ha sido ejecutado, se debe hacer un publish al topic {client-secure-id}/HttpApi/DeviceIntegration con el siguiente payload:

{
   "accessToken":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
   "mqttMethod":"RespondCommand",
   "mqttRID":"c392",
   "response":{
      "CommandID":1120907993,
      "ResponseType":0,
      "ResponseData":"ok",
      "ErrorCode":"1",
      "ErrorMessage":""
   }
}

Descripción de los campos del payload:

NameDescriptionData Type
accessTokenAccess token with permissions to update endpoint information. See this page for more information.text
mqttMethodMétodo correspondiente del servicio. Para comandos debe ser siempre RespondCommandstring
mqttRIDIdentificador opcional para la petición, en caso de que se desee obtener una respuesta de confirmación.string
responseObjeto con la respuesta del comandoobject

Descripción de los campos del sub objeto “response”:

NameDescriptionData Type
CommandIDDebe corresponder al obtenido en la suscripción del topic {client-secure-id}/HttpApi/DeviceIntegration (paso 1).integer
ResponseTypeDebe ser alguno de los del enum, según corresponda. En este caso es 0, que significa "success".integer
ResponseDataTexto informativo acerca del comandostring
ErrorCodeCódigo de error, solo válido si ResponseType es Error.string
ErrorMessageMensaje de error, solo válido si ResponseType es Error.string

Para mas información acerca del objeto “response” ver la documentación.

3. Actualizar estado del endpoint

En caso de que la ejecución del comando haya sido exitosa, se deberá informar el nuevo estado del endpoint. Para esto se deberá utilizar el método correspondiente al tipo de endpoint (ver “Integración por tipo de sensor”).

Siguiendo el ejemplo de appliance, se debe hacer un publish al topic {client-secure-id}/HttpApi/DeviceIntegration con el siguiente payload:

{
	"accessToken": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
	"endpointID": 113139,
	"isOn": true,
	"mqttMethod": "UpdateApplianceStatus",
	"mqttRID": "tkrs34"
}

Para más información acerca de este método ver la sección de artefactos on/off

Dernière mise à jour le

Sur cette page