Skip to main content

Conexión de SenseCAP a Power BI a través de Node-RED

SenseCAP K1100 - El Kit Prototipo de Sensores representa la apuesta de Seeed Studio por concentrar lo mejor de la comunicación LoRa® y la inteligencia en el borde (edge computing), facilitando al máximo el despliegue y dominio de aplicaciones de LoRa® e IoT.

pir

Actualizable a Sensores Industriales

Con el controlador SenseCAP S2110 y el registrador de datos S2100, puedes convertir fácilmente un sensor Grove en un sensor LoRaWAN®. Seeed no solo te apoya en la etapa de prototipado, sino que también te ofrece la posibilidad de escalar tu proyecto con la serie SenseCAP de sensores industriales robustos.

Con carcasa IP66, configuración por Bluetooth, compatibilidad con redes globales LoRaWAN®, batería incorporada de 19 Ah y una potente app de soporte, la serie SenseCAP S210x es la mejor opción para aplicaciones industriales. Esta serie incluye sensores para humedad del suelo, temperatura y humedad del aire, intensidad lumínica, CO₂, EC, y una estación meteorológica 8-en-1. Prueba la última serie SenseCAP S210x para tu próximo proyecto industrial exitoso.

SenseCAP Industrial Sensor
S2100
Data Logger
S2101
Air Temp & Humidity
S2102
Light
S2103
Air Temp & Humidity & CO2
S2104
Soil Moisture & Temp
S2105
Soil Moisture & Temp & EC
S2110
LoRaWAN® Controller
S2120
8-in-1 Weather Station

Power BI

Conecta y analiza toda tu infraestructura de datos combinando Power BI con los servicios de análisis de Azure — incluyendo Azure Synapse Analytics y Azure Data Lake Storage. Analiza petabytes de datos, usa capacidades avanzadas de IA, aplica protecciones adicionales de datos y comparte insights fácilmente en toda tu organización.

En este tutorial te guiaremos para importar datos de sensores desde SenseCAP hacia Power BI para un procesamiento de datos más profundo utilizando Node-RED.

Preparación previa

Para completar este tutorial necesitas:

Crear nodo MQTT

Paso 1. Iniciar Node-RED

Inicia Node-RED escribiendo el comando node-red en la terminal. Luego abre un navegador y escribe la dirección http://localhost:1880 en la barra de direcciones para acceder al editor de Node-RED.

Paso 2. Crear nodo MQTT

Usamos el nodo Network -> mqtt in y configuramos el mqtt con el formato de la API de SenseCAP como se indicó en el tutorial previo.

  • Servidor: openstream.api.sensecap.seeed.cc

  • Puerto: 1883

  • Protocolo: MQTT V3.1.1

  • Client ID: El formato es org-<Organization ID>-<Random ID>

    • <Organization ID>: Tu ID de organización. Lo obtuvimos en el Obtener API de SenseCAP.
    • <Random ID>: utiliza un número o letras minúsculas generados aleatoriamente.
  • Formato del Topic: /device_sensor_data/<OrgID>/<DeviceEUI>/<Channel>/<Reserved>/<MeasurementID>

OrgIDTu ID de organización. Lo obtuviste en la sección Obtener API de SenseCAP.
DevEUIIdentificación única del dispositivo sensor. Esta información se encuentra en la etiqueta en la parte trasera del Grove - Wio E5, así como en la consola de SenseCAP.
ChannelUna interfaz física en el dispositivo a la que está conectado el sensor. Para el kit K1100, el valor predeterminado es 1.
ReservedCampos reservados.
MeasurementIDID del valor medido. Este ID se puede encontrar en la sección Measurement IDs de la documentación de SenseCAP
note

Se recomienda que un nodo mqtt in transmita únicamente los valores de un solo sensor para evitar confusiones por transmitir valores de múltiples sensores simultáneamente.

<div align="center"><img width={400} src="https://files.seeedstudio.com/wiki/k1100_sensecap_to_powerbi/20.png" /></div>

Paso 3. Validar nodos MQTT

Una vez configurado, por favor haz clic en el botón Deploy en la esquina superior derecha para verificar si la configuración fue exitosa. Si está correctamente configurado, se mostrará la palabra Connected.

Configurar nodo función

El reporte de datos a Power BI debe seguir un formato específico, por lo que es necesario agregar un nodo función para procesar el formato de datos.

Arrastra el nodo función desde la barra de funciones a la izquierda, haz doble clic para abrir la página de edición, y luego copia el código en On Message.

{
var payload = msg.payload;
var topic = msg.topic;
var strs = topic.split("/");
var length = strs.length
if (length >= 2) {
var measurementId = strs[length - 1]
var body = {}
var value = payload.value
if (measurementId == 4100) {
body.co2 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4103) {
body.soilmoisture = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4150) {
body.accelX = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4151) {
body.accelY = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4152) {
body.accelZ = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4192) {
body.soundintensity = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4193) {
body.lightIntensity = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4195) {
body.tvoc = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4097) {
body.airtemperature = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4098) {
body.airhumidity = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4175) {
body.AIdetection_1 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4176) {
body.AIdetection_2 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4177) {
body.AIdetection_3 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4178) {
body.AIdetection_4 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4179) {
body.AIdetection_5 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4180) {
body.AIdetection_6 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4181) {
body.AIdetection_7 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4182) {
body.AIdetection_8 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4183) {
body.AIdetection_9 = value
body.timestamp = msg.payload.timestamp
} else if (measurementId == 4184) {
body.AIdetection_10 = value
body.timestamp = msg.payload.timestamp
}
msg.payload = body;
}
return msg;
}

:::Tip El código anterior es común para todos los sensores y puedes elegir pegarlo todo en un nodo función o interceptar una sección de uno de los sensores que estés usando para utilizarla. Cabe destacar que el nombre del sensor en el programa debe coincidir con el nombre que se establezca posteriormente en Power BI para que el flujo de datos se transfiera correctamente. Por ejemplo, en el programa anterior el sensor de luz tiene el nombre de valor: lightIntensity. :::

Crear los conjuntos de datos en Power BI

Paso 1. Inicia sesión en tu cuenta de Power BI.

Paso 2. Crea un espacio de trabajo.

Selecciona Workspaces y luego selecciona Create a workspace.

En la página Crear un espacio de trabajo, ingresa In-store analytics - checkout como nombre del espacio de trabajo. Selecciona Guardar.

Paso 3. Crea un conjunto de datos en streaming.

En la página del espacio de trabajo, selecciona + New > Streaming dataset.

En la página Nuevo conjunto de datos en streaming, elige API y luego selecciona Siguiente.

Ingresa Light-Sensor como nombre del conjunto de datos.

Ingresa los valores de luz del flujo en la siguiente tabla:

Nombre del valorTipo de valor
TimestampDataTime
lightIntensityNumber
tip

El nombre del valor debe ser el mismo que el nombre del programa de función en Node RED.

<div align="center"><img width={400} src="https://files.seeedstudio.com/wiki/k1100_sensecap_to_powerbi/21.png" /></div>

Ahora tienes un conjunto de datos en streaming. Por favor, anota la Push URL que obtienes aquí, la usaremos en el siguiente paso.

Configurar nodo de solicitud HTTP

Agrega el nodo http request desde la barra de almacenamiento a la izquierda, haz doble clic para entrar a la página de configuración, luego haz clic en el botón de editar para modificar el nodo http request.

Por favor, copia la URL obtenida en la sección anterior y pégala en el campo URL de la página del nodo http request.

Solo cambia el método a POST y guarda los cambios.

Desplegar y observar los datos

Paso 1. Desplegar

Luego conectamos todos los nodos y hacemos clic en el botón Deploy y si todo está configurado correctamente, podrás ver que el nodo mqtt in muestra estado conectado.

Si quieres ver la información de registro de los datos, puedes agregar un nodo debug después del nodo función.

Una vez que el Wio Terminal comience a encenderse y a funcionar, y empiece a enviar datos al servidor SenseCAP PaaS, podremos revisar los datos en el registro de debug de Node-RED.

Paso 2. Configurar los paneles de Power BI

Selecciona Workspaces > In-store analytics - checkout.

Selecciona + New > Dashboard.

Ingresa Store analytics como nombre del panel y selecciona Create.

Agregar gráficos de líneas

Agrega un mosaico con un gráfico de líneas para mostrar el valor de luz de los sensores incorporados del Wio Terminal. Usa la información de la siguiente tabla para crear los mosaicos. Para agregar cada mosaico, comienza seleccionando Edit > Add a tile.

Selecciona Custom Streaming Data y luego selecciona Next.

Configura la coordenada horizontal para mostrar la marca de tiempo (timestamp) y la coordenada vertical para mostrar los valores de datos en el valor.

Cuando el flujo de datos comience a transferirse, podrás ver el panel en forma de gráfico de líneas.

También puedes agregar más gráficos o análisis de datos para ajustarlos a tus necesidades.

Soporte Técnico y Discusión de Producto

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender distintas preferencias y necesidades.

Statement

  • The LoRa® Mark is a trademark of Semtech Corporation or its subsidiaries.
  • LoRaWAN® is a mark used under license from the LoRa Alliance®.
Loading Comments...