Integração MQTT & S.IoT

Para poder integrar com o SIoT é necessário você ter o ID da máquina e o KEY-TOKEN gerados pelo portal. Para obter esses dados acesse Criando uma integração no SIoT.

Para publicar via MQTT é necessário ter os dados como o modelo de configuração abaixo.

  • Para 'username' utilize o ID da máquina cadastrado no S.IoT.
  • Para 'password' utilize o token de integração da máquina gerado no S.IoT.
host: mqtts://test-mqtt.siot.konztec.com:8883
username: iot
password: geeM/H1MvkyaYFcC/hT47w==

Payload Simples

Enviando o valor da variável do sensor:

Topic

/siot/{maquina_id}/{sensor_id}/{signal_id}

Onde os parâmetros {maquina_id}, {sensor_id}, {signal_id} são de acordo com o cadastrado no portal S.IoT.

Payload

{value}

{value} e o valor do sensor .

Exemplo:
topic: /siot/iot_temperature/temperature/atual
payload: 17

Payload JSON

Enviando um JSON contendo vários sensores no payload:

Topic

/siot/s/{maquina_id}

Onde o parâmetro {maquina_id} é de acordo com o cadastrado no portal S.IoT.

Payload

{
    "idMachine": "{maquina_id}",
    "date": "{date_dispositivo}",
    "sensors": [
        {
            "sensorId": "{sensor_id}",
            "status": "{status_sensor}",
            "signals": [
                {
                    "signal": "{signal_id}",
                    "value": "{value}"
                }
            ]
        }
    ]
  
}

Onde os parâmetros {maquina_id}, {sensor_id}, {signal_id} são de acordo com o cadastrado no portal S.IoT. {status_sensor} o estado atual do sensor sendo possível enviar uma das opções a frente: 'active','active','problem'. E a {data_dispositivo} data/hora do dispositivo e o {value} valor do sinal.

Exemplo:
topic: /siot/s/iot_2
payload: {
    "idMachine": "iot_2",
    "date": "2020-03-20T12:05:20.000Z",
    "sensors": [
        {
            "sensorId": "battery",
            "status": "active",
            "signals": [
                {
                    "signal": "percentual",
                    "value": 75
                },
                {
                    "signal": "tension",
                    "value": 25.5,
                    "unity": "V"
                }
            ]
        },
        {
            "sensorId": "temperature",
            "status": "lostconnection",
            "signals": [
                {
                    "signal": "atual",
                    "value": 23
                }
            ]
        }
    ]
  
}

Detalhamento do Payload

Segue abaixo tabela com o detalhamento dos campos em formato JSON:

Campo

Exemplo 

Descrição

idMachine

"agv_demo"

identificador da máquina que foi gerada no cadastro de máquinas

date

2020-03-20T12:05:20.000Z

Timestamp no formato UTC

sensors


Sub-tabela de todos os sensores que enviaram sinais.

sensors - sensorId

battery

identificação do sensor que foi gerada no cadastro de sensores.

sensors - status

active

Valores permitidos: active ou problem

  • active: sinal é recebido e gravado na base.

  • problem: sinal é recebido, gravado na base e gera um alerta do sistema para o operador responsável.


sensor - signals


Sub-tabela de todos os sinais que um sensor pode enviar.

sensor - signals - signal

percentual

Identificação do sinal - usar o mesmo que foi gerado ao criar o signal no cadastro de sensor.

sensor - signals - value

75

valor gerado pelo sensor.

sensor - signals - unity

%

Unidade de medida do sensor.

Payload JSON minificado

Enviando um JSON contendo vários sensores em um único payload minificado, ideal para conexões com franquia de dados reduzida.

Topic

/siot/m/{maquina_id}

Onde o parâmetro {maquina_id} é de acordo com o cadastrado no portal S.IoT.

Payload

{
    "date": "{date_dispositivo} (opcional)",
    "sensors": [
        {
            "id": "{sensor_id}",
            "signals": [
                {
                    "id": "{signal_id}",
                    "value": "{value}"
                }
            ]
        }
    ]
  
}

Onde os parâmetros {sensor_id}, {signal_id} são de acordo com o cadastrado no portal S.IoT. E a {data_dispositivo} data/hora do dispositivo (caso não informada será considerada a data do servidor) e o {value} valor do sensor.

Exemplo:
topic: /siot/m/iot_2
payload: {
    "date": "2020-03-20T12:05:20.000Z",
    "sensors": [
        {
            "id": "battery",
            "signals": [
                {
                    "id": "percentual",
                    "value": 75
                },
                {
                    "id": "tension",
                    "value": 25.5
                }
            ]
        },
        {
            "id": "temperature",            
            "signals": [
                {
                    "id": "atual",
                    "value": 23
                }
            ]
        }
    ]
  
}