---
title: "Funkce Packet parser"
description: "Skripty Packet parser v TapHome: odeslání požadavku HTTP a čtení odpovědi, odeslání dat TCP a UDP, publikování zpráv MQTT a přenos souborů přes FTP."
url: "https://taphome.com/cs/docs/script/packet-parser/"
language: cs
lastmod: 2026-10-13
generator: hugo
ai:
  topics: ["packet-parser","http-requests","mqtt","ftp","tcp-udp","scripting-language"]
  questions: ["Jaké funkce má Packet parser v TapHome?","Jak odeslat požadavek HTTP ze skriptu TapHome?","Co vrací SENDHTTPREQUEST?","Jak přidat k požadavku hlavičky HTTP?","Jak v TapHome publikovat zprávu MQTT?","Jak v TapHome stáhnout nebo nahrát soubor přes FTP?","Kde najdu dokumentaci k modulu Packet parser?","Jak v TapHome nastavit Modbus?"]
---

# Funkce Packet parser

Funkce Packet parser ve skriptu TapHome — HTTPREQUEST, SENDHTTPREQUEST, SENDDATA, MQTTPUBLISH, FTPDOWNLOAD, FTPUPLOAD, COMPLETESERVICEATTRIBUTE a COMPLETESERVICEACTION — pro HTTP, TCP, UDP, MQTT a FTP.

Poslední aktualizace: 2026-10-13

Funkce Packet parser komunikují se zařízeními přes HTTP, TCP, UDP, MQTT a FTP. Fungují jen ve skriptech modulu nebo zařízení Packet parser, jehož protokol odpovídá funkci; jinde se skript zastaví chybou *PacketParserFunction - PacketParserContext is null*. Všechny vyžadují Core 2022.2 nebo novější. Nastavení modulu Packet parser popisuje stránka [Packet parser](https://taphome.com/cs/docs/integration/packet-parser/); příchozí zprávy se zpracovávají v [listener skriptech](https://taphome.com/cs/docs/script/listener-scripts/) a zařízení Modbus mají vlastní [funkce Modbus](https://taphome.com/cs/docs/script/modbus/).

## Protokoly a skripty

Každý protokol má vlastní funkce a typické rozdělení práce mezi skripty.

| Protokol | Funkce | Typické skripty |
|---|---|---|
| HTTP | `HTTPREQUEST`, `SENDHTTPREQUEST` | Skript pro čtení modulu pošle jeden požadavek a uloží odpověď do proměnné modulu; skripty pro čtení zařízení ji parsují. |
| TCP, UDP | `SENDDATA` | Skripty pro čtení nebo zápis pošlou požadavek; odpověď dorazí do [listener skriptu](https://taphome.com/cs/docs/script/listener-scripts/). |
| MQTT | `MQTTPUBLISH` | Listener skript zpracovává příchozí zprávy; skript pro zápis publikuje příkazy. |
| FTP | `FTPDOWNLOAD`, `FTPUPLOAD` | Skripty pro čtení a zápis přenášejí soubory. |

**Příklad — jeden požadavek HTTP pro všechna zařízení modulu**

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

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

První skript je skript pro čtení modulu, druhý skript pro čtení zařízení; `StatusJson` je proměnná modulu.

## HTTPREQUEST

`HTTPREQUEST` sestaví hodnotu `httprequest`, jejíž cestu, metodu, tělo a hlavičky lze změnit před odesláním přes [SENDHTTPREQUEST](https://taphome.com/cs/docs/script/packet-parser/#sendhttprequest).

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

**Poznámky** — Výchozí metoda je `GET`. Vlastnosti `PATH`, `METHOD`, `BODY` a `HEADERS` lze číst i zapisovat; `HEADERS` je kolekce řetězců `"Name: value"`. Funkce jen vytváří hodnotu, takže funguje v každém skriptu.

**Příklad**

```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` odešle požadavek HTTP, počká na odpověď a vrátí ji jako hodnotu `httpresponse` s vlastnostmi `Content`, `StatusCode`, `ReasonPhrase`, `IsSuccess` a `Headers`.

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

| Název | Typ | Popis |
|---|---|---|
| `path` | řetězec | Cesta na zařízení nastaveném v modulu, například `"/status"`. |
| `method` | řetězec, volitelný | `GET` (výchozí), `POST`, `PUT`, … |
| `body` | řetězec, volitelný | Tělo požadavku. |
| `header1` … | řetězec, volitelný | Až 27 hlaviček ve tvaru `"Name: value"`. |
| `request` | `httprequest` | Požadavek sestavený přes [HTTPREQUEST](https://taphome.com/cs/docs/script/packet-parser/#httprequest). |

**Vrací** — `httpresponse`:

| Vlastnost | Význam |
|---|---|
| `Content` | Tělo odpovědi jako text. |
| `StatusCode` | Stavový kód HTTP, například 200. |
| `ReasonPhrase` | Text stavu, například `OK`. |
| `IsSuccess` | `TRUE` pro stavové kódy 200 – 299. |
| `Headers` | Hlavičky odpovědi jako text JSON — pole `{"Key": …, "Value": [ … ]}` — čitelné přes `PARSEJSON`. |

**Poznámky** — Jen pro modul s protokolem HTTP. Odpověď smí mít nejvýše 128 kB.

**Příklad**

```taphome
VAR response := SENDHTTPREQUEST("/status", "GET");   # odeslání požadavku
IF response.IsSuccess
    StatusJson := response.Content;   # při úspěchu uloží tělo odpovědi
ELSE
    ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");   # při chybě nahlásí stavový kód
END
```

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

**Chyby** — *Response is too long (Nbytes). Maximum supported length is 128KB*; *PacketParserFunction - unable to use 'SENDHTTPREQUEST' with …* (modul používá jiný protokol).

## SENDDATA

`SENDDATA` odešle řetězec nebo kolekci bajtů přes TCP nebo UDP a vrátí `TRUE`; odpověď dorazí do [listener skriptu](https://taphome.com/cs/docs/script/listener-scripts/).

```text
SENDDATA(data)
```

**Poznámky** — Řetězec se odešle jako bajty v `iso-8859-1`. Kolekce musí být `collection<uint8>`. Příchozí data se do listener skriptu doručují po částech nejvýše 4096 bajtů.

**Příklad**

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

## MQTTPUBLISH

`MQTTPUBLISH` publikuje zprávu se zadaným tématem do brokeru MQTT modulu a vrátí `Null`.

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

**Poznámky** — `data` je řetězec nebo `collection<uint8>`. Chyba hlášená brokerem zastaví skript s jejím textem. Broker se nastavuje podle stránky [MQTT Broker](https://taphome.com/cs/docs/integration/packet-parser/mqtt-broker/).

**Příklad**

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

## FTPDOWNLOAD

`FTPDOWNLOAD` stáhne soubor ze serveru FTP modulu a vrátí jeho obsah jako kolekci bajtů (`collection<uint8>`).

```text
FTPDOWNLOAD(path)
```

**Příklad**

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

## FTPUPLOAD

`FTPUPLOAD` zapíše data do souboru na serveru FTP modulu — s `"write"` (výchozí) soubor nahradí, s `"append"` data připojí na jeho konec.

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

**Poznámky** — `data` je řetězec nebo `collection<uint8>`. `mode` musí být malými písmeny.

**Příklad**

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

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

## COMPLETESERVICEATTRIBUTE

`COMPLETESERVICEATTRIBUTE` předá hodnotu servisního atributu do aplikace z listener skriptu TCP nebo UDP poté, co skript atributu odeslal požadavek přes `SENDDATA`.

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

**Poznámky** — `name` je název servisního atributu. S `error` atribut místo hodnoty zobrazí text chyby. Vrací `Null`.

**Příklad**

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

## COMPLETESERVICEACTION

`COMPLETESERVICEACTION` ohlásí výsledek servisní akce do aplikace z listener skriptu TCP nebo UDP poté, co skript akce odeslal požadavek přes `SENDDATA`.

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

**Příklad**

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

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

**Viz také** — [Listener skripty](https://taphome.com/cs/docs/script/listener-scripts/), [Funkce pro parsování](https://taphome.com/cs/docs/script/parsing-functions/), [Převody datových typů](https://taphome.com/cs/docs/script/data-type-conversions/).
