8.2 Espacios de nombres incorporados

8.2.1 box

Herramientas incorporadas de IoTBoX

8.2.1.1 Obtener hora actual

  • Definición: now() -> int64

  • Categoría: Función

  • Descripción: Obtener marca de tiempo en milisegundos

  • Ejemplo:

    -- Obtener hora actual
    local now = box.now()

8.2.1.2 Formato de hora

  • Definición: tsformat(time, format) -> string

  • Categoría: Función

  • Parámetro:

    • time: int64 Marca de tiempo en milisegundos
    • format: string Formato de hora
      • Tabla de referencia de formato:

        Formato Descripción Ejemplo
        %a Nombre abreviado del día de la semana Thu
        %A Nombre completo del día de la semana Thursday
        %b Nombre abreviado del mes Aug
        %B Nombre completo del mes August
        %c Como se muestra en el ejemplo Thu Aug 23 14:55:02 2001
        %C Año dividido por 100 y truncado a entero (00-99) 20
        %d Día (01-31) 23
        %D Fecha corta MM/DD/YY, equivalente a %m/%d/%y 08/23/01
        %e Día, rellenado con espacios (1-31) 23
        %F Fecha corta YYYY-MM-DD, equivalente a %Y-%m-%d 2001-08-23
        %g Año basado en semanas, últimos dos dígitos (00-99) 01
        %G Año basado en semanas 2001
        %h Nombre abreviado del mes Aug
        %H Hora en formato 24 horas 14
        %I Hora en formato 12 horas 02
        %j Día del año 235
        %m Mes 08
        %M Minuto 55
        %n Nueva línea
        %p AM/PM PM
        %r Como se muestra en el ejemplo Hora en formato 12 horas 02:55:02 pm
        %R Como se muestra en el ejemplo Hora en formato 24 horas 14:55
        %S Segundo (00-61) 02
        %t Carácter de tabulación
        %T Equivalente a %H:%M:%S 14:55:02
        %u Día de la semana, lunes es 1 (1-7) 4
        %U Número de semana del año, domingo como primer día (00-53) 33
        %V Número de semana ISO 8601 del año (01-53) 34
        %w Día de la semana, domingo es 0 (0-6) 4
        %W Número de semana del año, lunes como primer día (00-53) 34
        %x Como se muestra en el ejemplo Mes/Año/Día 08/23/01
        %X Como se muestra en el ejemplo 14:55:02
        %y Últimos dos dígitos del año 01
        %Y Año 2001
        %z Desfase UTC ISO 8601 (1 minuto=1, 1 hora=100) +100
        %Z Nombre de zona horaria CDT
        %% Descripción %
  • Retorno: string Cadena de hora formateada

  • Descripción: Formatear marca de tiempo de entrada

  • Ejemplo:

    -- Formatear hora actual
    local now = box.now()
    --Formatear hora actual como "2024-05-27 13:04:05"
    local time_str=box.tsformat(now,"%Y-%m-%d %H:%M:%S")

8.2.1.3 Solicitar interfaz incorporada de IoTBoX

  • Definición: request(url, method, data) -> table

  • Categoría: Función

  • Parámetro:

    • url: string URL de solicitud HTTP, excluyendo las partes de host y schema
    • method: string Método de solicitud HTTP, por ejemplo PUT/GET/POST
    • data: table Contenido de la solicitud, pase nil si no hay ninguno
  • Retorno: table Devuelve código de estado y contenido

  • Descripción: Solicitar todas las interfaces incorporadas de IoTBoX, ver API HTTP para detalles

  • Ejemplo:

    -- Obtener información del dispositivo **IoTBoX** actual
    local gateway_info = request("/api/gateway","GET","")
    box.log(gateway_info.hardware)

8.2.1.4 Obtener número aleatorio

  • Definición: random(start, end) -> int

  • Categoría: Función

  • Parámetro:

    • start: int Inicio
    • end: int Fin
  • Retorno: int Devuelve número aleatorio

  • Descripción: Devuelve entero aleatorio mayor o igual que start y menor o igual que end

  • Ejemplo:

    -- Obtener número aleatorio entre 0-100
    local r=box.random(0,100)

8.2.1.5 Imprimir registro

  • Definición: log(level, any...)

  • Categoría: Función

  • Parámetro:

    • level: string Nivel de registro, incluyendo trace, debug, info, warn (warning), err (error), critical
    • any: any Cualquier número de parámetros de contenido, impresos en orden
  • Descripción: Imprimir registro

  • Ejemplo:

    -- Imprimir en registro
    box.log("info",1,"11",true)
    box.log("debug","this is a debug info")

8.2.1.6 ID de IoTBoX

  • Definición: gateway_id

  • Categoría: Propiedad

  • Tipo: string

  • Descripción: ID de IoTBoX, configurado en la interfaz de push

  • Ejemplo:

    -- Devuelve el id del **IoTBoX** actual
    local gatway_id=box.gateway_id

8.2.1.7 Huella digital de IoTBoX

  • Definición: fingerprint

  • Categoría: Propiedad

  • Tipo: string

  • Descripción: Huella digital de IoTBoX

  • Ejemplo:

    -- Devuelve la huella digital del **IoTBoX** actual
    local fingerprint=box.fingerprint

8.2.2 redis

Operar caché redis, todos los prefijos de key agregan automáticamente edge_calc_ * Las keys aquí son únicas en todo IoTBoX. Si múltiples dispositivos usan cálculo de borde, tenga cuidado con la duplicación de keys. * Esta operación puede borrarse después de reiniciar IoTBoX. Use store para almacenamiento persistente si es necesario.

8.2.2.1 Leer key

  • Definición: get(key) -> table

  • Categoría: Función

  • Parámetro:

    • key: string Nombre de configuración
  • Retorno: table Devuelve el contenido obtenido, devuelve nil si está vacío

  • Descripción: Leer caché redis

  • Ejemplo:

    -- Leer caché redis
    local cache=redis.get("cached_value")

8.2.2.2 Escribir key

  • Definición: set(key, value)

  • Categoría: Función

  • Parámetro:

    • key: string Nombre de configuración
    • value: table Contenido a escribir
  • Descripción: Escribir caché redis

  • Ejemplo:

    -- Escribir caché redis
    redis.set("cached_value",1)

8.2.2.3 Eliminar key

  • Definición: del(key)

  • Categoría: Función

  • Parámetro:

    • key: string Key a eliminar
  • Descripción: Eliminar caché redis

  • Ejemplo:

    -- Eliminar caché redis
    redis.del("cached_value")

8.2.3 store

Operar variable db incorporada de IoTBoX, todos los prefijos de key agregan automáticamente edge_calc_ * Las keys aquí son únicas en todo IoTBoX. Si múltiples dispositivos usan cálculo de borde, tenga cuidado con la duplicación de keys. * Esta key también se puede operar en la página de configuración del dispositivo para lograr la vinculación de configuración y cálculo de borde. * Esta operación persiste el almacenamiento pero tiene bajo rendimiento debido a la lectura/escritura del disco. Use redis si no se necesita persistencia.

8.2.3.1 Leer key

  • Definición: get(key) -> table

  • Categoría: Función

  • Parámetro:

    • key: string Nombre de configuración
  • Retorno: table Devuelve el contenido obtenido, devuelve nil si está vacío

  • Descripción: Leer caché store

  • Ejemplo:

    -- Escribir caché store
    local cache=store.get("cached_value",1)

8.2.3.2 Escribir key

  • Definición: set(key, value)

  • Categoría: Función

  • Parámetro:

    • key: string Nombre de configuración
    • value: table Contenido a escribir
  • Descripción: Escribir caché store

  • Ejemplo:

    -- Escribir caché store
    store.set("cached_value",1)

8.2.3.3 Eliminar key

  • Definición: del(key)

  • Categoría: Función

  • Parámetro:

    • key: string Key a eliminar
  • Descripción: Eliminar caché store

  • Ejemplo:

    -- Se puede usar en cualquier lugar
    -- Eliminar caché redis
    store.del("cached_value")

8.2.4 http

Solicitar interfaz HTTP

8.2.4.1 Parámetros comunes

  • Parámetro:

    • request: table Parámetros de solicitud
      • url : string Url de solicitud
      • params : table Parámetros query de solicitud (puede estar vacío)
      • headers : table Encabezados http de solicitud (puede estar vacío)
      • cookies : table Cookies de solicitud (puede estar vacío)
      • form : table Datos form de solicitud (puede estar vacío, solo para post)
      • body : table/string Contenido post (puede estar vacío, solo para post y put)
  • Retorno

    • status_code : int http_code devuelto
    • text : string Contenido devuelto
    • headers : table Encabezados http devueltos
    • cookies : array[table] Cookies devueltas
      • name : string Nombre de cookie
      • value : string Contenido de cookie
      • domain : string Dominio
      • path : string Ruta
      • include_subdomain : bool Incluir subdominio
      • http_only : bool Http only
      • expires : int Tiempo de expiración
  • 示例:

    {
        "status_code": 200,
        "text": "hello",
        "headers": {
            "X-Foo": "bar"
        },
        "cookies": {
            [
                "name":"user_id",
                "value":"1"
            ]
        }
    }

8.2.4.2 get

  • Definición: get(request) -> table

  • Categoría: Función

  • Parámetro: 见Parámetros comunes

  • Retorno: 见Parámetros comunes

  • Descripción: Solicitud HTTP GET

  • 示例:

    local r=http.get({
        url="http://127.0.0.1",
        params={
            foo="bar"
        },
        headers={
            ["X-Data"]="aaaa"
        },
        cookie={
            user_id=1
        }
    })
    box.log("debug",r)

8.2.4.3 post

  • Definición: post(request) -> table

  • Categoría: Función

  • Parámetro: 见Parámetros comunes

  • Retorno: 见Parámetros comunes

  • Descripción: Solicitud HTTP POST

  • 示例:

    local r1=http.post({
        url="http://127.0.0.1",
        form={
            foo="bar"
        },
    })
    box.log("debug",r1)
    local r2=http.post({
        url="http://127.0.0.1",
        body={
            foo="bar"
        },
    })
    box.log("debug",r2)

8.2.4.4 put

  • Definición: put(request) -> table

  • Categoría: Función

  • Parámetro: 见Parámetros comunes

  • Retorno: 见Parámetros comunes

  • Descripción: Solicitud HTTP PUT

  • 示例:

    local r=http.put({
        url="http://127.0.0.1",
        body={
            foo="bar"
        },
    })
    box.log("debug",r)

8.2.4.5 delete

  • Definición: delete(request) -> table

  • Categoría: Función

  • Parámetro: 见Parámetros comunes

  • Retorno: 见Parámetros comunes

  • Descripción: Solicitud HTTP DELETE

  • 示例:

    local r=http.delete({
        url="http://127.0.0.1",
    })
    box.log("debug",r)