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...