8.2 Integrierte Namensräume

8.2.1 box

IoTBoX-Integrierte Werkzeuge

8.2.1.1 Aktuelle Zeit abrufen

  • Definition: now() -> int64

  • Kategorie: Funktion

  • Beschreibung: Millisekunden-Zeitstempel abrufen

  • Beispiel:

    -- Aktuelle Zeit abrufen
    local now = box.now()

8.2.1.2 Zeitformat

  • Definition: tsformat(time, format) -> string

  • Kategorie: Funktion

  • Parameter:

    • time: int64 Millisekunden-Zeitstempel
    • format: string Zeitformat
      • Format-Referenztabelle:

        Format Beschreibung Beispiel
        %a Abgekürzter Wochentagsname Thu
        %A Voller Wochentagsname Thursday
        %b Abgekürzter Monatsname Aug
        %B Voller Monatsname August
        %c Wie im Beispiel gezeigt Thu Aug 23 14:55:02 2001
        %C Jahr geteilt durch 100 und auf Ganzzahl abgeschnitten (00-99) 20
        %d Tag (01-31) 23
        %D Kurzes Datum MM/DD/YY, entspricht %m/%d/%y 08/23/01
        %e Tag, mit Leerzeichen aufgefüllt (1-31) 23
        %F Kurzes Datum YYYY-MM-DD, entspricht %Y-%m-%d 2001-08-23
        %g Wochenbasiertes Jahr, letzte zwei Ziffern (00-99) 01
        %G Wochenbasiertes Jahr 2001
        %h Abgekürzter Monatsname Aug
        %H Stunde im 24-Stunden-Format 14
        %I Stunde im 12-Stunden-Format 02
        %j Tag des Jahres 235
        %m Monat 08
        %M Minute 55
        %n Zeilenumbruch
        %p AM/PM PM
        %r Wie im Beispiel gezeigt 12-Stunden-Zeit 02:55:02 pm
        %R Wie im Beispiel gezeigt 24-Stunden-Zeit 14:55
        %S Sekunde (00-61) 02
        %t Tabulatorzeichen
        %T Entspricht %H:%M:%S 14:55:02
        %u Wochentag, Montag ist 1 (1-7) 4
        %U Wochennummer des Jahres, Sonntag als erster Tag (00-53) 33
        %V ISO 8601 Wochennummer des Jahres (01-53) 34
        %w Wochentag, Sonntag ist 0 (0-6) 4
        %W Wochennummer des Jahres, Montag als erster Tag (00-53) 34
        %x Wie im Beispiel gezeigt Monat/Jahr/Tag 08/23/01
        %X Wie im Beispiel gezeigt 14:55:02
        %y Letzte zwei Ziffern des Jahres 01
        %Y Jahr 2001
        %z ISO 8601 UTC-Versatz (1 Minute=1, 1 Stunde=100) +100
        %Z Zeitzonenname CDT
        %% Beschreibung %
  • Rückgabe: string Formatierte Zeitzeichenfolge

  • Beschreibung: Eingabe-Zeitstempel formatieren

  • Beispiel:

    -- Aktuelle Zeit formatieren
    local now = box.now()
    --Aktuelle Zeit als "2024-05-27 13:04:05" formatieren
    local time_str=box.tsformat(now,"%Y-%m-%d %H:%M:%S")

8.2.1.3 IoTBoX-integrierte Schnittstelle anfordern

  • Definition: request(url, method, data) -> table

  • Kategorie: Funktion

  • Parameter:

    • url: string HTTP-Anforderungs-URL, ohne Host- und Schema-Teile
    • method: string HTTP-Anforderungsmethode, z.B. PUT/GET/POST
    • data: table Anforderungsinhalt, nil übergeben, wenn keiner vorhanden
  • Rückgabe: table Gibt Statuscode und Inhalt zurück

  • Beschreibung: Alle IoTBoX-integrierten Schnittstellen anfordern, siehe HTTP-API für Details

  • Beispiel:

    -- Aktuelle **IoTBoX**-Geräteinformationen abrufen
    local gateway_info = request("/api/gateway","GET","")
    box.log(gateway_info.hardware)

8.2.1.4 Zufallszahl abrufen

  • Definition: random(start, end) -> int

  • Kategorie: Funktion

  • Parameter:

    • start: int Start
    • end: int Ende
  • Rückgabe: int Gibt Zufallszahl zurück

  • Beschreibung: Gibt Zufallszahl größer oder gleich start und kleiner oder gleich end zurück

  • Beispiel:

    -- Zufallszahl zwischen 0-100 abrufen
    local r=box.random(0,100)

8.2.1.5 Protokoll ausgeben

  • Definition: log(level, any...)

  • Kategorie: Funktion

  • Parameter:

    • level: string Protokollstufe, einschließlich trace, debug, info, warn (warning), err (error), critical
    • any: any Beliebige Anzahl von Inhaltsparametern, nacheinander ausgegeben
  • Beschreibung: Protokoll ausgeben

  • Beispiel:

    -- In Protokoll ausgeben
    box.log("info",1,"11",true)
    box.log("debug","this is a debug info")

8.2.1.6 IoTBoX-ID

  • Definition: gateway_id

  • Kategorie: Eigenschaft

  • Typ: string

  • Beschreibung: IoTBoX-ID, in der Push-Schnittstelle konfiguriert

  • Beispiel:

    -- Gibt aktuelle **IoTBoX**-ID zurück
    local gatway_id=box.gateway_id

8.2.1.7 IoTBoX-Fingerabdruck

  • Definition: fingerprint

  • Kategorie: Eigenschaft

  • Typ: string

  • Beschreibung: IoTBoX-Fingerabdruck

  • Beispiel:

    -- Gibt aktuellen **IoTBoX**-Fingerabdruck zurück
    local fingerprint=box.fingerprint

8.2.2 redis

Redis-Cache bedienen, alle Key-Präfixe fügen automatisch edge_calc_ an * Keys hier sind innerhalb des gesamten IoTBoX eindeutig. Wenn mehrere Geräte Edge-Berechnung verwenden, beachten Sie Key-Duplikate. * Diese Operation kann nach dem Neustart von IoTBoX gelöscht werden. Verwenden Sie store für persistente Speicherung, falls erforderlich.

8.2.2.1 Key lesen

  • Definition: get(key) -> table

  • Kategorie: Funktion

  • Parameter:

    • key: string Konfigurationsname
  • Rückgabe: table Gibt abgerufenen Inhalt zurück, gibt nil zurück, wenn leer

  • Beschreibung: Redis-Cache lesen

  • Beispiel:

    -- Redis-Cache lesen
    local cache=redis.get("cached_value")

8.2.2.2 Key schreiben

  • Definition: set(key, value)

  • Kategorie: Funktion

  • Parameter:

    • key: string Konfigurationsname
    • value: table Zu schreibender Inhalt
  • Beschreibung: Redis-Cache schreiben

  • Beispiel:

    -- Redis-Cache schreiben
    redis.set("cached_value",1)

8.2.2.3 Key löschen

  • Definition: del(key)

  • Kategorie: Funktion

  • Parameter:

    • key: string Zu löschender Key
  • Beschreibung: Redis-Cache löschen

  • Beispiel:

    -- Redis-Cache löschen
    redis.del("cached_value")

8.2.3 store

IoTBoX-integrierte db-Variable bedienen, alle Key-Präfixe fügen automatisch edge_calc_ an * Keys hier sind innerhalb des gesamten IoTBoX eindeutig. Wenn mehrere Geräte Edge-Berechnung verwenden, beachten Sie Key-Duplikate. * Dieser Key kann auch auf der Geräteeinstellungsseite bedient werden, um Konfigurations- und Edge-Berechnungsverknüpfung zu erreichen. * Diese Operation speichert persistent, hat aber schlechte Leistung aufgrund von Festplatten-Lese-/Schreibvorgängen. Verwenden Sie redis, wenn keine Persistenz erforderlich ist.

8.2.3.1 Key lesen

  • Definition: get(key) -> table

  • Kategorie: Funktion

  • Parameter:

    • key: string Konfigurationsname
  • Rückgabe: table Gibt abgerufenen Inhalt zurück, gibt nil zurück, wenn leer

  • Beschreibung: Store-Cache lesen

  • Beispiel:

    -- Store-Cache schreiben
    local cache=store.get("cached_value",1)

8.2.3.2 Key schreiben

  • Definition: set(key, value)

  • Kategorie: Funktion

  • Parameter:

    • key: string Konfigurationsname
    • value: table Zu schreibender Inhalt
  • Beschreibung: Store-Cache schreiben

  • Beispiel:

    -- Store-Cache schreiben
    store.set("cached_value",1)

8.2.3.3 Key löschen

  • Definition: del(key)

  • Kategorie: Funktion

  • Parameter:

    • key: string Zu löschender Key
  • Beschreibung: Store-Cache löschen

  • Beispiel:

    -- Kann überall verwendet werden
    -- Redis-Cache löschen
    store.del("cached_value")

8.2.4 http

HTTP-Schnittstelle anfordern

8.2.4.1 Gemeinsame Parameter

  • Parameter:

    • request: table Anforderungsparameter
      • url : string Anforderungs-URL
      • params : table Anforderungs-Query-Parameter (können leer sein)
      • headers : table Anforderungs-HTTP-Header (können leer sein)
      • cookies : table Anforderungs-Cookies (können leer sein)
      • form : table Anforderungs-Formulardaten (können leer sein, nur für post)
      • body : table/string Post-Inhalt (kann leer sein, nur für post und put)
  • Rückgabe

    • status_code : int Zurückgegebener http_code
    • text : string Zurückgegebener Inhalt
    • headers : table Zurückgegebene HTTP-Header
    • cookies : array[table] Zurückgegebene Cookies
      • name : string Cookie-Name
      • value : string Cookie-Inhalt
      • domain : string Domäne
      • path : string Pfad
      • include_subdomain : bool Subdomäne einschließen
      • http_only : bool Http only
      • expires : int Ablaufzeit
  • 示例:

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

8.2.4.2 get

  • Definition: get(request) -> table

  • Kategorie: Funktion

  • Parameter: 见Gemeinsame Parameter

  • Rückgabe: 见Gemeinsame Parameter

  • Beschreibung: HTTP-GET-Anforderung

  • 示例:

    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

  • Definition: post(request) -> table

  • Kategorie: Funktion

  • Parameter: 见Gemeinsame Parameter

  • Rückgabe: 见Gemeinsame Parameter

  • Beschreibung: HTTP-POST-Anforderung

  • 示例:

    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

  • Definition: put(request) -> table

  • Kategorie: Funktion

  • Parameter: 见Gemeinsame Parameter

  • Rückgabe: 见Gemeinsame Parameter

  • Beschreibung: HTTP-PUT-Anforderung

  • 示例:

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

8.2.4.5 delete

  • Definition: delete(request) -> table

  • Kategorie: Funktion

  • Parameter: 见Gemeinsame Parameter

  • Rückgabe: 见Gemeinsame Parameter

  • Beschreibung: HTTP-DELETE-Anforderung

  • 示例:

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