Ecosyste.ms: Awesome
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: 28 days ago
JSON representation
Homebridge Plugin HTTP & MQTT
- Host: GitHub
- URL: https://github.com/kreso975/homebridge-http-sensors-switches
- Owner: kreso975
- License: apache-2.0
- Created: 2024-08-23T20:23:44.000Z (3 months ago)
- Default Branch: latest
- Last Pushed: 2024-09-27T19:52:06.000Z (about 1 month ago)
- Last Synced: 2024-09-28T19:21:08.739Z (about 1 month ago)
- Topics: discord, homebridge, http, humidity, mqtt, switch, temperature, weather, webhooks
- Language: TypeScript
- Homepage:
- Size: 317 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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)This plugin communicates with your devices over HTTP or MQTT. Currently it supports Switches and Temperature/Humidity sensor.
Simple Discord Webhooks available in Switches
## 💡 Switch
> [!NOTE]
> HTTP - Read Status (On/Off), Turn ON (url), Turn OFF (url)
> MQTT - Turn ON/OFF | Values: On = 1, Off = 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.
>
> Parameters required in Config:
>
> deviceType = 'Switch',
> deviceName = 'Name your Accessory',
> deviceID = 'Put something unique / chars and numbers',
> urlON = 'URL that triggers your device to change state to ON',
> urlOFF = 'URL that triggers your device to change state to OFF'> [!CAUTION]
> Parameter:
> urlStatus = 'url points to JSON with device status' when is set it will bind Accessory to 5 sec check status interval
```
{
"POWER": "ON"
}
```
## 🌡️ Temperature and Humidity sensor
> [!NOTE]
> Sensor - Read JSON Or MQTT for Temperature, Humidity
>> [!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
```
{
"t": "29.37",
"h": "48.26",
"p": "1001.33"
}
```## ⚙️ Config example
```
{
"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"
}
]
}
]
}
```## ⚙️ Config params
| **Param** | **Description** | **Param needed** |
|--- |--- |:---: |
| deviceType | Sensor or Switch | true |
| deviceName | Name for Your Accessory | true |
| deviceID | Uniqe ID for this Accessory | true |
| deviceManufacturer | Name for Manufacturer of this Accessory | false |
| deviceModel | Name of model for this Accessory | false |
| deviceSerialNumber | Unique serial number | false |
| deviceFirmwareVersion | Firmware running on device | false |
| urlON | URL to Turn ON the Switch | true |
| urlOFF | URL to Turn OFF the Switch | true |
| urlStatus | URL to retrieve the switch status (on/off) | true |
| stateName | JSON status param | true |
| onStatusValue | JSON return Value for status ON | true |
| offStatusValue | JSON return Value for status OFF | true |
| sensorUrl | JSON file containing sensor readings (temperature, humidity) | true |
| temperatureName | JSON param name for Temperature reading | true |
| humidityName | JSON param name for Humidity reading | true |
| updateInterval | update interval for reading Sensors, default is 60000 = 60 seconds = 1 minute | false |
| mqttBroker | URL of MQTT Broker | true/fale |
| mqttPort | MQTT port | false |
| mqttTemperature | Temperature Topic | true |
| mqttHumidity | Humidity Topic | true |
| mqttUsername | MQTT Broker username | false |
| mqttPassword | MQTT Broker password | false |
| mqttSwitch | Switch Topic | true |
| discordWebhook | URL to Discord WebHook | false |
| discordUsername | Name for message publisher | false |
| discordAvatar | URL to Online Avatar image | false |
| discordMessage | Message | false |
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:
```
{
"POWER": "ON"
}
```
> [!IMPORTANT]
> **Homebridge v2.0 Information**
>
> This template currently has a
> - `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 v22 Information**
>
> This template currently has a
> - `package.json -> engines.node` value of `"^18.20.4 || ^20.16.0 || ^22.5.1"`
>
> This plugin should be supporting Node v22 from October 2024.