9.1 APP-Design

9.1.1 Grundstruktur

Die Grundstruktur der APP wird im JSON-Format definiert und enthält die folgenden Kernfelder:

{
    "code": "vip.woody.app.test1",
    "name": "测试应用",
    "logo": "",
    "script": "",
    "schema": "",
    "pages": "",
    "config": ""
}
  • Feldbeschreibung
Feld Typ Erforderlich Beschreibung
code String ✅ Eindeutiger Bezeichner der Anwendung. Bei Installation mit demselben Code wird die vorhandene Anwendung überschrieben
name String ✅ Anzeigename der Anwendung
logo String ❌ Anwendungssymbol, unterstützt Base64-Kodierung oder Bild-URL
script String ❌ Lua-Backend-Skript, das die Anwendungslogik steuert. Details siehe APP-Backend
schema String ❌ Anwendungsdefinition im kodierten JSON-Format
pages String ❌ Frontend-Seitendefinition im kodierten JSON-Format
config String ❌ Konfigurationsinformationen nach der Anwendungsinstallation

9.1.2 Anwendungsdefinitionsschema

9.1.2.1 Strukturübersicht

Strukturübersicht

{
    "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 data-Felddefinition

Das data-Feld definiert die Datenspeicherstruktur der Anwendung im Array-Format. Jedes Element enthält die folgenden Attribute:

Feld Typ Beschreibung
name String Datentabellenname
readable Boolean Ob lesbar
writable Boolean Ob beschreibbar
type String Datentyp, derzeit wird nur table unterstützt
struct Array Tabellenstrukturdefinition
  • Nur die Zugriffsberechtigungen automatisch generierter Tabellenzugriffs-APIs werden durch die Felder readable und writable gesteuert. Der Datenzugriff in Backend-Lua-Skripten ist nicht betroffen.

9.1.2.3 Tabellenstrukturdefinition

struct 数组中每个字段包含:

  • name: Feldname
  • type: Feldtyp, unterstützt die folgenden Typen:
    • string Zeichenfolgentyp
    • int Ganzzahltyp
    • float Gleitkommatyp
9.1.2.3.1 Automatisch generierte API-Schnittstellen

Basierend auf der data-Definition wird das System automatisch die folgenden RESTful-API-Schnittstellen bereitstellen:

Pfadparameter

  • code: Anwendungskennzeichner

  • table: Datentabellenname

  • id: Eindeutiger Bezeichner des Datensatzes

  • Datenlistenabfrage

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

Abfrageparameter

Feld Typ 默认值 Beschreibung
_start Number 0 Startposition des Datensatzes
_limit Number 10 Anzahl der zurückgegebenen Datensätze
{field} Any - Gleichwertfilter, z.B. ?value=1
>{field} Any - Größer-oder-gleich-Filter, z.B. ?>value=1
<{field} Any - Kleiner-oder-gleich-Filter, z.B. ?<value=1
order String - Aufsteigende Sortierung, z.B. ?order=value
-order String - Absteigende Sortierung, z.B. ?-order=value
  • Datensatz hinzufügen

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

  • Einzelne Datensatzabfrage

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

  • Datensatz aktualisieren

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

  • Datensatz löschen

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

9.1.2.4 input-Felddefinition

Das input-Feld definiert Geräte innerhalb der APP und Felder nach der Gerätezuordnung. Die Designidee ist, dass eine App auf mehrere verschiedene Gerätetypen abzielen kann, wie verschiedene PLCs und CNCs. Einige Funktionen erfordern die Abstraktion verschiedener Geräte zu einem Gerätetyp, daher muss hier ein Gerätetyp für die Zuordnung während der Konfiguration definiert werden:

{
    "class": "cnc1",
    "define": [
        {
            "code": "products",
            "name": "产量",
            "type": "int"
        }      
    ],
    "title": "一类加工机床"
}
Feld Typ Beschreibung
class String Gerätetyp
title String Gerätetypname
define Array Variablendefinition

Variablendefinition

Feld Typ Beschreibung
code String Variablencode
name String Variablenname
type String Variablentyp

9.1.3 Konfigurationsfeld config

Das config-Feld wird verwendet, um den Konfigurationsinhalt nach der App-Installation zu speichern

9.1.3.1 Strukturübersicht

Strukturübersicht

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

9.1.3.2 device-Felddefinition

Das device-Feld definiert die Zuordnung von durch IoTBoX erfassten Geräten zu Geräten innerhalb der APP im Array-Format

Feld Typ Beschreibung
code String Maschinencode
class Boolean Gerätetyp innerhalb der App
variable Array Zuordnungsvariablendefinition

Zuordnungsvariablendefinition

Feld Typ Beschreibung
dst String Originalvariablencode
src Boolean Variablencode innerhalb der App

Die Bedeutung der obigen Konfiguration ist: Das in IoTBoX konfigurierte Erfassungsgerät M06 als cnc1-Typ in die App zu zuordnen und die von M06 erfassten cnc_products als product-Variable von cnc1 zu zuordnen.