Hisense per MQTT steuern: So zähmst du deinen Vidaa-Fernseher endlich lokal

Vergleich: Normale Nutzer mit Fernbedienung vs. Zebra mit Terminal – Hisense Fernseher per MQTT steuern

Hast du einen Hisense-TV mit Vidaa-Betriebssystem? Und hast du dir auch schon mal gedacht: „Warum zur Hölle kann ich das Ding nicht einfach per MQTT steuern wie ein anständiges Smart-Home-Gerät?!“ Willkommen im Club. Doch nach Wochen voller Sackgassen, verschlüsselten Geheimnissen und mysteriösen Ports habe ich es geschafft – und du kannst es jetzt auch. Mit „Hisense MQTT“ steuerst du deinen Fernseher wie ein echter Nerd. Lokal. Sicher. Und komplett ohne Cloud.

⚠️ Spoiler: Es ist ein Ritt durch verschlüsselte MQTT-Server, zertifikatsgeschützte Verbindungen und Bash-Magie. Aber hey – das ist Prokrastinerd.de, nicht Mama’s Plug & Play Blog.


Schritt 1: Teste alles mit dem MQTT Explorer

Dein Fernseher muss für die Einrichtung an sein, eine feste IP-Adresse haben und Wake on LAN (WoL) muss aktiviert sein

Bevor du dir die Finger im Terminal wund tippst, teste, ob dein Fernseher überhaupt auf MQTT hört. Verwende dafür MQTT Explorer.

Einstellungen:

  • Broker: IP deines Hisense-TVs
  • Port: 36669
  • Encryption (TLS): Aktivieren ✅
  • Validate certificate: Deaktivieren ❌
  • Client Certificate & Key (unter Advanced):
    • Zertifikat: rcm_certchain_pem.cer
    • Schlüssel: rcm_pem_privkey.pkcs8

Die nötigen Dateien findest du hier: GitHub

Wenn der Explorer sich verbindet, dann sende das folgende Topic (HomeAssistant kannst du austauschen, das ist deine zukünftige Client-ID für den Fernseher):
/remoteapp/tv/ui_service/HomeAssistant/actions/gettvstate

Wenn das klappt, sollte dein Fernseher eine Pin anzeigen. Dann direkt folgendes Topic senden:
/remoteapp/tv/ui_service/HomeAssistant/actions/authenticationcode

Payload:
{"authNum": 1234}

Hat das geklappt? Glückwunsch. Dein TV kann MQTT.


Schritt 2: Debian LXC vorbereiten (alternativ einen Linux-Server oder Raspberry Pi)

Richte dir einen LXC-Container mit Debian 12 ein, z. B. in Proxmox. Gib ihm eine feste IP (Wir verwenden hier 192.168.0.84).

Dann brauchen wir Zugriff um die Zertifikate hochladen zu können.
Also:

nano /etc/ssh/sshd_config

Ergänze oder ändere:

PermitRootLogin yes

(Du kannst das nach dem Hochladen der Zertifikat-Dateien wieder auf „no“ setzen.)

mkdir /etc/mqtt_certs/

Zertifikate per SFTP hochladen, z. B. mit WinSCP.


Infografik zur MQTT-Verbindung zwischen Hisense Fernseher und Linux-Client mit Python, Zertifikaten und Zebra-Avatar

Schritt 3: Python-Umgebung einrichten

mkdir -p /opt/hisense-mqtt
cd /opt/hisense-mqtt
apt update
apt install python3.10-venv -y

🧠 Was ist venv?
venv steht für „virtual environment“. Es erstellt ein isoliertes Python-Umfeld, sodass deine installierten Pakete (wie paho-mqtt) nicht mit dem System-Python oder anderen Projekten kollidieren. Nerds nennen es „sauberes Python“.

python3 -m venv venv
source venv/bin/activate
pip install paho-mqtt

Jetzt erstellen wir eine Python Datei:

nano hisense.py

Inhalt:

import ssl
import argparse
import paho.mqtt.client as mqtt
from paho.mqtt.client import CallbackAPIVersion
import time

# Argumente aus der Kommandozeile parsen
parser = argparse.ArgumentParser(description="Sende MQTT-Befehl an Hisense-TV")
parser.add_argument("--topic", required=True, help="MQTT Topic")
parser.add_argument("--payload", required=True, help="MQTT Payload")
args = parser.parse_args()

# Verbindungskonfiguration
BROKER = "192.168.0.180"
PORT = 36669
USERNAME = "hisenseservice"
PASSWORD = "multimqttservice"
CLIENT_ID = "HomeAssistant"

# Callback bei erfolgreicher Verbindung
def on_connect(client, userdata, flags, reasonCode, properties):
    print(f"[INFO] Verbindungscode: {reasonCode}")
    if reasonCode == mqtt.MQTT_ERR_SUCCESS:
        print(f"[INFO] Verbunden – sende an Topic '{args.topic}': {args.payload}")
        client.publish(args.topic, args.payload)
    else:
        print("[ERROR] Verbindung fehlgeschlagen")

# Callback nach erfolgreicher Veröffentlichung
def on_publish(client, userdata, mid, reasonCode, properties):
    print("[INFO] Nachricht veröffentlicht – beende...")
    client.disconnect()

# MQTT-Client erstellen mit TLS-Optionen
client = mqtt.Client(
    client_id=CLIENT_ID,
    protocol=mqtt.MQTTv311,
    transport="tcp",
    userdata=None,
    clean_session=True,
    reconnect_on_failure=True,
    callback_api_version=CallbackAPIVersion.VERSION2
)

# Login setzen
client.username_pw_set(USERNAME, PASSWORD)

# TLS konfigurieren (Zertifikate nutzen, aber keine Validierung)
client.tls_set(
    ca_certs=None,
    certfile="/etc/mqtt_certs/rcm_certchain_pem.cer",
    keyfile="/etc/mqtt_certs/rcm_pem_privkey.pkcs8",
    tls_version=ssl.PROTOCOL_TLSv1_2,
    cert_reqs=ssl.CERT_NONE
)
client.tls_insecure_set(True)

# Callbacks zuweisen
client.on_connect = on_connect
client.on_publish = on_publish

# Verbindung herstellen und starten
print("[INFO] Stelle Verbindung her...")
client.connect(BROKER, PORT, keepalive=60)
client.loop_start()

# Warten, bis Nachricht gesendet und Verbindung beendet wurde
while client.is_connected():
    time.sleep(0.1)

client.loop_stop()

Test:

python hisense.py --topic "/remoteapp/tv/remote_service/HomeAssistant/actions/sendkey" --payload "KEY_MUTE"

Ist dein Fernseher jetzt lautlos? Super, dann hat alles geklappt!


Schritt 4: Komfortabler Zugriff per Bash

Bevor du dich fragst, warum dein Fernseher auf alle MQTT-Kommandos brav reagiert – aber nicht von allein angeht: Das liegt daran, dass Power On per MQTT nicht vorgesehen ist. Der Fernseher schläft im Deep Sleep – MQTT? Hört er nicht mehr.
Lösung: Du musst ihn via Wake-on-LAN (WoL) aus dem Dornröschenschlaf wecken.

apt install wakeonlan
wakeonlan 00:11:22:33:44:55 # Deine MAC-Adresse anpassen

Damit wir nicht immer erst in die virtuelle Umgebung wechseln müssen, basteln wir uns ein Script, welches das für uns übernimmt.

nano /usr/local/bin/hisense-send

Inhalt:

#!/bin/bash
cd /opt/hisense-mqtt || exit 1
source venv/bin/activate
python hisense.py "$@"

Dann ausführbar machen:

chmod +x /usr/local/bin/hisense-send

Test:

/usr/local/bin/hisense-send --topic "/remoteapp/tv/remote_service/HomeAssistant/actions/sendkey" --payload "KEY_MUTE"

Erneut sollte dein Fernseher lautlos bzw. wieder laut sein.

Optional: PATH erweitern, damit du einfach hisense-send ... tippen kannst:

export PATH="$PATH:/usr/local/bin"


Bonus: Integration mit ioBroker, HomeAssistant, Node-RED, usw.

Damit du von anderen Systemen aus deinen Hisense per MQTT steuern kannst, richte SSH-Zugriff ohne Passwort ein.

Auf dem System welches die Befehle senden soll, führe folgendes aus:

systemctl start ssh
ssh-keygen -t rsa -b 4096
ssh-copy-id root@192.168.0.84

Dann kannst du z. B. in Node-RED einen exec-Node verwenden:

ssh root@192.168.0.84 /usr/local/bin/hisense-send --topic "/remoteapp/tv/remote_service/HomeAssistant/actions/sendkey" --payload "KEY_MUTE"

Alternativ: sudo -u iobroker ssh-keygen & ssh-copy-id für User „iobroker“.
Dies war in meinem Fall nötig, damit die Node-RED, Blockly usw. den Befehl senden konnten.


Alternativen & Empfehlungen

Falls dir das Ganze zu nerdig ist – oder du einfach ein Backup willst, wenn der MQTT-Weg mal wieder zickt – hier zwei Optionen mit Sternchen:

  • 🛒 Hisense Fernseher mit Vidaa gibt’s z. B. hier bei Amazon (bezahlter Link)
  • 🛒 Zigbee-Infrarot-Bridge – die kann klassische IR-Fernbedienungen ersetzen und lässt sich mit ioBroker oder Zigbee2MQTT kombinieren. hier bei Amazon (bezahlter Link)

MQTT-Tastenbefehle für den Hisense TV

Wenn dein Fernseher erfolgreich gekoppelt wurde, kannst du über das folgende Topic Tasteneingaben senden:

Topic: /remoteapp/tv/remote_service/HomeAssistant/actions/sendkey

Steuerung & Navigation:

KEY_POWER    # Gerät ein-/ausschalten (nur wenn aktiv)
KEY_OK           # Bestätigen
KEY_UP           # Pfeil hoch
KEY_DOWN    # Pfeil runter
KEY_LEFT        # Pfeil links
KEY_RIGHT     # Pfeil rechts
KEY_HOME     # Startbildschirm
KEY_MENU     # Menü öffnen
KEY_RETURNS # Zurück
KEY_EXIT         # Beenden / Zurück ins Hauptmenü

Lautstärke & Ton:

KEY_VOLUMEUP          # Lauter
KEY_VOLUMEDOWN   # Leiser
KEY_MUTE                   # Stumm

Mediensteuerung:

KEY_PLAY              # Wiedergabe
KEY_PAUSE            # Pause
KEY_STOP              # Stopp
KEY_FORWARDS    # Vorspulen
KEY_BACK              # Zurückspulen

Zahlenfeld & Untertitel:

KEY_0 bis KEY_9  # Zahlentasten 0–9
KEY_SUBTITLE     # Untertitel ein-/ausblenden

Weitere Befehle findest du hier: GitHub


Fazit

Es ist kein Plug & Play – aber dafür ist es nerdy, offline, lokal und genial. Mit ein bisschen Zertifikatsakrobatik und Bash-Bastelei kannst du deinem Fernseher endlich Manieren beibringen – ganz ohne Cloud, App oder offizielle API. Hisense per MQTT steuern ist nicht nur ein Befehl, sondern eine Lebenseinstellung. 😎


📎 Noch Fragen, Feedback oder eigene Hacks? Schreib mir oder poste auf nerdculture.de/@GrayTheZebra – oder natürlich in den Kommentaren!