Conector de fluxo serial - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conector de fluxo serial

Atenção

Esse conector passou para a fase de vida útil estendida e AWS IoT Greengrass não lançará atualizações que forneçam atributos, aprimoramentos para atributos existentes, patches de segurança ou correções de erros. Para obter mais informações, consulte Política de manutenção do AWS IoT Greengrass Version 1.

O conector de fluxo serial faz leituras e gravações em uma porta serial no dispositivo do núcleo do AWS IoT Greengrass.

Esse conector oferece suporte a dois modos de operação:

  • Read-On-Demand. Recebe solicitações de leitura e gravação em tópicos MQTT e publica a resposta da operação de leitura ou o status da operação de gravação.

  • Polling-Read. Faz leituras na porta serial em intervalos regulares. Esse modo também oferece suporte a solicitações Read-On-Demand.

nota

As solicitações de leitura são limitadas a um tamanho máximo de leitura de 63994 bytes. As solicitações de gravação são limitadas um tamanho máximo de dados de 128000 bytes.

Esse conector tem as seguintes versões.

Versão

ARN

3

arn:aws:greengrass:region::/connectors/SerialStream/versions/3

2

arn:aws:greengrass:region::/connectors/SerialStream/versions/2

1

arn:aws:greengrass:region::/connectors/SerialStream/versions/1

Para obter informações sobre alterações de versão, consulte o Changelog.

Requisitos

Esse conector tem os seguintes requisitos:

Version 3
  • Software de núcleo do AWS IoT Greengrass v1.9.3 ou versão posterior.

  • Python, versão 3.7 ou 3.8, instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.

    nota

    Para usar o Python 3.8, execute o comando a seguir para criar um symblink da pasta de instalação padrão do Python 3.7 para os binários instalados do Python 3.8.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass.

  • Um recurso do dispositivo local no grupo do Greengrass que aponta para a porta serial de destino.

    nota

    Antes de implantar esse conector, recomendamos que você configure a porta serial e verifique se é possível fazer leituras e gravações nela.

Versions 1 - 2
  • Software AWS IoT Greengrass Core v1.7 ou posterior.

  • Python versão 2.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.

  • Um recurso do dispositivo local no grupo do Greengrass que aponta para a porta serial de destino.

    nota

    Antes de implantar esse conector, recomendamos que você configure a porta serial e verifique se é possível fazer leituras e gravações nela.

Parâmetros do conector

Esse conector oferece os seguintes parâmetros:

BaudRate

A taxa de baud da conexão serial.

Nome de exibição no console do AWS IoT: Taxa de baud

Obrigatório: true

Digite: string

Valores válidos: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200, 230400

Padrão válido: ^110$|^300$|^600$|^1200$|^2400$|^4800$|^9600$|^14400$|^19200$|^28800$|^38400$|^56000$|^57600$|^115200$|^230400$

Timeout

O tempo limite (em segundos) para a operação de leitura.

Nome de exibição no console do AWS IoT: Tempo limite

Obrigatório: true

Digite: string

Valores válidos: 1 - 59

Padrão válido: ^([1-9]|[1-5][0-9])$

SerialPort

O caminho absoluto para a porta serial física no dispositivo. Esse é o caminho de origem especificado para o recurso de dispositivo local.

Nome de exibição no console do AWS IoT: Porta serial

Obrigatório: true

Digite: string

Padrão válido: [/a-zA-Z0-9_-]+

SerialPort-ResourceId

O ID do recurso de dispositivo local que representa a porta serial física.

nota

Esse conector recebe acesso de leitura e gravação ao recurso.

Nome de exibição no console do AWS IoT: Recurso de porta serial

Obrigatório: true

Digite: string

Padrão válido: [a-zA-Z0-9_-]+

PollingRead

Define o modo de leitura: Polling-Read ou Read-On-Demand.

  • Para o modo Polling-Read, especifique true. Nesse modo, as propriedades PollingInterval, PollingReadType e PollingReadLength são necessárias.

  • Para o modo Read-On-Demand, especifique false. Nesse modo, os valores de tamanho e tipo são especificados na solicitação de leitura.

Nome de exibição no console do AWS IoT: Modo de leitura

Obrigatório: true

Digite: string

Valores válidos: true, false

Padrão válido: ^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

PollingReadLength

O tamanho de dados (em bytes) a serem lidos em cada operação de leitura de sondagem. Isso se aplica somente ao usar o modo Polling-Read.

Nome de exibição no console do AWS IoT: Comprimento de leitura de sondagem

Obrigatório: false. Essa propriedade é necessária quando PollingRead é true.

Digite: string

Padrão válido: ^(|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-2][0-9]{3}|63[0-8][0-9]{2}|639[0-8][0-9]|6399[0-4])$

PollingReadInterval

O intervalo (em segundos) em que a leitura de sondagem ocorre. Isso se aplica somente ao usar o modo Polling-Read.

Nome de exibição no console do AWS IoT: Intervalo de leitura de sondagem

Obrigatório: false. Essa propriedade é necessária quando PollingRead é true.

Digite: string

Valores válidos: 1 a 999

Padrão válido: ^(|[1-9]|[1-9][0-9]|[1-9][0-9][0-9])$

PollingReadType

O tipo de dados que o thread de sondagem lê. Isso se aplica somente ao usar o modo Polling-Read.

Nome de exibição no console do AWS IoT: Tipo de leitura de sondagem

Obrigatório: false. Essa propriedade é necessária quando PollingRead é true.

Digite: string

Valores válidos: ascii, hex

Padrão válido: ^(|[Aa][Ss][Cc][Ii][Ii]|[Hh][Ee][Xx])$

RtsCts

Indica se é necessário habilitar o controle de fluxo RTS/CTS. O valor padrão é false. Para obter mais informações, consulte RTS, CTS e RTR.

Nome de exibição no console do AWS IoT: Controle de fluxo RTS/CTS

Obrigatório: false

Digite: string

Valores válidos: true, false

Padrão válido: ^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

XonXoff

Indica se é necessário habilitar o controle de fluxo de software. O valor padrão é false. Para obter mais informações, consulte Controle de fluxo de software.

Nome de exibição no console do AWS IoT: Controle de fluxo de software

Obrigatório: false

Digite: string

Valores válidos: true, false

Padrão válido: ^(|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

Parity

A paridade da porta serial. O valor padrão é N. Para obter mais informações, consulte Paridade.

Nome de exibição no console do AWS IoT: Paridade de porta serial

Obrigatório: false

Digite: string

Valores válidos: N, E, O, S, M

Padrão válido: ^(|[NEOSMneosm])$

Exemplo de criação de conector (AWS CLI)

O seguinte comando da CLI cria um ConnectorDefinition com uma versão inicial que contém o conector de fluxo serial. Ele configura o conector para o modo Polling-Read.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySerialStreamConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/SerialStream/versions/3", "Parameters": { "BaudRate" : "9600", "Timeout" : "25", "SerialPort" : "/dev/serial1", "SerialPort-ResourceId" : "my-serial-port-resource", "PollingRead" : "true", "PollingReadLength" : "30", "PollingReadInterval" : "30", "PollingReadType" : "hex" } } ] }'

No console do AWS IoT Greengrass, você pode adicionar um conector na página Conectores do grupo. Para obter mais informações, consulte Conceitos básicos de conectores do Greengrass (console).

Dados de entrada

Esse conector aceita solicitações de leitura ou gravação para portas seriais em dois tópicos MQTT. As mensagens de entrada devem estar no formato JSON.

  • Solicitações de leitura no tópico serial/+/read/#.

  • Solicitações de gravação no tópico serial/+/write/#.

Para publicar nesses tópicos, substitua o caractere curinga + pelo nome da coisa principal e o caractere curinga # pelo caminho para a porta serial. Por exemplo:

serial/core-thing-name/read/dev/serial-port
Filtro de tópico: serial/+/read/#

Use esse tópico para enviar solicitações de leitura sob demanda para um pin serial. As solicitações de leitura são limitadas a um tamanho máximo de leitura de 63994 bytes.

Propriedades de mensagens
readLength

O tamanho de dados a serem lidos na porta serial.

Obrigatório: true

Digite: string

Padrão válido: ^[1-9][0-9]*$

type

O tipo de dados a serem lidos.

Obrigatório: true

Digite: string

Valores válidos: ascii, hex

Padrão válido: (?i)^(ascii|hex)$

id

Um ID arbitrário para a solicitação. Essa propriedade é usada para mapear a solicitação de entrada para uma resposta de saída.

Obrigatório: false

Digite: string

Padrão válido: .+

Exemplo de entrada
{ "readLength": "30", "type": "ascii", "id": "abc123" }
Filtro de tópico: serial/+/write/#

Use esse tópico para enviar solicitações de gravação para um pin serial. As solicitações de gravação são limitadas um tamanho máximo de dados de 128000 bytes.

Propriedades de mensagens
data

A string a ser gravada na porta serial.

Obrigatório: true

Digite: string

Padrão válido: ^[1-9][0-9]*$

type

O tipo de dados a serem lidos.

Obrigatório: true

Digite: string

Valores válidos: ascii, hex

Padrão válido: ^(ascii|hex|ASCII|HEX)$

id

Um ID arbitrário para a solicitação. Essa propriedade é usada para mapear a solicitação de entrada para uma resposta de saída.

Obrigatório: false

Digite: string

Padrão válido: .+

Exemplo de entrada: solicitação ASCII
{ "data": "random serial data", "type": "ascii", "id": "abc123" }
Exemplo de entrada: solicitação hexadecimal
{ "data": "base64 encoded data", "type": "hex", "id": "abc123" }

Dados de saída

O conector publica dados de saída em dois tópicos:

  • As informações de status do conector no tópico serial/+/status/#.

  • Respostas de solicitações de leitura no tópico serial/+/read_response/#.

Ao publicar nesse tópico, o conector substitui o caractere curinga + pelo nome da coisa principal e o caractere curinga # pelo o caminho para a porta serial. Por exemplo:

serial/core-thing-name/status/dev/serial-port
Filtro de tópico: serial/+/status/#

Use esse tópico para monitorar o status de solicitações de leitura e gravação. Se uma propriedade id for incluída na solicitação, ela será retornada na resposta.

Exemplo de resultado: sucesso
{ "response": { "status": "success" }, "id": "abc123" }
Exemplo de resultado: falha

Uma resposta com falha inclui uma propriedade error_message que descreve o erro ou tempo limite encontrado ao executar a operação de leitura e gravação.

{ "response": { "status": "fail", "error_message": "Could not write to port" }, "id": "abc123" }
Filtro de tópico: serial/+/read_response/#

Use esse tópico para receber dados de resposta de uma operação de leitura. Os dados de resposta são codificados em Base64 se o tipo é hex.

Exemplo de saída
{ "data": "output of serial read operation" "id": "abc123" }

Exemplo de uso

Use as seguintes etapas de alto nível para configurar um exemplo de função do Lambda Python 3.7 que pode ser usado para testar o conector.

nota
  1. Certifique-se de cumprir os requisitos para o conector.

  2. Crie e publique uma função do Lambda que envie dados de entrada para o conector.

    Salve o código de exemplo como arquivo PY. Baixe e descompacte o SDK do AWS IoT Greengrass Core para Python. Crie então um pacote zip que contenha o arquivo PY e a pasta greengrasssdk no nível raiz. Este pacote zip é o pacote de implantação que você transfere por upload para o AWS Lambda.

    Depois de criar a função do Lambda Python 3.7, publique uma versão de função e crie um alias.

  3. Configure o grupo do Greengrass.

    1. Adicione a função do Lambda pelo seu alias (recomendado). Configure o ciclo de vida do Lambda como de longa duração (ou "Pinned": true na CLI).

    2. Adicione o recurso de dispositivo local necessário e conceda acesso de leitura/gravação à função do Lambda.

    3. Adicione o conector ao grupo e configure seus parâmetros.

    4. Adicione assinaturas ao grupo que permitam que o conector receba dados de entrada e envie dados de saída em filtros de tópico compatíveis.

      • Defina a função do Lambda como origem, o conector como destino e use um filtro de tópico de entrada compatível.

      • Defina o conector como origem, o AWS IoT Core como destino, e use um filtro de tópico de saída compatível. Use essa assinatura para exibir mensagens de status no console do AWS IoT.

  4. Implante o grupo.

  5. No console do AWS IoT, na página Teste, assine o tópico de dados de saída para exibir mensagens de status do conector. A função de exemplo do Lambda é de longa duração e começa a enviar mensagens imediatamente após o grupo ser implantado.

    Ao finalizar o teste, você pode definir o ciclo de vida do Lambda como sob demanda (ou "Pinned": false na CLI) e implantar o grupo. Isso impede o envio de mensagens pela função.

Exemplo

O exemplo a seguir da função do Lambda envia uma mensagem de entrada para o conector.

import greengrasssdk import json TOPIC_REQUEST = 'serial/CORE_THING_NAME/write/dev/serial1' # Creating a greengrass core sdk client iot_client = greengrasssdk.client('iot-data') def create_serial_stream_request(): request = { "data": "TEST", "type": "ascii", "id": "abc123" } return request def publish_basic_request(): iot_client.publish(payload=json.dumps(create_serial_stream_request()), topic=TOPIC_REQUEST) publish_basic_request() def lambda_handler(event, context): return

Licenças

O conector de fluxo serial inclui o seguinte licenciamento/software de terceiros:

Esse conector é liberado de acordo com o Contrato de licença de software do Greengrass Core.

Changelog

A tabela a seguir descreve as alterações em cada versão do conector.

Versão

Alterações

3

Atualização do runtime do Lambda para Python 3.7, o que altera o requisito de runtime.

2

ARN do conector atualizado para suporte Região da AWS.

1

Versão inicial.

Um grupo do Greengrass só pode conter uma versão do conector por vez. Para obter informações sobre como fazer upgrade de uma versão do conector, consulte Atualizar a versões do conector.

Consulte também