Desde 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.
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.
Muestra la versión del programa.
ver
I: board version 0.1.1
Activa o desactiva el eco local, que facilitará la depuración manual del programa.
echo
N: board echo on
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
...
Guarda toda la configuración en la EEPROM.
save
N: board cfsav
Carga la configuración desde la EEPROM. Este comando es ejecutado automáticamente al inciar la placa.
load
N: board cfloa
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
Carga la configuración de puertos por defecto.
default
N: board cfdef
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.
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:
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.
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").
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
Rompe el enlace entre dos puertos. La sintaxis empleada es:
unl port1 port2
Lista los enlaces creados mediante el comando lnk. La lista mostrada sigue un formato de ancho fijo para facilitar su procesado y comprensión.
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:
Muestra el nombre de la placa. Si no se ha especificado ninguno, mostrará "domin" como nombre por defecto ("odard" en versiones anteriores).
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
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.
Este comando de test programa una secuencia de temporizadores que verifican el estado de la placa y de sus salidas.
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.
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.
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.
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.
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.