- Fixes
process_triggers()accessing undefinedstatusValuestate, which caused all trigger firing to silently fail; now checksis_rentingboolean state. - Fixes
TypeErrorinrefresh_bike_data()wheredownloadIntervalpref string was subtracted before casting toint. - Fixes incorrect fallback default of
15(seconds) fordownloadIntervalinclosed_prefs_config_ui(); now uses900to match the plugin default. - Removes redundant duplicate exception logging in
get_bike_data()andget_system_list(). - Fixes
businessHoursdevice state update passing aboolasuiValue; now passes a string.
- Fixes redundant
parse_bike_data()call indevice_start_comm()that caused double-parsing on device start. - Fixes
states_listaccumulation across devices inrefresh_bike_data()that caused prior device states to bleed into subsequent device updates. - Fixes unconfigured device handler in
refresh_bike_data()that blocked the entire plugin thread for 60 seconds; now usescontinueinstead. - Fixes
is_rentingcomparison inrefresh_bike_data()that used== 1afterparse_bike_data()had already coerced the value tobool. - Fixes
process_triggers()readingstationNamefrom device states instead of plugin props, causing all trigger processing to silently fail. - Fixes
get_system_list()exception handler missingreturn [], causing aTypeErrorwhen Indigo tried to populate the system dropdown after a network error. - Fixes
business_hours()closing one minute early when stop time is "24:00"; now usessecond=59and<=comparison to correctly include the final minute.
- Fixes bug where
stop_timeusedstart_timeminutes when computing business hours end time. - Fixes inverted refresh logic that prevented device updates from running.
- Fixes stale bike/dock counts displayed after a data refresh.
- Fixes
returnin device loop that caused remaining devices to be skipped. - Fixes
logger.exception()calls missing required message argument. - Fixes unguarded
KeyErroringet_station_list()when system data is unavailable. - Fixes malformed log message missing closing parenthesis in
closed_prefs_config_ui().
- Removes
my_testsaction and method. - Adds trigger tests.
- Code cleanup.
- Standardized project
.gitignorefile. - Removes unused variables from
tests/.envfile. - Removes empty plugin directories.
- Fixes bug where
dataAgeandlast_reportedreturned "Unknown". - Transitions from
requeststohttpx. - Stability and performance improvements.
- Code cleanup
- Adds unit test for refresh bike data action.
- Fixes bug where a race condition may occur if pluginPrefs have not yet been written to disk when the plugin is first installed.
- Code enhancements.
- Adds foundation for API
3.1. - Code cleanup.
- Adds
_to_do_list.mdand changes changelog to Markdown. - Moves plugin environment logging to plugin menu item (log only on request).
- Updates plugin for Indigo 2022.1 and Python 3.
- Moves "Refresh Bike Data" to Device Controls menu.
- Eliminates need for the
pandasmodule. - Reorganizes device states for better display in control page and trigger state lists.
- Adds device state reflecting whether the system is within user-defined business hours (to show that data might be stale).
- Standardizes Indigo method implementation.
- Implements constants.py
- Code refinements.
- Fixes bug in readme.md file where logo did not display.
- Better addresses situations where bike service doesn't fully support the standard API.
- Better integrates DLFramework.
- Improvements to device configuration validation.
- Code refinements.
- Removes all references to legacy version checking.
- For publication.
- Adds business hours feature.
- Complete rewrite of the plugin to use the standardized GBFS data sharing specification.
- Ensures that the plugin is compatible with the Indigo server version.
- Standardizes SupportURL behavior across all plugin functions.
- Synchronize self.pluginPrefs in closedPrefsConfigUi().
- Changes "En/Disable All Devices" to "En/Disable all Plugin Devices".
- Updates kDefaultPluginPrefs
- Changes Python lists to tuples where possible to improve performance.
- Adds Write Data to File option to plugin menu.
- Removes plugin update notifications.
- Code refinements.
- Fixes bug in plugin menu item to check for latest version.
- Updates to Indigo API 2.0 (Indigo 7 now required).
- Converts testStation device state from string to boolean True/False.
- Refactors 'dataAge' and 'executionTime' device states.
- 'dataAge' now keyed to the last time the bike dock station communicated with the bike sharing service.
- 'executionTime' now keyed to the last time the Indigo plugin communicated with the bike sharing service.
- Removes legacy device state 'renting'. Users should use the state 'isRenting'.
- Updates plist link to wiki.
- Updates plugin update checker to use curl to overcome outdated security of Apple's Python install.
- Moves documentation to GitHub wiki.
- IPS Configuration
- Fixes bug in info.plist (API reference)
- Code consolidation using DLFramework.
- Code consolidation using pluginConfig templates.
- Adds note to documentation that the plugin requires Internet in order to function.
- Standardizes plugin menu item styles. Menu items with an ellipsis (...) denotes that a dialog box will open. Menu items without an ellipsis will take immediate action.
- Fixed bug related to version control for "Check for Plugin Updates" menu action.
- Stylistic changes to Indigo Plugin Update Checker module.
- Improved exception logging.
- Code simplification.
- Adds remote debugging capability.
- Moves updater config to template.
- Adds trigger to report when a station is not in service.
- Add menu item to enable/disable all plugin devices.
- Adds Indigo UI icon indicator control: (green = online, gray = offline/disabled/out of service, red = error/no comm)
- Moves support URL to GitHub.
- UI Refinements
- Updates version number to full release and moves the project to GitHub.
- String substitution updated for future functionality.
- Updates error trapping for future functionality.
- Adds two new states: "isRenting" and "Renting".
- Minimizes outreach to the sharing servers.
- Ensures that devices are not restarted unnecessarily.
- Implements setErrorStateOnServer() method.
- Implements error screens in config dialog.
- Further PEP8 refinements.
- Updates plugin to use Python 2.6 as default.
- Changes url for update checker to use https.
- Simplifies imports.
- UI Refinements.
- Fixes duplicate state label.
- Increases compliance with PEP8.
- Better honors device start comm/stop comm.
- Updates plugin with support URL.
- Code refinements.
- Initial plugin version worthy of public alpha.