This is a fork of the http-json-thermometer by Jakubkuba9000 that allows:
- complex json objects to be parsed
- minimum and maximum values per thermostat to filter out noisy default values like occasional 999°C from DS18B20 sensors on a Shelly Uni
- Install Homebridge.
- Install this plugin:
npm install -g homebridge-json-thermometer
or through Homebridge UI by clicking the INSTALL buttton. - Update your
config.json
file by clicking the SETTINGS button through Homebridge UI or manually. See the explanations and samples below.
{
"platform": "HttpJsonThermometer",
"thermometers": [ {
"thermometerName": "Terrarium thermometer",
"httpRoute": "http://ipaddress/status/",
"updateInterval": 60,
"jsonPath": "temp",
"calibration": 0.16,
"minValue": -900,
"maxValue": 900,
"manufacturer": "Default-Manufacturer",
"model": "Default-Model",
"serial": "Default-Serial"
} ]
}
For a simple json object, defining the first property name is enough.
{
"tC": 22.94, // path is "tC"
"tF": 73.29 // path is "tF"
}
For complex json objects, the js dot notation can be used as path:
{
"ext_temperature": {
"0": {
"tC": 22.94, // path is "ext_temperature[0].tC"
"tF": 73.29 // path is "ext_temperature[0].tF"
}
}
}
Key | Description | Default |
---|---|---|
platform |
Must be HttpJsonThermometer
|
HttpJsonThermometer |
thermometerName |
This will be the name of your thermometer that appears in the Home app. This must be unique. | Terrarium thermometer |
httpRoute |
This must be a path to a JSON format that looks like this, for example: { "temp": "24.88", "temp2": "24.06", "temp3": "23.75" } |
http://ipaddress/status/ |
updateInterval |
Interval after which the values are updated. | 60 |
jsonPath |
This must be the path of the response value in a JSON response. In the case above it could be temp or temp2 or temp3. |
temp |
Key | Description | Default |
---|---|---|
calibration |
Only if you need to calibrate your thermometer. It will increase or decrease the value. For example if you need to decrease by 0,05 then -0,05 and if you need to increase by 0.6 then 0.60
|
0.00 |
manufacturer |
Manufacturer of your thermometer. | Default-Manufacturer |
model |
Thermometer model. | Default-Model |
serial |
Serial number of your thermometer. | Default-Serial |
You can also have more than one thermometer. Simply click the button ADD TO THERMOMETERS in UI or add it manually like this:
{
"platform": "HttpJsonThermometer",
"thermometers": [
{
"thermometerName": "Terrarium thermometer",
"httpRoute": "http://ipaddress/status/",
"updateInterval": 60,
"jsonPath": "temp",
"calibration": 0.16,
"manufacturer": "Default-Manufacturer",
"model": "Default-Model",
"serial": "Default-Serial"
},
{
"thermometerName": "Kitchen thermometer",
"httpRoute": "http://yourdomain.com/temp/",
"updateInterval": 15,
"jsonPath": "t1",
"manufacturer": "yourdomain.com",
"model": "WIFI_USB",
"serial": "S3r14lNumb3r"
},
{
"thermometerName": "Bathroom thermometer",
"httpRoute": "http://192.168.1.155/temperature/",
"updateInterval": 120,
"jsonPath": "temperature"
}
]
}
Unfortunately, HomeKit has the limitation that it rounds values to 0.5 °C. This can be solved by downloading the free Eve app or another similar app. These applications usually show a value accurate to one decimal place.