Zum Hauptinhalt springen
CloudStudio

Befehle empfangen

Comandos

Flujo básico de integración de comandos

Ablaufdiagramm für Befehle: warten, Aktion am Gerät ausführen, antworten und Status aktualisieren

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:

Gerätezeile in der Geräteliste mit gelb hervorgehobener Adresse

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 siehe Dokumentation

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 mit folgendem 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” siehe Dokumentation.

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 mit folgendem 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

Zuletzt aktualisiert am

Auf dieser Seite