IoT y Telemetria
IoT y Telemetria
Sección titulada «IoT y Telemetria»Nekazari ingesta datos de sensores a traves del FIWARE IoT Agent JSON sobre MQTT. Los dispositivos publican payloads JSON ligeros; la plataforma los traduce en entidades NGSI-LD semanticamente ricas usando Smart Data Models.
Arquitectura
Sección titulada «Arquitectura»Datalogger / Sensor │ ▼ MQTT (payload JSON) Mosquitto Broker │ ▼ /<apikey>/<device_id>/attrs IoT Agent JSON (NGSI-LD nativo) │ explicitAttrs: true ▼ Solo pasan atributos del perfil Orion-LD Context Broker │ ▼ Suscripcion NGSI-LD Telemetry Worker → TimescaleDBDeviceProfile (obligatorio)
Sección titulada «DeviceProfile (obligatorio)»Todo sensor IoT debe tener un DeviceProfile antes del provisionamiento. El perfil define como las claves crudas del datalogger se mapean a atributos SDM estandar.
| Campo | Descripcion |
|---|---|
incoming_key | Clave enviada por el datalogger via MQTT (ej. t_ext) |
target_attribute | Atributo SDM en Orion-LD (ej. airTemperature) |
type | Tipo de dato (Number, Text) |
transformation | Expresion JEXL opcional (ej. val * 0.1) |
Ejemplo de perfil
Sección titulada «Ejemplo de perfil»{ "name": "Estacion Agrivoltaica", "sdm_entity_type": "AgriSensor", "mappings": [ { "incoming_key": "airTemperature", "target_attribute": "airTemperature", "type": "Number" }, { "incoming_key": "solarRadiation", "target_attribute": "solarRadiation", "type": "Number" }, { "incoming_key": "relativeHumidity", "target_attribute": "relativeHumidity", "type": "Number" }, { "incoming_key": "soilMoisture", "target_attribute": "soilMoisture", "type": "Number" } ]}Los perfiles se pueden crear en la UI de la plataforma, importar como JSON, o auto-generar desde gateways DaTaK.
Flujo de provisionamiento
Sección titulada «Flujo de provisionamiento»- Crear un DeviceProfile con los mapeos de atributos para tu datalogger
- Crear un sensor en el Entity Wizard — seleccionar el perfil (obligatorio)
- Copiar las credenciales MQTT mostradas tras la creacion (se muestran una sola vez, no son recuperables)
- Configurar el datalogger con el host MQTT, puerto, topic y credenciales
La plataforma almacena refDeviceProfile como una Relationship NGSI-LD en la entidad. La regeneracion de claves preserva el mapeo del perfil.
Protocolo MQTT
Sección titulada «Protocolo MQTT»| Propiedad | Valor |
|---|---|
| Broker | Mosquitto (TLS en puerto 8883, plano en 31883) |
| Topic | /<tenant_apikey>/<device_id>/attrs |
| Payload | {"nombreAtributo": valor} (JSON plano) |
| Auth | Usuario + contrasena (del provisionamiento) |
# Ejemplo de publicacionmosquitto_pub -h nkz.robotika.cloud -p 31883 \ -u <usuario> -P <contrasena> \ -t "/<apikey>/<device_id>/attrs" \ -m '{"airTemperature": 22.5, "solarRadiation": 450}'SDM estricto
Sección titulada «SDM estricto»El IoT Agent funciona con IOTA_EXPLICIT_ATTRS=true. Solo los atributos declarados en el DeviceProfile llegan a Orion-LD. Las claves MQTT no declaradas se descartan silenciosamente. Esto garantiza que el gemelo digital solo contenga datos validados y conformes al estandar.
Integracion con DaTaK
Sección titulada «Integracion con DaTaK»DaTaK es un gateway edge open-source que recopila datos de sensores locales (Modbus, CANbus, MQTT) y los publica en Nekazari. Incluye:
- Smart Auto-SDM Mapping: infiere nombres de atributos SDM a partir de los nombres de sensores (ej. “Piranometro solar” se convierte en
solarRadiation) - Generacion de perfiles:
GET /api/config/device-profiledevuelve un JSON listo para importar en el wizard de la plataforma - Resiliencia offline: almacena datos localmente cuando no hay conectividad
Configura la seccion digital_twin en configs/gateway.yaml con las credenciales MQTT del wizard.
Atributos SDM soportados (AgriSensor)
Sección titulada «Atributos SDM soportados (AgriSensor)»| Atributo | Descripcion | Unidad |
|---|---|---|
airTemperature | Temperatura del aire | CEL |
relativeHumidity | Humedad relativa | P1 (%) |
atmosphericPressure | Presion atmosferica | HPA |
solarRadiation | Radiacion solar | W/m2 |
windSpeed | Velocidad del viento | m/s |
windDirection | Direccion del viento | DD |
precipitation | Precipitacion | mm |
soilMoisture | Humedad volumetrica del suelo | P1 (%) |
soilTemperature | Temperatura del suelo | CEL |
leafTemperature | Temperatura de hoja | CEL |
photosyntheticallyActiveRadiation | PAR | umol/m2s |
panelTemperature | Temperatura de panel FV | CEL |
energyProduction | Produccion de energia | kWh |
batteryLevel | Nivel de bateria | P1 (%) |