---
title: "Packet-Parser-Funktionen"
description: "Packet-Parser-Skripte in TapHome: HTTP-Anfragen senden und die Antwort lesen, TCP- und UDP-Daten senden, MQTT-Nachrichten veröffentlichen und Dateien über FTP übertragen."
url: "https://taphome.com/de/docs/script/packet-parser/"
language: de
lastmod: 2026-10-13
generator: hugo
ai:
  topics: ["packet-parser","http-requests","mqtt","ftp","tcp-udp","scripting-language"]
  questions: ["Welche Funktionen stehen im TapHome Packet Parser zur Verfügung?","Wie sende ich aus einem TapHome-Skript eine HTTP-Anfrage?","Was gibt SENDHTTPREQUEST zurück?","Wie füge ich einer Anfrage HTTP-Header hinzu?","Wie veröffentliche ich in TapHome eine MQTT-Nachricht?","Wie lade ich in TapHome eine Datei über FTP herunter oder hoch?","Wo finde ich die Dokumentation zum Packet Parser?","Wie konfiguriere ich Modbus in TapHome?"]
---

# Packet-Parser-Funktionen

Packet-Parser-Funktionen der TapHome-Skripte — HTTPREQUEST, SENDHTTPREQUEST, SENDDATA, MQTTPUBLISH, FTPDOWNLOAD, FTPUPLOAD, COMPLETESERVICEATTRIBUTE und COMPLETESERVICEACTION — für HTTP, TCP, UDP, MQTT und FTP.

Zuletzt aktualisiert: 2026-10-13

Packet-Parser-Funktionen kommunizieren mit Geräten über HTTP, TCP, UDP, MQTT und FTP. Sie funktionieren nur in den Skripten eines Packet-Parser-Moduls oder -Geräts, dessen Protokoll zur Funktion passt; anderswo hält das Skript mit *PacketParserFunction - PacketParserContext is null* an. Alle erfordern Core 2022.2 oder neuer. Die Einrichtung eines Packet-Parser-Moduls ist unter [Packet Parser](https://taphome.com/de/docs/integration/packet-parser/) beschrieben; eingehende Nachrichten werden in [Listener-Skripten](https://taphome.com/de/docs/script/listener-scripts/) verarbeitet, und Modbus-Geräte haben eigene [Modbus-Funktionen](https://taphome.com/de/docs/script/modbus/).

## Protokolle und Skripte

Jedes Protokoll hat eigene Funktionen und eine typische Aufgabenteilung zwischen den Skripten.

| Protokoll | Funktionen | Typische Skripte |
|---|---|---|
| HTTP | `HTTPREQUEST`, `SENDHTTPREQUEST` | Das Leseskript des Moduls sendet eine Anfrage und speichert die Antwort in einer Modulvariablen; die Leseskripte der Geräte parsen sie. |
| TCP, UDP | `SENDDATA` | Lese- oder Schreibskripte senden eine Anfrage; die Antwort kommt im [Listener-Skript](https://taphome.com/de/docs/script/listener-scripts/) an. |
| MQTT | `MQTTPUBLISH` | Das Listener-Skript verarbeitet eingehende Nachrichten; das Schreibskript veröffentlicht Befehle. |
| FTP | `FTPDOWNLOAD`, `FTPUPLOAD` | Lese- und Schreibskripte übertragen Dateien. |

**Beispiel — eine HTTP-Anfrage für alle Geräte eines Moduls**

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

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

Das erste Skript ist das Leseskript des Moduls, das zweite ein Leseskript eines Geräts; `StatusJson` ist eine Modulvariable.

## HTTPREQUEST

`HTTPREQUEST` erstellt einen `httprequest`-Wert, dessen Pfad, Methode, Body und Header geändert werden können, bevor er mit [SENDHTTPREQUEST](https://taphome.com/de/docs/script/packet-parser/#sendhttprequest) gesendet wird.

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

**Hinweise** — Die Standardmethode ist `GET`. Die Eigenschaften `PATH`, `METHOD`, `BODY` und `HEADERS` können gelesen und geschrieben werden; `HEADERS` ist eine Sammlung von Strings der Form `"Name: value"`. Die Funktion erstellt nur einen Wert und funktioniert daher in jedem Skript.

**Beispiel**

```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` sendet eine HTTP-Anfrage, wartet auf die Antwort und gibt sie als `httpresponse`-Wert mit den Eigenschaften `Content`, `StatusCode`, `ReasonPhrase`, `IsSuccess` und `Headers` zurück.

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

| Name | Typ | Beschreibung |
|---|---|---|
| `path` | String | Pfad auf dem im Modul eingestellten Gerät, zum Beispiel `"/status"`. |
| `method` | String, optional | `GET` (Standard), `POST`, `PUT`, … |
| `body` | String, optional | Body der Anfrage. |
| `header1` … | String, optional | Bis zu 27 Header als `"Name: value"`. |
| `request` | `httprequest` | Eine mit [HTTPREQUEST](https://taphome.com/de/docs/script/packet-parser/#httprequest) erstellte Anfrage. |

**Rückgabewert** — `httpresponse`:

| Eigenschaft | Bedeutung |
|---|---|
| `Content` | Der Body der Antwort als Text. |
| `StatusCode` | HTTP-Statuscode, zum Beispiel 200. |
| `ReasonPhrase` | Statustext, zum Beispiel `OK`. |
| `IsSuccess` | `TRUE` für die Statuscodes 200 – 299. |
| `Headers` | Header der Antwort als JSON-Text — ein Array aus `{"Key": …, "Value": [ … ]}` —, lesbar mit `PARSEJSON`. |

**Hinweise** — Nur für ein Modul mit dem Protokoll HTTP. Die Antwort darf höchstens 128 kB groß sein.

**Beispiel**

```taphome
VAR response := SENDHTTPREQUEST("/status", "GET");   # Anfrage senden
IF response.IsSuccess
    StatusJson := response.Content;   # bei Erfolg den Antworttext speichern
ELSE
    ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");   # bei Fehler den Statuscode melden
END
```

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

**Fehler** — *Response is too long (Nbytes). Maximum supported length is 128KB*; *PacketParserFunction - unable to use 'SENDHTTPREQUEST' with …* (das Modul verwendet ein anderes Protokoll).

## SENDDATA

`SENDDATA` sendet einen String oder eine Bytesammlung über TCP oder UDP und gibt `TRUE` zurück; die Antwort kommt im [Listener-Skript](https://taphome.com/de/docs/script/listener-scripts/) an.

```text
SENDDATA(data)
```

**Hinweise** — Ein String wird als `iso-8859-1`-Bytes gesendet. Eine Sammlung muss eine `collection<uint8>` sein. Eingehende Daten werden dem Listener-Skript in Blöcken von höchstens 4096 Bytes übergeben.

**Beispiel**

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

## MQTTPUBLISH

`MQTTPUBLISH` veröffentlicht eine Nachricht mit dem angegebenen Topic beim MQTT-Broker des Moduls und gibt `Null` zurück.

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

**Hinweise** — `data` ist ein String oder eine `collection<uint8>`. Ein vom Broker gemeldeter Fehler hält das Skript mit dessen Text an. Der Broker wird unter [MQTT Broker](https://taphome.com/de/docs/integration/packet-parser/mqtt-broker/) eingerichtet.

**Beispiel**

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

## FTPDOWNLOAD

`FTPDOWNLOAD` lädt eine Datei vom FTP-Server des Moduls herunter und gibt ihren Inhalt als Bytesammlung (`collection<uint8>`) zurück.

```text
FTPDOWNLOAD(path)
```

**Beispiel**

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

## FTPUPLOAD

`FTPUPLOAD` schreibt Daten in eine Datei auf dem FTP-Server des Moduls — mit `"write"` (Standard) wird die Datei ersetzt, mit `"append"` an ihr Ende angehängt.

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

**Hinweise** — `data` ist ein String oder eine `collection<uint8>`. `mode` muss kleingeschrieben sein.

**Beispiel**

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

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

## COMPLETESERVICEATTRIBUTE

`COMPLETESERVICEATTRIBUTE` liefert den Wert eines Service-Attributs aus einem TCP- oder UDP-Listener-Skript an die App, nachdem das Skript des Attributs die Anfrage mit `SENDDATA` gesendet hat.

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

**Hinweise** — `name` ist der Name des Service-Attributs. Mit `error` zeigt das Attribut den Fehlertext statt eines Wertes an. Gibt `Null` zurück.

**Beispiel**

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

## COMPLETESERVICEACTION

`COMPLETESERVICEACTION` meldet das Ergebnis einer Service-Aktion aus einem TCP- oder UDP-Listener-Skript an die App, nachdem das Skript der Aktion die Anfrage mit `SENDDATA` gesendet hat.

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

**Beispiel**

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

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

**Siehe auch** — [Listener-Skripte](https://taphome.com/de/docs/script/listener-scripts/), [Parsing-Funktionen](https://taphome.com/de/docs/script/parsing-functions/), [Konvertierung von Datentypen](https://taphome.com/de/docs/script/data-type-conversions/).
