Keresés
MENU
  • Kifejezések / Szkriptnyelv
  • Felhasználók és engedélyek
  • Biztonsági mentés, biztonsági mentés visszaállítása, gyári beállítások visszaállítása
  • Software release notes
  • Kézi konfiguráció

    Megvalósítás a TapHome-ban

    A TapHome-ban a csomagelemző egy hardveres interfész (Beállítások → Hardver → Új felület hozzáadása → Packet parser), amely arra szolgál, hogy harmadik féltől származó eszközöket csatlakoztasson a vezérlőhöz. Ezek az eszközök a vezérlőegységgel WiFi vagy LAN segítségével, TCP/IP protokollon keresztül kommunikálhatnak.

    A csomagelemző egy saját szkriptnyelvvel dolgozik, amelyet kifejezetten a TapHome rendszerhez terveztek. Ez a nyelv a csatlakoztatott eszközök és a vezérlővel való kommunikációjuk vezérlésére és kezelésére szolgál. Kattintson ide a TapHome szkriptnyelvről szóló további információkért

    Hierarchia

    A TapHome rendszer hierarchikus struktúrát használ a csatlakoztatott eszközök rendszerezésére. Ebben a struktúrában egy modul szülőeszközként működik, és képes kommunikálni és vezérelni a gyermek eszközeit.

    Modul

    Egy interfész tartalmazhat egy vagy több modult, amelyek a legtöbb esetben a teljes fizikai eszközzel való kommunikációt fedik le. A konfiguráció szempontjából egy modul a következőket határozza meg:

    • Az mDNS eszköz IP-címe vagy neve
    • kommunikációs port
    • Biztonságos kapcsolat: Lásd a modul Hitelesítés szakaszát a Részletes beállítások modulban.
    • SSL tanúsítvány hibák figyelmen kívül hagyása

    Device

    Egy adott vezérlőt vagy érzékelőt képvisel a TapHome rendszerben. Mindig az egyszülős modul részét kell képeznie.

    Támogatott eszközök:

    • Digitális kimenet
    • Analóg kimenet
    • Termosztát
    • Többértékű kapcsoló
    • Hő érzékelő
    • Változó
    • Nyomógomb
    • Elektromos fogyasztásmérő
    • Kontaktus
    • Redőnyök, napellenzők, keverőszelepek
    • RGB fény
    • Hangolható fehér fény

    Példa: Shelly Plug S
    A modul IP-címadatokat tartalmaz, szkripteket tartalmaz az állapot, a beállítások leolvasására és a szolgáltatási műveletek elvégzésére. 2 eszközt foglal magában: egy digitális kimenetet (relé) és egy mérőműszert, amely a csatlakoztatott eszközök energiafogyasztását méri.

    Szkriptek olvasáshoz és íráshoz

    A TapHome vezérlő és a csatlakoztatott eszközök HTTP vagy HTTPS GET/POST kérésekkel kommunikálhatnak. Az ezekre a kérésekre adott válaszok egy sor speciális függvény segítségével elemezhetők. Létezhet például egy kifejezetten XML-válaszok elemzésére szolgáló függvény, egy másik a JSON-válaszok elemzésére szolgáló függvény, és még egy másik a bájtmintatömb-válaszok elemzésére szolgáló függvény. Ezek a funkciók megkönnyítik a válaszokban kapott információk értelmezését és felhasználását, lehetővé téve a hatékonyabb és eredményesebb kommunikációt a vezérlővel és a csatlakoztatott eszközökkel.

    A TapHome számos olyan attribútumot határoz meg, amelyek a szkriptnyelvben szerepelhetnek:

    • Inicializáló szkript: az eszköz indításakor fut le (pl. a vezérlő újraindítása után).
    • Skriptolvasás: globális változók értékeinek beállítása vagy hibaállapotok olvasása
    • Értékolvasó szkript: szkript egy adott érték (változó) beolvasására egy csatlakoztatott eszközről (pl. beállított hőmérséklet egy termosztáton vagy mért hőmérséklet egy termosztáton).
    • Write value script: értéket ír egy csatlakoztatott eszközre

    Hibakondíciók definiálása szkriptekből

    Szolgáltatás attribútum tulajdonságok és műveletek

    Szkriptek és segédváltozók a modulban

    Szkriptek és segédváltozók az eszközön

    További információért lásd Modbus dokumentáció

    Támogatott protokollok

    • HTTP

    • TCP

    • UDP

    • FTP

    • MQTT

    HTTP

    SENDHTTPREQUEST

    Elküld egy HTTP-kérelmet a megadott paraméterekkel, vár a válaszra, és a választ JSON-stringként adja vissza, amely olyan értékeket tartalmaz, mint a Tartalom, fejlécek, HTTP eredménykód. A funkció csak a HTTP protokollt használó csomagelemző szkriptekben támogatott.

    SENDHTTPREQUEST( path, method, body, header1, header2… )
    SENDHTTPREQUEST( HttpRequest )

    Examples:

    SENDHTTPREQUEST("/getValue")		Result is:
    {
      "Headers": [
        {
          "Key": "Content-Type", “Value": [“application/json"]
        },
        {
          "Key": "Content-Length", “Value": ["1007"]
        },
      ],
      "Content": "{\"value\":31}”,
      "ReasonPhrase": "OK",
      "StatusCode": 200,
      "IsSuccess": true
    }
    SENDHTTPREQUEST("/doSomething", “POST”, “someData”, “header1:value1”, “header2:value2”, “header3:value3”)
    VAR request := HTTPREQUEST(“/path”, “PUT”, “someData”);
    request.Headers := { “name1: value1”, “name2: value2” … };
    request.Method := “POST”;
    VAR response := SENDHTTPREQUEST(request);
     
    IF response.IsSuccess
    	VAR content := response.Content;
    	…
    END

    TCP, UDP

    SENDDATA

    A megadott adatokat (karakterlánc vagy UInt8 kollekció) TCP vagy UDP protokoll segítségével küldi el. Ha az adat egy karakterlánc objektum, akkor az implicit módon bájtokká konvertálódik az iso-8859-1 kódolással. A funkció csak TCP vagy UDP protokollal rendelkező csomagelemző szkriptekben támogatott. A fogadott bájtokat egy Listener szkriptben lehet feldolgozni.

    SENDDATA( string/Collection<UInt8> )

    Examples:

    SENDATA(BYTECOLLECTION(“0a dd ef a2”)
    SENDATA(“{\”value\”:212}”)

    COMPLETESERVICEATTRIBUTE

    Ezt a funkciót a TCP/UDP csomagelemző Listener szkriptjei használják a Service Attribute értékének értesítésére a kérés befejezéséről.
    Például a SENDDATA függvénnyel létrehoz egy kérést egy szolgáltatásattribútum-skriptben, és akkor fejezi be a szolgáltatásattribútum olvasását, amikor a figyelőszkript megkapja az adatokat.

    COMPLETESERVICEATTRIBUTE( attributeName, value, error )

    Examples:

    COMPLETESERVICEATTRIBUTE(“Uptime”, “2d:21h:43m”)
    COMPLETESERVICEATTRIBUTE(“Status”, “”, “Device is offline”)

    COMPLETESERVICEACTION

    Ezt a funkciót a TCP/UDP protokollt használó csomagelemző csomagmegosztó szkriptekben használják a szolgáltatási műveletkérés befejezésének értesítésére.
    Például a SENDDATA függvény használatával létrehozhat egy kérést egy szolgáltatási művelet parancsfájlban, és befejezheti a szolgáltatási műveletet, miután a figyelő parancsfájl megkapta az adatokat.

    COMPLETESERVICEACTION( actionName, result )

    Examples:

    COMPLETESERVICEACTION(“Reboot”, “Rebooted successfully”)
    COMPLETESERVICEACTION(“Enable cloud”, “Device is offline”)

    FTP

    FTPDOWNLOAD

    Visszaadja a fájl adatait (Collection UInt8-ként) az FTP-kiszolgálóról. A funkció csak az FTP protokollt használó csomagelemző szkriptekben támogatott.

    FTPDOWNLOAD( pathToFile )

    Examples:

    FTPDOWNLOAD(“/path/to/file”) 		(Result is Collection<UInt8>)

    FTPUPLOAD

    Feltölti az adatokat (Collection UInt8 vagy string) egy fájlba az FTP-kiszolgálón.

    FTPUPLOAD( pathToFile, data, mode )

    Examples:

    FTPUPLOAD(“/path/to/file”, “some data”, “write”)
    FTPUPLOAD(“/path/to/file”, BYTECOLLECTION(“a7 ff e2”), “append”)

    MQTT

    A fenti kommunikációs lehetőségeken kívül a TapHome rendszer az MQTT protokollt használó harmadik fél eszközeivel való kommunikációt is lehetővé teszi. Az MQTT (Message Queuing Telemetry Transport) egy könnyű üzenetek közzétételére és feliratkozására szolgáló protokoll, amelyet a Machine-to-Machine (M2M) és Internet of Things (IoT) környezetben lévő eszközök közötti hatékony és megbízható kommunikációra terveztek.

    Ahhoz, hogy lehetővé tegye a kommunikációt harmadik fél eszközeivel az MQTT segítségével, egy külön modult kell létrehozni a Beállítások → Hardver → Új felület hozzáadása → MQTT Broker alatt. Ez a modul közvetítőként működik a harmadik féltől származó eszközök és a vezérlő között, lehetővé téve számukra az MQTT protokoll használatával történő kommunikációt. Az MQTT Broker modul önállóan futtatható a vezérlőegységen, lehetővé téve a független és hatékony kommunikációt harmadik féltől származó eszközök és a TapHome rendszer között.

    MQTTPUBLISH

    A funkciót az MQTT protokollt használó PacketParser eszközökön az MQTT brókerhez küldött üzenet közzétételére használják.

    MQTTPUBLISH( topic, message )

    Examples:

    MQTTPUBLISH(“shellies/deviceid/relay/0/command”, “off”)