Căutare
MENU
  • Expresii / Limbajul scriptului
  • Utilizatori și permisiuni
  • Backup, restaurare backup, resetare la setările din fabrică
  • Software release notes
  • Configurare manuală

    Implementare în TapHome

    În TapHome, Packet Parser este o interfață hardware (Setări → Hardware → Adăugați o nouă interfață → Packet parser) care este utilizată pentru a conecta dispozitive terțe la controler. Aceste dispozitive pot comunica cu unitatea de control folosind fie WiFi, fie LAN prin protocolul TCP/IP.

    Packet Parser utilizează un limbaj de scripting proprietar, conceput special pentru sistemul TapHome. Acest limbaj este utilizat pentru a controla și gestiona dispozitivele conectate și comunicarea acestora cu controlerul. Faceți clic aici pentru mai multe informații despre limbajul de scripting TapHome

    Ierarhie

    Sistemul TapHome utilizează o structură ierarhică pentru a organiza dispozitivele conectate. În această structură, un modul acționează ca un dispozitiv părinte și poate comunica cu dispozitivele sale inferioare și le poate controla.

    Module

    O interfață poate conține unul sau mai multe module, care, în majoritatea cazurilor, acoperă comunicarea cu întregul dispozitiv fizic. În ceea ce privește configurația, un modul definește:

    • Adresa IP sau numele dispozitivului mDNS
    • port de comunicare
    • Conexiune sigură: Consultați secțiunea Autentificare din Setări avansate din modulul
    • Ignorați erorile de certificat SSL

    Dispozitiv

    Reprezintă un anumit control sau senzor din sistemul TapHome. Acesta trebuie să facă întotdeauna parte dintr-un modul monoparental.

    Dispozitive acceptate:

    • Ieșire digitală
    • Ieșire analogică
    • Termostat
    • Comutator cu mai multe valori
    • Calibrarea temperaturii
    • Variabil
    • Apăsați butonul
    • Metru electric
    • Comutator stuf
    • Obloane, copertine, robinete mixte
    • Lumină RGB
    • Lumină albă reglabilă

    Exemplu: Shelly Plug S
    Modulul conține informații despre adresa IP, are scripturi în el pentru a citi starea, setările și a efectua acțiuni de service. Acoperă 2 dispozitive: o ieșire digitală (releu) și un contor care măsoară consumul de energie al dispozitivelor conectate.

    Scripturi pentru citire și scriere

    Controlerul TapHome și dispozitivele conectate pot comunica folosind cereri HTTP sau HTTPS GET/POST. Răspunsurile la aceste cereri pot fi analizate cu ajutorul unui set de funcții specializate. De exemplu, poate exista o funcție special concepută pentru a analiza răspunsurile XML, o altă funcție pentru a analiza răspunsurile JSON și o altă funcție pentru a analiza răspunsurile de tip byte array. Aceste funcții facilitează interpretarea și utilizarea informațiilor primite în răspunsuri, permițând o comunicare mai eficientă și mai eficace cu controlerul și cu dispozitivele conectate.

    TapHome definește o serie de atribute care pot fi incluse în limbajul de script:

    • Scriptul de inițializare: se execută atunci când dispozitivul este pornit (de exemplu, după o repornire a controlerului).
    • Citește scriptul: setează valorile variabilelor globale sau citește condițiile de eroare
    • Script de citire a valorii: script pentru a citi o anumită valoare (variabilă) de la un dispozitiv conectat (de exemplu, temperatura setată pe un termostat sau temperatura măsurată pe un termostat).
    • Scrieți o valoare script: scrieți o valoare într-un dispozitiv conectat

    Definirea condițiilor de eroare din scripturi

    Proprietăți și acțiuni ale atributelor de serviciu

    Scripturi și variabile auxiliare pe modul

    Scripturi și variabile auxiliare pe dispozitiv

    Pentru mai multe informații, consultați Documentația Modbus

    Protocoale acceptate

    • HTTP

    • TCP

    • UDP

    • FTP

    • MQTT

    HTTP

    SENDHTTPREQUEST

    Trimite o cerere HTTP cu parametrii specificați, așteaptă un răspuns și returnează răspunsul sub forma unui șir JSON cu valori precum Content, Headers, HTTP Result Code. Funcția este suportată numai în scripturile de parser de pachete cu protocol HTTP.

    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

    Trimite datele specificate (șir de caractere sau Collection UInt8) utilizând protocolul TCP sau UDP. În cazul în care datele sunt un obiect de tip șir de caractere, acestea sunt convertite implicit în octeți utilizând codificarea iso-8859-1. Funcția este acceptată numai în scripturile Packet Parser cu protocol TCP sau UDP. Octeții primiți pot fi procesați într-un script Listener.

    SENDDATA( string/Collection<UInt8> )

    Examples:

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

    COMPLETESERVICEATTRIBUTE

    Această funcție este utilizată în scripturile Listener ale analizatorului de pachete TCP/UDP pentru a notifica valoarea atributului de serviciu cu privire la terminarea cererii.
    De exemplu, creați o cerere într-un script de atribut de serviciu utilizând funcția SENDDATA și terminați citirea atributului de serviciu atunci când scriptul de ascultare primește datele.

    COMPLETESERVICEATTRIBUTE( attributeName, value, error )

    Examples:

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

    COMPLETESERVICEACTION

    Această funcție este utilizată în scripturile Listener din Packet Parser cu protocolul TCP/UDP pentru a notifica finalizarea unei cereri de acțiune de serviciu.
    De exemplu, creați o solicitare într-un script Service Action utilizând funcția SENDDATA și finalizați Service Action după ce scriptul Listener primește datele.

    COMPLETESERVICEACTION( actionName, result )

    Examples:

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

    FTP

    FTPDOWNLOAD

    Returnează datele fișierului (ca Collection UInt8) de la serverul FTP. Funcția este suportată numai în scripturile Packet parser cu protocol FTP.

    FTPDOWNLOAD( pathToFile )

    Examples:

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

    FTPUPLOAD

    Încarcă datele (Collection UInt8 sau șir de caractere) într-un fișier de pe serverul FTP.

    FTPUPLOAD( pathToFile, data, mode )

    Examples:

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

    MQTT

    În plus față de opțiunile de comunicare de mai sus, sistemul TapHome permite, de asemenea, comunicarea cu dispozitive terțe folosind protocolul MQTT. MQTT, sau Message Queuing Telemetry Transport, este un protocol ușor de publicare/subscriere a mesajelor, conceput pentru o comunicare eficientă și fiabilă între dispozitive în contexte Machine-to-Machine (M2M) și Internet of Things (IoT).

    Pentru a permite comunicarea cu dispozitive terțe folosind MQTT, trebuie creat un modul separat în Setări → Hardware → Adăugați o nouă interfață → MQTT Broker. Acest modul acționează ca un broker între dispozitivele terțe și controler, permițându-le să comunice folosind protocolul MQTT. Modulul MQTT Broker poate fi rulat în mod autonom pe unitatea de control, permițând o comunicare independentă și eficientă între dispozitive terțe și sistemul TapHome.

    MQTTPUBLISH

    Funcția este utilizată pe dispozitivele PacketParser cu protocolul MQTT pentru a publica un mesaj către brokerul MQTT.

    MQTTPUBLISH( topic, message )

    Examples:

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