9.1 Diseño de APP

9.1.1 Estructura básica

La estructura básica de APP se define en formato JSON y contiene los siguientes campos principales:

{
    "code": "vip.woody.app.test1",
    "name": "测试应用",
    "logo": "",
    "script": "",
    "schema": "",
    "pages": "",
    "config": ""
}
  • Descripción de campos
Campo Tipo Requerido Descripción
code String ✅ Identificador único de la aplicación. Al instalar con el mismo code se sobrescribirá la aplicación existente
name String ✅ Nombre de visualización de la aplicación
logo String ❌ Icono de la aplicación, admite codificación base64 o URL de imagen
script String ❌ Script de backend Lua que controla la lógica de la aplicación. Ver APP Backend para detalles
schema String ❌ Definición de la aplicación en formato JSON codificado
pages String ❌ Definición de páginas frontend en formato JSON codificado
config String ❌ Información de configuración después de la instalación de la aplicación

9.1.2 Schema de definición de aplicación

9.1.2.1 Resumen de estructura

Resumen de estructura

{
    "data": [
        {
            "name": "products",
            "readable": true,
            "writable": false,
            "type": "table",
            "struct": [
                {
                    "name": "device",
                    "type": "string"
                },
                {
                    "name": "value",
                    "type": "int"
                },
                {
                    "name": "delta",
                    "type": "int"
                },
                {
                    "name": "time",
                    "type": "int"
                }
            ]
        }
    ],
    "input": [
        {
            "class": "cnc1",
            "define": [
                {
                    "code": "products",
                    "name": "产量",
                    "type": "int"
                }      
            ],
            "title": "一类加工机床"
        }
    ]
}

9.1.2.2 Definición de campo data

El campo data define la estructura de almacenamiento de datos de la aplicación, usando formato de array. Cada elemento contiene los siguientes atributos:

Campo Tipo Descripción
name String Nombre de tabla de datos
readable Boolean Si es legible
writable Boolean Si es escribible
type String Tipo de datos, actualmente solo admite table
struct Array Definición de estructura de tabla
  • Solo los permisos de acceso de las API de acceso a tablas generadas automáticamente son controlados por los campos readable y writable. El acceso a datos en scripts Lua de backend no se ve afectado.

9.1.2.3 Definición de estructura de tabla

struct 数组中每个字段包含:

  • name: Nombre de campo
  • type: Tipo de campo, admite los siguientes tipos:
    • string Tipo cadena
    • int Tipo entero
    • float Tipo punto flotante
9.1.2.3.1 Interfaces API generadas automáticamente

Basándose en la definición data, el sistema expondrá automáticamente las siguientes interfaces API RESTful:

Parámetros de ruta

  • code: Identificador de aplicación

  • table: Nombre de tabla de datos

  • id: Identificador único de registro

  • Consulta de lista de datos

GET /api/app/{code}/data/{table}

Parámetros de consulta

Campo Tipo 默认值 Descripción
_start Number 0 Posición de registro inicial
_limit Number 10 Número de registros devueltos
{field} Any - Filtro de valor igual, ej., ?value=1
>{field} Any - Filtro mayor o igual que, ej., ?>value=1
<{field} Any - Filtro menor o igual que, ej., ?<value=1
order String - Orden ascendente, ej., ?order=value
-order String - Orden descendente, ej., ?-order=value
  • Agregar registro

POST /api/app/{code}/data/{table}

  • Consulta de registro único

GET /api/app/{code}/data/{table}/{id}

  • Actualizar registro

PUT /api/app/{code}/data/{table}/{id}

  • Eliminar registro

DELETE /api/app/{code}/data/{table}/{id}

9.1.2.4 Definición de campo input

El campo input define los dispositivos dentro de la APP y los campos después del mapeo de dispositivos. La idea de diseño es que una App puede apuntar a múltiples tipos diferentes de dispositivos, como varios PLC y CNC. Algunas funciones requieren abstraer diferentes dispositivos en un tipo de dispositivo, por lo que se necesita definir un tipo de dispositivo aquí para el mapeo durante la configuración:

{
    "class": "cnc1",
    "define": [
        {
            "code": "products",
            "name": "产量",
            "type": "int"
        }      
    ],
    "title": "一类加工机床"
}
Campo Tipo Descripción
class String Tipo de dispositivo
title String Nombre de tipo de dispositivo
define Array Definición de variable

Definición de variable

Campo Tipo Descripción
code String Código de variable
name String Nombre de variable
type String Tipo de variable

9.1.3 Campo de configuración config

El campo config se usa para almacenar el contenido de configuración después de que se instala la app

9.1.3.1 Resumen de estructura

Resumen de estructura

{
    "device": [
        {
            "code": "M06",
            "class": "cnc1",
            "variable": [
                {
                    "dst": "products",
                    "src": "cnc_products",
                }
            ]
        }
    ]
}

9.1.3.2 Definición de campo device

El campo device define el mapeo de dispositivos recopilados por IoTBoX a dispositivos dentro de la APP, usando formato de array

Campo Tipo Descripción
code String Código de máquina
class Boolean Tipo de dispositivo dentro de App
variable Array Definición de variable de mapeo

Definición de variable de mapeo

Campo Tipo Descripción
dst String Código de variable original
src Boolean Código de variable dentro de App

El significado de la configuración anterior es: mapear el dispositivo de recopilación M06 configurado en IoTBoX como un tipo cnc1 en la App, y mapear los cnc_products recopilados por M06 como la variable product de cnc1.