Espacios

Los espacios representan las areas fisicas donde se realizan los cultivos (salas de vegetativo, floracion, secado, etc.). Esta API permite gestionar espacios, sus sensores y la asignacion de cultivos.


El modelo de Espacio

  • Name
    id
    Type
    string
    Description

    Identificador unico del espacio.

  • Name
    name
    Type
    string
    Description

    Nombre del espacio.

  • Name
    description
    Type
    string
    Description

    Descripcion del espacio.

  • Name
    squareMeters
    Type
    number
    Description

    Superficie en metros cuadrados.

  • Name
    status
    Type
    SpaceStatus
    Description

    Estado actual: ACTIVE, INACTIVE, MAINTENANCE, EMPTY.

  • Name
    type
    Type
    SpaceType
    Description

    Tipo de espacio.

  • Name
    lights
    Type
    Light[]
    Description

    Luces instaladas.

  • Name
    crops
    Type
    Crop[]
    Description

    Cultivos en el espacio.

  • Name
    sensors
    Type
    Sensor[]
    Description

    Sensores ambientales.

  • Name
    totalPlants
    Type
    number
    Description

    Cantidad total de plantas.

  • Name
    createdAt
    Type
    timestamp
    Description

    Fecha de creacion.

  • Name
    updatedAt
    Type
    timestamp
    Description

    Ultima actualizacion.

Ejemplo de espacio

{
  "id": "space-001",
  "name": "Sala de Floracion A",
  "description": "Sala principal de floracion con LED",
  "squareMeters": 20,
  "status": "ACTIVE",
  "type": "flowering",
  "lights": [
    { "id": "light-001", "name": "LED 600W", "type": "LED" }
  ],
  "crops": [
    { "id": "crop-001", "name": "Blue Dream Batch A" }
  ],
  "sensors": [
    { "id": "sensor-001", "type": "TEMPERATURE", "value": "24.5", "unit": "°C" },
    { "id": "sensor-002", "type": "HUMIDITY", "value": "55", "unit": "%" }
  ],
  "totalPlants": 12,
  "createdAt": "2024-01-15T10:00:00Z",
  "updatedAt": "2024-10-01T14:30:00Z"
}

Tipos de Espacio (SpaceType)

TipoDescripcion
fullCycleCiclo completo (veg + flora)
vegetativeSolo vegetativo
floweringSolo floracion
germinationGerminacion
cloningClonacion/esquejes
propagationPropagacion
dryingSecado
curingCurado
wateringRiego (hidroponia)
harvestCosecha

Estados (SpaceStatus)

EstadoDescripcion
ACTIVEEn uso activo
INACTIVEDesactivado
MAINTENANCEEn mantenimiento
EMPTYVacio, disponible

Tipos de Sensor (SensorType)

TipoDescripcionUnidad
TEMPERATURETemperatura°C
HUMIDITYHumedad relativa%
VPDDeficit de presion de vaporkPa
CO2Dioxido de carbonoppm
SOIL_MOISTUREHumedad del suelo%
PHpH del agua/sustrato-
ECConductividad electricamS/cm

GET/api/spaces

Listar espacios

Parametros de Consulta

  • Name
    status
    Type
    SpaceStatus
    Description

    Filtrar por estado.

  • Name
    type
    Type
    SpaceType
    Description

    Filtrar por tipo.

  • Name
    search
    Type
    string
    Description

    Busqueda por nombre.

Request

GET
/api/spaces
curl -G https://api.cannahub.tech/api/spaces \
  -H "Authorization: Bearer {token}" \
  -d status=ACTIVE \
  -d type=flowering

Response

{
  "spaces": [...],
  "count": 3,
  "filters": { "status": "ACTIVE", "type": "flowering" }
}

POST/api/spaces

Crear espacio

Campos Requeridos

  • Name
    name
    Type
    string
    Description

    Nombre del espacio.

  • Name
    type
    Type
    SpaceType
    Description

    Tipo de espacio.

  • Name
    squareMeters
    Type
    number
    Description

    Superficie en m2.

Request

POST
/api/spaces
curl -X POST https://api.cannahub.tech/api/spaces \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sala de Vegetativo B",
    "type": "vegetative",
    "squareMeters": 15,
    "description": "Nueva sala de vegetativo"
  }'

Response (201)

{
  "space": {
    "id": "space-1698765432100",
    "name": "Sala de Vegetativo B",
    "type": "vegetative",
    "squareMeters": 15,
    "status": "EMPTY"
  }
}

GET/api/spaces/:id

Obtener espacio

Retorna los detalles de un espacio especifico.

Request

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

Response

{
  "space": {
    "id": "space-001",
    "name": "Sala de Floracion A",
    "type": "flowering",
    "status": "ACTIVE",
    "crops": [...],
    "sensors": [...]
  }
}

PATCH/api/spaces/:id

Actualizar espacio

Actualiza los datos de un espacio.

Request

curl -X PATCH https://api.cannahub.tech/api/spaces/space-001 \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "status": "MAINTENANCE" }'

Response

{
  "space": {
    "id": "space-001",
    "status": "MAINTENANCE",
    "updatedAt": "2024-10-31T10:00:00Z"
  }
}

DELETE/api/spaces/:id

Eliminar espacio

Elimina un espacio del sistema.

Request

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

Response

{ "success": true }

React Query Hooks

Uso de hooks

import {
  useSpacesQuery,
  useSpaceQuery,
  useCreateSpaceMutation,
  useUpdateSpaceMutation,
  useDeleteSpaceMutation
} from '@/features/Club/Spaces/hooks'

// Listar espacios con filtros
const { data: spaces, isLoading } = useSpacesQuery({
  status: 'ACTIVE',
  type: 'flowering'
})

// Obtener un espacio
const { data: space } = useSpaceQuery('space-001')

// Crear espacio
const createMutation = useCreateSpaceMutation()
await createMutation.mutateAsync({
  name: 'Sala Vegetativo C',
  type: 'vegetative',
  squareMeters: 12
})

// Actualizar espacio
const updateMutation = useUpdateSpaceMutation()
await updateMutation.mutateAsync({
  id: 'space-001',
  data: { status: 'MAINTENANCE' }
})

// Eliminar espacio
const deleteMutation = useDeleteSpaceMutation()
await deleteMutation.mutateAsync('space-001')

Query Keys

spaceKeys = {
  all: ['spaces'],
  lists: () => ['spaces', 'list'],
  list: (filters) => ['spaces', 'list', filters],
  details: () => ['spaces', 'detail'],
  detail: (id) => ['spaces', 'detail', id]
}

Proximos Pasos

Was this page helpful?