Saltar a contenido

Documentación: Nodo Modificar el Estado de un Objeto (Modify Object State)

Descripción General

El Nodo Modificar el Estado de un Objeto (Modify Object State) es un nodo de acción que permite cambiar en tiempo de ejecución tanto el estado principal como las propiedades específicas de cualquier objeto o dispositivo registrado en la plataforma (por ejemplo, sensores, luces, cerraduras, paneles de alarma, etc.).

Al ejecutar esta acción, los cambios se propagan de inmediato al núcleo del sistema. Esto permite que el nuevo estado y sus propiedades modificadas se vean reflejados en tiempo real en los paneles de control (Dashboard), Sinópticos, Mapas y, de manera centralizada, en el Módulo de Configuración (en la sección SettingsObjects), además de quedar registrados en el historial de eventos del sistema.


¿Cuándo usar este nodo?

Utiliza este nodo cuando necesites:

  • Cambiar el estado operativo de un dispositivo de manera lógica (por ejemplo: marcar un sensor de temperatura como ACTIVE o un panel de alarma como ARMED).
  • Actualizar propiedades secundarias o valores de telemetría de un objeto de forma manual o dinámica (por ejemplo: establecer la temperatura de consigna de un termostato en 21 o actualizar el nivel de batería de un sensor).
  • Sincronizar estados virtuales basados en condiciones del entorno (por ejemplo, cambiar el estado de una zona virtual a ALERT cuando varios sensores físicos detecten movimiento).
  • Propagar cambios de estado para que otros flujos de automatización o dashboards reaccionen a dichos cambios.

Configuración del Nodo

El nodo cuenta con dos pestañas de configuración en la parte superior: Formulario (Form) y Editor de JSON (JSON Editor).

Configuración vacía del nodo Modificar el estado de un objeto

Vista Formulario

1. Objeto (Object) *Requerido

Permite seleccionar el objeto específico al cual se le modificará el estado y/o las propiedades. - Haz clic en el botón Select para abrir el modal del selector de objetos del sistema. - En el modal, puedes buscar y filtrar por nombre o tipo de objeto para realizar la selección. - Una vez seleccionado, se mostrará el nombre del objeto en la interfaz y su ID único se asociará internamente al nodo.

Modal de selección de objeto

2. Estado (State) *Requerido

Define el nuevo valor del estado principal que se le asignará al objeto.

Este campo admite dos formas de configuración:

  • Valor Estático (Fijo): Escribe directamente el texto del estado que deseas asignar. Este valor depende del tipo de objeto que estés modificando (por ejemplo: ON u OFF para interruptores, ACTIVE o INACTIVE para sensores, COOLING para aires acondicionados, ARMED_AWAY para paneles de alarma).
  • Valor Dinámico (Expresiones de Plantilla): Si escribes llaves dobles {{, se activará el autocompletado del asistente de plantillas de Netsocs. Esto te permite:
    • Heredar estados de otros nodos: Por ejemplo, usar {{trigger.state.state}} (que representa el valor del estado del dispositivo que disparó la automatización) para replicar su estado en el objeto actual.
    • Transformar valores en tiempo de ejecución: Puedes usar funciones auxiliares como {{lower(trigger.state.state)}} para convertir el estado entrante a minúsculas (por ejemplo, si el disparador envía "ACTIVE", la función lo convertirá a "active" antes de guardarlo) u otras funciones de texto como trim, upper, replace, etc.

Asistente de expresiones y autocompletado en el campo de estado

3. Propiedades (Properties) *Opcional

Permite añadir o editar propiedades adicionales o metadatos del estado del objeto. - Haz clic en el botón Add Property para desplegar una nueva fila de clave y valor. - Key (Clave): El nombre de la propiedad que deseas crear o modificar (por ejemplo: temperature, humidity, battery_level). - Value (Valor): El valor que se le asignará a dicha propiedad. Este campo soporta valores estáticos y expresiones de plantilla.

Formulario configurado del nodo Modificar el estado de un objeto


Vista Editor de JSON

En la pestaña Editor de JSON (JSON Editor), puedes visualizar y editar directamente la representación estructurada en código del nodo. Esto es útil para realizar configuraciones rápidas, parametrizar con variables dinámicas complejas o copiar configuraciones entre nodos:

Vista JSON Editor del nodo Modificar el estado de un objeto


Estructura JSON (Parámetros de entrada)

A continuación se detalla la estructura del JSON que se genera en la pestaña JSON Editor al configurar el nodo:

{
  "object_id": "onvif_standard.video_channel.27.videosource_cam1",
  "state": "ACTIVE",
  "properties": {
    "temperature": "20"
  }
}

Campos del JSON

Campo Tipo Descripción
object_id string ID único del objeto seleccionado en la plataforma. Puede ser un UUID estático o una expresión de plantilla (ej. {{trigger.object_id}}).
state string El nuevo estado principal que se aplicará al objeto.
properties object Un objeto JSON plano que contiene pares clave-valor con las propiedades adicionales que se desean actualizar en el objeto.

Output: Dónde viene la data del nodo

Cuando la acción se ejecuta correctamente, el nodo devuelve una respuesta con el resultado de la operación en su Output (Salida), la cual se puede visualizar en el panel de resultados durante las pruebas:

Salida de ejecución del nodo Modificar el estado de un objeto

Ejemplo de salida

La respuesta del nodo al finalizar la modificación de estado se estructura de la siguiente manera:

{
  "datetime": "2026-06-18T12:27:45.236650307Z",
  "domain": "onvif_standard.video_channel",
  "id": "6a33e441f999067372818807",
  "object_id": "onvif_standard.video_channel.27.videosource_cam1",
  "new_state": {
    "state": "ACTIVE",
    "state_additional_properties": {
      "driver_snapshot_supported": true,
      "ptz": true,
      "snapshot_url": "/public/onvif_standard.video_channel.27.videosource_cam1.jpg",
      "stream_id": "profile_cam1_stream1",
      "sub_stream_id": "",
      "temperature": 20,
      "video_engine_id": "netsocs_native.video_engine.site_d888db49bb064d02b94bed64ecf709f7",
      "video_push": true
    }
  },
  "prev_state": {
    "state": "ON",
    "state_additional_properties": {
      "driver_snapshot_supported": true,
      "ptz": true,
      "snapshot_url": "/public/onvif_standard.video_channel.27.videosource_cam1.jpg",
      "stream_id": "profile_cam1_stream1",
      "sub_stream_id": "",
      "temperature": 20,
      "video_engine_id": "netsocs_native.video_engine.site_d888db49bb064d02b94bed64ecf709f7",
      "video_push": true
    }
  }
}

Campos de la salida

Campo Tipo Descripción
datetime string Fecha y hora en la que se aplicó el cambio de estado (en formato RFC 3339).
domain string Dominio al que pertenece el objeto modificado.
id string ID de base de datos asignado al objeto.
object_id string Identificador único (ID de hardware) del objeto modificado.
new_state object Bloque que contiene los nuevos datos de estado asignados al objeto tras la ejecución.
new_state.state string El nuevo estado principal del objeto (ej. ACTIVE, ON).
new_state.state_additional_properties object Las propiedades adicionales del objeto tras la actualización, incluyendo las modificadas (ej. temperature).
prev_state object Bloque que contiene los datos del estado previo del objeto antes de realizar esta modificación.
prev_state.state string El estado principal previo del objeto (ej. ON).
prev_state.state_additional_properties object Las propiedades adicionales previas del objeto antes de la actualización.

Usar la salida en nodos posteriores

Para referenciar los resultados en nodos posteriores, utiliza la clave del nodo (node_key) en tu flujo:

{{node_key.new_state.state}}
{{node_key.new_state.state_additional_properties.temperature}}
{{node_key.object_id}}
{{node_key.prev_state.state}}

(Recuerda sustituir node_key por la clave asignada automáticamente al nodo en el lienzo).


Ejemplos de uso

Ejemplo 1: Actualizar consigna de termostato inteligente (IoT)

Caso de uso: Cambiar el estado de un termostato climatizador a modo enfriamiento (COOLING) y definir la temperatura objetivo tras un evento de detección de calor.

  • Object: Termostato Principal (climatizacion_principal)
  • State: COOLING
  • Properties:
  • Clave: temperature_target | Valor: 21
  • Clave: fan_speed | Valor: high

JSON de configuración:

{
  "object_id": "a3b12c5d-89ef-4701-b2c3-4d5e6f7a8b9c",
  "state": "COOLING",
  "properties": {
    "temperature_target": "21",
    "fan_speed": "high"
  }
}


Ejemplo 2: Armar automáticamente un panel de alarma

Caso de uso: Al cumplirse un horario de cierre en un almacén, establecer el estado del panel de alarma a modo armado fuera de casa (ARMED_AWAY) y definir un retardo de salida.

  • Object: Panel Alarma Almacén (panel_alarma_principal)
  • State: ARMED_AWAY
  • Properties:
  • Clave: exit_delay | Valor: 30
  • Clave: armed_by | Valor: System Automation

JSON de configuración:

{
  "object_id": "f8e7d6c5-b4a3-2109-87fe-dcba98765432",
  "state": "ARMED_AWAY",
  "properties": {
    "exit_delay": "30",
    "armed_by": "System Automation"
  }
}


Validación y errores

El nodo realiza validaciones automáticas antes de realizar la petición de modificación de estado:

  1. Validación de campos obligatorios: Comprueba que tanto el parámetro object_id como state no estén vacíos.
  2. Existencia del objeto: Verifica si el ID del objeto provisto existe en la base de datos de la plataforma.

Errores comunes

Condición Causa / Solución habitual
object_id ausente o vacío Asegúrate de haber seleccionado un objeto válido en el formulario o de haber ingresado la clave "object_id" en la pestaña JSON.
state ausente El estado principal no puede dejarse en blanco. Asegúrate de configurar un valor de texto plano en el campo "State".
Objeto no encontrado El ID del objeto es incorrecto o ha sido eliminado del sistema. Confirma la existencia del objeto en la sección de administración de objetos.
Error de permisos / Comunicación Falla temporal de conexión entre el motor de automatizaciones y el núcleo del sistema. Intenta ejecutar la prueba de nuevo.

Buenas prácticas

  • Nombrar el nodo descriptivamente: Modifica el nombre del nodo en el lienzo a algo legible (ej. "Activar Termostato Salón") para identificarlo fácilmente al usar sus variables en nodos posteriores.
  • Usar plantillas dinámicas: En flujos dinámicos, puedes asignar el object_id usando {{trigger.object_id}} para que la automatización sirva para múltiples dispositivos de manera genérica.
  • Monitorear en la sección de configuración: Para verificar si los cambios se aplicaron con éxito fuera del editor de automatizaciones, dirígete a SettingsObjects y busca el objeto modificado para ver sus propiedades actualizadas.