Pular para o conteúdo principal

Ubidots Integrado(via Helium)

Este artigo irá ilustrar o processo de conexão do SenseCAP T1000 Tracker ao Ubidots por meio do Helium LNS.

Escrito por Juan David Tangarife - Da Equipe Ubidots

Source

pir

Requisitos​

Uma conta Ubidots ativa Um SenseCAP T1000 Tracker Uma conta ativa no console Helium com alguns DC Um celular que suporte Google Play Store ou AppStore, bem como Bluetooth.

Instalar o aplicativo SenseCAP Mate e configurar o tracker​

Escaneie o seguinte código QR. Ele levará você à página oficial de download do aplicativo SenseCAP Mate da Seeed Studio.

pir

Depois que ele estiver instalado, ative o Bluetooth no seu celular e abra o aplicativo. Se você ainda não tiver uma conta, será necessário se registrar para usar o aplicativo.

Depois disso, pressione e segure o botão do tracker por pelo menos 3 segundos ou até o LED começar a piscar. Em seguida, na lista de dispositivos, selecione Tracker T1000

pir

Toque no seu dispositivo:

pir

Vá até a aba settings e depois até a aba LoRa. Lá, selecione como platform Helium e selecione o Frequency plan de acordo com seus requisitos, além disso, certifique-se de copiar o Device EUI, APP EUI e APP Key, pois você irá precisar deles em etapas posteriores. Quando terminar, toque no botão Send para salvar as configurações.

pir

Registrar o tracker no Helium LNS​

Faça login no seu console Helium, depois, vá até a seção “Devices” e clique no botão “Add device”

pir

Preencha os campos obrigatórios, como o nome do dispositivo**,** as credenciais LoRaWAN, etc. Em seguida, clique no botão Save Device.

pir

Criar a função de decodificação no Helium​

O próximo passo é configurar a função que irá decodificar os bytes brutos em um formato legível por humanos. Vá até a aba Function no painel do lado esquerdo. Em seguida, clique no botão Add New Function e dê um nome a ela:

pir

A Seeed Studio fornece um decodificador específico para este dispositivo no seguinte repositório. Cole esse decodificador no campo de texto e então salve as alterações.

Criar a integração com o Ubidots​

Vá até a seção Integrations, depois clique em Add integration e procure pela integração Ubidots:

pir

Clique em +Add integration

pir

Digite seu token Ubidots no campo correspondente, depois clique no botão Continue e aguarde a mensagem pop-up de confirmação. Depois disso, dê um nome à sua integração e clique no botão Add Integration:

pir

Após realizar esta etapa, um novo plugin Helium será criado na sua conta Ubidots.

Criar o fluxo para conectar a integração ao Ubidots​

Vá até a seção Flows e, em seguida, no menu suspenso no canto superior esquerdo, arraste e solte o dispositivo, a função de decodificação e a integração na área em branco, depois conecte os pontos, como mostra o GIF abaixo:

pir

Neste exemplo, tanto o dispositivo quanto a função de decodificação são chamados de "sensecap-lorawan-tracker", e a integração é chamada de "send data to ubidots".

Como o objeto JSON retornado pelo decodificador da Seeed Studio não é compatível com o esquema do Ubidots, é necessária uma transformação após extrair os dados de interesse.
Vá até a seção de decodificação do seu plugin Helium, exclua todo o código de lá e substitua-o pelo seguinte:

#Set to true in order to enable hotspot information
HOTSPOT_INFO_ENABLE = False

def format_payload(args):

messages = args.get("decoded", {}).get("payload", {}).get("data", {}).get("messages", [])
ubidots_payload = {}

error = assert_error(messages[0][0])
if error is not None:
return error

if HOTSPOT_INFO_ENABLE:
hotspot_info = args.get('hotspots', None)
ubidots_payload['SNR'] = hotspot_info[0].get('snr') if hotspot_info is not None else None
ubidots_payload['RSSI'] = hotspot_info[0].get('rssi') if hotspot_info is not None else None
ubidots_payload["port"] = args.get("port", None)
ubidots_payload['Frame Counter'] = args.get('fcnt', None)

for msg in messages:
for sensor in msg:
message_type = sensor.get("type", None)
value = sensor.get("measurementValue")
if message_type == "Latitude" or message_type == "Longitude":
position = ubidots_payload.setdefault("position", {})
position.update({message_type.lower(): value})
continue
elif message_type == "Timestamp":
ubidots_payload["timestamp"] = value
continue
ubidots_payload[message_type] = value

print(ubidots_payload)
return ubidots_payload


def assert_error(data : dict):
if "error" in data:
return {"ERROR" : { "value" : data["errorCode"], "context" : { "status" : data["error"]}}}
return None

Se tudo tiver sido conectado corretamente, você deverá ver isto em um dispositivo recém-criado no Ubidots

pir

Loading Comments...