npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

iobroker.mcdu

v0.2.0

Published

ioBroker adapter for WINWING MCDU smart home control

Readme

Logo

ioBroker.mcdu

NPM version Downloads Number of Installations Current version in stable repository

NPM

Tests: Test and Release

MCDU Smart Home Adapter for ioBroker

Control your smart home through a WINWING MCDU-32-CAPTAIN aviation cockpit display via MQTT. This project levels up your smarthome with an authentic airline-style interface with scratchpad input, page navigation, confirmation dialogs, and a 14x24 character display with 8 colors.

We all were there before: Mounting tablets on walls for smarthome control, messing with cumbersome visualizations, taking ages to get to the right switch to control a lightbulb. Having a pilot in my family I had an immediate incling when I saw the cockpit MCDU: Easy concept for data entry, quick selection of the right data point. And then I found a fantastic product from Winwing https://eu.winctrl.com/view/goods-details.html?id=945 and started with the reverse engineering. shout out to https://github.com/alha847 for the information provided on the device.

As I am not a developer but a tech geek, I used claude code in a structured way. first for gathering information on the device and reverse engineering it, then for structuring the right architecture for the smart home context and then developing the adapter for iobroker and the client for the raspberry. Thanks and shout outs to the great open source community, especially https://github.com/klein0r and his great videos on adapter development and iobroker smarthome applications of all sorts.

this is the first version of the adapter and client. I still have to test it properly and make some improvements. Feel free to contribute to it.

Architecture

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

The ioBroker adapter runs all business logic (page rendering, input handling, validation). The Raspberry Pi client is a "dumb terminal" that bridges MQTT messages to the USB HID hardware -- it contains no business logic.

Features

  • 14x24 character display with 8 colors (white, amber, cyan, green, magenta, red, yellow, grey)
  • 73 buttons including 12 Line Select Keys, 12 function keys, full alphanumeric keypad
  • 11 LEDs (9 indicators + 2 backlights with BRT/DIM brightness control)
  • Per-line color control: independent colLabel and colData colors, per-page status bar color
  • Aviation-style input: scratchpad on line 14, LSK-based field selection, OVFY confirmation
  • Page system: configurable pages with sub-labels, automatic pagination, layout types (menu/data/list)
  • Function keys: 11 configurable keys (MENU, INIT, DIR, FPLN, PERF, etc.) with per-device mapping
  • Navigation: parent hierarchy, breadcrumb status bar, circular SLEW, CLR-to-parent
  • Validation engine: keystroke, format, range, and business logic validation levels
  • Confirmation dialogs: soft (LSK or OVFY) and hard (OVFY only) for critical actions
  • Multi-device support: multiple MCDUs via per-device MQTT topic namespaces
  • 32 automation states: LED control, scratchpad, notifications, button triggers from ioBroker scripts

Development Status

| Phase | Status | |-------|--------| | Adapter Foundation (MQTT, state tree, display) | Done | | Input System (scratchpad, validation, confirmation) | Done | | Business Logic (rendering, pagination, function keys) | Done | | Admin UI Redesign + Left/Right Line Model | Done | | UX Phase A: Function Key Configuration | Done | | UX Phase B: Navigation Hierarchy & Breadcrumbs | Done | | UX Phase C: Page Layout Types (menu/data/list) | Done | | Display Enhancement (color split, brightness, device states) | Done | | UX Phase D: Quick Access Page | Not started | | UX Phase E: LED Assignment Configuration | Not started | | UX Phase F: Configuration Profiles | Not started | | UX Phase G: Admin UI Polish & Integration | Not started | | Hardware Deployment Testing | Not started |

228 tests passing (217 unit + 11 integration).

Recommended Hardware (mcdu-client)

The mcdu-client is a lightweight Node.js process (~50-100MB RAM) that bridges MQTT to USB HID. It needs WiFi, a USB Host port, and enough USB power for the MCDU (~500mA).

| Board | Price | WiFi | USB Host | Verdict | |-------|-------|------|----------|---------| | Raspberry Pi 4 (1-2GB) | $35-45 | Dual-band | 4x USB-A | Recommended -- best balance of price, power, and simplicity | | Raspberry Pi 3B+ | ~$35 | Dual-band | 4x USB-A | Proven (current dev setup), slightly slower | | Raspberry Pi 5 | $50-80 | Dual-band | 4x USB-A | Good, but needs official 27W PSU for full USB power output | | Raspberry Pi Zero 2 W | ~$15 | 2.4GHz | OTG adapter needed | Cheap but fiddly single-port OTG setup | | ESP32-S3 | $5-15 | Yes | USB OTG | Cannot run Node.js -- would require full C++ rewrite |

Key constraint: The WinWing MCDU firmware requires SET_REPORT control transfers (not interrupt OUT). The mcdu-client uses node-hid which handles this automatically on all platforms (IOHIDManager on macOS, hidraw on Linux).

Quick Start (Development)

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

For detailed documentation, see docs/.

Scripts

| Script | Description | |--------|-------------| | npm test | Run all tests (mocha) | | npm run test:unit | Unit tests only | | npm run test:integration | Integration tests only | | npm run test:watch | Watch mode for unit tests | | npm run lint | ESLint | | npm run lint:fix | ESLint with auto-fix | | npm run check | Lint + test combined |

Changelog

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 [email protected]

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.