9.2 APP-Backend

  • APP verwendet Funktionen und Typen aus Edge Computing Edge Computing

9.2.1 APP-Integrierte Variablen und Definitionen

9.2.1.1 Application-Typ

Der Application-Typ ist der Typ der App im C++-Code

class Application{
    json ExecSql(string sql);
    bool HasAevice(string code);
    Variable GeVariable(string device_code,string variable_mapped_code);
    string code;
}
9.2.1.1.1 SQL-Anweisung ausführen
  • Definition: ExecSql(sql)

  • Methode

  • Parameter:

    • sql: string Auszuführende SQLite3-Anweisung
  • Rückgabe: table Ergebnis nach der SQL-Ausführung, eine Liste von Key-Value-Maps, z.B. [{“id”:1,“name”:“xx”}]. Gibt ein leeres Array [] zurück, wenn die Ausführung fehlschlägt

  • Beispiel

    -- 当前APP为app
    -- 查询所有的产品
    local goods = app:ExecSql("select * from goods;")
9.2.1.1.2 Prüfen, ob Gerät existiert

Prüft, ob die aktuelle APP ein bestimmtes Gerät zugeordnet hat * Definition: HasAevice(code) * Methode * Parameter: - code: string Gerätecode * Rückgabe: bool Gibt true zurück, wenn es existiert, false wenn nicht * Beispiel

```lua
-- 当前APP为app
-- 查询是否有fanuc001设备
local has_fanuc = app:HasAevice("fanuc001")
```
9.2.1.1.3 Zeiger auf Originalvariable der zugeordneten Variable abrufen
  • Definition: GeVariable(device_code, variable_mapped_code)

  • Methode

  • Parameter:

    • device_code: string Gerätecode
    • variable_mapped_code: string Zugeordneter Variablenname
  • Rückgabe: Variable Originale Erfassungsvariable, Typ ist eingebaute Variable. Gibt nil zurück, wenn nicht vorhanden

  • Beispiel

    -- 当前APP为app
    -- 查找prodiuct变量的原始变量
    local product = app:GeVariable("fanuc001","product")
9.2.1.1.4 Variablenname
  • Definition: code
  • Eigenschaft
  • Typ: string
  • Beschreibung: Code der APP

9.2.1.2 HttpRequest-Typ

API-Anforderungsparameter, Format wie folgt

---@class HttpRequest
---@field path_arg table<string, string> PathArg
---@field query table<string, string> Query
---@field body any Body
---@field headers table<string, string> Header
9.2.1.2.1 Anforderungs-Pfadparameter
  • Definition: path_arg
  • Eigenschaft
  • Typ: table<string, string>
  • Beschreibung: Parsing-Ergebnis von PATH-Variablen mit <>, wie /test_api/<code>
9.2.1.2.2 Anforderungs-Query-Parameter
  • Definition: query
  • Eigenschaft
  • Typ: table<string, string>
  • Beschreibung: Anforderungsparameter nach ? in /test_api?a=1&b=2
9.2.1.2.3 Anforderungs-Body-Parameter
  • Definition: body
  • Eigenschaft
  • Typ: any
  • Beschreibung: Body der HTTP-Post- oder Put-Anforderung
9.2.1.2.4 Anforderungs-Headers-Parameter
  • Definition: headers
  • Eigenschaft
  • Typ: table<string, string>
  • Beschreibung: Headers der HTTP-Anforderung

9.2.1.3 HttpResponse-Typ

API-Antwortinhalt, Format wie folgt

---@class HttpResponse
---@field code integer StatusCode
---@field body any Body
---@field headers table<string, string> Header
9.2.1.3.1 HTTP-Antwort-status_code
  • Definition: code
  • Eigenschaft
  • Typ: integer
  • Beschreibung: HTTP-Antwortcode
9.2.1.3.2 HTTP-Antwortinhalt
  • Definition: body
  • Eigenschaft
  • Typ: any
  • Beschreibung: HTTP-Antwort-Body
9.2.1.3.3 HTTP-Antwort-Headers
  • Definition: headers
  • Eigenschaft
  • Typ: table<string, string>
  • Beschreibung: HTTP-Antwort-Headers

9.2.1.4 MappedDevice-Typ

Innerhalb der App zugeordnetes Gerät, Format wie folgt

---@class MappedDevice
---@field code string Device Code
---@field type string Device Type
---@field class string Device Class
9.2.1.4.1 MappedDevice-Code
  • Definition: code
  • Eigenschaft
  • Typ: string
  • Beschreibung: Gerätecode, entspricht Device.code der Basisvariable
9.2.1.4.2 MappedDevice-Typ
  • Definition: type
  • Eigenschaft
  • Typ: string
  • Beschreibung: Gerätetyp, entspricht Device.type der Basisvariable
9.2.1.4.3 MappedDevice-Klasse
  • Definition: class
  • Eigenschaft
  • Typ: string
  • Beschreibung: Geräteklasse, eine intern von der APP definierte Zeichenfolge

9.2.1.5 TriggerVariable-Typ

Innerhalb der App zugeordnetes Gerät, Format wie folgt

---@class TriggerVariable
---@field current integer | number | string | boolean | table  当前采集值
---@field last integer | number | string | boolean | table  上次采集值
9.2.1.5.1 TriggerVariable current
  • Definition: current
  • Eigenschaft
  • Typ: integer | number | string | boolean | table
  • Beschreibung: Aktueller Erfassungswert der Variable
9.2.1.5.2 TriggerVariable last
  • Definition: last
  • Eigenschaft
  • Typ: integer | number | string | boolean | table
  • Beschreibung: Letzter Erfassungswert der Variable

9.2.2 Skriptformat

Minimales APP-Format wie folgt


--- test_api 测试API
---@param request HttpRequest  -- 请求参数
---@return  HttpResponse    -- 返回参数
local function test_api(request)
    return {}
end



--- Trigger 设备采集后触发函数
---@param device MappedDevice  -- 当前设备
---@param data table<string,TriggerVariable>  -- 映射后的变量code与变量采集值
---@return  table<string,any>    -- 返回参数,更新到最终的设备采集数据
function Trigger(device, data)
    local result = {}
    return result
end


Api = {
    {
        path = "/test_api/<code>",
        method = "GET",
        func = test_api
    },
}

其中定义如下

9.2.2.1 Trigger-Funktion

Für Anwendungen, die der APP zugeordnet sind, wird die Trigger-Funktion nach jeder Datenerfassungsrunde ausgelöst, wobei die zugeordneten Gerätevariablen übergeben werden

  • Definition: Trigger(device, data)
  • Funktion
  • Parameter:
    • device: MappedDevice Aktuelles Gerät, dieses Gerät
    • data: table<string,TriggerVariable> Zugeordneter Variablencode und Variabenerfassungswert
  • Rückgabe: table<string,any> Zurückgegebene Daten aktualisieren direkt die Geräteerfassungsergebnisse. Nur Rückgabewerte ändern die Erfassungsergebnisse, direkte Manipulation von data nicht

9.2.2.2 Api-Tabelle

Die Api-Tabelle definiert extern freigegebene HTTP-Schnittstellen, ist eine Liste von verschachtelten Maps

  • Felder:
    • path: string Anforderungspfad, verwenden Sie <>, um Pfadparameter zu setzen
    • method: string HTTP-Anforderungsmethode
    • func: function Funktion, die ausgelöst wird, wenn die Route übereinstimmt
  • Rückgabe: table<string,any> Zurückgegebene Daten aktualisieren direkt die Geräteerfassungsergebnisse. Nur Rückgabewerte ändern die Erfassungsergebnisse, direkte Manipulation von data nicht
  • Trigger-Funktion
    • Eingabe: request HttpRequest-Typ
    • Rückgabewert HttpResponse-Typ