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.

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.
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:
- Si no has instalado o no sabes qué es Node-RED, por favor consulta Tutoriales Node-RED & SenseCAP.
- Una cuenta de Power BI. Si no tienes una cuenta, regístrate para una prueba gratuita de Power BI Pro antes de comenzar.
- En alguno de los siguientes wikis, debes haber subido datos exitosamente a SenseCAP:
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>
OrgID | Tu ID de organización. Lo obtuviste en la sección Obtener API de SenseCAP. |
DevEUI | Identificació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. |
Channel | Una interfaz física en el dispositivo a la que está conectado el sensor. Para el kit K1100, el valor predeterminado es 1. |
Reserved | Campos reservados. |
MeasurementID | ID del valor medido. Este ID se puede encontrar en la sección Measurement IDs de la documentación de SenseCAP |
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 valor | Tipo de valor |
---|---|
Timestamp | DataTime |
lightIntensity | Number |
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®.