MCDU Smart Home Steuerung

Steuern Sie Ihr Smart Home mit WINWING MCDU Hardware über MQTT

Aktueller Release
0.2.2
Entwickler
Felix Hummel
Lizenz
MIT

MCDU Smart Home Adapter für ioBroker

Steuern Sie Ihr Smart Home über ein WINWING MCDU-32-CAPTAIN Cockpit-Display via MQTT. Dieses Projekt wertet Ihr Smart Home mit einer authentischen Benutzeroberfläche im Airline-Stil auf, inklusive Eingabefeld, Seitennavigation, Bestätigungsdialogen und einem 14x24-Zeichen-Display mit 8 Farben.

Wir kennen das alle: Tablets an der Wand für die Smart-Home-Steuerung, umständliche Visualisierungen, ewige Suche nach dem richtigen Schalter für eine Glühbirne. Da ich einen Piloten in der Familie habe, war ich sofort begeistert, als ich das MCDU im Cockpit sah: Einfache Dateneingabe, schnelle Auswahl des richtigen Datenpunkts. Dann stieß ich auf ein fantastisches Produkt von Winwing (https://eu.winctrl.com/view/goods-details.html?id=945 ) und begann mit dem Reverse Engineering. Vielen Dank an https://github.com/alha847 für die Informationen zum Gerät.

Da ich kein Entwickler, sondern ein Technikfreak bin, habe ich Claude Code strukturiert verwendet. Zuerst sammelte ich Informationen über das Gerät und führte Reverse Engineering durch, dann entwarf ich die passende Architektur für den Smart-Home-Kontext und entwickelte schließlich den Adapter für ioBroker und den Client für den Raspberry Pi. Ein großes Dankeschön an die großartige Open-Source-Community, insbesondere an https://github.com/klein0r und seine hervorragenden Videos zur Adapterentwicklung und zu ioBroker-Smart-Home-Anwendungen aller Art.

Dies ist die erste Version des Adapters und Clients. Ich muss sie noch gründlich testen und einige Verbesserungen vornehmen. Beiträge sind herzlich willkommen.

Projektstatus: Mitwirkende willkommen

Seit August 2026 nutzt der ursprüngliche Autor für sein Smart Home Home Home Assistant und pflegt dort eine ähnliche Integration: homeassistant-mcdu . Der ioBroker-Adapter wird nicht aufgegeben – er funktioniert und ist weiterhin verfügbar –, die aktive Entwicklung findet jedoch nicht mehr statt. Beiträge und Mitentwickler sind herzlich willkommen.

Beide Projekte verwenden denselben Raspberry-Pi-Client und dasselbe MQTT-Protokoll, das nun als versionierter Vertrag in docs/PROTOCOL.md dokumentiert ist. Bitte implementieren Sie gemäß dieser Spezifikation, damit der Client weiterhin in beiden Umgebungen funktioniert. Die Gründe für die Aufteilung sind in docs/HOME-ASSISTANT-CONCEPT.md beschrieben.

Hinweis: Es kann jeweils nur ein „Steuergerät“ eine MCDU ansteuern. Die Anzeigethemen bleiben erhalten – wenn dieser Adapter und die Home Assistant-Integration gleichzeitig auf demselben Gerät veröffentlichen, flackert die Anzeige.

Bekannter offener Fehler:lib/mqtt/ButtonSubscriber.js GriffePREV_PAGE /NEXT_PAGE Aber der Client sendet immer nurSLEW_LEFT /SLEW_RIGHT /SLEW_UP /SLEW_DOWN (sehenmcdu-client/lib/button-map.json Die SLEW-Navigation scheint in diesem Adapter daher nicht zu funktionieren. Ein guter erster Beitrag.

Architektur

ioBroker Adapter (main.js)  <-->  MQTT Broker  <-->  RasPi Client (mcdu-client/)  <-->  USB HID Hardware

Der ioBroker-Adapter führt die gesamte Geschäftslogik aus (Seitenrendering, Eingabeverarbeitung, Validierung). Der Raspberry-Pi-Client ist ein einfaches Terminal, das MQTT-Nachrichten an die USB-HID-Hardware weiterleitet – er enthält keine Geschäftslogik.

Merkmale

  • 14x24-Zeichenanzeige mit 8 Farben (Weiß, Bernstein, Cyan, Grün, Magenta, Rot, Gelb, Grau)
  • 73 Tasten, darunter 12 Zeilenauswahltasten, 12 Funktionstasten und ein vollständiges alphanumerisches Tastenfeld.
  • 11 LEDs (9 Indikatoren + 2 Hintergrundbeleuchtungen mit BRT/DIM-Helligkeitssteuerung)
  • Zeilenweise Farbsteuerung : Unabhängige Farben für Spaltenbeschriftung und Spaltendaten, Statusleistenfarbe pro Seite
  • Eingabe im Luftfahrtstil : Notizblock in Zeile 14, LSK-basierte Feldauswahl, OVFY-Bestätigung
  • Seitensystem : Konfigurierbare Seiten mit Unterüberschriften, automatische Paginierung, Layouttypen (Menü/Daten/Liste)
  • Funktionstasten : 11 konfigurierbare Tasten (MENÜ, INIT, DIR, FPLN, PERF usw.) mit gerätespezifischer Belegung
  • Navigation : übergeordnete Hierarchie, Breadcrumb-Statusleiste, kreisförmige SLEW-Navigation, CLR-zu-übergeordnetes Element
  • Validierungsmodul : Validierungsebenen für Tastatureingaben, Format, Bereich und Geschäftslogik
  • Bestätigungsdialoge : weich (LSK oder OVFY) und hart (nur OVFY) für kritische Aktionen
  • Unterstützung mehrerer Geräte : Mehrere MCDUs über gerätespezifische MQTT-Themen-Namespaces
  • 32 Automatisierungszustände : LED-Steuerung, Notizblock, Benachrichtigungen, Tastenauslösung durch ioBroker-Skripte

Entwicklungsstatus

PhaseStatus
Adapter Foundation (MQTT, Zustandsbaum, Anzeige)Erledigt
Eingabesystem (Notizblock, Validierung, Bestätigung)Erledigt
Geschäftslogik (Rendering, Paginierung, Funktionstasten)Erledigt
Neugestaltung der Admin-Benutzeroberfläche + Links/Rechts-LinienmodellErledigt
UX-Phase A: Konfiguration der FunktionstastenErledigt
UX-Phase B: Navigationshierarchie & BreadcrumbsErledigt
UX-Phase C: Seitenlayout-Typen (Menü/Daten/Liste)Erledigt
Anzeigeoptimierung (Farbaufteilung, Helligkeit, Gerätezustände)Erledigt
UX-Phase D: SchnellzugriffsseiteNicht gestartet
UX-Phase E: LED-ZuordnungskonfigurationNicht gestartet
UX-Phase F: KonfigurationsprofileNicht gestartet
UX-Phase G: Optimierung der Admin-Benutzeroberfläche und IntegrationNicht gestartet
Hardware-BereitstellungstestsNicht gestartet

199 Tests bestanden (188 Einheitstests + 11 Integrationstests).

Empfohlene Hardware (mcdu-Client)

Der mcdu-Client ist ein ressourcenschonender Node.js-Prozess (ca. 50–100 MB RAM), der MQTT mit USB HID verbindet. Er benötigt WLAN, einen USB-Host-Anschluss und ausreichend USB-Stromversorgung für das MCDU (ca. 500 mA).

PlankePreisW-lanUSB-HostUrteil
Raspberry Pi 4 (1-2 GB)$35-45Dualband4x USB-AEmpfehlenswert – bestes Verhältnis von Preis, Leistung und Einfachheit
Raspberry Pi 3B+~$35Dualband4x USB-ABewährt (aktuelle Entwicklungsumgebung), etwas langsamer
Raspberry Pi 5$50-80Dualband4x USB-AGut, benötigt aber ein offizielles 27-W-Netzteil für die volle USB-Leistungsausgabe.
Raspberry Pi Zero 2 W~$152,4 GHzOTG-Adapter erforderlichBillige, aber fummelige OTG-Lösung mit einem Port
ESP32-S3$5-15JaUSB OTGNode.js kann nicht ausgeführt werden – dies würde eine vollständige Neuentwicklung in C++ erfordern.

Wichtige Einschränkung : Die WinWing MCDU-Firmware benötigt SET_REPORT-Steuerübertragungen (keine Interrupt-OUT-Übertragungen). Der MCDU-Client verwendetnode-hid Dies wird auf allen Plattformen automatisch erledigt (IOHIDManager unter macOS, hidraw unter Linux).

Schnellstart (Entwicklung)

npm install
npm test          # Run all tests
npm run lint      # ESLint
npm run check     # Lint + test combined

Eine detaillierte Dokumentation finden Sie unter docs/ .

Skripte

SkriptBeschreibung
npm testAlle Tests ausführen
npm run test:unitNur Unit-Tests
npm run test:integrationNur Integrationstests
npm run test:watchÜberwachungsmodus für Unit-Tests
npm run lintESLint
npm run lint:fixESLint mit automatischer Korrektur
npm run checkLint + Test kombiniert

Changelog

WORK IN PROGRESS

  • (Flixhummel) Address ioBroker adapter review feedback (reviewer McM1957)
  • (Flixhummel) Migrate to ESLint 9 flat config with @iobroker/eslint-config v2.2.0
  • (Flixhummel) MQTT password now stored encrypted -- users must re-enter password once after updating
  • (Flixhummel) Fix object hierarchy: devices container changed from channel to folder
  • (Flixhummel) Fix 12+ state roles to match ioBroker standards
  • (Flixhummel) Replace native setTimeout/setInterval with adapter equivalents
  • (Flixhummel) Consolidate i18n translations to flat JSON files, move i18n.js to scripts/
  • (Flixhummel) Remove unused admin/jsonConfig-complexversion.json

0.2.0 (2026-02-28)

  • (Flixhummel) Fix error display for read-only datapoints, improve save config handling

0.1.9 (2026-02-27)

  • (Flixhummel) Unify MCDU driver to node-hid on all platforms, clean up mcdu-client setup

0.1.8 (2026-02-26)

  • (Flixhummel) Remove unpublished news entries and add missing jsonConfig size attributes

0.1.7 (2026-02-25)

  • (Flixhummel) Fix ioBroker repository checker errors and warnings

0.1.4 (2026-02-25)

  • (Flixhummel) Switch to npm trusted publishing (OIDC) for automated releases

0.1.3 (2026-02-25)

  • (Flixhummel) Initial npm release with MQTT bridge, page system, admin UI, and automation states

For detailed changelog see CHANGELOG.md.

License

MIT License

Copyright (c) 2026 Flixhummel hummelimages@googlemail.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.