Sensores

Los sensores permiten monitorear las condiciones ambientales de los espacios de cultivo en tiempo real. Esta API gestiona diferentes tipos de sensores, sus lecturas y alertas.


El modelo de Sensor

  • Name
    id
    Type
    string
    Description

    Identificador unico del sensor.

  • Name
    name
    Type
    string
    Description

    Nombre descriptivo del sensor.

  • Name
    type
    Type
    SensorType
    Description

    Tipo de sensor (TEMPERATURE, HUMIDITY, etc).

  • Name
    value
    Type
    string
    Description

    Valor actual de la lectura.

  • Name
    unit
    Type
    string
    Description

    Unidad de medida (°C, %, ppm, pH, mS/cm, kPa).

  • Name
    isConnected
    Type
    boolean
    Description

    Estado de conexion del sensor.

  • Name
    space
    Type
    object
    Description

    Espacio donde esta instalado el sensor.

    • Name
      id
      Type
      string
      Description

      ID del espacio.

    • Name
      name
      Type
      string
      Description

      Nombre del espacio.

  • Name
    thresholds
    Type
    object
    Description

    Umbrales para alertas.

    • Name
      min
      Type
      number
      Description

      Valor minimo antes de alerta.

    • Name
      max
      Type
      number
      Description

      Valor maximo antes de alerta.

    • Name
      alertEnabled
      Type
      boolean
      Description

      Si las alertas estan habilitadas.

  • Name
    serialNumber
    Type
    string
    Description

    Numero de serie del hardware.

  • Name
    manufacturer
    Type
    string
    Description

    Fabricante del sensor.

  • Name
    lastReadingAt
    Type
    string
    Description

    Timestamp de la ultima lectura.

  • Name
    lastCalibratedAt
    Type
    string
    Description

    Timestamp de la ultima calibracion.

Ejemplo de sensor

{
  "id": "sensor-001",
  "name": "Growcast Pro Temperature",
  "type": "TEMPERATURE",
  "value": "24.5",
  "unit": "°C",
  "isConnected": true,
  "space": {
    "id": "space-001",
    "name": "Invernadero A"
  },
  "thresholds": {
    "min": 18,
    "max": 30,
    "alertEnabled": true
  },
  "manufacturer": "Growcast",
  "lastReadingAt": "2024-09-15T10:30:00Z"
}

Tipos de Sensor (SensorType)

TipoDescripcionUnidadRango Optimo (Vegetativo)Rango Optimo (Floracion)
TEMPERATURETemperatura ambiente°C22-28°C20-26°C
HUMIDITYHumedad relativa%50-70%40-50%
VPDDeficit de Presion de VaporkPa0.8-1.2 kPa1.0-1.5 kPa
CO2Dioxido de carbonoppm800-1200 ppm800-1500 ppm
SOIL_MOISTUREHumedad del sustrato%60-80%50-70%
PHAcidez/AlcalinidadpH5.8-6.5 pH5.8-6.5 pH
ECConductividad ElectricamS/cm1.0-2.0 mS/cm1.5-2.5 mS/cm

GET/api/sensors

Listar sensores

Parametros de Consulta

  • Name
    type
    Type
    SensorType
    Description

    Filtrar por tipo de sensor.

  • Name
    spaceId
    Type
    string
    Description

    Filtrar por espacio.

  • Name
    isConnected
    Type
    boolean
    Description

    Filtrar por estado de conexion.

  • Name
    hasAlert
    Type
    boolean
    Description

    Solo sensores con alertas activas.

  • Name
    search
    Type
    string
    Description

    Busqueda por nombre.

  • Name
    page
    Type
    number
    Description

    Pagina (default: 1).

  • Name
    limit
    Type
    number
    Description

    Limite por pagina (default: 50).

Request

GET
/api/sensors
curl -G https://api.cannahub.tech/api/sensors \
  -H "Authorization: Bearer {token}" \
  -d type=TEMPERATURE \
  -d isConnected=true

Response

{
  "sensors": [
    {
      "id": "sensor-001",
      "name": "Growcast Pro Temperature",
      "type": "TEMPERATURE",
      "value": "24.5",
      "unit": "°C",
      "isConnected": true,
      "space": { "id": "space-001", "name": "Invernadero A" }
    }
  ],
  "count": 8,
  "filters": { "type": "TEMPERATURE", "isConnected": true }
}

POST/api/sensors

Crear sensor

Campos Requeridos

  • Name
    name
    Type
    string
    Description

    Nombre del sensor.

  • Name
    type
    Type
    SensorType
    Description

    Tipo de sensor.

  • Name
    unit
    Type
    string
    Description

    Unidad de medida.

Campos Opcionales

  • Name
    spaceId
    Type
    string
    Description

    ID del espacio donde instalar.

  • Name
    serialNumber
    Type
    string
    Description

    Numero de serie.

  • Name
    manufacturer
    Type
    string
    Description

    Fabricante.

  • Name
    model
    Type
    string
    Description

    Modelo del sensor.

  • Name
    thresholds
    Type
    object
    Description

    Configuracion de alertas.

Request

POST
/api/sensors
curl -X POST https://api.cannahub.tech/api/sensors \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Bluelab Guardian pH",
    "type": "PH",
    "unit": "pH",
    "spaceId": "space-004",
    "manufacturer": "Bluelab",
    "thresholds": {
      "min": 5.5,
      "max": 6.8,
      "alertEnabled": true
    }
  }'

Response (201)

{
  "sensor": {
    "id": "sensor-1698765432100",
    "name": "Bluelab Guardian pH",
    "type": "PH",
    "value": "0",
    "unit": "pH",
    "isConnected": false,
    "space": { "id": "space-004", "name": "Sistema Hidroponico" },
    "manufacturer": "Bluelab",
    "thresholds": { "min": 5.5, "max": 6.8, "alertEnabled": true },
    "createdAt": "2024-09-15T10:30:00Z"
  }
}

GET/api/sensors/:id

Obtener sensor

Retorna los detalles de un sensor especifico.

Request

curl https://api.cannahub.tech/api/sensors/sensor-001 \
  -H "Authorization: Bearer {token}"

Response

{
  "sensor": {
    "id": "sensor-001",
    "name": "Growcast Pro Temperature",
    "type": "TEMPERATURE",
    "value": "24.5",
    "unit": "°C",
    "isConnected": true,
    "space": { "id": "space-001", "name": "Invernadero A" },
    "lastReadingAt": "2024-09-15T10:30:00Z"
  }
}

PATCH/api/sensors/:id

Actualizar sensor

Actualiza la configuracion de un sensor.

Request

curl -X PATCH https://api.cannahub.tech/api/sensors/sensor-001 \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sensor Temperatura Principal",
    "thresholds": {
      "min": 20,
      "max": 28,
      "alertEnabled": true
    }
  }'

DELETE/api/sensors/:id

Eliminar sensor

Elimina un sensor del sistema.

Request

curl -X DELETE https://api.cannahub.tech/api/sensors/sensor-001 \
  -H "Authorization: Bearer {token}"

Response

{
  "success": true
}

React Query Hooks

Uso de hooks

import {
  useSensorsQuery,
  useSensorQuery,
  useCreateSensorMutation,
  useUpdateSensorMutation,
  useDeleteSensorMutation
} from '@/features/Club/Sensors/hooks'

// Listar sensores
const { data: sensors, isLoading } = useSensorsQuery({
  type: 'TEMPERATURE',
  isConnected: true
})

// Obtener un sensor
const { data: sensor } = useSensorQuery('sensor-001')

// Crear sensor
const createMutation = useCreateSensorMutation()
await createMutation.mutateAsync({
  name: 'Nuevo Sensor',
  type: 'HUMIDITY',
  unit: '%'
})

// Actualizar sensor
const updateMutation = useUpdateSensorMutation()
await updateMutation.mutateAsync({
  id: 'sensor-001',
  data: { name: 'Sensor Actualizado' }
})

// Eliminar sensor
const deleteMutation = useDeleteSensorMutation()
await deleteMutation.mutateAsync('sensor-001')

Query Keys

sensorKeys = {
  all: ['sensors'],
  lists: () => ['sensors', 'list'],
  list: (filters) => ['sensors', 'list', filters],
  details: () => ['sensors', 'detail'],
  detail: (id) => ['sensors', 'detail', id],
  readings: (id, params) => ['sensors', 'detail', id, 'readings', params]
}

Proximos Pasos

Was this page helpful?