Skip to Content

Comando DA — Acciones Dinámicas

SDA y QDA toman una plantilla con sintaxis UC escrita inline — sin ocupar un slot UC — la renderizan, y:

  • QDA devuelve el texto renderizado (o lo rutea con ;@DEST), sin ejecutarlo
  • SDA además ejecuta el comando resultante en el equipo

Disponibles desde firmware v1.09.25.


¿Para qué sirve?

Caso de usoEjemplo
🔍 Consultar sin configurar>QDA $'VBU',4< — leer un dato de runtime armado al vuelo
Ejecutar y rutear la respuesta>SDA $SSSXP0| "011";@TRM< — accionar una salida y mandar el eco al serie
📤 Componer un reporte one-shot>QDA $Pos:| QCQ,7,20;@GP< — texto compuesto directo al server
💨 Ping efímero>QDA $Alive;@GP!< — sale si el socket está abierto, si no se descarta

Sintaxis

>SDA <plantilla-UC>[;@DEST[!]]< >QDA <plantilla-UC>[;@DEST[!]]<
  • La plantilla usa la misma sintaxis que UC: texto literal, segmentos $ con datos de runtime, y segmentos de comando.
  • El destino es el último ;@ de la línea. Sin ;@DEST, la respuesta vuelve transparente por el canal que preguntó: >QDA QIO< responde >RIO;...< igual que un QIO directo, sin ningún prefijo.
  • Con ;@DEST la salida se encola como reporte (con cola, ACK y reintentos) y la respuesta local es RDAOK.
  • Con ;@DEST! (efímero) hay un solo intento inmediato, sin cola: si el canal está caído, se pierde.

Destinos

TokenMedioAdmite !
;@TRM / ;@TR0 / ;@TR1 / ;@TR2Puertos seriesí (sin efecto)
;@GP (alias ;@GPRS)GPRS principal
;@WI (alias ;@WIF, ;@WIFI)WiFi principal
;@BGP / ;@BWIGPRS / WiFi backup
;@BT (alias ;@BTH)Bluetoothsí (sin efecto)
;@LOG / ;@BACK / ;@ALLLog flash / backup inteligente / canal activono
;@SM0SMS destino 0 (máx. 139 caracteres, texto plano)no
;@XB0..;@XB7Expansores

El token se compara completo y es sensible a mayúsculas: ;@sm0 o ;@XB9 responden RDAERR DST, nunca caen en un destino por defecto.


Respuestas y errores

El eco del render sale tal cual, sin prefijo. Las respuestas de estado son:

RespuestaSignificado
RDAOKAceptado. En SDA significa “comando reconocido y ejecutado”, no “salió bien”: el resultado del subcomando no siempre es capturable
RDABUSYEl subcomando estaba ocupado tras 3 intentos
RDAERR DSTDestino inválido, ;@ pelado, índice fuera de rango, o ! sobre un destino que no lo admite
RDAERR TPLPlantilla vacía
RDAERR RNDEl render falló
RDAERR OUTEl render contiene >, <, CR o LF
RDAERR LENLímites: 200 plantilla y reinyección, 170 encolado, 139 SMS, 236 eco
RDAERR CMDComando vetado (ver abajo)
RDAERR NOCMDEl comando renderizado no existe
RDAERR MEMSin memoria
RDAERR BUSYOtro SDA/QDA en curso (no se anidan entre sí)

⚠️ SDA/QDA no es una barrera de seguridad

SDA y QDA ejecutan cualquier comando que el canal por el que llegaron ya podía ejecutar. No filtran ni piden permisos extra: un >QDA SRESET< resetea el equipo igual que un >SRESET< directo, y una plantilla mal escrita puede apagar el módem o cambiar el APN. Probá siempre con QDA (que solo arma el texto) antes de pasar a SDA, y revisá la plantilla como revisarías el comando que va a generar.

Lo único vetado dentro de SDA/QDA:

ComandoMotivo
QPW, SPWDejarían el password en una respuesta ruteable a terceros
SDA, QDARecursión
QTP, STP, G, GUConsumo de stack
ACK, SAKAl reinyectarse barrerían la tabla de descargas

Ejemplos

>QDA QIO< // → >RIO;IGN0;IN1111111;...< (transparente) >QDA $'VBU',4< // → tensión de respaldo, armada al vuelo >SDA $SSSXP0| "011";@TRM< // ejecuta y rutea el eco: >RSSXP0011;ID=...< >QDA $Pos:| QCQ,7,20;@GP< // encola el texto compuesto al server >QDA $Alive;@GP!< // efímero: sale si hay socket, si no se pierde

Detalles finos

  • Caracteres reservados: dentro de segmentos $ se escapan en hex MAYÚSCULA: \3E (>), \3C (<), \3B (;), \7C (|), \0D/\0A (CR/LF). La coma va entre comillas dobles en el segmento de comando.
  • Si un comando interno necesita su propio ;@, escribir el ; como \3B: el último ;@ de la línea siempre se lo lleva SDA/QDA.
  • Un > en la plantilla ejecuta OTRO comando (el parser ancla en el último >): >SDA hola>QID< ejecuta QID.
  • En modo Wialon, encolar texto plano a ;@GP/;@WI/;@BGP/;@BWI/;@ALL/;@BACK responde RDAERR DST (la cola solo acepta tramas IPS). Usar ! (efímero, se envuelve en #D#) o componer una trama que empiece con #.
  • Plantillas a ;@SM0: no usar escapes \XX (el camino SMS los reinterpreta).
  • Desde una regla del motor de eventos (ACC={QDA ...}) la respuesta local no se emite: usar ;@DEST explícito.
  • Dos SDA/QDA simultáneos por canales distintos: el segundo recibe RDAERR BUSY.
  • No persiste nada en NVS ni gasta slots UC.

Compatibilidad

💾Firmware:v1.09.25
SP-IOT
SM-IOT
ZE-IOT

Ver También

Última actualización