Como usar a API REST do IoT Central para carregar um arquivo
O IoT Central permite que você carregue mídia e outros arquivos dos dispositivos conectados no armazenamento em nuvem. Você configura a capacidade de upload de arquivos no seu aplicativo IoT Central e, então, implementa os uploads de arquivo no código do seu dispositivo. Neste artigo, aprenda a:
- Use a API REST para configurar a capacidade de upload de arquivos em seu aplicativo IoT Central.
- Teste o upload de arquivos executando uma amostra de um código de dispositivo.
A API REST do IoT Central permite:
- Adicionar uma configuração da conta de armazenamento de upload de arquivo
- Atualizar uma configuração da conta de armazenamento de upload de arquivo
- Obter a configuração da conta de armazenamento de upload de arquivo
- Excluir a configuração do armazenamento de upload de arquivo
Cada chamada à API REST do IoT Central exige um cabeçalho de autorização. Para saber mais, confira Como autenticar e autorizar chamadas à API REST do IoT Central.
Para obter a documentação de referência da API REST do IoT Central, confira Referência da API REST do Azure IoT Central.
Dica
Você pode usar o Postman para experimentar as chamadas à API REST descritas neste artigo. Baixe a coleção do Postman do IoT Central e importe-a para o Postman. Na coleção, você precisará definir variáveis como o subdomínio do aplicativo e o token de administrador.
Para saber como carregar arquivos usando a interface do usuário do IoT Central, consulte Como configurar uploads de arquivo.
Pré-requisitos
Para testar o upload de arquivos, instale os seguintes pré-requisitos em seu ambiente de desenvolvimento local:
Adicionar uma configuração da conta de armazenamento de upload de arquivo
Para adicionar uma configuração de conta de armazenamento de upload de arquivos:
Criar uma conta de armazenamento
Para usar a API REST do Armazenamento do Microsoft Azure, você precisa de um token de portador para o recurso management.azure.com
. Para obter um token de portador, você pode usar a CLI do Azure:
az account get-access-token --resource https://management.azure.com
Se você não tiver uma conta de armazenamento para seus blobs, poderá usar a seguinte solicitação para criar uma em sua assinatura:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}?api-version=2021-09-01
Os cabeçalhos de solicitação têm os seguintes campos:
subscriptionId
: a ID da assinatura de destino.resourceGroupName
: o nome do grupo de recursos em sua assinatura. O nome diferencia maiúsculas de minúsculas.accountName
: o nome da conta de armazenamento no grupo de recursos especificado. Os nomes da conta de armazenamento devem ter entre 3 e 24 caracteres, usar números e apenas letras minúsculas.
O corpo da solicitação possui os seguintes campos necessários:
kind
: tipo de conta de armazenamentolocation
: a localização geográfica em que o recurso residesku
: o nome do SKU.
{
"kind": "BlockBlobStorage",
"location": "West US",
"sku": "Premium_LRS"
}
Criar um contêiner
Use a seguinte solicitação para criar um contêiner chamado fileuploads
em sua conta de armazenamento para os blobs:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/blobServices/default/containers/fileuploads?api-version=2021-09-01
containerName
: os nomes do contêiner de blob devem ter entre 3 e 63 caracteres, usar números, apenas letras minúsculas e traço (-). Todo caractere de traço (-) precisa ser precedido e seguido imediatamente por uma letra ou um número.
Envie um corpo da solicitação vazio com esta solicitação semelhante ao exemplo a seguir:
{
}
A resposta a essa solicitação é parecida com o seguinte exemplo:
{
"id": "/subscriptions/your-subscription-id/resourceGroups/yourResourceGroupName/providers/Microsoft.Storage/storageAccounts/yourAccountName/blobServices/default/containers/fileuploads",
"name": "fileuploads",
"type": "Microsoft.Storage/storageAccounts/blobServices/containers"
}
Obter as chaves da conta de armazenamento
Use a seguinte solicitação para recuperar as chaves da conta de armazenamento necessárias ao configurar o upload no IoT Central:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys?api-version=2021-09-01
A resposta a essa solicitação é parecida com o seguinte exemplo:
{
"keys": [
{
"creationTime": "2022-05-19T19:22:40.9132287Z",
"keyName": "key1",
"value": "j3UTm**************==",
"permissions": "FULL"
},
{
"creationTime": "2022-05-19T19:22:40.9132287Z",
"keyName": "key2",
"value": "Nbs3W**************==",
"permissions": "FULL"
}
]
}
Criar a configuração de upload
Use a seguinte solicitação para criar uma configuração de conta de armazenamento de blobs de upload de arquivos no aplicativo IoT Central:
PUT https://{your-app-subdomain}.azureiotcentral.com/api/fileUploads?api-version=2022-07-31
O corpo da solicitação tem os campos a seguir:
account
: o nome da conta de armazenamento onde o arquivo será carregado.connectionString
: a cadeia de conexão a ser conectada à conta de armazenamento. Use um dos valoresvalue
da solicitação anteriorlistKeys
como o valorAccountKey
.container
: o nome do contêiner na conta de armazenamento. O seguinte exemplo usa o nomefileuploads
.etag
: ETag para evitar conflitos com vários uploadssasTtl
: padrão de duração ISO 8601. O prazo de validade da solicitação do dispositivo para carregar um arquivo antes de expirar.
{
"account": "yourAccountName",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;BlobEndpoint=https://yourAccountName.blob.core.windows.net/",
"container": "fileuploads",
"sasTtl": "PT1H"
}
A resposta a essa solicitação é parecida com o seguinte exemplo:
{
"account": "yourAccountName",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;BlobEndpoint=https://yourAccountName.blob.core.windows.net/",
"container": "fileuploads",
"sasTtl": "PT1H",
"state": "pending",
"etag": "\"7502ac89-0000-0300-0000-627eaf100000\""
}
Obter a configuração da conta de armazenamento de upload de arquivo
Use a seguinte solicitação para recuperar os detalhes de uma configuração de conta de armazenamento de blobs de upload de arquivos no aplicativo IoT Central:
GET https://{your-app-subdomain}.azureiotcentral.com/api/fileUploads?api-version=2022-07-31
A resposta a essa solicitação é parecida com o seguinte exemplo:
{
"account": "yourAccountName",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;BlobEndpoint=https://yourAccountName.blob.core.windows.net/",
"container": "yourContainerName",
"state": "succeeded",
"etag": "\"7502ac89-0000-0300-0000-627eaf100000\""
}
Atualizar a configuração da conta de armazenamento de upload de arquivo
Use a solicitação a seguir para atualizar uma cadeia de conexão de conta de armazenamento de blob de carregamento de arquivo em seu aplicativo IoT Central:
PATCH https://{your-app-subdomain}.azureiotcentral.com/api/fileUploads?api-version=2022-07-31
{
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;BlobEndpoint=https://yourAccountName.blob.core.windows.net/"
}
A resposta a essa solicitação é parecida com o seguinte exemplo:
{
"account": "yourAccountName",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=*****;BlobEndpoint=https://yourAccountName.blob.core.windows.net/",
"container": "yourContainerName",
"sasTtl": "PT1H",
"state": "succeeded",
"etag": "\"7502ac89-0000-0300-0000-627eaf100000\""
}
Remover a configuração da conta de armazenamento de upload de arquivo
Use a solicitação a seguir para excluir uma configuração de conta de armazenamento:
DELETE https://{your-app-subdomain}.azureiotcentral.com/api/fileUploads?api-version=2022-07-31
Testar o upload de arquivos
Depois de configurar o upload de arquivos no aplicativo IoT Central, você pode testá-lo com o código de exemplo. Caso ainda não tenha clonado o repositório de exemplo do upload de arquivos, use o seguinte comando para cloná-lo em uma localização adequada no computador local e instalar os pacotes dependentes:
git clone https://github.com/azure-Samples/iot-central-file-upload-device
cd iotc-file-upload-device
npm i
npm build
Criar o modelo de dispositivo e importar o modelo
Para testar o carregamento do arquivo, execute um aplicativo de dispositivo de exemplo. Crie um modelo de dispositivo para o dispositivo de exemplo a ser usado.
Abra seu aplicativo na interface do usuário do IoT Central.
Navegue até a guia Modelos de dispositivo no painel esquerdo, selecione + Novo:
Escolha dispositivo IoT como o tipo de modelo.
Na página Personalizar do assistente, insira um nome como Amostra de dispositivo de upload de arquivos para o modelo de dispositivo.
Na página Examinar, selecione Criar.
Selecione Importar um modelo e carregue o arquivo de modelo FileUploadDeviceDcm.json da pasta
iotc-file-upload-device\setup
no repositório baixado anteriormente.Escolha Publicar para publicar o modelo de dispositivo.
Adicionar um dispositivo
Para adicionar um dispositivo ao aplicativo Azure IoT Central:
Escolha Dispositivos no painel esquerdo.
Selecione o modelo de dispositivo de Exemplo de Dispositivo de Upload de Arquivo que você criou anteriormente.
Selecione + Novo e, em seguida, Criar.
Selecione o dispositivo que você criou e selecione Conectar
Copie os valores de ID scope
, Device ID
e Primary key
. Use esses valores no código de exemplo do dispositivo.
Execute o código de exemplo
Abra o repositório git que você baixou no VS Code. Crie um arquivo ".env" na raiz do seu projeto e adicione os valores copiados anteriormente. O arquivo deve se parecer com o exemplo a seguir com os valores que você anotou anteriormente.
scopeId=<YOUR_SCOPE_ID>
deviceId=<YOUR_DEVICE_ID>
deviceKey=<YOUR_PRIMARY_KEY>
modelId=dtmi:IoTCentral:IotCentralFileUploadDevice;1
Abra o repositório git que você baixou no VS Code. Pressione F5 para executar/depurar o exemplo. Na janela do terminal, você verá que o dispositivo está registrado e conectado ao IoT Central:
Starting IoT Central device...
> Machine: Windows_NT, 8 core, freemem=6674mb, totalmem=16157mb
Starting device registration...
DPS registration succeeded
Connecting the device...
IoT Central successfully connected device: 7z1xo26yd8
Sending telemetry: {
"TELEMETRY_SYSTEM_HEARTBEAT": 1
}
Sending telemetry: {
"TELEMETRY_SYSTEM_HEARTBEAT": 1
}
Sending telemetry: {
"TELEMETRY_SYSTEM_HEARTBEAT": 1
}
O projeto de exemplo vem com um arquivo de exemplo chamado datafile.json. Esse arquivo é carregado quando você usa o comando Carregar arquivo em seu aplicativo IoT Central.
Para testar o upload, abra o aplicativo e selecione o dispositivo que você criou. Selecione a guia Comando e um botão chamado Executar será exibido. Ao selecionar esse botão, o aplicativo IoT Central chama um método direto em seu dispositivo para carregar o arquivo. Esse método direto será exibido no código de exemplo no arquivo /device.ts. O método é chamado uploadFileCommand.
Selecione a guia Dados brutos para verificar o status de upload do arquivo.
Você também pode fazer uma chamada à API REST para verificar o status de upload do arquivo no contêiner de armazenamento.
Próximas etapas
Agora que você sabe como configurar uploads de arquivo com a API REST, a próxima etapa sugerida é Como criar modelos de dispositivo a partir da GUI do IoT Central.