
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
homebridge-easy-mqtt
Advanced tools
Homebridge plugin to integrate simple MQTT devices into Apple HomeKit
Any issues or damage resulting from use of this plugin are not the fault of the developer. Use at your own risk.
This plugin is designed to be a simple replacement for the fantastic homebridge-mqttthing plugin which appears as though it's no longer being actively developed.
HomebridgeEasyMQTT currently supports Lightbulb
, LockMechanism
, Outlet
, SecuitySystem
,Switch
, and TemperatureSensor
, but will be expanded over time as more use cases are discovered. If there is an accessory type you'd like to see supported, please feel free to create an issue in GitHub.
Using the Homebridge Config UI is the easiest way to set up this plugin. However, if you wish to do things manually then you will need to add the following to your Homebridge config.json
:
{
"name": "Easy MQTT",
"accessories": [
{
"info": {
"id": "string",
"name": "string",
"type": "string",
"manufacturer": "string",
"model": "string",
"serialNumber": "string",
"version": "string"
},
"mqtt": {
"broker": "string",
"username": "string",
"password": "string",
"options": "string"
},
"topicGetStatusActive": "string",
"topicGetCurrentLockState": "string",
"topicGetTargetLockState": "string",
"topicSetTargetLockState": "string",
"topicGetOn": "string",
"topicSetOn": "string",
"valueStatusActive": "string",
"valueLockStateSecured": "string",
"valueLockStateUnsecured": "string",
"valueLockStateJammed": "string",
"valueOn": "string",
"valueOff": "string",
"disableLogging": false
}
...
],
"verbose": false,
"platform": "HomebridgeEasyMQTT"
}
All fields are required unless noted as "(Optional)"
Info:
id
- A unique ID to identify this accessory. Changing this value will result in a new accessory.name
- The display name for the accessory in HomeKittype
- The type of accessory, currently Lightbulb, LockMechanism, Outlet, SecuitySystem, Switch, and Temperature Sensor are supportedmanufacturer
- (Optional) The accessory manufacturer which will display in HomeKit device detailsmodel
- (Optional) The accessory model which will display in HomeKit device detailsserialNumber
- (Optional) The accessory serial number which will display in HomeKit device detailsversion
- (Optional) The accessory software version which will display in HomeKit device detailsMQTT:
broker
- The URL and port to use for communicating with your MQTT deviceusername
- (Optional) Usernamepassword
- (Optional) Passwordoptions
- (Optional) See MQTT Options belowTopics:
You will need to make sure to populate the appropriate topics based on the type.
You may define topics using a JSONPath dot notation to assist the parser in finding the right value within the message. See JSONPaths below for more details.
General Purpose
topicGetStatusActive
- (Optional) Whether or not the accessory is connected/reachableLightbulb
topicGetBrightness
- (Optional) The current brightness as a percenttopicSetBrightness
- (Optional) For setting the brightnesstopicGetHue
- (Optional) The lightbulb's current huetopicSetHue
- (Optional) For setting the lightbulb's current huetopicGetColorTemperature
- (Optional) The current color temperature of the lightbulbtopicSetColorTemperature
- (Optional) For setting the color temperature of the lightbulbtopicGetSaturation
- (Optional) The current saturation setting of the lightbulbtopicSetSaturation
- (Optional) For setting the saturation setting of the lightbulbLockMechanism
topicGetCurrentLockState
- The current state of the lock, i.e. locked/unlockedtopicGetTargetLockState
- The target (i.e. desired) state of the locktopicSetTargetLockState
- For setting the target (i.e. desired) state of the lockOutlet
topicGetOn
- The current state of the outlet, i.e. on/offtopicSetOn
- For setting the state of the outlettopicGetOutletInUse
- (Optional) Whether or not the outlet is currently being usedSecuitySystem
topicGetCurrentSecurityState
— The current state of the systemtopicGetTargetSecurityState
— The target state of the systemtopicSetTargetSecurityState
— For setting the target state of the systemtopicGetStatusTampered
— For getting whether the system has been tampered withtopicGetStatusFault
— For getting whether there is a system errorSwitch
topicGetOn
- The current state of the switch, i.e. on/offtopicSetOn
- For setting the state of the switchTemperatureSensor
topicGetCurrentTemperature
- The current temperature of the sensortemperatureUnits
- (Optional) The temperature units of the incoming value supplied by the sensor, C
for Celsius (default) F
for FahrenheitValues:
As with Topics, you will need to populate the appropriate values based on the type. Note that while they are defined as strings, they will be auto-converted to the appropriate primitives (e.g. boolean or number) where appropriate.
General Purpose
valueStatusActive
- Accessory is connected/reachable, e.g. "true", "1", or "Alive"Lightbulb
valueOn
- Turned on, e.g. "true", or "1", or "On"valueOff
- Turned off, e.g. "false", or "0", or "Off"LockMechanism
valueLockStateSecured
- Locked state, e.g. "true", "255", or "Locked"valueLockStateUnsecured
- Unlocked state, e.g. "false", "0", or "Unlocked"valueLockStateJammed
- (Optional) Lock is jammed, e.g. "254" or "Jammed"Outlet
valueOn
- Turned on, e.g. "true", or "1", or "On"valueOff
- Turned off, e.g. "false", or "0", or "Off"valueOutletInUse
- Currently being used, e.g. "true", or "1", or "On"SecuritySystem
valueArmStay
— (Optional) system armed in stay mode, e.g. "SA" or "stay"valueArmAway
— (Optional) system armed in away mode, e.g. "AA" or "away"valueArmNight
— (Optional) system armed in night mode, e.g. "NA" or "night"valueDisarm
— (Optional) system armed in away mode, e.g. "D" or "disarmed"valueAlarmTriggered
— (Optional) when the alarm has been triggered, e.g. "true" or "1" or "triggered"valueTampered
— (Optional) when the system has been tampered with, e.g. "true" or "1" or "tampered"valueFault
— (Optional) when the system has a general fault, e.g. "true" or "1" or "fault"Switch
valueOn
- Turned on, e.g. "true", or "1", or "On"valueOff
- Turned off, e.g. "false", or "0", or "Off"Logging/Debugging:
By default, devices will log activity, for example when a Switch is turned on or a LockMechanism is unlocked.
To disable, add the following to the accessories you'd like to silence.
"disableLogging": true
You may also turn on additional logging if you'd like to see the MQTT messages passed back and forth. You can do this by adding the following at the top level of the config.
"verbose": true
You are able to pass in any arbitrary MQTT options via mqtt.options
in the config. This can include, for example, such as clientId, protocolVersion, etc. Just make sure the value provided is valid JSON. For example:
"options": "{ \"protocolVersion\": \"4\", \"clientId\": \"my-client-id\", \"rejectUnauthorized\": true }"
For some devices, the desired values in the MQTT messages can get embedded within a JSON object. For example, here is the MQTT message for my door lock that is received when the door is locked:
{ "time": 1750870005853, "state": 255 }
Since the value (255) that I need is embedded within JSON, I can use JSONPath syntax to tell the parser how to find the value.
So, in this example I would define my topic as:
zwave/1/door_lock/currentMode$.state
The $.state
at the end tells the parser to grab the value using the key "state".
This can be arbitrarily complicated and several layers deep. For example,
{
"time":1750870005853,
"state": {
"number": {
"value": 255
}
}
}
would use the topic
zwave/1/door_lock/currentMode$.state.number.value
@arachnetech for the fantastic homebridge-mqttthing plugin which serves as the main inspiration for this project
And to the amazing creators/contributors of Homebridge who made this plugin possible!
1.2.0 (2025-09-02)
FAQs
Homebridge plugin for easy control of MQTT devices
The npm package homebridge-easy-mqtt receives a total of 144 weekly downloads. As such, homebridge-easy-mqtt popularity was classified as not popular.
We found that homebridge-easy-mqtt demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.