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 Settings ▸ Objects), 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
ACTIVEo un panel de alarma comoARMED). - 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
21o 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
ALERTcuando 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).

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.

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:
ONuOFFpara interruptores,ACTIVEoINACTIVEpara sensores,COOLINGpara aires acondicionados,ARMED_AWAYpara 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 comotrim,upper,replace, etc.
- Heredar estados de otros nodos: Por ejemplo, usar

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.

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:

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:

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:
- Validación de campos obligatorios: Comprueba que tanto el parámetro
object_idcomostateno estén vacíos. - 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_idusando{{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 Settings ▸ Objects y busca el objeto modificado para ver sus propiedades actualizadas.