* Xiaomi Smart WiFi Socket and Smart Power Strip integration
* Comment updated.
* Blank line removed.
* Typo fixed.
* Version of python-mirobo bumped.
* Version of python-mirobo bumped: Lightweight API changes.
* Additional API changes.
* Library version properly pinned again.
* Platform not ready behavior fixed.
Expose the device model as sensor attribute.
Device initialized log message added. Provides device model, firmware and hardware version.
* Component renamed: switch.xiaomi_plug -> switch.xiaomi_miio
* Revise based on review: Unused code removed. Filename updated.
* New Skybell platform with components
* Added skybell components to omit.
* Preemptively fixing lint issues (hopefully).
* Removed unused variable.
* Requested changes.
* Additional CRs
* Hopefully the last of the CR's!
* bump the pyhs100 version and fix api changes
* switch.tplink: avoid I/O during __init__
* initialize _name to None in __init__
* update requirements_all.txt for the new version
* Introducing support to Melnor RainCloud sprinkler systems
* Make monitored_conditions optional for sub-components
* Part 1/2 - Modified attributes, added DATA_ constant and using battery helper
* Part 2/2 - Refactored self-update hub
* Fixed change requested:
- Dispatcher signal connection
- Don't send raincloud object via dispatcher_send()
- Honoring the dynamic scan_interval value on track_time_interval()
* Inherents async_added_to_hass() on all device classes
* Makes lint happy
* * Refactored RainCloud code to incorporate suggestions.
Many thanks to @pvizelli and @martinhjelmare!!
* Removed Entity from RainCloud sensor and fixed docstrings
* Update raincloud.py
* Update raincloud.py
* fix lint
* renamed add_devices to async_add_devices according to hass naming scheme
* replaced some occurencies of async_add_entites to async_add_devices
* fixed unit test
* fixed unit test
* Updated to latest AbodePy version. Added services and events. Added new device types. Added exclude, light, and polling config options.
* Disable the event service if polling is enabled.
* Addressed all CR's
* Removed duplicated super call.
* Name config option now used. Removed deprecated DEFAULT_NAME.
* Modified partial to move event to first param.
* rename xiaomi to xiaomi_aqara
* rename xiaomi vacuum and xiaomi phillips light to xiaomi miio
* update discovery and tests
* style
* update discovery and tests
* Still use Philips as name
* Add HTTP Basic auth to RESTful Switch
* Remove redundant hass passing
* Initialize to current state
The state used to be None until the first periodic poll.
This commit refactors async_update so it can be used during setup as well,
allowing the state to start out with the correct value.
* Refactor turn_on/turn_off device communication
* Remove lint
* Fix Travis errors
* First draft of XKNX module for Home-Assistant
* XKNX does now take path of xknx.yaml as parameter
* small fix, telegram_received_callback has different signature
* changed method of registering callbacks of devices
* removed non async command lines from xknx
* telegram_received_cb not needed within HASS module
* updated requirements
* Configuration if XKNX should connect via Routing or Tunneling
* bumping version to 0.6.1
* small fix within xknx plugin
* bumped version
* XKNX-Switches are now BinarySensors and Logic from Sensor was moved to BinarySensor
* renamed Outlet to Switch
* pylint
* configuration of KNX lights via HASS config, yay!
* changed name of attribute
* Added configuration for xknx to switch component
* added support for sensors within hass configuration
* added support for climate within hass configuration
* Thermostat -> Climate
* added configuration support for binary_sensors
* renamed Shutter to Cover
* added configuration support for cover
* restructured file structure according to HASS requirements
* pylint
* pylint
* pylint
* pylint
* pylint
* pylint
* updated version
* pylint
* pylint
* pylint
* added setpoint support for climate devices
* devices are now in a different module
* more asyncio :-)
* pydocstyle
* pydocstyle
* added actions to binary_sensor
* allow more than one automation
* readded requirement
* Modifications suggested by hound
* Modifications suggested by hound
* Modifications suggested by hound
* Modifications suggested by hound
* xknx now imported as local import
* hound *sigh*
* lint
* 'fixed' coverage.
* next try for getting gen_requirements_all.py working
* removed blank line
* XKNX 0.7.1 with logging functionality, replaced some print() calls with _LOGGER
* updated requirements_all.txt
* Fixes issue https://github.com/XKNX/xknx/issues/51
* https://github.com/XKNX/xknx/issues/52 added raw access to KNX bus from HASS component.
* bumped version - 0.7.3 contains some bugfixes
* bumped version - 0.7.3 contains some bugfixes
* setting setpoint within climate device has to be async
* bumped version to 0.7.4
* bumped version
* https://github.com/XKNX/xknx/issues/48 Adding HVAC support.
* pylint suggestions
* Made target temperature and set point required attributes
* renamed value_type to type within sensor configuration
* Issue https://github.com/XKNX/xknx/issues/52 : added filter functionality for not flooding the event bus.
* suggestions by pylint
* Added notify support for knx platform.
* logging error if discovery_info is None.
* review suggestions by @armills
* line too long
* Using discovery_info to notifiy component which devices should be added.
* moved XKNX automation to main level.
* renamed xknx component to knx.
* reverted change within .coveragerc
* changed dependency
* updated docstrings.
* updated version of xknx within requirements_all.txt
* moved requirement to correct position
* renamed configuration attribute
* added @callback-decorator and async_prefix.
* added @callback decorator and async_ prefix to register_callbacks functions
* fixed typo
* pylint suggestions
* added angle position and invert_position and invert_angle to cover.knx
* typo
* bumped version within requirements_all.txt
* bumped version
* Added support for HVAC controller status
* flux: fix for when stop_time is after midnight
* flux: fix imports
* flux: add missing check when now is after midnight
* flux: one more try; should fix all use cases now
* flux switch: fix lint
* flux switch: add new tests
* flux switch: fix tests lint
* flux switch: fix tests docstrings
* Updated abodepy version to 0.7.1
* Refactored to use AbodeDevice. Added Abode Lock device.
* Added push updates to abode devices.
* Upgraded to 0.7.2 after finding issue with callbacks.
* Refactored to use AbodeDevice. Added Abode Lock device.
* Added push updates to abode devices.
* Upgraded to 0.7.2 after finding issue with callbacks.
* Bumped version to 0.8.2. Modified code to work with new constants and properties. Added cover and switch.
* Fixed hound violations.
* Updated to 0.8.3 to fix small bug with standby mode. Fixed comment in cover/abode.py.
* Fix lint issues
* Removed excessive logging. Moved device callback registration to async_added_to_hass. Moved abode controller from global into hass data.
* Removed explicit None from dict.get()
* Move device class into the constructor.
* Changed constant name to platforms.
* Changes as requested.
* Removing stray blank line.
* Added blank line of which I'm not sure how it was removed.
* Updated version to 0.9.0. Fixed motion sensor. Added power_switch_meter device type.
* Update abode.py
* fix lint
* Fix and optimize digitalloggers platform
* Fix line length
* Fix hanging indentation
* Add missing docstring
* Add period to end of docstring
* Add second blank line
- pyrainbird 0.0.9 allows the override (if ever needed) connection retry/sleep
- Forces state towards the Entity when switching the switches. Gives better UI experience.
* Refactor mysensors callback and add validation
* Add mysensors entity class. The mysensors entity class inherits from
a more general mysensors device class.
* Extract mysensors name function.
* Add setup_mysensors_platform for mysensors platforms.
* Add mysensors const schemas.
* Update mysensors callback and add child validation.
* Remove gateway wrapper class.
* Add better logging for mysensors callback.
* Add discover_persistent_devices function.
* Remove discovery in mysensors component setup.
* Clean up gateway storage in hass.data.
* Update all mysensors platforms.
* Add repr for MySensorsNotificationDevice.
* Fix bug in mysensors climate target temperatures.
* Clean up platforms. Child validation simplifies assumptions in
platforms.
* Remove not needed try except statements. All messages are validated
already in pymysensors.
* Clean up logging.
* Add timer debug logging if callback is slow.
* Upgrade pymysensors to 0.11.0.
* Make dispatch callback async
* Pass tuple device_args and optional add_devices
* Also return new_devices as list instead of dictionary.
* Pilight switch: restore last state after restart
This uses the restore_state helper to set the last known state to
pilight switches when the devices are initialized after a HA
restart.
Without this HA forget the state on every restart and needs to be told
the sttae by retoggling the switches. This can cause unwanted effects
as a switch toggling may emit an RF signal.
* Make hound happy
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Remove entity_id generation as requested in review.
* Make hound happy again.
* fix comments
* fix lint
* Add support for Automatic OAuth2 authentication
* Fix async conversion of configurator
* Rename method for async
* Use hass.components to get configurator component
* Fix typo
* Move session data to hidden directory
* Make configurator callback optional
* Add RainMachine switch platform
* Updated requirements_all.txt
* Cleaning up CI and coverage results
* Small update to deal with older pylint
* Fixed small indentation-based error
* Added some more defensive try/except logic around calls
* I'm not a fan of importing a library multiple times :)
* Making PR-requested changes
* Fixed ref to positional parameter
* Attempting to fix broken linting
* Ignoring no-value-for-parameter pylint error
* Xiaomi vacuum as component with switch, sensors and services
- Conversion from switch platform to async component.
- Add services proposed in #8416 to the new component, with shorter names.
- Add sensors for the vacuum robot as a selectable list from `battery`, `state`, `error`, `fanspeed`, `clean_time` and `clean_area` (the state attributes of the switch). The sensors don't poll, but listen to a signal to update the state, the switch fires this signal when updating.
- Assign default icons to sensors and the switch (`mdi:google-circles-group` looks like the robot!)
* path change in requirements_all (from switch platform to component)
* copy pasting is a bad habit
* services to the components services.yaml, modify .coveragerc
* review: use with multiple hosts, fix calls to async_add_devices, fix ranges for services
* `icon_for_battery_level` util method
* Xiaomi vacuum as platform of new component vacuum
- Created new component `vacuum` from a ToggleEntity.
- Add services `turn_on`, `turn_off`, `cleaning_play_pause`, `stop`, `return_to_base`, `locate`, `set_fanspeed` and `send_command`.
- Remove the main switch for the xiaomi vacuum (the toggable main entity is the switch).
- Add `support flags` for the common services
- Assign default icons to sensors and the switch (`mdi:google-circles-group` looks like the robot!)
- Move services descriptions to a yaml file for the new component.
- Update requirements_all.
- Update coveragerc.
* fix coveragerc
* fix battery icon helper to use more icons
* remove sensors, create properties and support flags for custom UI
* cleaning
* updated state_attrs for filtering in UI, renamed platform to simply `xiaomi`
* fix platform rename
* change fanspeed and expose `fanspeed_list` to use speed steps
* minor fixes
- Rename service `start_pause`
- Add 'Error' attribute only if `got_error`.
- Minor changes
* rename state attrs
* rename state attrs
* review changes: cut fan__speed, style changes, remove logging, and more
* add ATTR_COMMAND = 'command' to const
* pop entity_id from service data
* remove property accessor for vacuum object
* lint fix
* fix extra attrs names
* module level functions for calling the services
* params as optional keyword for `send_command`
* params as optional keyword for `send_command`, remove debug logs
* explicit parameters for `set_fan_speed` and `send_command`
* Demo platform for the vacuum component
* vacuum tests for the Demo platform
* some fixes
* don't omit vacuum
* vacuum tests for the Xiaomi platform
* fix test
* fix
* fix xiaomi test
* fix coveragerc
* test send command
* fix coveragerc
* fix string formatting
* The coverage is to low. It need 93% or more
* Add mochad light component
This commit adds a new component to control x10 dimmers/lights with
mochad.
* Create comm_type and address constants
The comm_type and address conf constants are shared between all mochad
devices because they are required information used for configuring a
device. This commit moves the definition into const.py so they're
consistent between all component types.
* make attributes in the fritzdect module easier to process
* remove spaces in attribute names
* move units to separate attributes
* make attributes in the fritzdect module easier to process
* remove spaces in attribute names
* move units to separate attributes
* Use new python formating syntax and attribute constant
* Shorten too long line
* Fix indent
* The gateway configuration accepts a MAC address or a SID value in uppercase already.
The ringtone services accepts the same values now. I hope it will avoid confusion.
* Device support for the new wall switches with neutral lead (ctrl_ln1, ctrl_ln2) added.
* Measurement unit from pressure of weather.v1 fixed.
* Device support for sensor_magnet.aq2 added.
* Device support for sensor_motion.aq2 (motion and lux) added.
* Code reformatted.
* The ringtone service (start/stop) uses the parameter gw_mac instead of gw_sid now.
* Version of the required library updated.
* use upstream RachioPy, fix manual run switches
* Update requirements for PyPi version of rachiopy
* Use upstream RachioPy 0.1.2 (partial revert of 39c6484d89)
* Revert rachiopy downgrade
* Fixed a bug where changing fan speed was not possible
* Bump pymodbus version to 1.3.1 to fix issue #8285
* Changed all modbus components so that they use CONF_SLAVE from const.py
* Fix checking result from a modbus transaction
* Add missing decorator
* Added modbus write coil service and added descriptions
* Removed a hiding debug print
* Fixed a bug where changing fan speed was not possible
* Bump pymodbus version to 1.3.1 to fix issue #8285
* Changed all modbus components so that they use CONF_SLAVE from const.py
* Rachio platform started
* Rachio tests
* detect bad api token
* Documentation, Code cleanup
* Docstrings end with a period, log uses %
* Fix arguments, default run time is now 10 minutes
* Fix typo, remove todo (GH issue exists)
* Revert polymer submodule commit
* Use a RachioPy version with SSL cert validation
* Update requirements
* Remove setting up an hbmqtt broker
* Don't pass loop to web.Application in tests
* Use .query instead of deprecated .GET for aiohttp requests
* Fix closing file resource
* Do not use asyncio mark
* Notify.html5 - PyJWT: Use options to disable verify
* Yamaha: Test was still using deprecated ip
* Remove pytest-asyncio
* Refactor sun component for correctness
* Convert datetimes to dates for astral
* Fix tests for updated code
* Fix times now that calcs are fixed
* Move sun functions to helpers
* Fix flake on new file
* Additional tweaks from review
* Update requirements
* Flux switch: avoid updates when off
Calling turn_on when the switch is already on would orphan the existing
time tracker, losing our ability to cancel it when turn_off is called.
* Cleanups
The self.is_on property can now be found from self.unsub_tracker, so
get rid of the self._state attribute.
Add an entry guard to turn_on, making further conditionals unnecessary.
* Remove global limit on white light temperature
Here are the supported temperatures of some popular bulbs:
Philips Hue: 2000K-6500K (the current 500-154 mired range)
LIFX Color 1000: 2500K-9000K
IKEA TRÅDFRI: 2200K, 2700K, 4000K
Obviously, Home Assistant cannot enforce a global limit and work properly
with all of these bulbs. So just remove the limit and leave it up to each
platform to work it out.
This commit updates the existing users and adds a clamp to Hue (where the
limit appears to have originated). It does not attempt to update other
platforms that might need extra handling of the larger range that is now
possible.
* Add min_mireds/max_mireds state attributes to lights
* Support min_mireds/max_mireds with LIFX lights
* Add support for Zigbee Home Automation
* Fewer magic numbers
* Make optional device config work
* Remove non-zha device_tracker stuff
* Always return boolean from is_on
* Only pass through JSON serializable discovery_info
* Update to bellows 0.2.4
* Fewer magic numbers in binary sensor
* Populate const structures from a function
* Update bellows to 0.2.6
* Fewer magic numbers in light
* Take all possible clusters when overriding
* Update bellows to 0.2.7
* Responsiveness
* Delay was not needed as commands does not return until done.
* Add support for cleaning maps and cleaning data
* Hound
* Docstring
* Update requirements
* Review changes
* External lib now returns the raw data.
* debug
* Sensor did not refresh
* Error handling
* Issue warning on connection error
* Update requirements
* Review changes
* Fire EVENT_HOMEASSISTANT_START automations off right away while starting
* Actually have core state be set to 'starting' during boot
* Fix correct start implementation
* Test and deprecate event automation platform on start
* Fix doc strings
* Remove shutting down exception
* More strict when to mark an instance as finished
* Add automation platform to listen for start/shutdown
* When we stop we should wait till it's all done
* Fix testing
* Fix async bugs in tests
* Only set UVLOOP when hass starts from CLI
* This hangs normal asyncio event loop
* Clean up Z-Wave node entity test
The Hook switch component currently uses username/password to get a token
from the Hook web app to use for subsequent requests. This adds an option
to specify the token directly in config.
Makes the 'password' and 'token' options mutually exclusive since
otherwise one would have to take precedence, and it seems worth
preventing people from filling their config with passwords that don't
even need to be there.
* fix WOL in docker/jail
add ip_address parameter to send_magic_packet if host specific.
in docker/jail, WOL doesn't works due to subnet broadcast issues.
* Update wake_on_lan.py
lint
* Adds support for the Lutron Caseta family of devices
* Added external requirement
* Removes unuse import
* Adds requirement to requirements_all.txt
* Removes unuse import
* fixes requirement_all.txt. by regenerating
* Cleans up syantax
* Cleans up syantax
* Cleans up syantax
* Cleans up syantax
* Shortens long line
* adds lutron_caseta component to .coveragerc
* Merges into light, removes component
* Fixes long lines
* Fixes requirement.txt
* Removes 'ERROR' log statements. Adds missing dependency
* savig work to pick up on other machine
* Enables Lutron Caseta component with Light and Switch platforms
* Add missing file to .coveragerc
* Changes based on PR review
* fixes requirements file
* Fixes install of paramiko dependency.
* Moves callback registration to
* comment changes
* Platform have no return value
* Change style for guard
* fix logic
* fix lint
* Refactor zwave discovery to entity schema
* Address PR concerns
* Split DISCOVERY_SCHEMAS into separate file
* Only check cover reverse workaround once
* Update configuration validation
With the new update, wake_on_lan requires a host key in the configuration
* cast self._host to str as requested
* Changed host key back to optional
* Added support for multiple codes executed in a row
now codes can be specified either by simply providing a single code, which will then be sent like usual, or multiple codes can be executed in a row, specified in a comma delimited format in the configuration.yaml. For example: 111111,222222,333333,444444 would mean 111111 would be sent first, followed by 222222 and 333333 and 444444.
* rpi_rf: added line breaks to not exceed 79 characters per line
* include validation for correct formatting of codes
added regex which only allows either a single number (like 1252456245) or a sequence of commas followed by another number.
* added line breaks to not exceed 79 characters per line
* fix for 'continuation line under-indented for visual indent'
* another try at 'continuation line under-indented for visual indent'
* changed from regex to list for easier maintainability
* removed unnecessary splitting of strings
- Separate attribs from coffeemaker condition
- Set power units for threshold to mW to be consistent with others
- Adjust on-time labels to be more clear
* Create zwave devices on OZW thread and only add them during discovery.
* Read and write devices dict from loop thread.
* More async
* replace callback with coroutine
* import common function instead of callin git
* Connect to PLM and process simple protocol callbacks
* Baseline commit
* Connect to PLM and process simple protocol callbacks
* Baseline commit
* Connection working again
* Async add devices is working via callback now
* Beginning to interface with PLM library for control and state
* Deal with brightness in 255 levels with library
* Change sub names to match API changes
* Remove PLM-level update callback
* Support dimmable based on underlying PLM device attributes
* Expand to non-light platforms
* Stubs for turn on and off
* Current version of Python library
* Amend to use switch device attributes
* Use asyncio endpoints for control
* Add logging line
* Bump module version to 0.7.1
* Auto-load platforms, display device info/attributes
* Unify method name for getting a device attribute
* Require Current version of insteonplm module
* Import the component function in each platform in the balloob-recommend manner
* For consistency, handle switch state as onlevel just like lights
* Use level 0xff for on state, even with binary switches
Observing the behavior of a 2477S switch, it looks like even the non-dimmable
devices use 0x00 and 0xff for off/on respectively. I was using 0x01 for on
previously, but that yields unnecessary state change callbacks when message
traffic ends up flipping the onlevel from 0xff to 0x01 or 0x01 to 0xff.
* Use sensorstate attribute for sensor onoff
* Move new device callback to devices attribute
* Add support for platform override on a device
* Bump version of insteonplm module
* Default overrides is an empty list
* Avoid calling private methods when doing common attributes
* Remove unused CONF_DEBUG for now
* flake8 and pylint code cleanup
* Move get_component to local function where it is needed
* Update to include insteonplm module.
* New files for insteon_plm component
* Legitimate class doctring instead of stub
* Docstring changes.
* Style changes as requested by @SEJeff
* Changes requested by @pvizeli
* Add @callback decorator to callback functions
* Opportunistic platform loading triggered by qualifying device detection
Instead of loading all the constituent platforms that comprise the insteon_plm
component, instead we defer and wait until we receive a callback for a device
that requires the platform.
* First round of not using values directly
* Round two
* lint
* Round four
* Conflict
* Round five
* Update zwave.py
* round six
* Docstring
* flakywakie
* Fetch values in constructor
* Blank line removal
* Set attributes in callback
* Docstring
* Round seven
* Ughgit add homeassistant/components/lock/zwave.py!
* Sloppy code
* Added door bell sensors
* Initial support for AC units.
* Added new device service
* Quirky Aros AC unit support
* Use super() everywhere and error checking for token request.
* Ignore camera sensors during setup of alarms.
* Added manufacturer/device attributes to all wink devices.
* Fixed style errors
* Fixed remaining lint errors.
* Initial sketches of rflink component.
* Add requirement.
* Properly load configuration.
* Bump rflink for graceful parse errors and protocol callback.
* Cleanup, documentation and linting.
* More documentation, first sensor implementation (temp & hum).
* Add brightness/dim support for newkaku protocol.
* Use separate class for dimmables.
* Make sure non-dimmable newkaku devices are turned on.
* Move some code around, add switches. Support loading from config.
* Fix bug in ignoring devices.
* Fix initial state assumption.
* Improve reliability on invalid conditions.
* Allow configuration of group for new devices.
* Sensor icons.
* Fix parsing negative numbers.
* Correct icon.
* Allow sending commands serial.
* Pluralize.
* Allow adding sensors from config.
* Fix ignoring devices and bugs in previous commit.
* Share know devices so devices from configuration don't get added as lights.
* Lookup unit from value_key.
* Remove debug.
* Start implementing event protocol in place of packet protocol.
- Added first test suite for sensors.
- This currently breaks light and switch.
* Refactor switch component to fit new rflink changes. Add test suite.
* Fix style.
* Refactor and test lights. Bring coverage to 100%.
* Use non-broken and production tested rflink module.
* Update requirements.
* Bump for logging.
* Improve readability.
* Do not use global variable but keep known device state in intended place.
* Improve docs.
* Make icon support generic.
* Disable overriding icons in config, as it belongs in customization. Only keep custom icon for entities that are able to detect a icon based on the thing they represent (sensors in this case).
* Implement configuration schema, overall refactor of magic values.
* Fix bug in config/test wait_for_ack.
* Small refactors.
* Move command logic into separate class.
* Convert command sending logic to class based pattern instead of using the event bus.
* Start not using bus for rflink event propagation to platforms.
* Do not use event bus for all entity types.
* Fire an event on the bus for every switch incoming rflink command.
* Resolve lint errors, remove some old code.
* Known devices no longer need to be registered separately.
* Log bus events.
* Event callback is a..... callback.
* Use full entity id for events.
* Move event sending to entity.
* Log incoming events.
* Make firing events optional inline with rfxtrx.
* Add foundation for signal repetition.
* Add signal repetition config and tests.
* Make plain switchable type explicitly configurable.
* Enable default entity settings for automatically added entities as well.
* Prevent default configuration leaking accross entities.
* Make sure device defaults don't get overwritten by defaults further down.
* Don't let fast state switching and repetitions turn your house into a disco.
* Make repetitions more responsive.
* Disable on/off fallback on dimmables as it currently doesn't play nice with repetitions.
* Use rflink that allows send_command_ack to be safely cancelled.
* Reduce duplication and make repeat work for non-ack.
* Implement reconnection logic.
* Improve reconnection logic.
* Also cancel repetitions when entity state is changed due to external command.
* Update requirements.
* Fix linting.
* Fix spelling.
* Don't lie.
* Fix lint.
* Support for automatically creating protocol translation (fixes spaces in device names).
* Returned support for dimmable and on/off entity.
* Duplicate code to fix linting issues with inheritance.
* Allow overriding unit of measurement from config.
* Implement echo config option for pilight
Pilight switches can get a receive code configured. If so they act on
received codes. In the current implementation "act on" means not only
to set the internal state, but also to send the code again. If the
receiver is directly parred with the switch, to act even if HA is not
running, this causes it to receive the signal twice because the HA
sends it again.
In my case this causes a dimmer to start dimming until I hit the switch
again.
This implements a "echo" argument for the receive codes that let the
user choose if a received signal should result in any sending or not.
If not, only the status of pilight will be updated.
The echo option defaults to True, as this was the default since now.
Simply set it to halse to disable this behaviour.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Add documentation to set_state in switch/pilight.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Move isdevice validator under helpers.config_validation.
* Check that all persistence files are set and are unique if any is set
by user. This is necessary to avoid file name clashes.
* Check that a set persistence file has an existing and writable
directory.
* Check that a device is either a valid device file, "mqtt", or a valid
domain name or ip address.
* cec client object
* cec command structure
* autodetect source
* volume support and native source select
* switch device
* media player device
* detecting of state
* friendly names
* hdmi cec properties
* presence detection
* simplified callbacks
* stable names
* renamed methods
* code cleanup
* name with vendor
* fixed standby call name
* fake standby/poweron
* domain switch
* domain switch
* async updating
* update separated
* cec -> hass event bridge
* fixed name generation
* code cleanup
* code cleanup
* icon constants
* code cleanup
* do not register unavailable devices
* discovery of deevices
* code cleanup
* cec device discovery
* moved method implementation into child
* service descriptions
* service descriptions
* service descriptions
* changed entity init sequence
* logging cleanup
* add remove as job
* closing cec, no service schemas
* correct iterate over dictionary
* Volume by commands
* threading
* logging minimized
* get load out of main thread
* naming cleanup
* get load out of main thread
* optimized discovery
* async where possible
* cleanup logging, constructors first
* pydoc
* formatting
* no async_update from out of loop
no hiding entities
removed redundant device_state_attributes
async updating presence
* no async
* working async cec
* cec in thirdparty lib
* cec initialized oudsice
* working without SIGSEGV
* rollbacked file changed by mistake
* sending of commands
* working with ha
* using hass loop and device driven updates
* version up
* version up
* Command types in pycec, cleanup for HA integration
* Removed media player, state moved to switch
* service descriptions
* requirements: pyCEC
* line width to 79
* doc
* doc
* overindentation solved
* HDMI to uppercase
* minimal dependency on cec
* removed unwanted line
* doc wording
* margin 79
* line continuation indent
* imperative doc
* lint: indentation
* fixed overindented
* fixed overindented
* fixed overindented
* fixed overindented
* order of imports
* PEP8
* keep signature of overriding
* removed redundant blank line
* fixed update call method (#4)
* Preparation for merge to upstream (#5)
* newer version of pyCEC
* updated services.yaml
* fixed lint scrpt to operate only on python files
* pycec version up
* update services
* no coverage report
* exclude non python files from lint
* lint only on python files
* Dev (#6)
* reordered
* sending nonserialized data through hass.data
* code formatting
* code formatting
* import order
* Dev (#7)
* newer version of pyCEC
* updated services.yaml
* fixed lint scrpt to operate only on python files
* pycec version up
* update services
* no coverage report
* exclude non python files from lint
* lint only on python files
* reordered
* sending nonserialized data through hass.data
* import order
* fixed object handling
* code formatting
* Backwards compatibility of hdmi_cec (#10)
* services:
power_on
standby
active_source
* new version of pyCEC (#12)
* newer version of pyCEC
* devices config (#13)
* getting device name from config
* shutdown fix (#14)
* correct call on shutdown
* remove misplaced annotations (#15)
* Preparation for merge to upstream (#5)
* newer version of pyCEC
* updated services.yaml
* reordered
* sending nonserialized data through hass.data
* services:
power_on
standby
active_source
* code formatting
* getting device name from config
* correct call on shutdown
* pyCEC version 0.3.6 (#18)
* newer version of pyCEC
* updated services.yaml
* sending nonserialized data through hass.data
* services:
** power_on
** standby
** active_source
* getting device name from config
* correct call on shutdown
* fork new thread on multicore machines
* support both config schemas: original and new (#16)
* volume press and release support (#17)
* support for media_player (#21)
* accept hexadecimal format of commands
* support for media player
* platform customization
* type constants
* Dev (#23)
* accept hexadecimal format of commands
* support for media player
* platform customization
* TCP CEC support (#24)
* accept hexadecimal format of commands
* support for media player
* platform customization
* preparing tcp support
* volume handling (#25)
* Incorporated CR remarks (#26)
* cleanup imports
* cleanup and enhance services description
* removed unwanted file
* implemented CR remarks (#27)
* pyCEC v0.4.6
* pined dependency version
* tighten service schemas
* requirements (#28)
* incorporate remarks from users (#32)
* home-assistant-31 make mute schema better (#31)
* pycec-30 pyCEC version up (#30)
* pycec-30 pyCEC version up (#30)
* home-assistant-30 OSD display name from configuration (#30) (#33)
* Home assistant 29 (#34)
* home-assistant-29 counting from 0 (#29)
* Home assistant 31 (#35)
* home-assistant-31 add support for mute-on and mute-off (#31)
* home-assistant-31 pyCEC version up (#31)
* Home assistant 31 (#36)
* home-assistant-31 Limit OSD name to 13 chars (#31)
* home-assistant-31 Limit OSD name to 13 chars moved to CEC adapter (#31)
* home-assistant-31 version up (#31)
* home-assistant-31 formatting (#31)
* formatting
* service description
* service description
* single attribute for volume
* fixed mute on -> mute off
* moved config constant from core into component
* check cec message length when asking physical address (#38) (#38)
* cec turn on/turn off commands instead of power
* cec turn on/turn off commands instead of power
* cec client object
* cec command structure
* autodetect source
* volume support and native source select
* switch device
* media player device
* detecting of state
* friendly names
* hdmi cec properties
* presence detection
* simplified callbacks
* stable names
* renamed methods
* code cleanup
* name with vendor
* fixed standby call name
* fake standby/poweron
* domain switch
* domain switch
* async updating
* update separated
* cec -> hass event bridge
* fixed name generation
* code cleanup
* code cleanup
* icon constants
* code cleanup
* do not register unavailable devices
* discovery of deevices
* code cleanup
* cec device discovery
* moved method implementation into child
* service descriptions
* service descriptions
* service descriptions
* changed entity init sequence
* logging cleanup
* add remove as job
* closing cec, no service schemas
* correct iterate over dictionary
* Volume by commands
* threading
* logging minimized
* get load out of main thread
* naming cleanup
* get load out of main thread
* optimized discovery
* async where possible
* cleanup logging, constructors first
* pydoc
* formatting
* no async_update from out of loop
no hiding entities
removed redundant device_state_attributes
async updating presence
* no async
* working async cec
* cec in thirdparty lib
* cec initialized oudsice
* working without SIGSEGV
* rollbacked file changed by mistake
* sending of commands
* working with ha
* using hass loop and device driven updates
* version up
* version up
* Command types in pycec, cleanup for HA integration
* Removed media player, state moved to switch
* service descriptions
* requirements: pyCEC
* line width to 79
* doc
* doc
* overindentation solved
* HDMI to uppercase
* minimal dependency on cec
* removed unwanted line
* doc wording
* margin 79
* line continuation indent
* imperative doc
* lint: indentation
* fixed overindented
* fixed overindented
* fixed overindented
* fixed overindented
* order of imports
* PEP8
* keep signature of overriding
* removed redundant blank line
* fixed update call method (#4)
* Preparation for merge to upstream (#5)
* newer version of pyCEC
* updated services.yaml
* fixed lint scrpt to operate only on python files
* pycec version up
* update services
* no coverage report
* exclude non python files from lint
* lint only on python files
* Dev (#6)
* reordered
* sending nonserialized data through hass.data
* code formatting
* code formatting
* import order
* Dev (#7)
* newer version of pyCEC
* updated services.yaml
* fixed lint scrpt to operate only on python files
* pycec version up
* update services
* no coverage report
* exclude non python files from lint
* lint only on python files
* reordered
* sending nonserialized data through hass.data
* import order
* fixed object handling
* code formatting
* Backwards compatibility of hdmi_cec (#10)
* services:
power_on
standby
active_source
* new version of pyCEC (#12)
* newer version of pyCEC
* devices config (#13)
* getting device name from config
* shutdown fix (#14)
* correct call on shutdown
* remove misplaced annotations (#15)
* Preparation for merge to upstream (#5)
* newer version of pyCEC
* updated services.yaml
* reordered
* sending nonserialized data through hass.data
* services:
power_on
standby
active_source
* code formatting
* getting device name from config
* correct call on shutdown
* pyCEC version 0.3.6 (#18)
* newer version of pyCEC
* updated services.yaml
* sending nonserialized data through hass.data
* services:
** power_on
** standby
** active_source
* getting device name from config
* correct call on shutdown
* fork new thread on multicore machines
* support both config schemas: original and new (#16)
* volume press and release support (#17)
* support for media_player (#21)
* accept hexadecimal format of commands
* support for media player
* platform customization
* type constants
* Dev (#23)
* accept hexadecimal format of commands
* support for media player
* platform customization
* TCP CEC support (#24)
* accept hexadecimal format of commands
* support for media player
* platform customization
* preparing tcp support
* volume handling (#25)
* Incorporated CR remarks (#26)
* cleanup imports
* cleanup and enhance services description
* removed unwanted file
* implemented CR remarks (#27)
* pyCEC v0.4.6
* pined dependency version
* tighten service schemas
* requirements (#28)
* Add mysensors notify platform
* Make add_devices optional in platform callback function.
* Use new argument structure for all existing mysensors platforms.
* Add notify platform.
* Update mysensors gateway.
* Refactor notify setup
* Enable discovery of notify platforms.
* Update and add tests for notify component and some platforms.
* Continue setup of notify platforms if a platform fails setup.
* Remove notify tests that check platform config. These tests are not
needed when config validation is used.
* Add config validation to APNS notify platform.
* Use discovery to set up mysensors notify platform.
* Add discovery_info to get_service and update tests
* Add discovery_info as keyword argument to the get_service function
signature and update all notify platforms.
* Update existing notify tests to check config validation using test
helper.
* Add removed tests back in that checked config in apns, command_line
and file platforms, but use config validation test helper to verify
config.
* Add a test for notify file to increase coverage.
* Fix some PEP issues.
* Fix comments and use more constants
* Move apns notify service under notify domain
* platform set-up begin components
* lights seem to be getting set up properly, not sure why they aren't being added...
* typo
* Dependencies line
* toggle working
* toggle working
* added the switch to insteon_local
First commit hope to test tonight or in the morning
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* Update insteon_local.py
* move dependency declaration before import?
* Move dependencies in Switch
* Update insteon_local.py
* wait for response
* switched the while to an if
switched the while 'cmd2' not in resp: to an if 'cmd2' not in resp: this seems to have the updater working
* Switched the while sleep loop to an if
switched the wile cmd2 not ins resp to be if cmd2 not in resp seems to be working.
* Update insteon_local.py
* import statement
Updated the import statement to import the instance of the insteon_local component not the hub Instance.
* updated import and the device assignment
update the import to import the instance of the insteon_local component not the hub.
* more changes to support the import change
* more changes to support the import change
* change to hass.data and add loop logic
* &&
* Update insteon_local.py
* Update insteon_local.py
* logic fixes and throttle
* reduce polling time
* brightness support
* import util
* hound fixes
* requirements file
* more hound fixes
* newline
* newline weirdness
* lint fixes
* more lint fixes
* switch state
* Update insteon_local.py
* log cmd2 for debugging
* assume success
* remove check for none
* fix comments
* fix comments again
* fix comments, add fixed version of lib, add support for timeout, add support for port, handle invalid login and connection problems
* fix logging exception
* fix hounceci-bot errors
* fix hounceci-bot errors
* requirements fix
* unique-id changes
* make dimmer off use saved ramp rate
* configurator working for lights
* configurator working for switches?
* configurator working for switches?
* include model names and fix lint errors
* lint fix
* fix exception order
* lint fixes
* fix lint errors
* update to use insteon local 0.38
* fix device id
* move status check to library
* move status check to library
* add SKU to setup
* lint fixes
* requirements
* linting
* Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity.
* Refactor Tellstick object model for increased clarity.
* Update comments. Unify better with sensors. Fix typo bug. Add debug logging.
* Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity.
* Refactor Tellstick object model for increased clarity.
* Update comments. Unify better with sensors. Fix typo bug. Add debug logging.
* Fix lint issues.
* Remove global variable according to hint from balloob.
* Better async/threading behavior for tellstick.
* Fix lint/style checks.
* Use hass.async_add_job
* Add ability to set rpi_rf `tx_repeats` attribute
Uses the current `rpi_rf` default of 10
Closeshome-assistant/home-assistant#5069
* Use `signal_repetitions` instead of `repeats` for consistency
* Updates TP-Link switches dependent module
Refactors code to use the new module API
* Set TP-Link Switch name from the device settings
If no name has been set in the configuration file the name set on the device will be used
* Removes default name for TP-Link switch
Fallback to device alias now works properly
* Removes logging
* Updates comment to denote support for HS200 switch
- Implemented support for covers and dimmable lights.
- Removed global object, use hass.data.
- Disabled polling via update.
- Inherit from common TelldusLiveEntity device.
- Configurable polling interval
- Use https API endpoint
- Use tellduslive package
* Pilight: dont protocol as list in COMMAND_SCHEMA
As described in bug #4637 the protocol should not be wrapped in a list
in the spec of COMMAND_SCHEMA because this causes the component to
never successfully match any received rf code.
As pointed ot in PR #4639 the easiest way to do this, is to not derive
COMMAND_SCHEMA from RF_CODE_SCHEMA and specify protocol as simple
string there.
This fixes bug #4637.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Pilight: Add "unitcode" to command schema.
This adds "unitcode" to the COMMAND_SCHEMA. It is used for example in
the brennenstuhl protocol of pilight.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* ensure_list
* CONF_ID is not required configuration for enocean lights
* Use vol.All(cv.ensure_list, [vol.Coerce(int)]) as suggested in pull request review
* Fix line too long
* initial commit
Previous work included with no history. Sorry, I was figuring out how to use git, branches and deal with open source projects. At this point this is a working switch but with the shortcomings of each of the 8 ports causes a network query. This needs to be rewritten so that the SwitchDevice is part of a larger device group that is only queried once, saving traffic and preventing the small device from timing out.
* Device polls independent of switches now
Used anel_pwrctrl.py as a basis to extract the per-switch polling out to per-device so it can be trottled properly. Likewise, no longer touching the device independently for relay status AND relay name. Getting them both from the same statuslist() return.
* Final comments and tweaks
Lowered cycle and update time since the device update is working so well now. Effectively no timeouts anymore.
* Added dlipower to requirements
homeassistant.components.switch.digitalloggers
* Tox fixes
pydocstyle updates
* More tox errors
* Yet more tox
Removed useful future TODO and helpful details on the structure of the statuslocal list.
Good catch on not initializing .update(), though it worked.
* Blank line fix
* Added file to .coveragerc
* Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity.
* Refactor Tellstick object model for increased clarity.
* Update comments. Unify better with sensors. Fix typo bug. Add debug logging.
* Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity.
* Refactor Tellstick object model for increased clarity.
* Update comments. Unify better with sensors. Fix typo bug. Add debug logging.
* Fix lint issues.
* Remove global variable according to hint from balloob.
* Homematic update with HomematicIP/HomematicWired support and multible connections
* fix bug in virtualkey service
* create new service & cleanups
* fix lint
* Pump pyhomematic 0.1.18
* Move HTTP to own folder
* Break HTTP into middlewares
* Lint
* Split tests per middleware
* Clean up HTTP tests
* Make HomeAssistantViews more stateless
* Lint
* Make HTTP setup async
* Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity.
* Refactor Tellstick object model for increased clarity.
* Update comments. Unify better with sensors. Fix typo bug. Add debug logging.
* Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity.
* Refactor Tellstick object model for increased clarity.
* Update comments. Unify better with sensors. Fix typo bug. Add debug logging.
* Fix lint issues.
* Migrate callbacks to use schedule_update_ha_state
* Migrate MQTT sensor callback to async
* Migrate wemo to not update inside schedule_update_ha_state
* Make MQTT switch async
* Fix nx584 test
* Migrate tellstick callback
* Migrate vera callback
* Alarm control panel - manual: use async callbacks
* Run the switch rest tests that work
* Convert switch to AsnycIO
* Move update entity to service
* use time better for faster handling
* Change to suggestion from paulus
* Use new shedule_update_ha_state
* fix lint
* minimize executor calls
* Use entity_id for backend, friendly name for frontend
Closes https://github.com/home-assistant/home-assistant/issues/3434
Command line switches had the option to set a `friendly_name` reportedly
for use in the front end. However, if set, it was also being used as the
`entity_id`.
This did not seem like obvious behavior to me. This PR changes the
behavior so the entity_id is the object_id, which must already be
unique, and is an obvious place to have a very predictable slug (even if
long or unsightly), and the friendly name (if set) is used for the
display.
Example:
```yaml
switch:
platform: command_line
switches:
rf_kitchen_light_one:
command_on: switch_command on kitchen
command_off: switch_command off kitchen
command_state: query_command kitchen
value_template: '{{ value == "online" }}'
friendly_name: "Beautiful bright kitchen light!"
```
If you were using in an automation or from dev tools, would use:
`switch.rf_kitchen_light_one`, but your front end would still show `Beautiful
bright kitchen light!`
* Add new arg to test_assumed_state_should_be_true_if_command_state_is_false
* Import ENTITY_ID _FORMAT from existing, rename device_name to object_id
* Rename `device_name` to `object_id`
* Test that `entity_id` and `name` are set as expected
* Change pilight systemcode validation to integer
According to the pilight code the systemcode should be an integer and
not a string (it is an int in the pilight code). Passing this as a
string caused errors from pilight:
"ERROR: elro_800_switch: insufficient number of arguments"
This fixes#4282
* Change pilight unit-id to positive integer
According to the pilight code the unit of an entity is also evrywhere
handled as an integer. So converting and passing this as string causes
pilight not to work.
This fixes#4282
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
GATEWAYS was a dict, so would overwrite item if key was the same. This
would happen when using multiple MQTT gateways, since the device id is
the same (`mqtt`).
* Fix by changing GATEWAYS from dict into list.
* Use hass data to store mysensors gateways instead of having GATEWAYS
be a global.
* Fixes in TP-Link Switch logging 0 values on init
On init of component the emeter would log to influxdb and possibly other inputs a 0 value, instead of not logging anything.
Initial polling should circumvent that behavior and avoid logging inconsistencies.
* Refactors update call in __init__
* Initial submission of LiteJet integration.
* Add LiteJet switch pressed automation trigger. (State changes are too slow to catch a press-release.)
Add LiteJet scene, replacing commented out code that treated these as lights.
Include LiteJet numbers in the device state so that it is easy to lookup entity -> number.
* Fix missing global.
* Allow light's brightness to be set explicitly.
* Support optional 'ignore' key to ignore prefixes of loads, switches, and scenes that weren't configured for use in the LiteJet system.
* Fix lint errors and warnings.
* Cleanup header comments.
Default to not creating LiteJet switches as these are generally not useful.
* Lint fixes.
* Fixes from pull request feedback.
* Use hass.data instead of globals for data storage.
* Fix lint warnings.
* Add link to docs
* Fix link
* Update line breaks
* Update ordering
* Align vera platofrm to only use add_devices
(instead od add_devices_callback)
* Remove line break
* Use consts
* Update ordering
* Update ordering
* Use const, create default name, use string formatting
* Update ordering
* Use const
* Update import style
* Update ordering and line breaks
* update line breaks
* Set default port
* Set defaults and update ordering
* Update ordering
* Minor style updates
* Update ordering, defaults, line breaks, and readability
* Use constants
* Add line breaks
* use string formatting
* Update line breaks
* Update logger
* successfully tested the "remote temperature mode" switch for the radio thermostat
* removed logging and interpreted None as Off.
* turn_off value is also templated now -- can depend on state
Also, undid accidental removal of error logging.
* ensured backward compatibility of config file
if value_template is not provided, the update function behaves as before
* ran autopep8 --in-place
* fixed another complaint of tox
* addressed the comments of balloob
* undid acccidental log.error to log.info
* timeout : 50 -> 10
* added a timeout parameter
* removed the stray '-', better names for the failure case
* string comparisons after .lower(), as suggested by balloob
* addressed balloob's latest requests
* making flake happy
* value_template --> is_on_template in config file
* moved CONF_IS_ON_TEMPLATE to local file
* null checks
* addressed flake error
* properly comparing template text when is_on is not a template.
This commit adds a new component for communicating with mochad[1] a
socket interface for the CM15A and CM19A USB X10 controllers. This
commit leverages the pymochad library to interface with a mochad socket
either on a local or remote machine. Mochad is added as as a generic
platform because it supports multiple different classes of device,
however in this patch only the switch device implemented as a starting
point. Future patches will include other devices types. (although
that's dependent on someone gaining access to those)
[1] https://sourceforge.net/projects/mochad/
* Adds energy monitoring capabilities to the TP-Link HS110
Energy monitoring works only on the HS110 model
* Reverts to using GadgetReactor's module
* Updates requirements_all.txt
* Refactors tplink switch to use attribute caching
* Update tplink.py
* Add support for Neato Connected robot as a switch
Signed-off-by: Hugo D. (jabesq) <jabesq@gmail.com>
* Add checklist items
Signed-off-by: Hugo D. (jabesq) <jabesq@gmail.com>
* Add missing docstring
Signed-off-by: Hugo D. (jabesq) <jabesq@gmail.com>
* [Neato] Add update function to retrieve robot state
* Add docstring for update function + catch exception when retrieving state
* Change type of HTTPError when updating state
* Fix pylint errors
* Initial Zoneminder commit
* Fixing bug when ZM sets its function to 'None'
* Adding zoneminder to coverage
* Quick Doc fix
* Update zoneminder.py
Doc Fix
* making the url base optional
* Add async_safe annotation
* More async_run_job
* coroutine -> async_save
* Lint
* Rename async_safe -> callback
* Add tests to core for different job types
* Add one more test with different type of callbacks
* Fix typing signature for callback methods
* Fix callback service executed method
* Fix method signatures for callback
* Template platforms: create_task instead of yield from
* Automation: less yielding, more create_tasking
* Helpers.script: less yielding, more create_tasking
* Deflake logbook test
* Deflake automation reload config test
* MQTT: Use async_add_job and threaded_listener_factory
* Deflake other logbook test
* lint
* Add test for automation trigger service
* MQTT client can be called from within async
* Make flux always adjust brightness of light (even when not in XY mode)
* Remove kelvin mode from flux switch
The light/turn_on service only works with mired values, kelvin values
are out of range per the schema.
* Use already defined min/max values for light/turn_on schema
* Clamp temp value to light/turn_on allowed values
* Update Command classes and device types to Sigma SDK
* Fix some pylint
* Seperate constants to file
* Flake8
* coverage and flake8 pylint
* Add services.yaml
* Service descriptions was missing
* Spelling :)
* grammar
* Remove zwave service descriptions from main
* Clean-up, ordering, constants, and extend of schema
* Put REQUIREMENTS back and re-add line breaks
* Clean-up, ordering, constants, and extend of schema
* Extend platform
* New component to interface with a pilight-daemon for RF send/receive
* Fix bug that changed the received data, add connected flag, clean up
* New pilight switch component
* New optional whitelist filter to filter uninteressting devices
* Add pilight
* PEP8: too long lines, white spaces
* To keep up the good coverage ...
* PEP 257
* pylint enhancements
* pylint enhancements
* PEP 257
* Better HA config validation and cleanup following code review for #2742
* Fix requirenments to require fixed pilight version
* Change config validation to use voluptuous
* Pilight switch exclude not needed due to wildcard pilight exclude
* Enhance configuration parsing using voluptuous
* Added mired and kelvin mode to flux
* changed as requested
* Renamed varible
* attempt to add test for new method in flux.py
* removed line to fix lint error