Files
Fichero/fichero_printer/DOCS.md
2026-03-07 13:39:00 +01:00

154 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fichero Printer Home Assistant Add-on
Ein HTTP-REST-API-Server für den **Fichero D11s** (auch bekannt als AiYin D11s)
Thermodrucker. Das Add-on ermöglicht das Drucken von Textetiketten und Bildern
direkt aus Home Assistant-Automationen, Skripten oder externen Anwendungen.
## Herkunft / Credits
- Originalentwickler / Ursprungsprojekt: https://github.com/0xMH/fichero-printer
- Diese Variante wurde zusätzlich mit AI-unterstützten Erweiterungen ergänzt.
## Voraussetzungen
- Fichero D11s / AiYin D11s Drucker
- Ein Bluetooth-Adapter, der vom Home Assistant OS erkannt wird
- Der Drucker muss eingeschaltet und in Reichweite sein
## Konfiguration
| Option | Standard | Beschreibung |
|---|---|---|
| `port` | `8765` | Port des REST-API-Servers (auch im „Port-Mapping" oben anpassen) |
| `ble_address` | _(leer)_ | Feste BLE-Adresse des Druckers (z.B. `AA:BB:CC:DD:EE:FF`). Leer lassen für automatischen Scan. |
| `transport` | `ble` | Verbindungsart: `ble` (Bluetooth Low Energy) oder `classic` (RFCOMM) |
| `channel` | `1` | RFCOMM-Kanal nur relevant bei `transport: classic` |
## Verwendung
Das Add-on ist nach dem Start auf zwei Arten erreichbar:
1. Home Assistant UI (Ingress): In der Add-on-Seite auf **"Öffnen"** klicken.
2. Direkt per Port im Netzwerk: `http://<HA-IP>:<port>` (z.B. `http://homeassistant.local:8765`).
Hinweis: `/` leitet auf `/docs` weiter (Swagger UI).
### Endpunkte
#### `GET /status`
Gibt den aktuellen Druckerstatus zurück.
```bash
curl http://homeassistant.local:8765/status
```
Antwort:
```json
{
"ok": true,
"printing": false,
"cover_open": false,
"no_paper": false,
"low_battery": false,
"overheated": false,
"charging": false,
"raw": 0
}
```
#### `GET /info`
Gibt Geräteinformationen zurück (Modell, Firmware, Seriennummer, Akkustand).
```bash
curl http://homeassistant.local:8765/info
```
#### `POST /print/text`
Druckt ein Textetikett.
```bash
curl -X POST http://homeassistant.local:8765/print/text \
-F text="Hallo Welt" \
-F density=2 \
-F paper=gap \
-F label_length=30
```
| Feld | Standard | Beschreibung |
|---|---|---|
| `text` | | **Pflichtfeld.** Zu druckender Text |
| `density` | `2` | Druckdichte: `0`=hell, `1`=mittel, `2`=dunkel |
| `paper` | `gap` | Papierart: `gap`, `black`, `continuous` |
| `copies` | `1` | Anzahl der Kopien (199) |
| `font_size` | `30` | Schriftgröße in Punkt |
| `label_length` | | Etikettenlänge in mm (überschreibt `label_height`) |
| `label_height` | `240` | Etikettenhöhe in Pixel |
#### `POST /print/image`
Druckt eine Bilddatei (PNG, JPEG, BMP, GIF, TIFF, WEBP).
```bash
curl -X POST http://homeassistant.local:8765/print/image \
-F file=@etikett.png \
-F density=2 \
-F dither=true \
-F label_length=40
```
| Feld | Standard | Beschreibung |
|---|---|---|
| `file` | | **Pflichtfeld.** Bilddatei |
| `density` | `2` | Druckdichte: `0`=hell, `1`=mittel, `2`=dunkel |
| `paper` | `gap` | Papierart: `gap`, `black`, `continuous` |
| `copies` | `1` | Anzahl der Kopien (199) |
| `dither` | `true` | Floyd-Steinberg-Dithering aktivieren |
| `label_length` | | Max. Etikettenlänge in mm |
| `label_height` | `240` | Max. Etikettenhöhe in Pixel |
### Fehlercodes
| Status | Bedeutung |
|---|---|
| `404` | Drucker nicht gefunden (BLE-Scan fehlgeschlagen oder Adresse ungültig) |
| `422` | Ungültige Parameter oder leere Datei |
| `502` | Kommunikationsfehler mit dem Drucker |
| `504` | Drucker hat nicht rechtzeitig geantwortet |
## Home Assistant Automation Beispiel
```yaml
alias: Etikett drucken
trigger:
- platform: state
entity_id: input_text.etikett_text
action:
- service: rest_command.fichero_print_text
data:
text: "{{ states('input_text.etikett_text') }}"
```
In `configuration.yaml`:
```yaml
rest_command:
fichero_print_text:
url: "http://localhost:8765/print/text"
method: POST
content_type: "application/x-www-form-urlencoded"
payload: "text={{ text }}&density=2&label_length=30"
```
## Hinweise zur Bluetooth-Verbindung
- **BLE (Standard):** Das Add-on benötigt Zugriff auf BlueZ über D-Bus
(`host_dbus: true`). Home Assistant OS stellt BlueZ automatisch bereit.
- **Classic Bluetooth (RFCOMM):** Nur unter Linux verfügbar. Erfordert die
direkte Bluetooth-Adresse (kein automatischer Scan möglich).
- Wenn die BLE-Adresse bekannt ist, diese in der Konfiguration eintragen
das beschleunigt den Verbindungsaufbau erheblich (kein Scan nötig).
- Der Drucker muss eingeschaltet sein, bevor eine Anfrage gestellt wird.
Es gibt keine persistente Verbindung jede Anfrage verbindet sich neu.