An open API service indexing awesome lists of open source software.

https://github.com/kreso975/homebridge-http-sensors-switches

Homebridge Plugin HTTP & MQTT
https://github.com/kreso975/homebridge-http-sensors-switches

discord homebridge http humidity mqtt switch temperature weather webhooks

Last synced: 2 days ago
JSON representation

Homebridge Plugin HTTP & MQTT

Awesome Lists containing this project

README

          

### Homebridge Platform Plugin
# HTTP Sensors and Switches

[![verified-by-homebridge](https://badgen.net/badge/homebridge/verified/purple)](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)  
 
 
[![Donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/kreso975)
[![Ko-fi](https://img.shields.io/badge/Ko--fi-donate-gray?logo=ko-fi&logoColor=white&labelColor=blue)](https://ko-fi.com/kreso975)

This plugin communicates with your devices using HTTP or MQTT. Currently it supports Light Bulb, Switches, Outlets, Fan, Valve, Sprinkler / Irrigation, Shower, Tap, Door, Garage Door, Shades / Blinds, Temperature/Humidity, Motion, Contact and Occupancy sensor, Air Quality, Smoke, Carbon Dioxide and Light Sensor.

Simple Discord Webhooks available in Light Bulb, Switches and Outlets and sensors.


## Shared Polling Shared Polling
> [!NOTE]
> Multiple accessories can use same data source http://url/source.json
> Enable Shared Polling under HTTP. Set Group name, Data Source URL and Update Interval for each.
>
> Supported Nested JSON data structure: 'switches.switch2'
```json
{
"switches": {
"switch1": 1,
"switch2": 0
},
"temperature1": 12.23,
"temperature2": 24.43
}
```

⚙️ Parameters

```json
{
"sharedPolling": true,
"sharedPollingId": "Switches",
"sharedPollingInterval": 5000, // Miliseconds - 5sec
"urlStatus": "THIS MUST BE INSERTED FOR ALL IN SHARED POLL",
}
```



## 🕺 Motion, Contact & Occupancy Sensor
> [!NOTE]
> HTTP - Read status (true or 1 /false or 0) from JSON
> MQTT - Read status (true or 1/false or 0)
>
> Parameters for services you do NOT need, should be left BLANK

⚙️ Parameters

| **Param** | **Description** | **Values** |
|--- |--- |:---: |
| paramNameOccupancyDetected
mqttOccupancyDetected | Occupancy Status | 0 (Not detected), 1 (Detected) |
| paramNameMotionDetected
mqttMotionDetected | Motion Status | 0 (Not detected), 1 (Detected) |
| paramNameContactSensorState
mqttContactSensorState | Contact status | 0: Contact detected (closed), 1: Contact not detected (open) |
| paramNameStatusActive
mqttStatusActive | Status of Sensor | 0 (Inactive), 1 (Active) |
| paramNameStatusFault
mqttStatusFault | Fault status | 0 (No Fault), 1 (Fault Detected) |
| paramNameStatusLowBattery
mqttStatusLowBattery | Battery status | 0 (Battery OK), 1 (Low Battery) |
| paramNameStatusTampered
mqttStatusTampered | Tempered Status |0 (No Tampering), 1 (Tampered) |




```json
{
"MotionSensor": {
"MotionDetected": 1,
"Active": 1,
"Fault": 0,
"BatteryLevel": 0,
"LowBattery": 0,
"Tampered": 0
},
"OccupancyDetected": 0,
"Active" : 1,
"Fault" : 0,
"BatteryLevel": 0,
"LowBattery" : 1,
"Tampered" : 0
}
```

## 💡 Light Bulb
> [!NOTE]
> HTTP:
> - Read Status (On/Off), Turn ON (url), Turn OFF (url)
> - Control RGB or HSV on device
> - Brightness
> - Color Temperature: Mired (153-500) OR Kelvin (2000-6500)
>
> MQTT:
> - Turn ON/OFF | Values: On = true || 1, Off = false || 0
> - RGB in format #FFAA22 or without #
>
> Parameters for services you do NOT need, should be left BLANK

⚙️ Parameters

| **Param** | **Description** | **Values** |
|--- |--- |:---: |
| urlON | URL to Turn ON Device | URL |
| urlOFF | URL to Turn OFF Device | URL |
| urlStatus | URL to retrieve JSON with all Data | URL |
| urlLightBulbControl | HTTP address where to send Device control commands (POST) |URL |
| stateName | JSON Parameter Name for Reading ON/OFF | Key |
| onStatusValue | JSON return Value for status ON | ON, true, 1 |
| offStatusValue | JSON return Value for status ON | Off, false, 0 |
| useRGB | Use RGB instead of HSV | true / false |
| useBrightness255 | Use Brightness 0 - 255 not 0 - 100 | true / false |
| useColorTKelvin | Color Temperature in Mired (153-500), Kelvin (2000-6500) | true / false |
| rgbParamName
mqttRGB | JSON Parameter Name for RGB color / mqtt Topic |String |
| brightnessParamName
mqttBrightness | JSON Parameter Name for Brightness / mqtt Topic | String |
| saturationParamName
mqttSaturation | JSON Parameter Name for Saturation / mqtt Topic |String |
| hueParamName
mqttHue | JSON Parameter Name for HUE / mqtt Topic | String |
| colorTemperatureParamName
mqttColorTemperature | JSON Parameter Name for Color Temperature / mqtt Topic | String |


```json
{
"Light": true,
"Brightness": 100,
"RGB": "FF00AA",
"Hue": 120,
"Saturation": 20,
"ColorTemperature": 500
}
```

> [!TIP]
> useRGB will Send and Receive values in RGB format
> If useRGB is set, Saturation and Hue will not be sent or read. Brightness will be calculated from RGB value.
>
> useBrightness 0-255 will Send and Receive converted Brightness value in range 0-255
>
> Parameters for services you do NOT NEED, should be left BLANK

> [!IMPORTANT]
> Use HTTP or MQTT not both for same accessory.


## Publish   Switch & Outlet
> [!NOTE]
> HTTP:
> - Read Status (On/Off), Turn ON (url), Turn OFF (url)
> - Outlet read Status: Outlet In Use( true/false)
>
> MQTT:
> - Turn ON/OFF ( Values: On = 1 || true, Off = 0 || false )
> - Outlet In Use ( Values: true/false or 1/0)
>
> Discord Webhook publishes switch status to your Discord channel

> [!TIP]
> If you don't have Manual switch and you don't mind when Homebridge is rebooted, your device is going to be set as OFF
> then you don't have to use Parameter urlStatus.
>
> How to setup Discord Webhooks: [link](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks)

> [!IMPORTANT]
> Use HTTP or MQTT not both for same accessory.
>

> [!CAUTION]
> Parameter:
> urlStatus = 'url points to JSON with device status' when is set it will bind Accessory into 5 sec check status interval
```json
{
"POWER": "ON", "inUSE": false
}
```



## 🌡️ Temperature and Humidity sensor
> [!NOTE]
> Sensor - Read JSON Or MQTT for Temperature, Humidity
>
> Nested JSON
> Support for Nested JSON structure: sensor2.tCelsius
>

> [!TIP]
> Parameters required in Config:
>
> deviceType = 'Sensor',
> deviceName = 'Name your Accessory',
> deviceID = 'Put something unique / chars and numbers',
>
> For JSON read use param sensorUrl:
> sensorUrl = 'JSON file containing sensor readings (temperature, humidity)',
>
> For MQTT use param mqttBroker:
> mqttBroker = 'URL of MQTT Broker'
>

> [!IMPORTANT]
> MQTT is just an basic implementation, no encription etc.
>

Sensor JSON file example
```json
{
"t": 25.25,
"h": 33.54,
"p": 1025.04,
"sensor2": {
"tCelsius": 22.2
}
}
```

## Fan plugin Fan

> [!NOTE]
>
> HTTP
> Read interval 5 sec
> Select HTTP Method - GET / POST
>
> MQTT
> param for ACTIVE is mqttSwitch
>
> Parameters for SERVICES you do NOT NEED, should be left BLANK
>
> Discord Webhook publishes Fan status to your Discord channel (On/Off)

> [!CAUTION]
> Parameter:
> urlStatus = 'url points to JSON with device status' when is set it will bind Accessory to 5 sec check status interval

⚙️ Parameters

| **Param** | **Description** | **Values** |
|--- |--- |:---: |
| paramNameStatusActive
mqttSwitch | Turn Fan On / Off | 0 (Inactive), 1 (Active) |
| paramNameRotationSpeed
mqttRotationSpeed | Rotation Speed | Valid range: 0 to 100 |
| paramNameRotationDirection
mqttRotationDirection | Fan turn direction | 0 (Clockwise), 1 (Counterclockwise) |
| paramNameSwingMode
mqttSwingMode | Swing Mode On / Off | 0 (Disabled), 1 (Enabled) |
| paramNameTargetFanState
mqttTargetFanState | Automatione mode |0 (Manual), 1 (Automatic) |
| paramNameCurrentFanState
mqttCurrentFanState | Read Status of Fan | 0 (Inactive), 1 (Idle), 2 (Blowing Air) |


⚙️ Fan JSON Example

```json
{
"Active": 0,
"RotationSpeed": 100,
"RotationDirection": 0,
"SwingMode": 1,
"CurrentFanState": 1,
"TargetFanState": 1
}
```


## 💧💦 🚿 Valve, Sprinkler / Irrigation, Tap, Shower

> [!NOTE]
>
> HTTP
> Read interval 5 sec
>
> If param InUse is not in use SET it with the same value as StatusActive so that can be triggered with same value, enabling it to set On/Off
>
> Param ValveType is set in Config so it does not need to be set in JSON. Dynamic change is not supported in current plugin version
>

⚙️ Parameters

| **Param** | **Description** | **Values** |
|--- |--- |:---: |
| paramNameStatusActive
mqttSwitch | Set Valve Status | 0 (Inactive), 1 (Active) |
| paramNameInUse
mqttInUse | In Use Status | 0 (Not in Use), 1 (In Use) |
| paramNameValveType | Valve Type | 0: Generic valve, 1: Irrigation, 2: Shower head, 3: Tap |


⚙️ Valve JSON Example

```json
{
"StatusActive": 0,
"InUse": 0,
"ValveType": 1
}
```


## Garage Door plugin Door, Garage Door, Window, , Blinds / Shades plugin Blinds / Shades

> [!NOTE]
>
> Parameters for SERVICES you do NOT NEED, should be left BLANK
>
> Discord Webhook publishes status to your Discord channel (On/Off)

⚙️ Parameters

| **Param** | **Description** | **Values** |
|--- |--- |:---: |
| paramNameTargetDoorState
mqttTargetDoorState | SET Door position | 0 (Open), 1 (Closed) |
| paramNamePositionState
mqttPositionState | Door state | 0 (Closing), 1 (Opening), 2 (stopped) |
| paramNameCurrentDoorState
mqttCurrentDoorState | Door state | 0: Open, 1: Closed, 2: Opening, 3: Closing, 4: Stopped |
| paramNameObstructionDetected
mqttObstructionDetected | Read Obstruction | 0: false, 1: true |
| paramNameStatusJammed
mqttStatusJammed | Is Jammed | 0 (not jammed), 1 (Jammed) |
| paramNameTargetPosition
mqttTargetPosition | Set Position | Range: 0 (Fully Closed) to 100 (Fully Open) |
| paramNameCurrentPosition
mqttCurrentPosition | Read Current Possition | Range: 0 (Fully Closed) to 100 (Fully Open) |
| paramNamePositionState
mqttPositionState | Read position state | 0: Closing, 1: Opening, 2: Stopped |
| paramNameHoldPosition
mqttHoldPosition | Enables holding a specific position | 0, 1 |


⚙️ JSON Example

```json
{
"door": {
"TargetPosition": 0, // 0 - 100 %
"CurrentPosition": 0, // 0 - 100 %
"PositionState": 2,
"ObstructionDetected": 0,
"DeviceJammed": 0,
},
"garage": {
"TargetDoorState": 0,
"CurrentDoorState": 1,
"ObstructionDetected": 0,
"StatusJammed": 0
},
"Window": {
"TargetPosition": 0,
"CurrentPosition": 0,
"PositionState": 0
},
"WindowCovering": {
"TargetPosition": 0,
"CurrentPosition": 0,
"PositionState": 2,
"HoldPosition": 0,
"StatusJammed": 0
}
}
```


## Smoke, Carbon Dioxide, Air Quality Smoke, Carbon Dioxide & Air Quality Detector

> [!NOTE]
>
> Parameters for SERVICES you do NOT NEED, leave BLANK
>
> Discord Webhook publishes change in Carbon Dioxide Detected, Smoke Detected and Status Low Battery to your Discord channel

⚙️ Parameters

| **Param** | **Description** | **Values** |
|---------------------------------------------|-------------------------------------|-----------------------------------------------|
| paramNameCarbonDioxideDetected
mqttCarbonDioxideDetected | Read Detection | 0: no Detection, 1: Detected |
| paramNameCarbonDioxideLevel
mqttCarbonDioxideLevel | CO2 Concentration | Range: 0 to 5000 ppm |
| paramNameCarbonDioxidePeakLevel
mqttCarbonDioxidePeakLevel | Peak CO2 Concentration | Range: 0 to 5000 ppm |
| paramNameStatusActive
mqttStatusActive | Is Active | 0: Inactive, 1: Active |
| paramNameStatusFault
mqttStatusFault | Fault Status | 0: No Fault, 1: Fault |
| paramNameStatusLowBattery
mqttStatusLowBattery | Battery Status | 0: Normal, 1: Low |
| paramNameStatusTampered
mqttStatusTampered | Tampered Status | 0: Not Tampered, 1: Tampered |
| paramNameSmokeDetected
mqttSmokeDetected | Read Smoke Detection | 0: No Smoke, 1: Smoke Detected |
| paramNameAirQuality
mqttAirQuality | Air Quality Index | Range: 1 (Excellent) to 5 (Very Poor) |
| paramNamePM2_5Density
mqttPM2_5Density | PM2.5 Particle Density | Range: 0 to 500 µg/m³ |
| paramNamePM10Density
mqttPM10Density | PM10 Particle Density | Range: 0 to 500 µg/m³ |
| paramNameOzoneDensity
mqttOzoneDensity | Ozone Concentration | Range: 0 to 1000 µg/m³ |
| paramNameNitrogenDioxideDensity
mqttNitrogenDioxideDensity | NO₂ Concentration | Range: 0 to 1000 µg/m³ |
| paramNameSulphurDioxideDensity
mqttSulphurDioxideDensity | SO₂ Concentration | Range: 0 to 1000 µg/m³ |
| paramNameCarbonMonoxideLevel
mqttCarbonMonoxideLevel | CO Concentration | Range: 0 to 1000 ppm |
| paramNameVOCDensity
mqttVOCDensity | Volatile Organic Compounds Level | Range: 0 to 1000 µg/m³ |


⚙️ JSON Example

```json
{
"CO2Sensor2": {
"CO2Detected": false,
"CO2Level": 700,
"CO2PeakLevel": 1400,
"Active": 1,
"Fault": 0,
"LowBattery": 0,
"Tampered": 0
},
"AirQualitySensor": {
"AirQuality": 3,
"PM2_5Density": 12.5,
"PM10Density": 25.0,
"OzoneDensity": 75.0,
"NitrogenDioxideDensity": 40.0,
"SulphurDioxideDensity": 20.0,
"CarbonMonoxideLevel": 0.9,
"VOXDensity": 350.0,
"StatusActive": true,
"StatusFault": false,
"StatusLowBattery": false,
"StatusTampered": false
},
"SmokeDetected": 0,
"StatusActive" : true,
"StatusFault" : 0,
"LowBattery" : false,
"StatusTampered" : 0
}

```




## 🌟 Ambient Light Sensor

> [!NOTE]
>
> Parameters for SERVICES you do NOT NEED, leave BLANK
>
> Discord Webhook publishes change in Carbon Dioxide Detected, Smoke Detected and Status Low Battery to your Discord channel

⚙️ Parameters

| **Param** | **Description** | **Values** |
|---------------------------------------------|-------------------------------|---------------------------------------|
| paramNameCurrentAmbientLightLevel
mqttCurrentAmbientLightLevel | Ambient Light Level | Range: 0.0001 to 100,000 lux |
| paramNameStatusActive
mqttStatusActive | Is Active | 0: Inactive, 1: Active |
| paramNameStatusFault
mqttStatusFault | Fault Status | 0: No Fault, 1: Fault |
| paramNameStatusLowBattery
mqttStatusLowBattery | Battery Status | 0: Normal, 1: Low |
| paramNameStatusTampered
mqttStatusTampered | Tampered Status | 0: Not Tampered, 1: Tampered |


⚙️ JSON Example

```json
{
"AmbientLightSensor": {
"CurrentAmbientLightLevel": 4500,
"Active": true,
"Fault": 0,
"LowBattery": false,
"Tampered": 0
}
}
```


## 🔐 HTTPS Certificate Handling

Version `2.2.0` introduces support for self-signed certificates and optional certificate validation skipping.

#### Configuration Options

| Key | Type | Description |
|----------------------|---------|-----------------------------------------------------------------------------|
| `ignoreHttpsCertErrors` | `boolean` | If `true`, HTTPS requests will skip certificate validation (use with caution). |
| `trustedCert` | `string` | Inline PEM certificate content for trusted HTTPS connections. |

#### Example

```json
{
"urlStatus": "https://my.local.device/status",
"ignoreHttpsCertErrors": false,
"trustedCert": "-----BEGIN CERTIFICATE-----\\nMIIBIjANBgkqh...\\n-----END CERTIFICATE-----"
}
```

## Other

Compromise: Switch accessory, in order to work properly getStatus is bind in 5 sec interval. This is for passive devices not pushing their
status.
I have several devices built by my self like ESP8266 with relay and I'm just switching state. I have JSON file showing status:
```json
{
"POWER": "ON"
}
```

⚙️ Plugin Config example

```json
{
"bridge": {
"name": "Homebridge xxxx",
"username": "xx:xx:xx:xx:xx:xx",
"port": 51576,
"pin": "xxx-xx-xxx",
"advertiser": "bonjour-hap"
},
"platforms": [
{
"name": "Config",
"port": 8581,
"auth": "form",
"theme": "auto",
"tempUnits": "c",
"lang": "auto",
"noFork": true,
"standalone": true,
"platform": "config"
},
{
"platform": "HttpSensorsAndSwitches",
"name": "Stergo",
"description": "Http all in one place",
"devices": [
{
"deviceType": "Sensor",
"deviceID": "896543287",
"deviceName": "Attic",
"deviceManufacturer": "NameTheManufacturer",
"deviceModel": "DHT",
"deviceSerialNumber": "203ab773-d5cd-42ww-b531-a98bba0e4444",
"deviceFirmwareVersion": "v1.4.0",
"sensorUrl": "http://192.168.1.74/mesures.json",
"temperatureName": "t",
"humidityName": "h",
"updateInterval": 60000
},
{
"deviceType": "Switch",
"deviceID": "1234578",
"deviceName": "Night Light",
"deviceManufacturer": "Stergo",
"deviceModel": "Switch",
"deviceSerialNumber": "203ab773-d5cd-42a2-b531-a98bba0e4444",
"deviceFirmwareVersion": "0.4.0",
"urlON": "http://192.168.1.77/POWER?state=ON",
"urlOFF": "http://192.168.1.77/POWER?state=OFF",
"urlStatus": "http://192.168.1.77/POWER",
"stateName": "POWER",
"onStatusValue": "ON",
"offStatusValue": "OFF"
},
{
"deviceType": "Sensor",
"deviceID": "65432258",
"deviceName": "Balcony",
"sensorUrl": "http://192.168.1.72/mesures.json",
"temperatureName": "t",
"updateInterval": 300000
},
{
"deviceType": "Switch",
"deviceID": "21wqwweqwee65432258",
"deviceName": "Relay",
"mqttBroker": "192.168.1.200",
"mqttPort": "1883",
"mqttSwitch": "iot/things/StergoTestSwitch/switch1",
"mqttUsername": "testuser",
"mqttPassword": "testuser",
"discordWebhook": "https://discordapp.com/api/webhooks/XXXXX",
"discordUsername": "SmartHome",
"discordAvatar": "",
"discordMessage": " is "
},
{
"deviceType": "Sensor",
"deviceID": "65432258",
"deviceName": "Balcony",
"mqttBroker": "192.168.1.200",
"mqttPort": "1883",
"mqttTemperature": "qiot/things/Attic/Temperature",
"mqttHumidity": "qiot/things/Attic/Humidity",
"mqttUsername": "testuser",
"mqttPassword": "testuser"
},
{
"deviceType": "Fan",
"enableLogging": true,
"deviceID": "sssert45-58aaaa7f-689",
"deviceName": "Fan test",
"deviceManufacturer": "Stergo",
"deviceModel": "Stergo-Fan",
"deviceSerialNumber": "www2s5587-6s598-6s58",
"deviceFirmwareVersion": "v1",
"urlStatus": "http://192.168.1.101/test/Fanv2/fanv2.json",
"urlFanControl": "http://192.168.1.101/test/Fanv2/fanv2.php",
"paramNameStatusActive": "Fan2.Active",
"paramNameRotationSpeed": "Fan2.RotationSpeed",
"paramNameRotationDirection": "Fan2.RotationDirection",
"paramNameSwingMode": "Fan2.SwingMode",
"paramNameCurrentFanState": "Fan2.CurrentFanState",
"paramNameTargetFanState": "Fan2.TargetFanState"
},
{
"deviceType": "CarbonDioxideSensor",
"enableLogging": true,
"deviceID": "sssda3-23fdaf-sdadf-sdfsdf",
"deviceName": "CO2",
"deviceManufacturer": "Stergo",
"deviceModel": "vvdd",
"deviceSerialNumber": "33-2-2ds3-ss3-2223-323-w",
"deviceFirmwareVersion": "v1",
"sharedPolling": true,
"sharedPollingId": "CarbonDioxide",
"urlStatus": "http://192.168.1.101/test/co2.json",
"paramNameStatusActive": "Active",
"paramNameCO2Detected": "CO2Detected",
"paramNameCO2Level": "CO2Level",
"paramNameCO2PeakLevel": "CO2PeakLevel",
"paramNameStatusFault": "Fault",
"paramNameBatteryLevel": "BatteryLevel",
"paramNameStatusLowBattery": "LowBattery",
"paramNameStatusTampered": "Tampered",
"sensorUrl": "http://192.168.1.101/test/co2.json",
"sharedPollingInterval": 30000,
"discordWebhook": "https://discordapp.com/api/webhooks/",
"discordUsername": "Stergo",
"discordAvatar": ""
},
{
"deviceType": "OccupancySensor",
"enableLogging": true,
"deviceID": "sdadddd3-23fdddssdaf-sadf-sdfsdf",
"deviceName": "Occupancy",
"deviceManufacturer": "Stergo",
"deviceModel": "vvdd",
"deviceSerialNumber": "ddd33-2-2ss3-3-22dds23-323-w",
"deviceFirmwareVersion": "v1",
"sharedPolling": true,
"sharedPollingId": "CarbonDioxide",
"urlStatus": "http://192.168.1.101/test/co2.json",
"paramNameStatusActive": "CO2Sensor2.Active",
"paramNameOccupancyDetected": "CO2Sensor2.CO2Detected",
"paramNameStatusFault": "CO2Sensor2.Fault",
"paramNameBatteryLevel": "CO2Sensor2.BatteryLevel",
"paramNameStatusLowBattery": "CO2Sensor2.LowBattery",
"paramNameStatusTampered": "CO2Sensor2.Tampered",
"sensorUrl": "http://192.168.1.101/test/co2.json",
"sharedPollingInterval": 30000,
"mqttOccupancyDetected": "test/detect",
"mqttActive": "test/Active",
"discordWebhook": "https://discordapp.com/api/webhooks/",
"discordUsername": "Stergo",
"discordAvatar": ""
},
{
"deviceType": "LightBulb",
"enableLogging": true,
"deviceID": "12399ASdhz1244s9yt-2345-98g",
"deviceName": "Attic Clock",
"deviceManufacturer": "Stergo",
"deviceModel": "Test",
"deviceSerialNumber": "12399a-234sdf-34saf-234sdf",
"deviceFirmwareVersion": "000.06.002",
"useRGB": true,
"useBrightness255": true,
"useColorTKelvin": false,
"mqttBroker": "192.168.1.XXX",
"mqttPort": 1883,
"mqttUsername": "testuser",
"mqttPassword": "testuser",
"mqttSwitch": "iot/things/Attic/AtticClock/displayON",
"mqttRGB": "iot/things/Attic/AtticClock/Color"
}
]
}
]
}
```


⚙️ Config params

| **Param** | **Description** | **Param needed** |
|---------------------------------------------|-------------------------------------|-------------------|
| brightnessParamName | JSON Parameter Name for Brightness | false |
| colorTemperatureParamName | JSON Parameter Name for Color Temperature | false |
| deviceFirmwareVersion | Firmware running on device | false |
| deviceID | Unique ID for this Accessory | true |
| deviceManufacturer | Name for Manufacturer of this Accessory | false |
| deviceModel | Name of model for this Accessory | false |
| deviceName | Name for Your Accessory | true |
| deviceSerialNumber | Unique serial number | false |
| deviceType | Sensor or Switch | true |
| discordAvatar | URL to Online Avatar image | false |
| discordMessage | Message | false |
| discordUsername | Name for message publisher | false |
| discordWebhook | URL to Discord WebHook | false |
| enableLogging | Default is enabled (1) | true |
| hueParamName | JSON Parameter Name for HUE | false |
| humidityName | JSON param name for Humidity reading | true |
| inUseOffStatusValue | JSON return Value for inUSE OFF | false |
| inUseOnStatusValue | JSON return Value for inUSE ON | false |
| inUseStateName | JSON status param in Use | false |
| motionSensorName | JSON param name for Motion Sensor reading | true |
| motionSensorUrl | JSON file containing Motion Sensor readings | true |
| mqttActive | MQTT Topic for Active Status | true |
| mqttBrightness | MQTT Topic for Brightness | false |
| mqttBroker | URL of MQTT Broker | true/false |
| mqttCarbonDioxideDetected | MQTT Topic for CO2 Detection | true |
| mqttCarbonDioxideLevel | MQTT Topic for CO2 Level | true |
| mqttColorTemperature | MQTT Topic for Color Temperature | false |
| mqttContactSensorState | MQTT Topic for Contact Sensor State | false |
| mqttCurrentDoorState | MQTT Topic for Current Door State | true |
| mqttCurrentFanState | MQTT Topic for Current Fan State | false |
| mqttCurrentPosition | MQTT Topic for Current Position | true |
| mqttHue | MQTT Topic for Hue | false |
| mqttInUse | Outlet in Use Topic | false |
| mqttMotionDetected | MQTT Topic for Motion Detection | true |
| mqttObstructionDetected | MQTT Topic for Obstruction Detection | false |
| mqttOccupancyDetected | MQTT Topic for Occupancy Detection | false |
| mqttPassword | MQTT Broker password | false |
| mqttPort | MQTT port | false |
| mqttPositionState | MQTT Topic for Position State | false |
| mqttReconnectInterval | Reconnect interval to MQTT Broker | true/false |
| mqttRGB | MQTT Topic for RGB | false |
| mqttRotationDirection | MQTT Topic for Rotation Direction | false |
| mqttRotationSpeed | MQTT Topic for Rotation Speed | false |
| mqttSaturation | MQTT Topic for Saturation | false |
| mqttSmokeDetected | MQTT Topic for Smoke Detection | true |
| mqttStatusActive | MQTT Topic for Active Status | true |
| mqttStatusFault | MQTT Topic for Fault Status | false |
| mqttStatusJammed | MQTT Topic for Jammed Status | false |
| mqttStatusLowBattery | MQTT Topic for Low Battery Status | false |
| mqttStatusTampered | MQTT Topic for Tampered Status | false |
| mqttSwitch | Switch Topic | true |
| mqttSwingMode | MQTT Topic for Swing Mode | false |
| mqttTargetDoorState | MQTT Topic for Target Door State | true |
| mqttTargetFanState | MQTT Topic for Automation | false |
| mqttTargetPosition | MQTT Topic for Target Position | true |
| paramNameActive | JSON Parameter Name for On/Off | true |
| paramNameAmbientLightLevel | JSON Parameter Name for Ambient Light Level | true |
| paramNameCarbonDioxideDetected | JSON Parameter Name for CO2 Detection | true |
| paramNameCarbonDioxideLevel | JSON Parameter Name for CO2 Level | true |
| paramNameCarbonDioxidePeakLevel | JSON Parameter Name for Peak CO2 Level | false |
| paramNameContactSensorState | JSON Parameter Name for Contact Sensor State | false |
| paramNameCurrentDoorState | JSON Parameter Name for Current Door State | true |
| paramNameCurrentFanState | JSON Parameter Name for Current Fan State | false |
| paramNameCurrentPosition | JSON Parameter Name for Current Position | true |
| paramNameHoldPosition | JSON Parameter Name for Hold Position | false |
| paramNameMotionDetected | JSON Parameter Name for Motion Detection | true |
| paramNameObstructionDetected | JSON Parameter Name for Obstruction Detection | false |
| paramNameOccupancyDetected | JSON Parameter Name for Occupancy Detection | false |
| paramNamePositionState | JSON Parameter Name for Position State | false |
| paramNameRotationDirection | JSON Parameter Name for Rotation Direction | false |
| paramNameRotationSpeed | JSON Parameter Name for Rotation Speed | false |
| paramNameSmokeDetected | JSON Parameter Name for Smoke Detection | true |
| paramNameStatusActive | JSON Parameter Name for Active Status | true |
| paramNameStatusFault | JSON Parameter Name for Fault Status | false |
| paramNameStatusJammed | JSON Parameter Name for Jammed Status | false |
| paramNameStatusLowBattery | JSON Parameter Name for Low Battery Status | false |
| paramNameStatusTampered | JSON Parameter Name for Tampered Status | false |
| paramNameSwingMode | JSON Parameter Name for Swing Mode | false |
| paramNameTargetDoorState | JSON Parameter Name for Target Door State | true |
| paramNameTargetFanState | JSON Parameter Name for Automation | false |
| paramNameTargetPosition | JSON Parameter Name for Target Position | true |
| paramNameValveType | JSON Parameter Name for Valve Type - 0: Generic valve, 1: Irrigation, 2: Shower head, 3: Tap | true |
| rgbParamName | JSON Parameter Name for RGB color | false |
| saturationParamName | JSON Parameter Name for Saturation | false |
| sensorUrl | JSON file containing sensor readings (temperature, humidity) | true |
| stateName | JSON Parameter Name for Reading ON/OFF | true |
| temperatureName | JSON param name for Temperature reading | true |
| updateInterval | Update interval for reading Sensors | false |
| updateIntervalMotionSensor | Update interval for reading Motion Sensor | true |
| urlLightBulbControl | HTTP address for sending Device control commands | false |
| urlOFF | URL to Turn OFF the Switch | true |
| urlON | URL to Turn ON the Switch | true |
| urlStatus | URL to retrieve JSON with all Data | true |
| useBrightness255 | Use Brightness 0-255 instead of 0-100 | true |
| useColorTKelvin | Color Temperature in Mired (153-500), Kelvin (2000-6500) | true |
| useRGB | Use RGB instead of HSV (true/false) | true |





> [!IMPORTANT]
> **Homebridge v2.0 Information**
>
> This plugin currently supports
> - `package.json -> engines.homebridge` value of `"^1.8.0 || ^2.0.0-beta.0"`
> - `package.json -> devDependencies.homebridge` value of `"^2.0.0-beta.0"`
>
> This is to ensure that this plugin will build and run on both Homebridge v1 and v2.
>

> [!IMPORTANT]
> **Node v18 Information**
> Node.js version 18 (LTS) is scheduled to reach its end-of-life on April 30, 2025. After this date, it will no longer receive security updates or maintenance releases. If you're using Node.js 18, it's recommended to upgrade to a newer version, such as Node.js 20 or 22, to ensure continued security and stability.
>
> Latest version of plugin supporting Node.js v18 is v2.2.x
>
> This template currently has a
> - `package.json -> engines.node` value of `"^18.20.4 || ^20.18.0 || ^22.10.0"`
>