Com macros, você pode enviar dados para um servidor HTTP(S) sempre que precisar. Você tem controle sobre quais dados são enviados e como são organizados, tornando simples adaptar os dados para uso com os serviços existentes.

Medidas de segurança:

  • O recurso de solicitação de cliente HTTP(S) está desativado por padrão. Um administrador do sistema deve habilitar explicitamente o recurso definindo HttpClient > Mode to On ( xConfiguration HttpClient Mode: Ligado ).

  • O administrador do sistema pode impedir o uso do HTTP configurando HttpClient > AllowHTTP to False ( xConfiguration HttpClient AllowHTTP: Falso).

  • O administrador do sistema pode especificar uma lista de servidores HTTP(s) para os quais o dispositivo tem permissão para enviar dados. (Consulte os comandos xCommand HttpClient Allow Hostname .)

  • O número de solicitações HTTP(S) simultâneas é limitado.

As configurações mencionadas neste artigo estão disponíveis na interface da Web do dispositivo e na API. Comandos estão disponíveis através da API. Leia o artigo de Configurações avançadas para obter informações sobre como acessar a interface da web e usar a API.

Lista de servidores HTTP(s) permitidos

O administrador do sistema pode usar esses comandos para configurar e manter uma lista de até dez servidores HTTP(s) permitidos (hosts):

  • xCommand HttpClient Allow Hostname Adicionar expressão:

  • xCommand HttpClient permitir a limpeza do hostname

  • xCommand HttpClient permitir lista de nomes de host

  • xCommand HttpClient Permitir nome do host Remover ID:

Se a lista contiver entradas de servidor, você só poderá enviar solicitações HTTP(S) para esses servidores. No entanto, se a lista estiver vazia, você poderá enviar solicitações para qualquer servidor HTTP(S).

A verificação contra a lista de servidores permitidos é executada quando se usa a transferência insegura (HTTP) e segura (HTTPS) de dados.

HTTPS sem validação de certificado

Ao enviar solicitações através de HTTPS, o dispositivo verifica o certificado do servidor HTTPS por padrão. Se o certificado do servidor HTTPS não for considerado válido, você recebe uma mensagem de erro. O dispositivo não envia dados para esse servidor.

Recomendamos usar HTTPS com validação de certificado. Se a validação do certificado não for possível, o administrador do sistema pode definir HttpClient > AllowInsecureHTTPS to On ( xConfiguration HttpClient AllowInsecureHTTPS: Ligado ). Isso permite o uso do HTTPS sem validar o certificado do servidor.

Enviar solicitações HTTP(S)

Depois que o recurso de solicitação do cliente HTTP(S) estiver ativado, você poderá usar os seguintes comandos para enviar solicitações para um servidor HTTP(S). ou Publicar , Colocar , Patch , Obter , ou Excluir ...

  • xCommand HttpClient [AllowInsecureHTTPS: ] [Cabeçalho: ] [ResponseSizeLimit: ] [ResultBody: ] [Tempo limite: ] Url:

Adicionar campos de cabeçalho é opcional e você pode adicionar até 20 campos.

O parâmetro AllowInsecureHTTPS tem um efeito somente se o administrador do sistema tiver permitido o uso de HTTPS sem validar o certificado do servidor. Se sim, você pode enviar dados para o servidor sem validar o certificado do servidor se o parâmetro estiver definido como True . Se você deixar o parâmetro em branco ou defini-lo como False, os dados não serão enviados se a validação do certificado falhar.

O parâmetro ResposenSizeLimit é o tamanho máximo de carga útil (bytes) que o dispositivo aceita como resposta do servidor. Se a carga de resposta for maior do que este tamanho máximo, o comando retorna um erro de status. A mensagem de erro diz que o tamanho máximo de arquivo foi excedido. No entanto, isso não tem efeito no lado do servidor; o servidor recebeu e processou a solicitação corretamente.

Use o parâmetro ResultBody para decidir como formatar o corpo da resposta HTTP do servidor no resultado do comando. Você tem três opções:

  • Nenhum : Não inclua o corpo da resposta HTTP no resultado do comando.

  • Base64 : Base64 Codifique o corpo antes de incluí-lo no resultado.

  • PlainText : Inclua o corpo no resultado como texto simples. Se a resposta contiver letras não imprimíveis, o comando retornará um erro de status com uma mensagem dizendo que os dados não imprimíveis foram encontrados.

Use o parâmetro Timeout para definir um período de tempo limite (segundos). Se a solicitação não for concluída durante este período, a API retorna um erro.

Insira a carga útil (dados) logo após você ter emitido o comando. Qualquer coisa que você inserir, incluindo quebras de linha, é parte da carga útil. Quando terminar, termine com uma quebra de linha ("\n") e uma linha separada contendo apenas um ponto seguido por uma quebra de linha (".\n"). Agora o comando é executado e os dados são enviados ao servidor.

Exemplos

O corpo da mensagem é JSON em ambos os exemplos. Pode ser em qualquer formato, dependendo do formato esperado do serviço que está recebendo as mensagens.

Exemplo: Controle do dispositivo IoT usando a postagem HTTP

Aqui está uma função de macro que se conecta a uma luz que está conectada a uma Ponte de Matiz da Philips:

 função hue_command(dados) { var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state'; cabeçalhos var = 'Content-Type: aplicativo/JSON '; var comando = ' {"em": true} '; XAPI. comando (' HttpClient put ', {' URL ': URL, ' header ': cabeçalhos}, comando); } 

Você pode fazer o mesmo na linha de comando usando a API:

 xcommand HttpClient Put Header: "Content-Type: URL do aplicativo/json: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} . 

Exemplo 2: Publicar dados em uma ferramenta de monitoramento usando a publicação HTTP

 xcommand HttpClient Post Cabeçalho: "Content-Type: URL do aplicativo/json": "https://mymonitoringserver.com/service/devicemonitoring" {"Message":"Um usuário relatou um problema com este sistema","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"} . 

Mais informações

Encontre mais detalhes sobre como usar as solicitações de clientes HTTP no guia de Personalização . Escolha a versão mais recente.

O suporte da Cisco (TAC) não suporta a depuração do código de terceiros, incluindo macros. Verifique https://roomos.cisco.com se você precisa de ajuda com macros e código de terceiros.