tvheadend-mqtt: Integration von Tvheadend über MQTT

Begonnen von Christian., 14 Juni 2019, 07:30:48

Vorheriges Thema - Nächstes Thema

Christian.

Ich verwende seit einiger Zeit Tvheadend als TV-Recorder und habe nach einer Integration für Heimautomatisierungssysteme gesucht.

Meine Anforderungen:

  • Übersicht über vergangene und künftige Aufnahmen
  • Übersicht über die Auslastung der Speicherplatzes
  • Vermeidung von Polling: nach Abschluss einer Aufnahme soll der aktuelle Tvheadend-Status aktiv versendet werden
  • Möglichkeit zur Integration in FHEM und andere Heimautomatisierungssysteme
  • Wenig Abhängigkeiten und möglichst hohe Isolation vom System
  • Erweiterbarkeit und Konfigurierbarkeit durch den Anwender

Punkt 1 ist über Aufrufe der Tvheadend-HTTP-API möglich.
Punkt 2 ist derzeit (Tvheadend 4.3-1789~g6bfeca6c0) nicht über die Tvheadend-HTTP-API möglich, sondern nur über das HTSP-Protokoll oder das Betriebssystem.
Punkt 3 lässt sich über die in Tvheadend eingebauten Post-Prozessoren umsetzen.
Punkt 4 verlangt standardisierte Protokolle für Kommunikation und Datenformat.
Punkt 5 steht in Konkurrenz zu den Punkten 2, 3 und 4.

Da ich keine passende Lösung gefunden habe, habe ich eine entwickelt: einen Adapter der Tvheadend-API auf MQTT namens tvheadend-mqtt.

Funktionsweise: Interessierte Clients abonnieren ein MQTT-Topic und erhalten nach jeder Aufnahme den aktuellen Tvheadend-Status im JSON-Format. Zusätzlich sind aktive Abfragen möglich. Betrieben wird der Adapter in einem Docker-Container, getrennt von Tvheadend und FHEM. Falls Clients durch Tvheadend benachrichtigt werden sollen, müssen Tvheadend und tvheadend-mqtt gemeinsamen Zugriff auf ein Verzeichnis haben.

tvheadend-mqtt befindet sich auf Github und Docker Hub. Dort liegt auch die Dokumentation mit einem Beispiel für die Einbindung in FHEM.

Als Alternative zur Einbindung von Tvheadend in FHEM gibt es übrigens auch das Modul 70_Tvheadend.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee