LM DALI gateway

 

Puerta de enlace DALI


res, err = dalicmd(gwid, cmd, params)
Envía un comando DALI a la puerta de enlace especificada. Devuelve true cuando se ejecuta con éxito y no espera respuesta, string cuando se ejecuta con éxito y se espera respuesta, nil y un mensaje de error en caso de falla.

Parámetros

      • gwid (numero/string) id de la puerta de enlace: numero de puerta de enlace o internal cuando exista un DALI interno
      • cmd(string) comando a enviar, ver tabla de comandos para los valores posibles
      • params(tabla) parámetros de comando

Params (Tabla Lua):

      • addrtype (string) tipo de dirección, requerido solo para comandos direccionables, valores posibles: short group broadcast
      • address (numero) dirección corta o de grupo
      • value (numero) valor adicional a enviar

3 modos de direccionamiento soportados

      • broadcast todos los esclavos deberían reaccionar: { addrtype = 'broadcast' }
      • short solo un esclavo con una dirección corta única debería reaccionar: { addrtype = 'short', address = SLAVE_ID }
      • group los esclavos pertenecientes a un grupo deberían reaccionar: { addrtype = 'group', address = GROUP_ID }

Tipos de comandos

Si el comando es direccionable, debe proporcionar el tipo de dirección y la dirección en la tabla params.

Si el comando espera una respuesta, debe ser direccionada para que sólo un esclavo pueda responder, de lo contrario se producirá una colisión. En caso de éxito, la respuesta es una cadena binaria, generalmente consistente en un solo byte. Puede convertirlo a un número como este:

-- consultar el estado de esclavo con dirección corta 5 en el bus interno DALI
res, err = dalicmd('internal', 'querystatus', { addrtype = 'short', address = 5 })
-- Lectura correcta
if res then
  status = res:byte()
end

Si el comando tiene un rango de valores, la tabla params debe tener un campo value el cual es un integer en el rango especificado. Por ejemplo, el comando arc acepta un valor de 0 a 254:

-- establecer el nivel a 42 para todos esclavo en el bus interno DALI
dalicmd('internal', 'arc', { addrtype = 'broadcast', value = 42 })

Cambio de los parametros internos del esclavo

La mayoría de los parámetros se cambian a través de DTR (registro de transferencia de datos), por lo que primero debe ajustar el valor DTR a través de setdtr y, a continuación, establecer el parámetro requerido a través de una segunda petición

-- establecer el nivel máximo de 200 para esclavo con dirección corta 5 en el bus interno DALI
dalicmd('internal', 'setdtr', { addrtype = 'short', address = 5, value = 200 })
dalicmd('internal', 'storemax', { addrtype = 'short', address = 5 })

Ejemplo (usar la puerta de enlace con id 1, apagar todos los balastos, enciende al 100% el balasto con dirección corta 5):

require('user.dali')

dalicmd(1, 'arc', { addrtype = 'broadcast', value = 0 })
dalicmd(1, 'arc', { addrtype = 'short', address = 5, value = 254 })

Comandos DALI

Comando Descripción Direccionable Respuesta del esclavo Rango de valor
arc control de potencia por arco directo   0..254
off apagar sin fundido  
up aumentar potencia usando la tasa de fundido seleccionada  
down disminuir potencia usando la tasa de fundido seleccionada  
stepup paso arriba  
stepdown paso abajo  
recallmax ir a nivel máximo  
recallmin ir a nivel mínimo  
stepdownoff reducir y apagar  
stepupon encender y aumentar  
gotoscene ir a escena 0..15
reset reset  
storeactual almacenar nivel actual en dtr  
storemax almacenar el dtr como nivel máximo  
storemin almacenar el dtr como nivel mínimo  
storesystemfailure almacenar el dtr como nivel de falla de sistema  
storepoweron almacenar el dtr como nivel de encendido  
storefadetime almacenar el dtr como tiempo de fundido  
storefaderate almacenar el dtr como tasa de fundido  
storescene almacenar el dtr como escena   0..15
removescene remover de la escena   0..15
addtogroup agregar al grupo   0..15
removefromgroup eliminar del grupo   0..15
storeshortaddress almacenar dtr como dirección corta  
querystatus consultar estado    
queryballast consultar balasto    
querylampfailure consultar falla de lampara    
querylamppoweron consultar alimentación de lampara    
querylimiterror query limit error    
queryresetstate consultar estado del reset    
querymissingshort consultar falta de dirección corta    
queryversion consultar numero de versión    
querydtr consultar contenido del dtr    
querydevicetype consultar tipo de dispositivo    
queryphysicalmin consultar nivel mínimo físico    
querypowerfailure consultar falla de alimentacion    
queryactual consultar nivel actual    
querymax consultar nivel maximo    
querymin consultar nivel minimo    
querypoweron consultar nive de encendido    
querysystemfailure consultar nivel de falla de sistema    
queryfadetimerate consultar tiempo/tasa de fundido    
queryscene consultar nivel de escena (escenas 0-15)     0..15
querygroupslow consultar grupos 0-7    
querygroupshigh consultar grupos 8-15    
queryrandomaddrh consultar direccion al azar (alta)    
queryrandomaddrm consultar direccion al azar (media)    
queryrandomaddrl consultar direccion al azar (baja)    
terminate terminar
setdtr establecer registro de transferencia de datos (dtr) 0..255
initialise inicializar
randomise aleatorizar
compare comparar  
withdraw retirar
searchaddrh establecer direccion de busqueda (alto) 0..255
searchaddrm establecer direccion de busqueda (medio) 0..255
searchaddrl establecer direccion de busqueda (bajo) 0..255
programshortaddr programar dirección corta 0..63
verifyshortaddr verificar dirección corta   0..63
queryshortaddr consultar dirección corta  
physicalselection selección física
enabledevicetype habilitar dispositivo x 0..255