Configurazione manuale
Implementazione in TapHome
In TapHome, il Packet Parser è un'interfaccia hardware (Impostazioni → Hardware → Aggiungi una nuova interfaccia → Packet parser) utilizzata per collegare dispositivi di terze parti al controller. Questi dispositivi possono comunicare con l'unità di controllo utilizzando il WiFi o la LAN tramite il protocollo TCP/IP.
Il Packet Parser utilizza un linguaggio di scripting proprietario, progettato appositamente per il sistema TapHome. Questo linguaggio viene utilizzato per controllare e gestire i dispositivi collegati e la loro comunicazione con il controllore. Fare clic qui per ulteriori informazioni sul linguaggio di scripting TapHome
Gerarchia
Il sistema TapHome utilizza una struttura gerarchica per organizzare i dispositivi collegati. In questa struttura, un modulo funge da dispositivo padre e può comunicare con i dispositivi figli e controllarli.
Modulo
Un'interfaccia può contenere uno o più moduli, che nella maggior parte dei casi coprono la comunicazione con l'intero dispositivo fisico. In termini di configurazione, un Modulo definisce:
- L'indirizzo IP o il nome del dispositivo mDNS
- porta di comunicazione
- Connessione sicura: Vedere la sezione Autenticazione in Servizio del modulo
- Ignorare gli errori del certificato SSL
Dispositivo
Rappresenta un controllo o un sensore specifico nel sistema TapHome. Deve sempre far parte di un modulo per un solo genitore.
Dispositivi supportati:
- Output digitale
- Uscita analogica
- Termostato
- Selettore
- Sensore di temperatura
- Variabile
- Pulsante
- Contatore elettrico
- Interruttore
- Persiane, tende da sole, miscelatori
- Luce RGB
- Luce bianca sintonizzabile
Esempio: Shelly Plug S
Il modulo contiene informazioni sull'indirizzo IP e contiene script per leggere lo stato, le impostazioni ed eseguire azioni di servizio. Si tratta di 2 dispositivi: un'uscita digitale (relè) e un misuratore che misura il consumo di energia dei dispositivi collegati.
Script di lettura e scrittura
Il controller TapHome e i dispositivi collegati possono comunicare utilizzando richieste HTTP o HTTPS GET/POST. Le risposte a queste richieste possono essere analizzate utilizzando un insieme di funzioni specializzate. Ad esempio, può esserci una funzione specificamente progettata per analizzare le risposte XML, un'altra per analizzare le risposte JSON e un'altra ancora per analizzare le risposte degli array di byte. Queste funzioni facilitano l'interpretazione e l'utilizzo delle informazioni ricevute nelle risposte, consentendo una comunicazione più efficiente ed efficace con il controllore e i dispositivi collegati.
TapHome definisce una serie di attributi che possono essere inclusi nel linguaggio di script:
- Lo script Initialize: viene eseguito all'avvio del dispositivo (ad esempio, dopo un riavvio dell'unità di controllo).
- Lettura script: impostazione dei valori delle variabili globali o lettura delle condizioni di errore
- script Leggi valore: script per leggere un valore specifico (variabile) da un dispositivo collegato (ad esempio, la temperatura impostata su un termostato o la temperatura misurata su un termostato).
- Scrittura di un valore: scrittura di un valore su un dispositivo collegato
Definizione delle condizioni di errore dagli script
Proprietà e azioni degli attributi del servizio
Script e variabili ausiliarie sul modulo
Script e variabili ausiliarie sul dispositivo
Per ulteriori informazioni, vedere Documentazione Modbus
Protocolli supportati
HTTP
TCP
UDP
FTP
MQTT
HTTP
SENDHTTPREQUEST
Invia una richiesta HTTP con i parametri specificati, attende una risposta e restituisce la risposta come stringa JSON con valori quali Contenuto, Intestazioni, Codice risultato HTTP. La funzione è supportata solo negli script del parser Packet con protocollo 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
Invia i dati specificati (stringa o Collection UInt8) utilizzando il protocollo TCP o UDP. Se i dati sono un oggetto stringa, vengono implicitamente convertiti in byte utilizzando la codifica iso-8859-1. La funzione è supportata solo negli script Packet Parser con protocollo TCP o UDP. I byte ricevuti possono essere elaborati in uno script Listener.
SENDDATA( string/Collection<UInt8> )
Examples:
SENDATA(BYTECOLLECTION(“0a dd ef a2”) SENDATA(“{\”value\”:212}”)
COMPLETESERVICEATTRIBUTE
Questa funzione viene utilizzata negli script Listener del parser di pacchetti TCP/UDP per notificare al valore del Service Attribute la fine della richiesta.
Ad esempio, si crea una richiesta in uno script Service Attribute utilizzando la funzione SENDDATA e si termina la lettura del Service Attribute quando lo script Listener riceve i dati.
COMPLETESERVICEATTRIBUTE( attributeName, value, error )
Examples:
COMPLETESERVICEATTRIBUTE(“Uptime”, “2d:21h:43m”) COMPLETESERVICEATTRIBUTE(“Status”, “”, “Device is offline”)
COMPLETESERVICEACTION
Questa funzione viene utilizzata negli script Listener di Packet Parser con protocollo TCP/UDP per notificare il completamento di una richiesta di azione di servizio.
Ad esempio, si crea una richiesta in uno script Azione di servizio utilizzando la funzione SENDDATA e si completa l'Azione di servizio dopo che lo script Listener ha ricevuto i dati.
COMPLETESERVICEACTION( actionName, result )
Examples:
COMPLETESERVICEACTION(“Reboot”, “Rebooted successfully”) COMPLETESERVICEACTION(“Enable cloud”, “Device is offline”)
FTP
FTPDOWNLOAD
Restituisce i dati del file (come Collection UInt8) dal server FTP. La funzione è supportata solo negli script del parser Packet con protocollo FTP.
FTPDOWNLOAD( pathToFile )
Examples:
FTPDOWNLOAD(“/path/to/file”) (Result is Collection<UInt8>)
FTPUPLOAD
Carica i dati (Collection UInt8 o stringa) in un file sul server FTP.
FTPUPLOAD( pathToFile, data, mode )
Examples:
FTPUPLOAD(“/path/to/file”, “some data”, “write”) FTPUPLOAD(“/path/to/file”, BYTECOLLECTION(“a7 ff e2”), “append”)
MQTT
Oltre alle opzioni di comunicazione di cui sopra, il sistema TapHome consente anche la comunicazione con dispositivi di terze parti utilizzando il protocollo MQTT. MQTT, o Message Queuing Telemetry Transport, è un protocollo leggero di pubblicazione/sottoscrizione di messaggi progettato per una comunicazione efficiente e affidabile tra dispositivi in contesti Machine-to-Machine (M2M) e Internet of Things (IoT).
Per abilitare la comunicazione con dispositivi di terze parti tramite MQTT, è necessario creare un modulo separato in Impostazioni → Hardware → Aggiungi una nuova interfaccia → MQTT Broker. Questo modulo funge da broker tra i dispositivi di terze parti e il controllore, permettendo loro di comunicare utilizzando il protocollo MQTT. Il modulo MQTT Broker può essere eseguito autonomamente sull'unità di controllo, consentendo una comunicazione indipendente ed efficiente tra dispositivi di terze parti e il sistema TapHome.
MQTTPUBLISH
La funzione viene utilizzata sui dispositivi PacketParser con il protocollo MQTT per pubblicare un messaggio al broker MQTT.
MQTTPUBLISH( topic, message )
Examples:
MQTTPUBLISH(“shellies/deviceid/relay/0/command”, “off”)