Skip to content

Commit

Permalink
v1.11.0 (#492)
Browse files Browse the repository at this point in the history
## [Version 1.11.0](https://github.com/donavanbecker/homebridge-rainbird/releases/tag/v1.11.0) (2023-08-19)

### What's Changed
- Added `minValueRemainingDuration` and `maxValueRemainingDuration` for Remaining Duration Characteristic. [#485](#485)
- Added time remaining to Zone Running log messages. [#486](#486)
- Added `includeZones` to allow only specified zones to be created as Valve accessories. [#488](#488)
- Added showing Idle/Waiting state for zones queued by scheduled programs (only for ESP-TM2 & ESP-ME3 at this stage)
- Added support warning for other models about limited zone state details
- Added Delay Irrigation Switch [#489](#489)
- Housekeeping and updated dependencies.

**Full Changelog**: v1.10.0...v1.11.0
  • Loading branch information
donavanbecker authored Aug 19, 2023
1 parent a20a52f commit c2687ab
Show file tree
Hide file tree
Showing 24 changed files with 2,119 additions and 1,337 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@

All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)

## [Version 1.11.0](https://github.com/donavanbecker/homebridge-rainbird/releases/tag/v1.11.0) (2023-08-19)

### What's Changed
- Added `minValueRemainingDuration` and `maxValueRemainingDuration` for Remaining Duration Characteristic. [#485](https://github.com/donavanbecker/homebridge-rainbird/issues/485)
- Added time remaining to Zone Running log messages. [#486](https://github.com/donavanbecker/homebridge-rainbird/issues/486)
- Added `includeZones` to allow only specified zones to be created as Valve accessories. [#488](https://github.com/donavanbecker/homebridge-rainbird/issues/488)
- Added showing Idle/Waiting state for zones queued by scheduled programs (only for ESP-TM2 & ESP-ME3 at this stage)
- Added support warning for other models about limited zone state details
- Added Delay Irrigation Switch [#489](https://github.com/donavanbecker/homebridge-rainbird/issues/489)
- Housekeeping and updated dependencies.

**Full Changelog**: https://github.com/donavanbecker/homebridge-rainbird/compare/v1.10.0...v1.11.0

## [Version 1.10.0](https://github.com/donavanbecker/homebridge-rainbird/releases/tag/v1.10.0) (2023-04-07)

### What's Changed
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ Any controller that supports the [RainBird LNK WiFi Module](https://www.rainbird
## Known Limitations
- Using the RainBird app while the plugin is running can cause connectivity issues.
- The RainBird LNK WiFi Module may not support "Band Steering" and WiFi Channel 13. Try not using these on your router if you are having connectivity issues.
- iOS 15.4/macOS 12.3 introduced a bug that prevents the valves (zones) from showing within the Irrigation System accessory in the Home app. Try using the "Show Zones as Valve Accessories" option as a workaround. [NOTE: Fixed in iOS 16.0/macOS 13.0]
- Some models do not yet have support for displaying the time remaining. If its not working for your model please log a GitHub issue and we will try to add it with your help.
192 changes: 151 additions & 41 deletions config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,97 +34,201 @@
"required": true,
"x-schema-form": {
"type": "password"
},
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"external": {
"title": "External Accessory",
"description": "This will make all device under this acessory be displayed as an external accesory and will not be added to cache or be added with child bridge of this plugin. Each device will have to be added seperately.",
"type": "boolean",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showRainSensor": {
"title": "Show Rain Sensor (as Leak Sensor)",
"type": "boolean",
"required": false
"required": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showValveSensor": {
"title": "Enable Valve Notifications (as Contact Sensors)",
"type": "boolean",
"required": false,
"description": "If enabled, whichever zone runs the contact sensors will go off as detected so you know that it is running."
"description": "If enabled, whichever zone runs the contact sensors will go off as detected so you know that it is running.",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showProgramASwitch": {
"title": "Show Program A Switch",
"type": "boolean",
"requried": false
"requried": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showProgramBSwitch": {
"title": "Show Program B Switch",
"type": "boolean",
"requried": false
"requried": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showProgramCSwitch": {
"title": "Show Program C Switch",
"type": "boolean",
"requried": false
"requried": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showProgramDSwitch": {
"title": "Show Program D Switch (not supported by all models)",
"type": "boolean",
"requried": false
"requried": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showStopIrrigationSwitch": {
"title": "Show Stop Irrigation Switch",
"type": "boolean",
"requried": false
"requried": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showZoneValve": {
"title": "Show Zones as Valve Accessories",
"type": "boolean",
"required": false,
"description": "Show zones as seperate valve accessories (useful to workaround the bug introduced in iOS 15.4/macOS 12.3 that prevents the valves from showing within the Irrigation System accessory)."
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"includeZones": {
"title": "Zones to Include",
"type": "string",
"requried": false,
"description": "comma seperated list of zone numbers to create valve accessories for (leave blank for all)",
"pattern": "^[0-9]{1,3}(,[0-9]{1,3})*$",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showDelayIrrigationSwitch": {
"title": "Show Delay Irrigation Switch",
"type": "boolean",
"required": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"irrigationDelay": {
"title": "Irrigation Delay (days)",
"type": "number",
"minimum": 1,
"maximum": 14,
"placeholder": 1,
"required": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"minValueRemainingDuration": {
"title": "Min Value",
"type": "number",
"placeholder": 0,
"required": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"maxValueRemainingDuration": {
"title": "Max Value",
"type": "number",
"placeholder": 3600,
"required": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"syncTime": {
"title": "Sync date and time of controller with host",
"type": "boolean",
"default": false,
"required": false,
"description": "Useful for automatically changing the controller's time when Daylight Savings starts/ends or fixing the time if the controller's internal clock runs fast or slow"
"description": "Useful for automatically changing the controller's time when Daylight Savings starts/ends or fixing the time if the controller's internal clock runs fast or slow",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"showRequestResponse": {
"title": "Show RainBird requests and responses in the log",
"type": "boolean",
"requried": false
"requried": false,
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"firmware": {
"title": "Firmware Override",
"type": "string",
"placeholder": "1.2.8"
"placeholder": "1.2.8",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"refreshRate": {
"title": "Device Refresh Rate",
"type": "number",
"minimum": 120,
"placeholder": 900,
"description": "Indicates the number of seconds between refreshes of the Rainbird Client."
"description": "Indicates the number of seconds between refreshes of the Rainbird Client.",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"delete": {
"title": "Delete Device",
"type": "boolean",
"description": "DO NOT USE, UNLESS YOU WANT TO DELETE THIS DEVICE FROM CACHE.",
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
},
"logging": {
"title": "Device Logging Override Setting",
"type": "string",
"required": true,
"default": "",
"oneOf": [
{
"title": "Default Logging",
"enum": [""]
},
{
"title": "Standard Logging",
"enum": [
"standard"
]
"enum": ["standard"]
},
{
"title": "No Logging",
"enum": [
"none"
]
"enum": ["none"]
},
{
"title": "Debug Logging",
"enum": [
"debug"
]
"enum": ["debug"]
}
]
],
"condition": {
"functionBody": "return (model.devices && model.devices[arrayIndices].ipaddress);"
}
}
}
}
Expand All @@ -142,33 +246,28 @@
"logging": {
"title": "Logging Setting",
"type": "string",
"required": true,
"default": "",
"oneOf": [
{
"title": "Default Logging",
"enum": [""]
},
{
"title": "Standard Logging",
"enum": [
"standard"
]
"enum": ["standard"]
},
{
"title": "No Logging",
"enum": [
"none"
]
"enum": ["none"]
},
{
"title": "Debug Logging",
"enum": [
"debug"
]
"enum": ["debug"]
}
]
}
}
},
"disablePlugin": {
"title": "Disable Plugin",
"type": "boolean",
"description": "DO NOT USE, UNLESS YOU WANT TO REMOVE ACCESSORIES FROM CACHE."
}
}
},
Expand Down Expand Up @@ -197,8 +296,9 @@
"type": "fieldset",
"title": "Device Settings",
"expandable": true,
"expanded": false,
"expanded": true,
"items": [
"devices[].external",
"devices[].showRainSensor",
"devices[].showValveSensor",
"devices[].showProgramASwitch",
Expand All @@ -207,11 +307,22 @@
"devices[].showProgramDSwitch",
"devices[].showStopIrrigationSwitch",
"devices[].showZoneValve",
"devices[].includeZones",
"devices[].showDelayIrrigationSwitch",
"devices[].irrigationDelay",
{
"type": "fieldset",
"title": "Remaining Duration Override",
"expandable": true,
"expanded": false,
"items": ["devices[].minValueRemainingDuration", "devices[].maxValueRemainingDuration"]
},
"devices[].syncTime",
"devices[].showRequestResponse",
"devices[].firmware",
"devices[].refreshRate",
"devices[].logging"
"devices[].logging",
"devices[].delete"
]
}
]
Expand Down Expand Up @@ -242,9 +353,8 @@
"key": "options.pushRate",
"notitle": true
},
"options.logging",
"disablePlugin"
"options.logging"
]
}
]
}
}
12 changes: 1 addition & 11 deletions homebridge-ui/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
</tr>
</tbody>
</table>
<p class="text-center">External Accessories Will Not Display Here.</p>
</div>
</div>
<div id="pageSupport" class="mt-4" style="display: none;">
Expand Down Expand Up @@ -205,24 +206,13 @@ <h5>Disclaimer</h5>
showDisabledBanner = () => {
document.getElementById('disabledBanner').style.display = 'block'
}
enablePlugin = async () => {
homebridge.showSpinner()
document.getElementById('disabledBanner').style.display = 'none'
currentConfig[0].disablePlugin = false
await homebridge.updatePluginConfig(currentConfig)
await homebridge.savePluginConfig()
homebridge.hideSpinner()
}
menuHome.addEventListener('click', () => showSupport())
menuDevices.addEventListener('click', () => showDevices())
menuSettings.addEventListener('click', () => showSettings())
disabledEnable.addEventListener('click', () => enablePlugin())
if (currentConfig.length) {
document.getElementById('menuWrapper').style.display = 'inline-flex'
showSettings()
if (currentConfig[0].disablePlugin) {
showDisabledBanner()
}
} else {
currentConfig.push({ name: 'RainBird' })
await homebridge.updatePluginConfig(currentConfig)
Expand Down
8 changes: 3 additions & 5 deletions nodemon.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
{
"watch": [
"src"
],
"watch": ["src"],
"ext": "ts",
"ignore": [],
"exec": "tsc && sudo hb-service restart",
"exec": "DEBUG= tsc && homebridge -T -D -P -I -U ~/.homebridge-dev ..",
"signal": "SIGTERM",
"env": {
"NODE_OPTIONS": "--trace-warnings"
}
}
}
Loading

0 comments on commit c2687ab

Please sign in to comment.