> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-docs-de/kilo-iot-server/devices/commands/smart-socket-example.md).

# Beispiel: Smarte Steckdose

Erstellen Sie End-to-End-Befehle zum Ein- und Ausschalten einer smarten Steckdose — Payload, Encoder, Verifizierung und Ausführung über den Reiter „States“.

Diese Schritt-für-Schritt-Anleitung baut zwei Befehle auf einem Gerät auf und überprüft, dass sie funktioniert haben. Sie verwendet eine netzbetriebene smarte Steckdose, die meldet, ob ihr Relais ein- oder ausgeschaltet ist, aber dieselbe Abfolge gilt für jeden Aktor: ein Ventil, eine Leuchte, eine Heizung.

Folgen Sie ihr in der angegebenen Reihenfolge — jeder Abschnitt erzeugt etwas, das der nächste benötigt.

## Vor dem Start

* Die Steckdose ist registriert und sendet. Klasse C für LoRaWAN oder ein MQTT-Gerät.
* Sie können ihre Messwerte auf der **Metriken** Registerkarte (**Zuordnung** für MQTT).

## 1. Finden Sie heraus, wie das Gerät seinen Status meldet

Öffnen Sie das Gerät und gehen Sie zur **Metriken** Registerkarte. Sehen Sie in der Tabelle der Connector-Schlüssel nach dem Feld, das den Relaisstatus enthält, und notieren Sie sich zwei Dinge: den Feldnamen und den Wert, der gerade angezeigt wird.

Für diese Steckdose:

| Connector-Schlüssel | Aktueller Wert |
| ------------------- | -------------- |
| `socket_status`     | `aus`          |

Dieser Wert ist es, mit dem eine spätere Verifizierungsprüfung verglichen wird, also notieren Sie ihn genau so, wie er erscheint — `aus`, nicht `AUS` oder `falsch`.

Wenn das Feld noch nicht einem Messwert zugeordnet ist, ordnen Sie es jetzt zu: Im Befehlseditor werden Sensoren nach ihrem Messwertnamen ausgewählt, daher kann ein nicht zugeordnetes Feld nicht verwendet werden, um irgendetwas zu verifizieren. Siehe [Payload-Dekodierung und Connector-Schlüssel](/kilo-docs-de/kilo-iot-server/devices/payload-decoding.md).

In diesem Beispiel `socket_status` ist einem Messwert namens **Steckdosenstatus**.

## 2. Erstellen Sie den Befehl Einschalten

Öffnen Sie **Befehle & Zustände → Befehle** und klicken Sie auf **Neuen Befehl hinzufügen**.

<figure><img src="https://895787959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtNQh1wBSHSaknslMdOXm%2Fuploads%2Fgit-blob-e5d148689cf5bd708377bbea23e9bbbc92f79a5c%2Fdevice-command-editor.jpg?alt=media" alt="The command editor with the identity, routing and payload sections of a device command"><figcaption></figcaption></figure>

**1. Identität**

* **Befehlsname** — `Einschalten`

**2. Weiterleitung**

* Für LoRaWAN: Setzen Sie den **fPort** den das Gerät erwartet, und schalten Sie **Bestätigter Downlink** ein.
* Für MQTT: Geben Sie das Topic ein, auf das die Steckdose für Befehle abonniert ist.

**3. Payload**

Dieser Befehl nimmt keine Parameter entgegen — er sendet immer dasselbe — also fügen Sie keine hinzu und definieren Sie die Nutzlast, die der Encoder erzeugen soll. Die Steckdose erwartet drei Bytes: Kanal `0x08`, Typ `0x70`, und den Zustand, `0x01` für EIN.

Verwenden Sie **Encoder testen** prüfen Sie das Ergebnis vor dem Speichern. Es zeigt die kodierte Ausgabe in Hex und Base64 samt ihrer Größe in Bytes an, sodass Sie bestätigen können, dass die Nutzlast `08 70 01` bevor der Befehl das Gerät überhaupt erreicht.

**4. Verifizierung**

Wählen Sie **Auf das nächste Uplink warten** — die Steckdose meldet ihren Status in jeder Routine-Nachricht, daher muss sie nicht abgefragt werden.

Unter **Erwartete Sensorzustände**, klicken Sie auf **Zustand hinzufügen**:

* **Messwert** — *Steckdosenstatus*
* **Erwarteter Wert** — `ein`

Geben Sie den Wert so ein, wie das Gerät ihn meldet. Groß- und Kleinschreibung spielen hier keine Rolle, also `ein` passt auch zu einem Gerät, das `EIN` meldet — Text und Zahlen sind jedoch nicht austauschbar, also `1` würde nicht passen. Siehe [Befehle bestätigen](/kilo-docs-de/kilo-iot-server/devices/commands/verification.md#expected-value).

Klicken Sie auf **Speichern**.

## 3. Erstellen Sie den Befehl Ausschalten

Wiederholen Sie die obigen Schritte mit drei Änderungen:

* **Befehlsname** — `Ausschalten`
* **Nutzlast** — dieselben drei Bytes, wobei das Zustandsbyte auf `0x00`
* **Erwarteter Wert** — `aus`

Alles andere bleibt gleich.

## 4. Führen Sie sie aus und prüfen Sie das Ergebnis

Gehen Sie zur **Status** Registerkarte, suchen Sie **Einschalten** in der Liste der verfügbaren Befehle und klicken Sie auf **Ausführen**.

Beobachten Sie, wie der Eintrag in **Letzte Ausführungen**:

1. Er beginnt als **Ausstehend** während der Downlink unterwegs ist.
2. Wenn die nächste Nachricht der Steckdose eintrifft und `socket_status: ein`, wechselt die Ausführung zu **Bestätigt** — die Plattform hat das Gerät im von Ihnen angeforderten Zustand gesehen.

Ausführen **Ausschalten** und dasselbe passiert umgekehrt.

## Wenn die Ausführung nie bestätigt wird

Eine Ausführung, die bis zum Ende ihres Zeitfensters unbestätigt bleibt, wird markiert als **Leichte Warnung** — zugestellt, aber nicht bestätigt. Arbeiten Sie diese in dieser Reihenfolge durch:

1. **Überprüfen Sie den Wert.** Öffnen Sie die Registerkarte Metriken und lesen Sie, was `socket_status` jetzt meldet. Wenn die Steckdose umgeschaltet hat, aber `1` statt `ein`meldet, muss der erwartete Wert dieser Form entsprechen — und ein eingegebener Literalwert ist immer Text, verwenden Sie stattdessen eine `{{ parameterName }}` Referenz auf einen Booleschen- oder Integer-Parameter.
2. **Überprüfen Sie den Messwert.** Stellen Sie sicher, dass der von Ihnen ausgewählte Messwert derjenige ist, der von `socket_status`gespeist wird, und dass er zugeordnet ist und Messwerte empfängt.
3. **Überprüfen Sie das Zeitfenster.** Das Standardzeitfenster beträgt das 1,5-Fache des Datenübertragungsintervalls des Geräts. Wenn dieses Intervall auf dem Gerät nicht eingestellt ist, setzen Sie es — siehe [Konvergenz-Timeout](/kilo-docs-de/kilo-iot-server/devices/commands/verification.md#convergence-timeout).
4. **Überprüfen Sie die Nutzlast.** Ausführen **Encoder testen** erneut und vergleichen Sie die Bytes mit der Dokumentation des Herstellers.

## Weiter

* Platzieren Sie die beiden Befehle auf einem Dashboard mit einem [Steuerungs-Widget](/kilo-docs-de/kilo-iot-server/dashboards/adding-widgets/control-widget.md) damit das Team die Steckdose umschalten kann, ohne das Gerät zu öffnen.
* Lassen Sie eine Regel die Steckdose selbstständig steuern — siehe [Gerätebefehle ausführen](/kilo-docs-de/kilo-iot-server/rules-engine/running-device-commands.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kiloiot.io/kilo-docs-de/kilo-iot-server/devices/commands/smart-socket-example.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
