Manual de referencia de Domino

DominoDesde las primeras revisiones del programa Domino, el número de comandos soportados no ha parado de crecer, de modo que es necesario establecer una referencia básica. A continuación se enumeran todos los parámetros soportados, indicando la sintaxis a emplear e ilustrados con ejemplos.

Comandos

Los comandos reconocidos constan de 3 caracteres (por lo que en algunos de ellos el cuarto caracter será ignorado como sucede con "echo") y soportan un máximo de 2 argumentos, de 5 caracteres cada uno. Estas restricciones facilitan en gran medida el procesado de los comandos, aunque la sintaxis final sea ligeramente menos intuitiva.

ver 

Muestra la versión del programa.

ver
I: board version 0.1.1

 

echo

Activa o desactiva el eco local, que facilitará la depuración manual del programa.

echo
N: board echo on

 

lst

Muestra un listado con todos los puertos disponibles, indicando su nombre y estado. El listado se muestra en formato de ancho fijo, de modo que sea lo más fácil posible de procesar por un controlador externo.
 

lst
I: usbrx X---- - 0000
I: usbtx X---- - 0001
I: do002 DO--- OFF 0002
...

 

save

Guarda toda la configuración en la EEPROM.

save
N: board cfsav

 

load

Carga la configuración desde la EEPROM.  Este comando es ejecutado automáticamente al inciar la placa.

load
N: board cfloa

 

 

reset

Limpia la EEPROM, borrando todos los datos existentes. Es conveniente ejecutar este comando al instalar el firmware por primera vez en una placa, garantizando que la información previa haya sido borrada.
 

reset
N: board memcl

 

 

default

Carga la configuración de puertos por defecto.

default
N: board cfdef

 

map

Muestra el contenido de la EEPROM, en ASCII y hexadecimal. A partir de la versión 0.2, es posible elegir el tipo de salida especificando "hex" como parámetro para obtener la salida hexadecimal. Omitiéndolo se mostrará en ASCII.
 

cfg

Configura el puerto especificado con el valor indicado. La sintaxis empleada es:

cfg port1 value

Donde "port1" se corresponde al nombre o alias del puerto (5Bytes) y "value" se corresponde a alguno de los siguientes valores:

  • do=salida digital
  • di=entrada digital
  • ao=salida analógica (en realidad, onda PWM pseudo-analógica)
  • ai=entrada analógica
  • x=deshabilitado
  • bi=bus de entrada (experimental)
  • bo=bus de salida (experimental)

 

lbl

Renombra el puerto especificado. La sintaxis empleada es:

lbl port1 alias

Donde "port1" es el nombre actual del puerto y "alias" es el nuevo nombre.

 

set

Asigna un valor a un puerto de salida. Si el puerto es digital, los valores permitidos son "on" y "off"; si es analógico, deberá indicarse un valor numérico entre 0 y 1023. La sintaxis empleada es:

set port1 value

Por ejemplo,

set alarm off
set light 0500

Los comandos anteriores desactivarán la alarma y atenuarán la luz al 50% (suponiendo que "light" se corresponda a un puerto de salida PWM configurado como "ao").

 

lnk

Enlaza un puerto de entrada (port1) con un puerto de salida (port2), de modo que cuando el puerto de entrada se active, también se activará el de salida, por ejemplo un pulsador y una luz. Existen distintos tipos de enlaces, detallados en la sintaxis del comando lcf. La sintaxis empleada es:

lnk port1 port2

 

unl

Rompe el enlace entre dos puertos. La sintaxis empleada es:

unl port1 port2

 

lln

Lista los enlaces creados mediante el comando lnk. La lista mostrada sigue un formato de ancho fijo para facilitar su procesado y comprensión.
 

lcf

Configura un enlace. La sintaxis empleada es:

lcf link1 value

Donde "link1" se corresponde a la referencia indicada por "lln" para el enlace, y "value" es alguno de los siguientes valores:

  • d=directo, si el puerto de entrada se pone a "on", el puerto de salida se pondrá también a "on". También funciona con analógicos
  • i=inverso, a la inversa que el anterior
  • p=pulse, si el puerto de entrada pasa de "off" a "on", el puerto de salida se pondrá a "on"; no habrá ningún cambio cuando el puerto de entrada vuelva a "off".
  • f=fall, a la inversa que el anterior, el cambio se producirá cuando el puerto de entrada pase de "on" a "off".

 

name

Muestra el nombre de la placa. Si no se ha especificado ninguno, mostrará "domin" como nombre por defecto ("odard" en versiones anteriores).
 

snm

Asigna un nuevo nombre a la placa. Este nombre será utilizado por Opendomo para identificar de forma única  el dispositivo dentro de la instalación, por lo que será importante evitar repeticiones. La sintaxis empleada es:

snm bname

 

amx / amn / wmx / wmn

Define los límites para un puerto de entrada. Cada puerto puede tener hasta cuatro límites (dos por arriba y dos por abajo), marcando los límites de "warning" y "alarm". La sintaxis empleada es:

wmx port1 value

El comando anterior definirá el valor de "warning" superior en "value". Por ejemplo:

wmx temp1 075
amx temp1 090

Este ejemplo configura un valor de "warning" para el sensor de temperatura "temp1" cuando su valor supere el indicado. Si supera el valor 90, se disparará una alarma.

tst

Este comando de test programa una secuencia de temporizadores que verifican el estado de la placa y de sus salidas.

tmp

Este comando crea un temporizador. Los argumentos esperados son el nombre del puerto y el tiempo de retardo en ciclos. Cada 10 ciclos equivalen aproximadamente a un segundo. Pasado ese tiempo, el puerto especificado pasará a estar activo.

eth

Este comando (o conjunto de comandos) permiten la configuración de la interfaz de red, si es que se dispone del Shield requerido. Se encuentra en fase experimental desde la versión 0.2.0, hasta que pueda ser verificado con el hardware real. Para configurar la interfaz de red debería hacerse del siguiente modo:

eth mc EFEF0832EF65 // asignamos esta MAC
eth ip C0A80005     // asignamos la IP 192.168.0.5
eth gw C0A80001     // gateway 192.168.0.1
eth nm FFFFFF00     // máscara 255.255.255.0
eth up // activamos la red (para el proximo reinicio)

Hecho esto, ya podremos desconectar la placa y agregarle el shield, y al volver a disponer de alimentación, la interfaz de red debería ser operativa.

 

Linea de comandos

Finalizado el análisis inicial, se hizo evidente la variedad de operaciones necesarias para poder aprovechar todas las posibilidades de este dispositivo, lo que nos llevó a tomar la decisión de equipar este firmware con una línea de comandos completa. De todos modos, dadas las limitaciones de recursos, esta línea de comandos es muy básica y solamente soporta instrucciones de 20Bytes de longitud, usando comandos de ancho fijo 3Bytes y un máximo de 2 argumentos, de 5Bytes cada uno. Para hacer más fácil su uso manual, la línea de comandos soporta la tecla retroceso (backspace) y permite activar el eco local.

 

Notificación de eventos

OpenDomo leerá permanentemente del puerto serie donde Arduno se conecta, estando pendiente de las notificaciones recibidas. Estas notificaciones consistirán en una primera letra mayúscula (N=notice, E=error, A=alarm, W=warning) seguida de dos puntos y un breve mensaje describiendo el evento. Las líneas prefijadas por "I:" contendrán la información solicitada por el último comando, diferenciándolas de los eventos.

Los eventos de tipo "Notice" informan de simples cambios detectados, que el controlador pertinente deberá transmitir al gestor de eventos odevents. Los eventos del tipo "Error" nos indicarán un problema en la configuración del dispositivo o en el comando transmitido; este tipo de eventos no debería producirse en un entorno de explotación. "Warning" y "Alarm" nos indicarán que los límites establecidos para los puertos de entrada han sido superados, por o que deberá tomarse alguna medida al respecto.

 

Detección de ruido

Para poder ser usados como puertos de entrada, es importante preparar las conexiones antes de activar el programa, de lo contrario los datos recibidos carecerán de sentido a causa del ruido. Esto es una obviedad para aquellos con conocimientos de electrónica, pero no tanto para aquellos que vengan del mundo del software.

En todo caso, es muy probable que queramos probar nuestra placa antes de conectarla a los sensores y actuadores, ya sea para verificar su funcionamiento o para configurarla. Es por ello que el sistema realiza un control periódico sobre las entradas, detectando aquellas que están permanentemente cambiando su estado y desactivándolas para evitar un alud de notificaciones de eventos, que podría sobrecargar el sistema.

Por ahora, es necesario reactivar los puertos manualmente, o reiniciar la placa al conectar los dispositivos en los puertos; de todos modos, es más que aconsejable realizar tal conexionado siempre con la placa desconectada.

Comentarios

Ejemplo de tmp

Como deberia usar el comando tmp para mantener una señal activada por 10 segundos?. Seria asi: tmp do002 100?.
Gracias

Ricardo Almendares

Si te sirve

Por ahora el temporizacor solamente pone el puerto a HIGH. Lo que puedes hacer es invertir la señal del puerto (que cuando esté en HIGH lo que quieras controlar esté desactivado y se active al estar en LOW). Entonces deberías ejecutar dos comandos:

set do002 off
tmp do002 1000

O sea, que el puerto se ponga en LOW ahora, y en HIGH pasados 10s.