Ir al contenido

Sensores IoT

Lee datos climáticos de los sensores IoT de Rhombus a través de la API para monitorear temperatura, humedad, calidad del aire y condiciones ambientales en tus instalaciones.

En esta página

Descripción general

Los sensores IoT de Rhombus (serie E) monitorean continuamente las condiciones ambientales en tus instalaciones. Estos sensores capturan temperatura, humedad, calidad del aire interior (IAQ), niveles de CO2, TVOC y PM2.5, y reportan los datos a la plataforma de Rhombus a través de gateways ambientales.

A través de la API, puedes:

  • Listar sensores y obtener sus lecturas actuales
  • Consultar datos históricos para análisis de tendencias y reportes
  • Configurar sensores actualizando descripciones, ubicaciones y asociaciones de cámaras
  • Establecer políticas de alerta climática que se activan cuando las lecturas cruzan umbrales definidos
  • Monitorear gateways que transmiten los datos de los sensores a la nube
  • Exportar datos como CSV para herramientas de análisis externas

Requisitos previos

Listar todos los sensores

Obtén el estado actual de cada sensor climático en tu organización. Esto devuelve el UUID de cada sensor, su nombre, lecturas actuales, nivel de batería y estado de salud.

import requests

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api2.rhombussystems.com/api/climate/getMinimalClimateStateList",
    headers=headers,
    json={}
)

data = response.json()
for sensor in data.get("climateStates", []):
    name = sensor.get("name", "Unnamed")
    temp_c = sensor.get("temperatureCelcius")
    humidity = sensor.get("humidity")
    iaq = sensor.get("iaq")
    battery = sensor.get("batteryPercent")
    temp_f = round(temp_c * 9 / 5 + 32, 1) if temp_c else None
    print(f"{name}: {temp_f}°F, {humidity}% RH, IAQ {iaq}, Battery {battery}%")

La respuesta incluye un arreglo climateStates. Campos clave de cada sensor:

CampoTipoDescripción
sensorUuidstringIdentificador único del sensor
namestringNombre para mostrar (p. ej., "Server Room Sensor")
temperatureCelciusfloatTemperatura actual en grados Celsius
humidityfloatPorcentaje de humedad relativa
iaqfloatÍndice de calidad del aire interior
co2floatNivel de CO2 en ppm
tvocfloatCompuestos orgánicos volátiles totales
pm25floatMaterial particulado PM2.5
batteryPercentintegerNivel de batería (0-100)
healthstringEstado de salud del sensor (GREEN o RED)
locationUuidstringUbicación a la que está asignado el sensor
Consejo

La temperatura se devuelve en grados Celsius. Para convertir a Fahrenheit: °F = °C × 9/5 + 32.

Leer datos del sensor

Consulta eventos climáticos históricos de un sensor específico en un rango de tiempo. Cada evento representa un punto de datos con temperatura, humedad, calidad del aire y otras lecturas ambientales.

import requests
import time

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

# Consulta las últimas 24 horas de datos
now_ms = int(time.time() * 1000)
one_day_ago_ms = now_ms - (24 * 60 * 60 * 1000)

response = requests.post(
    "https://api2.rhombussystems.com/api/climate/getClimateEventsForSensor",
    headers=headers,
    json={
        "sensorUuid": "YOUR_SENSOR_UUID",
        "createdAfterMs": one_day_ago_ms,
        "createdBeforeMs": now_ms,
        "limit": 100
    }
)

data = response.json()
for event in data.get("climateEvents", []):
    temp_c = event.get("temp")
    humidity = event.get("humidity")
    timestamp = event.get("timestampMs")
    temp_f = round(temp_c * 9 / 5 + 32, 1) if temp_c else None
    print(f"[{timestamp}] {temp_f}°F, {humidity}% RH")

Cada evento climático incluye estos campos:

CampoTipoDescripción
timestampMsintegerMarca de tiempo del evento en milisegundos epoch
tempfloatTemperatura en grados Celsius en esta lectura
humidityfloatPorcentaje de humedad relativa
iaqfloatÍndice de calidad del aire interior
co2floatConcentración de CO2
tvocfloatCompuestos orgánicos volátiles totales
pm25floatMaterial particulado PM2.5
heatIndexDegFfloatÍndice de calor calculado en grados Fahrenheit

Configurar sensores

Obtener la configuración del sensor

Obtén la configuración completa de un sensor específico, incluyendo sus ajustes de umbral y dispositivos asociados.

import requests

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api2.rhombussystems.com/api/climate/getConfig",
    headers=headers,
    json={
        "uuid": "YOUR_SENSOR_UUID"
    }
)

config = response.json().get("config", {})
print(config)

Actualizar los detalles del sensor

Actualiza la descripción de un sensor, su asignación de ubicación o sus asociaciones de cámaras. Los campos que incluyas con su correspondiente bandera *Updated establecida en true se modificarán; todos los demás permanecen sin cambios.

import requests

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api2.rhombussystems.com/api/climate/updateDetails",
    headers=headers,
    json={
        "uuid": "YOUR_SENSOR_UUID",
        "description": "Server Room B - Rack 4 temperature and humidity monitor",
        "descriptionUpdated": True,
        "locationUuid": "YOUR_LOCATION_UUID",
        "locationUuidUpdated": True
    }
)

print(response.json())
Advertencia

Debes establecer la correspondiente bandera *Updated en true para cada campo que quieras cambiar. Por ejemplo, establecer description sin descriptionUpdated: true no tendrá ningún efecto.

Configurar alertas climáticas

Las políticas climáticas definen reglas de umbral que activan alertas cuando las lecturas ambientales suben por encima o bajan por debajo de valores especificados. Crea una política y asóciala con sensores para recibir notificaciones.

Crear una política climática

Este ejemplo crea una política que alerta cuando la temperatura supera los 80°F (26.7°C) o baja de los 40°F (4.4°C).

import requests

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api2.rhombussystems.com/api/policy/createClimatePolicy",
    headers=headers,
    json={
        "policy": {
            "name": "Server Room Temperature Alert",
            "description": "Alert when server room temperature is outside safe operating range",
            "scheduledTriggers": [
                {
                    "triggerSet": [
                        {
                            "activity": "TEMPERATURE_EXCEEDED_HIGH",
                            "threshold": 26.7
                        },
                        {
                            "activity": "TEMPERATURE_EXCEEDED_LOW",
                            "threshold": 4.4
                        },
                        {
                            "activity": "HUMIDITY_EXCEEDED_HIGH",
                            "threshold": 60.0
                        }
                    ]
                }
            ]
        }
    }
)

data = response.json()
print(f"Created policy: {data.get('policyUuid')}")
Consejo

Los valores de umbral para los activadores de temperatura usan grados Celsius. Convierte tus valores objetivo de Fahrenheit antes de crear la política: °C = (°F - 32) × 5/9.

Listar políticas climáticas

Obtén todas las políticas climáticas configuradas para tu organización.

import requests

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api2.rhombussystems.com/api/policy/getClimatePolicies",
    headers=headers,
    json={}
)

data = response.json()
for policy in data.get("policies", []):
    print(f"{policy.get('name')}: {policy.get('uuid')}")

Gateways ambientales

Los gateways ambientales son los hubs de hardware que reciben datos de los sensores de la serie E cercanos vía Bluetooth y los transmiten a la nube de Rhombus. Cada gateway admite múltiples sensores y se conecta a través de tu red.

Usa el endpoint de estado del gateway para verificar la conectividad, las versiones de firmware y qué sensores está atendiendo cada gateway.

import requests

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api2.rhombussystems.com/api/climate/getMinimalEnvironmentalGatewayStates",
    headers=headers,
    json={}
)

data = response.json()
for gw in data.get("minimalEnvironmentalGatewayStates", []):
    print(f"Gateway: {gw.get('name')} ({gw.get('deviceUuid')})")
    print(f"  Health: {gw.get('healthStatus')}, Firmware: {gw.get('firmwareVersion')}")

Obtener eventos del gateway

Consulta eventos históricos de un gateway específico, como cambios de conectividad y registro de sensores.

import requests
import time

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

now_ms = int(time.time() * 1000)
one_week_ago_ms = now_ms - (7 * 24 * 60 * 60 * 1000)

response = requests.post(
    "https://api2.rhombussystems.com/api/climate/getEventsForEnvironmentalGateway",
    headers=headers,
    json={
        "deviceUuid": "YOUR_GATEWAY_UUID",
        "createdAfterMs": one_week_ago_ms,
        "createdBeforeMs": now_ms
    }
)

print(response.json())

Exportar datos del sensor

Exporta los datos del sensor climático como un archivo CSV para usarlos en hojas de cálculo, herramientas de análisis de datos o reportes de cumplimiento. Especifica un sensor y un rango de tiempo para descargar todas las lecturas registradas.

import requests
import time

headers = {
    "x-auth-scheme": "api-token",
    "x-auth-apikey": "YOUR_API_KEY",
    "Content-Type": "application/json"
}

# Exporta los últimos 30 días de datos
now_ms = int(time.time() * 1000)
thirty_days_ago_ms = now_ms - (30 * 24 * 60 * 60 * 1000)

response = requests.post(
    "https://api2.rhombussystems.com/api/export/climateEvents",
    headers=headers,
    json={
        "sensorUuid": "YOUR_SENSOR_UUID",
        "createdAfterMs": thirty_days_ago_ms,
        "createdBeforeMs": now_ms
    }
)

# La respuesta es data CSV
with open("climate_export.csv", "w") as f:
    f.write(response.text)
print("Exported climate data to climate_export.csv")

También puedes exportar eventos del gateway ambiental con el mismo patrón usando /api/export/environmentalGatewayEvents.

Próximos pasos