Homebridges-cmd4 - CMD4 Plugin for Homebridge - Supports ~All Accessory Types and now all Characteristics, Custom Characteristics and Priority Queued Polling too!!
As of September 2025, I will no longer be supporting Cmd4.
Cmd4 was cool in that it allowed me to discover how the Apple Home App can control all the different devices, but there are a number of reasons why I've decided to no longer support Cmd4.
- Apple took all the fun away from a lot of the devices. You can no longer do Apple TV for instance. Trying to keep up with Apple's API changes is a fast moving target. HomeBridge tries to minimize this but I have no interest in keeping up with them.
- When homebridge went to TypeScript I was not a fan. Personally the code bloat that it offers is not worth the effort as I believe good Unit testing and for javascript, JSLint is always a better method. I am also not a fan of Swift for the same reasons. Just try to do a bit shift in Swift.
- Homebridge config-UI-X was always nasty for Cmd4. The latest beta of Config-UI-X has gone on for almost a year and it is probably because they too went to TypeScript.
- My health is not what it used to be. My little time left on this planet has no interest in supporting Cmd4.
Cmd4 is a plugin for Homebridge that lets you see what Homebridge and Homekit are all about, without actually owning a single accessory! For the more advanced user, Cmd4 brings CLI support for all device types (Accessories) and characteristics.
- About the Cmd4 Plugin
- How the Cmd4 Plugin Works
- Features
- ChangeLog
- Screenshots
- Installation Details
- Demo Mode
- Basic Troubleshooting
- Advanced Troubleshooting For Developers
- Developers Guide
- Rationale
- Todo
- Contributing
- Inspiration and special thanks
- License
This plugin allows you to see what Homebridge is all about, without having any home control accessories. If you can run Homebridge and install this plugin, all the possible accessories are now available to you within HomeKit or Eve. (Except Camera Streaming).
Similar to other command plugins, you can use Cmd4 to execute command line interface (CLI) scripts, but with Cmd4 the devices don't just appear in HomeKit as a Switch or a Light, but now they can appear as a Garage Door opener, Air Purifier ... and you can control all of their characteristics too.
Cmd4 comes with a fully populated and documented config.json file that is set to using just the cached entry's in the config file itself. This makes HomeKit behave as if you actually have all these Accessories! If you choose to add in your own scripts, the Cmd4 Github pages at http://ztalbot2000.github.io/homebridge-cmd4 have example script templates and further development instructions.
Cmd4 supports, Lights, Garage Door Openers, Outlets, Switches, Lock Maintenance Systems, Lock Management Systems, Humidity Sensors, Doors, Light Sensors, Temperature Sensors, Contact Sensors, Motion Sensors, Thermostats, Security Systems, Battery Services, Filter Maintenance Systems, Air Purifiers, Television, Television Speaker, Input Sources, Irrigation Systems, ... everything but Camera Streaming since it is not pliable to a command line Interface.
Cmd4 Polling is a way to in the background update the state of devices via the 'polling' dirctive.
- "polling": "on" - Implements polling of the default characteristics of the defined "timeout" and "stateChangeResponseTime".
- "polling": [{ "characteristic": "", [ "timeout": , "stateChangeResponseTime": ] }] - implements per characteristic polling.
Cmd4 supports Fakegato History and retaining previous state over restarts.
Since version 2.0 Cmd4 has supported linked Accessories and the latest 3.0 Version supports both Platform plugin and Accessory plugin configurations as documented on developers.homebridge.io.
Cmd4 Version 3.5 adds in support for Custom Characteristics.
Cmd4 Version 3.6 allows you to configure Priority Queued Polling so that the accessory only receives one request at a time; with priority to all IOS requests first and polling second.
See homebridge for complete details.
*SHELL*> sudo npm install -g --unsafe-perm homebridge-cmd4Use the provided config.json file or add it to your own.
*SHELL*> cp /usr/local/lib/node_modules/homebridge-cmd4/Extras/config.json $HOME/.homebridge/See homebridge for complete details.
If you are not already familiar with Homekit, you may wish to look at the documentation for Homebridge and how to configure it with Homekit. The gist of it is that you enter the manual code defined in the config.json file. I chose 5555555 for simplicity.
The config.json provided has no polling defined. Demo mode is achieved when no polling of any kind for that accessory is defined. In this way all values are retrieved and set from cache.
This error is indicative to many situations. The most common is that the command took to long to run.
Error: Command failed: /homebridge/Server.sh Get 'Server' 'On'
at ChildProcess.exithandler (child_process.js:297:12)
at ChildProcess.emit (events.js:193:13)
at maybeClose (internal/child_process.js:1001:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:266:5)
killed: true
code: null
signal: SIGTERM,
cmd: "/homebridge/Server.sh Get Server On"
Check that the command exists, but also that the timeout value in your config.json for that accessory is not too low.
New in Cmd4 v4.0.0 is how to enable Debug mode. The logs are 100% the same, except that now that Cmd4 has its own logging system ( Copied from Homebridge for compatability ); Enabling Debug logs will not enable Debug logs in other plugins.
There are two ways to enable Cmd4 Debug logs.
The Cmd4 Platform section can contain the enable Debug directive.
{
"platform": "Cmd4",
"name": "Cmd4",
"debug": true
} *SHELL*> DEBUG=Cmd4Note: For Homebridge-config-ui-x, you only need to write Cmd4 in the Environmental variable section.
After playing with homebridge-cmd and then homebridge-cmdswitch2, I really wanted to control as much as I could. I did not have all the devices, but I did have a light and a Sony Android TV. I wanted to control these and see what else I could do.
If you were wondering what happened to version 3, well I learned a lot, hence the working cmd4.
- Become Homebridge Certified. ( The schema file for Homebridg-ui would be very difficult )
Best ways to contribute
- Star it on GitHub - if you use it and like it please at least star it :)
- Promote
- Open issues/tickets
- Submit fixes and/or improvements with Pull Requests
Like the project? Please support to ensure continued development going forward:
- Star this repo on [GitHub][homebridge-cmd4-repo]
- Follow the repo on [GitHub][homebridge-cmd4-repo]
- Follow me
Based on the best of:
- [homebridge-cmd]https://github.com/senyoltw/homebridge-cmd.git
- [homebridge-cmdswitch2]https://github.com/luisiam/homebridge-cmdswitch2.git
- [homebridge-real-fake-garage-doors]https://github.com/plasticrake/homebridge-real-fake-garage-doors.git
- [homebridge-homeseer]https://github.com/jrhubott/homebridge-homeseer.git
- Thanks to TimofeyK for all his help with fakegato and for suggesting it.
- Thanks to Mitch Williams for his endless encouragement.
- Thanks especially to those who continue to work on Homebridge and those who make it better.
- And most importantly my Wife.
See LICENSE

