Skip to main content

Conectando SenseCAP a InfluxDB vía Node-RED

SenseCAP K1100 - El Kit de Prototipos de Sensores representa el esfuerzo de Seeed Studio por concentrar la esencia de la comunicación LoRa® en productos con tecnología de inteligencia en el borde, facilitando al máximo el despliegue y dominio de aplicaciones LoRa® e IoT.

pir

Actualizable a Sensores Industriales

Con el controlador S2110 de SenseCAP y el registrador de datos S2100, puedes convertir fácilmente los módulos Grove en sensores LoRaWAN®. Seeed no solo te ayuda en la fase de prototipado, sino que también te ofrece la posibilidad de escalar tu proyecto utilizando la serie SenseCAP de sensores industriales robustos.

La carcasa con protección IP66, configuración vía Bluetooth, compatibilidad con redes LoRaWAN® globales, batería integrada de 19 Ah y el soporte completo desde la APP convierten a la serie SenseCAP S210x en la mejor opción para aplicaciones industriales. Esta serie incluye sensores para humedad del suelo, temperatura y humedad del aire, intensidad de luz, CO2, EC y una estación meteorológica 8-en-1. Prueba el último modelo SenseCAP S210x para asegurar el éxito de tu próximo proyecto industrial.

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

Acerca de InfluxDB

InfluxDB es una base de datos de series temporales de código abierto, centrada en lectura de alto rendimiento, escritura eficiente, almacenamiento optimizado y análisis en tiempo real de datos masivos. Además de protocolos nativos como HTTP y UDP, también es compatible con protocolos de comunicación de componentes como CollectD, Graphite, OpenTSDB y Prometheus. Es ampliamente utilizada en monitoreo DevOps, monitoreo IoT, análisis en tiempo real y otros escenarios.

Este capítulo continuará utilizando Node-RED, como se introdujo anteriormente, y facilitará la gestión del kit K1100 en InfluxDB mediante el uso de Node-RED.

Si aún no has instalado o no sabes qué es Node-RED, por favor consulta Tutoriales de Node-RED y SenseCAP.

Crear Nodo MQTT

Paso 1. Iniciar Node-RED

Inicia Node-RED escribiendo el comando node-red en la terminal y abre un navegador ingresando 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 MQTT en el formato que requiere la API de SenseCAP, como se indica en el tutorial anterior.

  • 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 obtuviste en la sección Obtener la API de SenseCAP.
    • <Random ID>: usa números o letras minúsculas generados aleatoriamente.
  • Formato del Tópico:

OrgIDTu ID de organización. Se obtuvo en la sección *Obtener la API de SenseCAP*.
DevEUIIdentificación única del dispositivo sensor. Esta información se encuentra en la etiqueta detrás del Grove - Wio E5 y también en la consola de dispositivos de SenseCAP.
ChannelInterfaz física del 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 de *Measurement IDs* de la documentación de SenseCAP

Paso 3. Validar nodos MQTT

Una vez configurado, haz clic en el botón Deploy en la esquina superior derecha para comprobar si la configuración fue exitosa.
Si se completó correctamente, aparecerá el mensaje Connected.

Configurar InfluxDB

Paso 1. Regístrate o inicia sesión en InfluxDB

Si ya te has registrado en InfluxDB, inicia sesión en el sitio web de InfluxDB.

Si aún no usas ni te has registrado en InfluxDB, completa tu registro e inicia sesión aquí.

tip

Al registrarte, puede aparecer una ventana solicitando que elijas un proveedor. Puedes elegir según tu preferencia o simplemente seleccionar uno al azar.

Paso 2. Obtener Token de API

Como se muestra a continuación, haz clic en Bucket.

Luego haz clic en CREATE BUCKET.

En la nueva ventana emergente, ingresa el nombre del bucket y selecciona el periodo de retención de datos gratuito: 30 días.

Después, haz clic en API Tokens.

Ahora elige crear un Custom API Token (Token API personalizado).

Asigna permisos de lectura y escritura al bucket que acabas de crear, y luego haz clic en el botón Create.

Una vez creado, copia el token de API al portapapeles y guárdalo en un lugar seguro. Lo utilizaremos más adelante.

note

Si cierras esta ventana sin copiar el token, no podrás recuperarlo más adelante.

Configurar Node-RED

Paso 1. Descargar paleta de InfluxDB

Haz clic en el menú superior derecho y selecciona Settings (Configuración).

Busca e instala node-red-contrib-influxdb en Palettes -> Install.

Agrega el nodo influx.batch desde la barra de almacenamiento en la izquierda. Haz doble clic en él para entrar en la página de configuración, y luego haz clic en el botón de edición para editar el nodo influx.batch.

Paso 2. Editar nodo influx.batch

  • Versión: 2.0
  • URL: Obtenida desde Settings -> Organization Profile
  • TOKEN: El token que generaste en la sección Obtener Token de API.

Una vez completado, haz clic en el botón Add en la esquina superior derecha para volver a la página de propiedades del nodo influx.batch. En este punto, por favor completa tu Organization (por defecto es el correo electrónico con el que te registraste en InfluxDB) y el nombre del Bucket que creaste.

Paso 3. Configurar el nodo function

El envío de datos a InfluxDB requiere un formato de datos específico, por lo que es necesario añadir un nodo de función para procesar dicho formato.

Arrastra un nodo function desde la barra de funciones a la izquierda, haz doble clic en él para abrir la página de edición y luego copia el siguiente código en la sección 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
measurement = "co2"
} else if (measurementId == 4103) {
body.soilmoisture = value
measurement = "soilmoisture"
} else if (measurementId == 4150) {
body.accelX = value
measurement = "accelX"
} else if (measurementId == 4151) {
body.accelY = value
measurement = "accelY"
} else if (measurementId == 4152) {
body.accelZ = value
measurement = "accelZ"
} else if (measurementId == 4192) {
body.soundintensity = value
measurement = "soundintensity"
} else if (measurementId == 4193) {
body.lightIntensity = value
measurement = "lightIntensity"
} else if (measurementId == 4195) {
body.tvoc = value
measurement = "tvoc"
} else if (measurementId == 4097) {
body.airtemperature = value
measurement = "airtemperature"
} else if (measurementId == 4098) {
body.airhumidity = value
measurement = "airhumidity"
} else if (measurementId == 4175) {
body.AIdetection_1 = value
measurement = "AIdetection_1"
} else if (measurementId == 4176) {
body.AIdetection_2 = value
measurement = "AIdetection_2"
} else if (measurementId == 4177) {
body.AIdetection_3 = value
measurement = "AIdetection_3"
} else if (measurementId == 4178) {
body.AIdetection_4 = value
measurement = "AIdetection_4"
} else if (measurementId == 4179) {
body.AIdetection_5 = value
measurement = "AIdetection_5"
} else if (measurementId == 4180) {
body.AIdetection_6 = value
measurement = "AIdetection_6"
} else if (measurementId == 4181) {
body.AIdetection_7 = value
measurement = "AIdetection_7"
} else if (measurementId == 4182) {
body.AIdetection_8 = value
measurement = "AIdetection_8"
} else if (measurementId == 4183) {
body.AIdetection_9 = value
measurement = "AIdetection_9"
} else if (measurementId == 4184) {
body.AIdetection_10 = value
measurement = "AIdetection_10"
}
msg.payload = [{
measurement: measurement,
fields: body,
tags: {
device: "SenseCAP K1100"
},
timestamp: new Date()
}];
}
return msg;
}

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

Si deseas ver la información de registro de los datos, puedes añadir un nodo debug después del nodo function.

Una vez que el Wio Terminal se enciende y comienza a enviar datos al servidor SenseCAP PaaS, podremos verificar los datos desde el log de depuración de Node-RED.

Configurar paneles visuales en InfluxDB

Para obtener una visualización más clara de los datos del sensor, podemos crear gráficos de línea.

Regresa a InfluxDB Cloud y haz clic en CREATE DASHBOARD, luego en ADD CELL.

Si SenseCAP ya ha comenzado a enviar mensajes de datos a InfluxDB, entonces podrás ver la etiqueta del sensor en esta página. Para mostrar el contenido de los datos, simplemente marca la casilla correspondiente.

Solución de Problemas

P1: ¿Por qué no puedo encontrar la Paleta en Node-RED?

R: Si no puedes encontrar la opción Palette en la configuración, revisa el terminal para ver si aparece algún mensaje de error al iniciar Node-RED.

El escenario más común es que la versión de npm sea demasiado antigua para iniciar el editor de paletas.

Si tu situación es como se describe arriba, ejecuta PowerShell como administrador e ingresa el siguiente comando para actualizar npm:

npm install -g npm

Luego simplemente reinicia Node-RED.

Soporte Técnico y Discusión del Producto

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

Loading Comments...