Servicios de sistema

Los servicios de OpenDomo, de forma análoga a la gran mayoría de distribuciones Linux, tendrán sus scripts de arranque almacenados en la ruta /etc/init.d/. Estos scripts podrán ser lanzados manualmente mediante la interfaz, o gestionados de forma automática por el propio sistema, por lo que deberán cumplir con las siguientes especificaciones:

  1. Nombre: el nombre de archivo será compuesto solo por letras en minúscula y números, sin extensión.
  2. Argumentos ST: los scripts de arranque deberán soportar, por lo menos, los argumentos ST: "start", "stop", "status" y "reload" (puede aplicarse como un "start"; "stop", si es necesario).
  3. Valores de retorno: cada uno de los argumentos (start, stop, status) deberá finalizar con el valor de retorno adecuado: "0" cuando el servicio se haya podido iniciar, detener, o se encuentre en marcha, respectivamente; "1" en caso contrario.
  4. Permisos: el script deberá tener los permisos de ejecución que se correspondan. Deberá evitarse, por ejemplo, otorgar permisos de ejecución a "other" si el servicio no puede realmente ser arrancado con tales privilegios. Es importante tener presente que el usuario con máximo rango que puede usar la interfaz es "admin", por lo que todos aquellos servicios que requieran "root" no podrán ser controlados ni configurados.
  5. Nombre y descripción: al igual que los scripts de /usr/local/opendomo, deberá añadirse una línea comentada con el prefijo #desc: y la descripción del servicio; adicionalmente es necesario añadir una línea #name: con un nombre corto más descriptivo que el propio nombre de script.
  6. Consistencia: si, por error, el servicio es lanzado dos veces, deberá controlarse y devolver un código de error 1. Es importante controlar este caso, ya que es relativamente sencillo provocarlo desde una interfaz web (simplemente recargando la página).

Interacción con los servicios

Existen tres mecanismos que permiten el control de los servicios, además del propio arranque automático. El primer método es la activación manual independiente de cada servicio, mediante el menú "Control" -> "Manage system services", donde podremos ver qué servicios se encuentran en marcha en todo momento, y activar aquellos que queramos.

Otro mecanismo es mediante los estados del sistema OpenDomo. Podremos configurar distintos estados (por ejemplo "reposo", "vigilancia", "alarma", "confort", etc) y seleccionar aquellos servicios que correspondan a cada uno de ellos. Entonces, mediante el menú "Control" -> "Set system state" podremos cambiar el estado del sistema, por ejemplo cuando abandonemos la vivienda, y se procederá a activar/desactivar los servicios pertinentes.

El último mecanismo es totalmente automático, gestionado por el propio sistema OpenDomo. Siguiendo el ejemplo anterior, un agente podría cambiar el estado de todo el sistema poniéndolo en "alarma" al detectar un nivel de temperatura extremo que pueda indicar un incendio, o cuando un sensor de humo o de inundación se ha disparado.