---
title: "Funzioni Packet parser"
description: "Script Packet parser TapHome: inviare richieste HTTP e leggere la risposta, inviare dati TCP e UDP, pubblicare messaggi MQTT e trasferire file tramite FTP."
url: "https://taphome.com/it/docs/script/packet-parser/"
language: it
lastmod: 2026-10-13
generator: hugo
ai:
  topics: ["packet-parser","http-requests","mqtt","ftp","tcp-udp","scripting-language"]
  questions: ["Quali funzioni sono disponibili nel Packet parser TapHome?","Come invio una richiesta HTTP da uno script TapHome?","Che cosa restituisce SENDHTTPREQUEST?","Come aggiungo intestazioni HTTP a una richiesta?","Come si pubblica un messaggio MQTT in TapHome?","Come scarico o carico un file tramite FTP in TapHome?","Dove trovo la documentazione sul Packet parser?","Come configuro Modbus in TapHome?"]
---

# Funzioni Packet parser

Funzioni Packet parser degli script TapHome — HTTPREQUEST, SENDHTTPREQUEST, SENDDATA, MQTTPUBLISH, FTPDOWNLOAD, FTPUPLOAD, COMPLETESERVICEATTRIBUTE e COMPLETESERVICEACTION — per HTTP, TCP, UDP, MQTT e FTP.

Ultimo aggiornamento: 2026-10-13

Le funzioni Packet parser comunicano con i dispositivi tramite HTTP, TCP, UDP, MQTT e FTP. Funzionano solo negli script di un modulo o di un dispositivo Packet parser il cui protocollo corrisponde alla funzione; altrove lo script si interrompe con *PacketParserFunction - PacketParserContext is null*. Tutte richiedono Core 2022.2 o più recente. La configurazione di un modulo Packet parser è descritta in [Packet parser](https://taphome.com/it/docs/integration/packet-parser/); i messaggi in arrivo vengono gestiti negli [script listener](https://taphome.com/it/docs/script/listener-scripts/), e i dispositivi Modbus hanno le proprie [funzioni Modbus](https://taphome.com/it/docs/script/modbus/).

## Protocolli e script

Ogni protocollo ha le proprie funzioni e una tipica suddivisione del lavoro tra gli script.

| Protocollo | Funzioni | Script tipici |
|---|---|---|
| HTTP | `HTTPREQUEST`, `SENDHTTPREQUEST` | Lo script di lettura del modulo invia una richiesta e salva la risposta in una variabile del modulo; gli script di lettura dei dispositivi la analizzano. |
| TCP, UDP | `SENDDATA` | Gli script di lettura o scrittura inviano una richiesta; la risposta arriva nello [script listener](https://taphome.com/it/docs/script/listener-scripts/). |
| MQTT | `MQTTPUBLISH` | Lo script listener elabora i messaggi in arrivo; lo script di scrittura pubblica i comandi. |
| FTP | `FTPDOWNLOAD`, `FTPUPLOAD` | Gli script di lettura e scrittura trasferiscono i file. |

**Esempio — una sola richiesta HTTP per tutti i dispositivi di un modulo**

```taphome
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;
```

```taphome
PARSEJSON(StatusJson, "temperature");
```

Il primo script è lo script di lettura del modulo, il secondo uno script di lettura del dispositivo; `StatusJson` è una variabile del modulo.

## HTTPREQUEST

`HTTPREQUEST` costruisce un valore `httprequest` il cui percorso, metodo, corpo e intestazioni si possono modificare prima di inviarlo con [SENDHTTPREQUEST](https://taphome.com/it/docs/script/packet-parser/#sendhttprequest).

```text
HTTPREQUEST(path [, method [, body]])
```

**Note** — Il metodo predefinito è `GET`. Le proprietà `PATH`, `METHOD`, `BODY` e `HEADERS` si possono leggere e scrivere; `HEADERS` è una collezione di stringhe `"Name: value"`. La funzione crea solo un valore, quindi funziona in ogni script.

**Esempio**

```taphome
VAR request := HTTPREQUEST("/api/v1/state", "POST", "{\"on\":true}");
request.HEADERS := {"Content-Type: application/json", "Authorization: Bearer " + token};
VAR response := SENDHTTPREQUEST(request);
```

## SENDHTTPREQUEST

`SENDHTTPREQUEST` invia una richiesta HTTP, attende la risposta e la restituisce come valore `httpresponse` con le proprietà `Content`, `StatusCode`, `ReasonPhrase`, `IsSuccess` e `Headers`.

```text
SENDHTTPREQUEST(path [, method [, body [, header1, header2, …]]])
SENDHTTPREQUEST(request)
```

| Nome | Tipo | Descrizione |
|---|---|---|
| `path` | string | Percorso sul dispositivo impostato nel modulo, ad esempio `"/status"`. |
| `method` | string, facoltativo | `GET` (predefinito), `POST`, `PUT`, … |
| `body` | string, facoltativo | Corpo della richiesta. |
| `header1` … | string, facoltativo | Fino a 27 intestazioni nella forma `"Name: value"`. |
| `request` | `httprequest` | Una richiesta costruita con [HTTPREQUEST](https://taphome.com/it/docs/script/packet-parser/#httprequest). |

**Valore restituito** — `httpresponse`:

| Proprietà | Significato |
|---|---|
| `Content` | Il corpo della risposta come testo. |
| `StatusCode` | Codice di stato HTTP, ad esempio 200. |
| `ReasonPhrase` | Testo di stato, ad esempio `OK`. |
| `IsSuccess` | `TRUE` per i codici di stato 200 – 299. |
| `Headers` | Intestazioni della risposta come testo JSON — un array di `{"Key": …, "Value": [ … ]}` — leggibili con `PARSEJSON`. |

**Note** — Solo per un modulo con il protocollo HTTP. La risposta può avere al massimo 128 kB.

**Esempio**

```taphome
VAR response := SENDHTTPREQUEST("/status", "GET");   # invio della richiesta
IF response.IsSuccess
    StatusJson := response.Content;   # se riuscita, salva il corpo della risposta
ELSE
    ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");   # se fallita, segnala il codice di stato
END
```

```taphome
SENDHTTPREQUEST("/doSomething", "POST", "someData", "header1: value1", "header2: value2");
```

**Errori** — *Response is too long (Nbytes). Maximum supported length is 128KB*; *PacketParserFunction - unable to use 'SENDHTTPREQUEST' with …* (il modulo usa un altro protocollo).

## SENDDATA

`SENDDATA` invia una stringa o una collezione di byte tramite TCP o UDP e restituisce `TRUE`; la risposta arriva nello [script listener](https://taphome.com/it/docs/script/listener-scripts/).

```text
SENDDATA(data)
```

**Note** — Una stringa viene inviata come byte `iso-8859-1`. Una collezione deve essere una `collection<uint8>`. I dati in arrivo vengono consegnati allo script listener in blocchi di al massimo 4096 byte.

**Esempio**

```taphome
SENDDATA(BYTECOLLECTION("0a dd ef a2"));
SENDDATA("STATUS?\r\n");
```

## MQTTPUBLISH

`MQTTPUBLISH` pubblica un messaggio con il topic indicato sul broker MQTT del modulo e restituisce `Null`.

```text
MQTTPUBLISH(topic, data)
```

**Note** — `data` è una stringa o una `collection<uint8>`. Un errore segnalato dal broker interrompe lo script con il suo testo. Il broker si configura in [MQTT Broker](https://taphome.com/it/docs/integration/packet-parser/mqtt-broker/).

**Esempio**

```taphome
MQTTPUBLISH("shellies/" + plugTopic + "/relay/0/command", IF(St > 0, "on", "off"));
```

## FTPDOWNLOAD

`FTPDOWNLOAD` scarica un file dal server FTP del modulo e ne restituisce il contenuto come collezione di byte (`collection<uint8>`).

```text
FTPDOWNLOAD(path)
```

**Esempio**

```taphome
VAR data := FTPDOWNLOAD("/export/values.csv");
VAR csv := TOSTRING(data, "utf-8");
```

## FTPUPLOAD

`FTPUPLOAD` scrive dati in un file sul server FTP del modulo — sostituendo il file con `"write"` (predefinito) o aggiungendoli in coda con `"append"`.

```text
FTPUPLOAD(path, data [, mode])
```

**Note** — `data` è una stringa o una `collection<uint8>`. `mode` deve essere in minuscolo.

**Esempio**

```taphome
FTPUPLOAD("/path/to/file", "some data", "write");
FTPUPLOAD("/path/to/file", BYTECOLLECTION("a7 ff e2"), "append");
```

**Errori** — *FTPUPLOAD - invalid argument, upload mode must be 'append' or 'write'*.

## COMPLETESERVICEATTRIBUTE

`COMPLETESERVICEATTRIBUTE` consegna all'app il valore di un attributo di servizio da uno script listener TCP o UDP, dopo che lo script dell'attributo ha inviato la richiesta con `SENDDATA`.

```text
COMPLETESERVICEATTRIBUTE(name, value [, error])
```

**Note** — `name` è il nome dell'attributo di servizio. Con `error` l'attributo mostra il testo dell'errore invece di un valore. Restituisce `Null`.

**Esempio**

```taphome
COMPLETESERVICEATTRIBUTE("Uptime", "2d:21h:43m");
COMPLETESERVICEATTRIBUTE("Status", "", "Device is offline");
```

## COMPLETESERVICEACTION

`COMPLETESERVICEACTION` comunica all'app il risultato di un'azione di servizio da uno script listener TCP o UDP, dopo che lo script dell'azione ha inviato la richiesta con `SENDDATA`.

```text
COMPLETESERVICEACTION(name, result)
```

**Esempio**

```taphome
COMPLETESERVICEACTION("Reboot", "Rebooted successfully");
```

**Errori** — *No service action with name X*.

**Vedi anche** — [Script listener](https://taphome.com/it/docs/script/listener-scripts/), [Funzioni di parsing](https://taphome.com/it/docs/script/parsing-functions/), [Conversioni tra tipi di dati](https://taphome.com/it/docs/script/data-type-conversions/).
