* Add Islamic Prayer Times config_flow
* Add Islamic Prayer Times config_flow
* handle options update and fix tests
* fix sensor update handling
* fix pylint
* fix scheduled update and add test
* update test_init
* update flow options to show drop list
* clean up code
* async scheduling and revert state to timestamp
* fix update retry method
* update strings
* keep title as root key
* Add Braava support to iRobot Roomba component
* Replace async_add_job with async_add_executor_job in roomba
* Improve readability in roomba
* Improve error handling in roomba
* Cleanup async_update in roomba
* Split into multiple files in roomba
* Hide protocal details in braava
* Switch to push in braava
* Bump roombapy version to 1.5.1
* Add roomba files to .coveragerc
* Fix typo
* Remove side effects from init in roomba
* Implement StateVacuumDevice in Roomba
* Add IRobotEntity base class to braava
* Fix state in roomba
* Add @shenxn as a codeowner of braava
* Updating the panasonic_viera component
* Updating .coveragerc
* Removing testplatform
* Updating strings.json
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Adding tests and stuff
* Fixing permission issues
* Ignoring Pylint warnings
* Fixing one more Pylint warning
* Refactoring
* Commiting changes - part 1
* Commiting changes: part 2
* Turning unknown error logs into exception logs
* Update strings.json
* Rebasing
* Updating the panasonic_viera component
* Removing testplatform
* Updating strings.json
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Adding tests and stuff
* Fixing permission issues
* Ignoring Pylint warnings
* Fixing one more Pylint warning
* Refactoring
* Commiting changes - part 1
* Commiting changes: part 2
* Turning unknown error logs into exception logs
* Adding pt-BR translation
* Removing Brazilian Portugues translations
* Modifying error handling
* Adding SOAPError to except handling
* Updating translation
* Refactoring async_step_import
* Fixing indentation
* Fixing requirements after rebase
* Fixing translations
* Fixing issues after rebase
* Routing import step to user step
* Adding myself as a codeowner
* Add device tracker based on arris-tg2492lg
* Return name of device and update version of arris_tg2492lg
* Update CODEOWNERS, requirements_all.txt and .coveragerc
* Change default url to host
* Use f-strings
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Clean up
* Fix formatting
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Run scripts
* Improvement strings
* Fix FlowOptions update listener
* Update .ceveragerc
* Add tests
* Better strings
* Add test for OptionsFlow
* Run gen_requirements_all.py once again
* Fix pylint errors
* Log error when there is no bravia.conf file during import
* Improvement strings
* Use braviarc object from hass.data in options flow
* Use async_add_executor_job for IO
* Fix options flow test
* Fix tests
* Remove host_reachable method
* Remove dependencies
* Change setup_platform method to async
* Remove calling system_info
* Save mac in the config entry
* Fix get ignore sources
* Fix read config from file
* Remove the side effect from init
* Fix user_input for user step
* Switch OrderedDict to dict
* New config_entry instance for each test
* Revert change
* Patch async_setup_entry in test_import
* Change a way to create source list
* Consolidate repeated block of code
* Update tests
* Suggested change
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Suggested channge
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Suggested change
* Patch async_setup_entry
* Remove unnecesary if
* suggested change
* Suggested change
* Fix tests
* Fix pylint error
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert homekit thermostats to use service callbacks
Service callbacks allow us to get all the temperature
changes in one request so we can avoid all the
need to store state and debounce.
* remove excess debug
* Fix lock and light tests
* Ensure all code for Thermostats has coverage
* I am answering all the homekit cases anyways so might as well be aware of regressions
* Make lock notifications reliable
* Update homeassistant/components/homekit/type_lights.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add config_flow for roomba
* Get options to connect
* Fix options in config flow
* Fix syntax in config_flow
* Remove name (not necessary)
* Add bin sensor
* Add Battery sensor
* Add async_connect
* Fix typo
* Add Model and Software version
* Update Roombapy 1.5.0
* Add validate_input
* Add connect and disconnect functions
* Remove test config flow
* Add variables after loop
* Fix translate
* Fix typo
* Fix state of bin
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove invalid auth
* Add call function reported_state
* Add options reload
* Fix tracelog
* Set entry_id for config_entry
* Fix DOMAIN unsed-import
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add unique_id for entry
* Fix device info
* Add config_flow for roomba
* Get options to connect
* Fix options in config flow
* Fix syntax in config_flow
* Remove name (not necessary)
* Add bin sensor
* Add Battery sensor
* Add async_connect
* Fix typo
* Add Model and Software version
* Update Roombapy 1.5.0
* Add validate_input
* Add connect and disconnect functions
* Remove test config flow
* Add variables after loop
* Fix translate
* Fix typo
* Fix state of bin
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove invalid auth
* Add call function reported_state
* Add options reload
* Fix tracelog
* Set entry_id for config_entry
* Fix DOMAIN unsed-import
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add unique_id for entry
* Fix device info
* syntax for mac (pyupgrade)
* Change single key to BLID
* Resolve dict conflict
* Update homeassistant/components/roomba/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/.translations/en.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/strings.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add description
* Revert "Remove test config flow"
This reverts commit 26a89422e8.
* Add tests
* Remove check if user none
* Replace CONF_USERNAME to CONF_BLID (breaking change)
* Update test_config_flow.py
* Add code owners
* Remove CONF_USERNAME (unused)
* Add multiple vacuum
* Add multiple vacuum
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix syntax name
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove CONF_PREFIX (unused)
* Update homeassistant/components/roomba/sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add import UNIT_PERCENTAGE
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add a config flow for flume
* Sensors no longer block Home Assistant startup
since the flume api can take > 60s to respond on
the first poll
* Update to 0.4.0 to resolve the blocking startup issue
* Missed conversion to FlumeAuth
* FlumeAuth can do i/o if the token is expired, wrap it
* workaround async_add_entities updating disabled entities
* Fix conflict
* Added support for the Pi4ioe5v9xxxx binary IO expanders.
* Correction for black failure
* Correction for black failure
* Fix for manifest.json
* Fix for flake8 fault missing a period
* Some modifications I made during tests seem to be disapeared, fixed flake8 and black test now
* WIP virtual thermostat
* WIP virtual thermostat
* WIP
* 100% tests coverage
* Manifest, codeowners, typo fix
* Lint problem
* Test file blacked
* Add a test case for b4dpxl's question
* Update CODEOWNERS
* Replacement of generic thermostat
* Cleaning
* Lint
* More lint
* Using external PyPI package, removed get()
* Fix flake8 checks
* removed virtual thermostat
* Re-fix black & isort
* Re-fix isort 2
* Update homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* black for switch
* update to latest version manual merge
* Delete test_generic_thermostat.py
* Delete .gitignore
* Delete climate.py
* Delete manifest.json
* Delete test_climate.py
* Delete test_climate.py
* fix thermostat interference
* fix thermostat interference 2
* Fix pylint
* Update .pre-commit-config.yaml
Co-authored-by: Cyril <cyril.dubus@effipilot.com>
Co-authored-by: Niflou <dubuscyr@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add config flow to Synology DSM
* Use proper sensor unique ID from flow + sensor name
* Add description to api_version
* Add authentication flow check
* Add device_info
* Add test_login_failed test
* Bump python-synology to 0.5.0
* 0.5.0 test updates
* Use NAS S/N as config_flow unique_id
* Add missed conf disks + volumes
* Review: async_unload the async_track_time_interval
* Fix NoneType for disks or volumes
* Keep all disks and volumes forever
* Update homeassistant/components/synology_dsm/.translations/en.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/synology_dsm/strings.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix "Keep all disks and volumes forever" for empty import
* Fix prettier
* Remove useless LOGGER in config flow
* Fix Synology DSM tests doing I/O
Co-authored-by: J. Nick Koston <nick@koston.org>
* Adding vera config entries support.
* Fixing lint error.
* Applying minimal changes necessary to get config entries working.
* Addressing PR feedback by further reducing the scope of the change.
* Addressing PR feedback.
* Fixing pyvera import to make it easier to patch.
Addressing PR feedback regarding creation of controller and scheduling of async config flow actions.
* Updating code owners file.
* Small fixes.
* Adding a user config flow step.
* Adding optional configs for user config flow.
* Updating strings to be more clear to the user.
* Adding options flow.
Fixing some PR feedback.
* Better handling of options.
PR feedback changes.
* Using config registry to update config options.
* Better managing config from file or config from UI
Disabling config through UI if config is provided from a file.
More tests to account for these adjustments.
* Address PR feedback.
* Fixing test, merging with master.
* Disabling all Vera UI for configs managed by configuration.yml.
Adding more tests.
* Updating config based on unique_id.
Addressing additional PR feedback.
* Rebasing off dev.
Addressing feedback.
* Addressing PR feedback.
* Convert nut to config flow
* Add a test for importing
* lint
* Address review items (part 1)
* Address review items (part 1)
* Cleanup unique id handling
* Update tests for new naming scheme
* No unique id, no device_info
* Remove sensor types
* Update tests to use resources that still exist
* Create __init__.py
* Create manifest.json
* Update zeroconf.py
* more work on integration
* more work on integration.
* add more sensor tests.
* Update const.py
* Update sensor.py
* more work on ipp.
* Update test_config_flow.py
* more work on ipp.
* Update config_flow.py
* Update config_flow.py
* Tado climate state moved to python-tado
* Resolve various incorrect states and add tests for known tado zone states
* Write state instead of calling for an update
This is a redux of pr #32564 with all of the zone state now moved into
python-tado and tests added for the various states.
* stale string
* add missing undos to dispachers
* remove unneeded hass
* naming
* rearrange
* fix water heater, add test
* fix water heater, add test
* switch hvac mode when changing temp if in auto/off/smart
* modbus: bumb pymodbus version to 2.3.0
pymodbus version 1.5.2 did not support asyncio, and in general
the async handling have been improved a lot in version 2.3.0.
updated core/requirement*txt
* updated core/CODEOWNERS
committing result of 'python3 -m script.hassfest'.
* modbus: change core connection to async
change setup() --> async_setup and update() --> async_update()
Use async_setup_platform() to complete the async connection to core.
listen for EVENT_HOMEASSISTANT_START happens in async_setup()
so it needs to be async_listen.
But listen for EVENT_HOMEASSISTANT_STOP happens in start_modbus()
which is a sync. function so it continues to be listen().
* modbus: move setup of pymodbus into modbushub
setup of pymodbus is logically connected to the class modbushub,
therefore move it into the class.
Delay construction of pymodbus client until event
EVENT_HOMEASSISTANT_START arrives.
* modbus: use pymodbus async library
convert pymodbus calls to refer to the async library.
Remark: connect() is no longer needed, it is done when constructing
the client. There are also automatic reconnect.
* modbus: use async update for read/write
Use async functions for read/write from pymodbus.
change thread.Lock() to asyncio.Lock()
* Modbus: patch for slow tcp equipment
When connecting, via Modbus-TCP, so some equipment (like the
huawei sun2000 inverter), they need time to prepare the protocol.
Solution is to add a asyncio.sleep(x) after the connect() and before
sending the first message.
Add optional parameter "delay" to Modbus configuration.
Default is 0, which means do not execute asyncio.sleep().
* Modbus: silence pylint false positive
pylint does not accept that a class construction __new__
can return a tuple.
* Modbus: move constants to const.py
Create const.py with constants only used in
the modbus integration.
Duplicate entries are removed, but NOT any entry that would
lead to a configuration change.
Some entries were the same but with different names, in this
case renaming is done.
Also correct the tests.
* Modbus: move connection error handling to ModbusHub
Connection error handling depends on the hub, not the
entity, therefore it is logical to have the handling in
ModbusHub.
All pymodbus call are added to 2 generic functions (read/write)
in order not to duplicate the error handling code.
Added property "available" to signal if the hub is connected.
* Modbus: CI cleanup
Solve CI problems.
* Modbus: remove close of client
close() no longer exist in the pymodbus library, use
del client instead.
* Modbus: correct review comments
Adjust code based on review comments.
* Modbus: remove twister dependency
Pymodbus in asyncio mode do not use twister but still throws a
warning if twister is not installed, this warning goes into
homeassistant.log and can thus cause confusion among users.
However installing twister just to avoid the warning is not
the best solution, therefore removing dependency on twister.
* Modbus: review, remove comments.
remove commented out code.
* Plum Lightpad - glowIntensity is represented as a float/percentage
Calculate brightness from the glowIntensity instead of the glowIntensity from brightness.
* Renamed `_glowIntensity` to `_glow_intensity`
* Added Rounding, converting to an int, min and max boxing
* Added codeowners to the Plum Lightpad manifest.json
* Config flow for elkm1
* As entity ids can now be changed, the “alarm_control_panel”
attribute “changed_by_entity_id” is now “changed_by_keypad”
and will show the name of the Elk keypad instead of the entity id.
* An auto configure mode has been introduced which avoids the
need to setup the complex include and exclude filters. This
functionality still exists when configuring from yaml for power
users who want more control over which entities elkm1 generates.
* restore _has_all_unique_prefixes
* preserve legacy behavior of creating alarm_control_panels that have no linked keypads when auto_configure is False
* unroll loop
* Add integration for Schluter
New integration for Schluter DITRA-HEAT thermostats. Interacts with Schluter API via py-schluter to implement climate platform.
* Fix for manifest issue on build
Removed unnecessary configurator logic
* Flake8 & ISort issues fixed
* Code review modifications for Schluter integration
- Removed unnecessary strings.json file
- Removed unnecessary DEFAULT_SCAN_INTERVAL from __init__.py
- Removed persistent notification for authentication error in __init__.py
- Removed string casts from log statements in __init__.py
- Removed unnecessary logging of entity creations in climate.py
- Removed unnecessary lookup for hvac_mode in climate.py
* Work started on Update Coordinator
* Further Coordinator work
* Update to DataUpdateCoordinator complete
* Flake8 fix
* Removal of unnecessary SchluterPlatformData
Coordinator also now using SCAN_INTERVAL
* Disable polling, use coordinator listeners
* Isort on climate.py
* Code review modifications
- Hass data stored under domain
- Since platform only likely to be climate, removed array, load explicitly
- Remove unnecessary fan mode implementation
* Switch to HVAC action for showing current heating status
* Isort fix
* HVAC Mode return list, set_hvac_mode function added
* __init__.py modifications from code review
* Climate.py code review modifications
- Device info property removed
- Write state function on set temp failure
- Add "available" property
- Delegate sync function in coordinator update to the executor
* Serial number as unique identifier
- Now using serial number & thermostat dictionary to protect against scenarios where a device is removed and enumerable index is no longer accurate
- Removed async_write_ha_state() from set temp exception, not needed
- Removed unnecessary SCAN_INTERVAL definition
* Linting
* Update homeassistant/components/schluter/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/schluter/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Changed timeout from config, load platform discover to None
* Proposed change for discover info issue
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* some sensors working in homeassistant
* bring up to date
* add codeowner
* update requirements
* overhaul data imports from api & sensor discovery
* remove print statement
* delete requirements_test_all
* add requrements_test_all.txt
* Update homeassistant/components/nextcloud/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/nextcloud/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* describe recursive function
* clarify that dict is returned
* remove requirements from requirements_test_all
* improve and simplify sensor naming
* add basic tests
* restore pre-commit config
* update requirements_test_all
* remove codespell requirement
* update pre-commit-config
* add-back codespell
* rename class variables as suggested by @springstan
* add dev branch to no-commit-to-branch git hook
Because my fork had the same 'dev' branch i wasn't able to push. Going forward I should probably name my branches differently.
* move config logic to __init__.py
* restore .pre-commit-config.yaml
* remove tests
* remove nextcloud test requirement
* remove debugging code
* implement binary sensors
* restore .pre-commit-config.yaml
* bump dependency version
* bump requirements files
* bump nextcloud reqirement to latest
* update possible exceptions, use fstrings
* add list of sensors & fix inconsistency in get_data_points
* use domain for config
* fix guard clause
* repair pre-commit-config
* Remove period from logging
* include url in unique_id
* update requirements_all.txt
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Config flow for doorbird
* Discoverable via zeroconf
* Fix zeroconf test
* add missing return
* Add a test for legacy over ride url (will go away when refactored to cloud hooks)
* Update homeassistant/components/doorbird/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* without getting the hooks its not so useful
* Update homeassistant/components/doorbird/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix copy pasta
* remove identifiers since its in connections
* self review fixes
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add support for Lutron Caseta occupancy/vacancy sensors
This follows updates to pylutron-caseta to add support for these
devices. This code works for me as a custom component in Home Assistant
Core with pylutron-caseta 0.6.0 (currently unreleased).
* black formatting
* Update requirements_all.txt
* Apply black formatting
* Resolve some review comments
* serial -> unique_id
* Black formatting
* Resolve linting errors
* Add code owner...
* Fix isort complaint
* Fix remaining isort complaints
* Update codeowners
* Resolve outstanding review comments
* Remove caseta_
* Modernize nuheat for new climate platform
* Home Assistant state now mirrors the
state displayed at mynewheat.com
* Remove off mode as the device does not implement
and setting was not implemented anyways
* Implement missing set_hvac_mode for nuheat
* Now shows as unavailable when offline
* Add a unique id (serial number)
* Fix hvac_mode as it was really implementing hvac_action
* Presets now map to the open api spec
published at https://api.mynuheat.com/swagger/
* ThermostatModel: scheduleMode
* Revert test cleanup as it leaves files behind.
Its going to be more invasive to modernize the tests so
it will have to come in a new pr
* Config flow for nuheat
* codeowners
* Add an import test as well
* remove debug
* Add new integration: pvpc_hourly_pricing
to add a sensor with the current hourly price of electricity in Spain.
Configuration is done by selecting one of the 3 reference tariffs, with
1, 2, or 3 billing periods.
* Features config flow, entity registry, RestoreEntity, options flow
to change tariff, manual yaml config as integration or sensor platform
* Cloud polling sensor with minimal API calls (3/hour at random times)
and smart retry; fully async
* Only 1 state change / hour (only when the price changes)
* At evening, try to download published tomorrow prices, to always store
prices info for a window of [3, 27] hours in the future.
* Include useful state attributes to program automations to be run
at best electric prices.
* Add spanish and english translations.
* Requires `xmltodict` to parse official xml file with hourly prices
for each day.
* Update requirements and add to codeowners
* Avoid passing in hass as a parameter to the entity
Instead, create time change listeners in async_added_to_hass and
call async_generate_entity_id before async_add_entities
* Fix lint issues
* Add tests for config & options flow
* Add tests for manual yaml config
with entity definition as integration and also as a sensor platform
* Fix placement of PLATFORM_SCHEMA and update generated config_flows
* Store prices internally linked to UTC timestamps
- to deal with days with DST changes
- and work with different local timezones
* Add availability to sensor
to 'expire' the sensor if there is no connection available
and current hour is not in the stored prices.
Also, turn off logging and retrying if prices can't be downloaded
repeatedly, by flagging `data_source_available` as False, so there is no
log-flood mess.
* Add more tests
- to cover behavior in DST changes and complete coverage of sensor logic
- to cover abort config flow
* fix linter
* Better handling of sensor availability and minor enhancements
- Emmit 1 error if data source is marked as unavailable
(after some retries), and be silent until cloud access is recovered,
then emmit 1 warning.
- Follow standard of camel_case keys in attributes
* Mock aiosession to not access real API, store fixture data
- Store a set of daily xml files to test sensor logic for all situations
- Mock time and session to run tests with stored API responses
- Add availability test to simulate a lost + recovery of cloud access,
checking that logging is reasonable: 1 error to flag the continued
disconnection + 1 warning in recovery.
* Change API endpoint to retrieve JSON data
and remove xmltodict from reqs.
It seems that this endpoint is more reliable than the XML.
* Adapt tests to new API endpoint
* Translate tariff labels to plain English
and sync the default timeout value for all ways of configuration.
* Relax logging levels to meet silver requirements
- 1 warning when becoming unavailable, another warning when recovered.
- Warnings for unexpected TimeoutError or ClientError
- Move the rest to debug level, leaving info for HA internals
Also reduce number of API calls from 3 to 2 calls/hour.
* Fix requirements
* Mod tests to work with timezone Atlantic/Canary
and fix state attributes for timezones != reference, by using 3 price
prefixes: 'price_last_day_XXh', 'price_next_day_XXh' and 'price_XXh',
all generated with local time (backend timezone)
* Try to fix CI tests
* Externalize pvpc data and simplify sensor.py
* add new `aiopvpc` to requirements
* Remove data parsing and price logic from here
* Replace some constant properties with class variables
* Simplify tests for pvpc_hourly_pricing
* Fix updater for options flow
* Updater always reloads
* `tariff` value comes 1st from entry.options, 2nd from entry.data
* Fix lint
* Bump aiopvpc
* Remove options flow and platform setup
- Remove PLATFORM_SCHEMA and async_setup_platform
- Generate config_entry.unique_id with tariff instead of entity_id, in flow step.
- Remove TariffSelectorConfigFlow
- Adapt tests to maintain full coverage
* Fix docstring on test
and rename SENSOR_SCHEMA to SINGLE_SENSOR_SCHEMA to avoid confusion
* Remove timeout manual config, fix entry.options usage, simplify unique_id
* Simplify tests
- No need for a test_setup now, as platform setup is removed and integration
setup is already used in `test_availability`
- Simplified `_process_time_step`: only one async_fire(EVENT_TIME_CHANGED)/hour
* Fix possible duplicated update
when source is not available.
* Do not access State last_changed for log messages
* Do not update until entity is added to hass
and call to async_update after 1st download or when recovering access, so
async_write_ha_state is not called twice on those.
* minor changes
* Rename method to select current price and make it a callback
* Add a config flow for myq
* Discovered by homekit
* Fix gates being treated as garage doors
* Offline devices now show as unavailable
* Homekit flow
* strip out icon
* return -> raise
* Merge nexia
* Restore original work
* Merge cleanups
* config flow
* Add config flow
* Add missing files
* Fix import of old yaml config
* More cleanups from self review
* Additional self review
* Update homeassistant/components/nexia/services.yaml
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix io in event loop
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* avoid using ternary statements if they span multiple
* Cleanup strings and remove unneeded attributes
* more cleanup
* more cleanup of yaml
* remove coordinator boiler plate
* nuke services for now for the inital pr, add back later
* remove copy pasta
* this can be reduced more
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* review
* comments
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* more review adjustments
* nuke unused constants
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* map states
* add update
* zone id is unique
* Fix humidfy check
* target_humidity should be a property instead of in attributes
* remove aux heat as its already there
Co-authored-by: Ryan Nazaretian <ryannazaretian@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Config flow for harmony
* Fixes unique ids when using XMPP
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Find the unique id for the config flow
* move shutdown to init
* Add test for ssdp (still failing)
* Fix ssdp test
* Add harmony to MIGRATED_SERVICE_HANDLERS (this is a breaking change)
* more cleanups
* use unique id for the config file
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* set alarmdecoder code_arm_required to False
* rm unnecessary f strings
* add code_arm_required config option
* add self as codeowner :-)
* add self as codeowner the right way
* Catch asyncio.TimeoutError, show a proper message instead
* Throttle updates to max once per 30s
* Change code owner
* Fix CODEOWNERS + linting
* Warn on connection timeout
* Do not fail when a user has a controller with shared access on their account
* Add config flow for rachio
Also discoverable via homekit
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Split setting the default run time to an options flow
Ensue the run time coming from yaml gets imported into the option flow
Only get the schedule once at setup instead of each zone (was hitting rate limits)
Add the config entry id to the end of the webhook so there is a unique hook per config entry
Breakout the slew of exceptions rachiopy can throw into RachioAPIExceptions
Remove the base url override as an option for the config flow
Switch identifer for device_info to serial number
Add connections to device_info (mac address)
* rename to make pylint happy
* Fix import of custom_url
* claim rachio
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add config flow to Freebox
* Add manufacturer in device_tracker info
* Add device_info to sensor + switch
* Add device_info: connections
* Add config_flow test + update .coveragerc
* Typing
* Add device_type icon
* Remove one error log
* Fix pylint
* Add myself as CODEOWNER
* Handle sync in one place
* Separate the Freebox[Router/Device/Sensor] from __init__.py
* Add link step to config flow
* Make temperature sensors auto-discovered
* Use device activity instead of reachablility for device_tracker
* Store token file in .storage
Depending on host if list of Freebox integration on the future without breaking change
* Remove IP sensors + add Freebox router as a device with attrs : IPs, conection type, uptime, version & serial
* Add sensor should_poll=False
* Test typing
* Handle devices with no name
* None is the default for data
* Fix comment
* Use config_entry.unique_id
* Add async_unload_entry with asyncio
* Add and use bunch of data size and rate related constants (#31781)
* Review
* Remove useless "already_configured" error string
* Review : merge 2 device & 2 sensor classes
* Entities from platforms
* Fix unload + add device after setup + clean loggers
* async_add_entities True
* Review
* Use pathlib + refactor get_api
* device_tracker set + tests with CoroutineMock()
* Removing active & reachable from tracker attrs
* Review
* Fix pipeline
* typing
* typing
* typing
* Raise ConfigEntryNotReady when HttpRequestError at setup
* Review
* Multiple Freebox s
* Review: store sensors in router
* Freebox: a sensor story
* Add griddy integration
* Griddy is a wholesale power provider in Texas
* Supports all four load zones in Texas
* Provides real time power price which is useful for automations to handle demand response
* Update homeassistant/components/griddy/sensor.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/griddy/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Add ability request updated via entity update service.
* Improve error message about already configured
* Remove DEVICE_CLASS_POWER since we do not have a device class for cost
* remove setdefault that was left from previous refactor
* More detail on data naming
* Bump translation for testing
* git add the config flow tests
* s/PlatformNotReady/ConfigEntryNotReady/
* Review items
* git add the other missing file
* Patch griddypower
* reduce
* adjust target
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Breakout tado zone code into a single place
* Resolve various incorrect states and add tests for known tado zone states
* Fix home and away presets
* Upgrade to PyTado 0.4.0 which improves http performance and fixes setting fan speed.
* Write state instead of calling for an update
* adjust codeowners
* Add tests for michael's tado and fix heatingPower.value
* Guards are much cleaner
* Adjust per review
* Remove hass passing
* Emoncms API provides a Unit
The EmonCMS API has been amended to include a 'unit' as part of it's payload. By using this information, all the sensors can be created without the need for individual sensors to be setup by type.
The change is backward compatible so if a unit type has been specified in the configuration, this will be used by default.
If no unit is pecified either by the Home Assistant configuration, or the Emoncms API, then the default of W will be used as before.
* Update sensor.py
Check the 'unit' key is in the API call. Older systems may not have that key in the payload.
* Modified approach with new configuration item
* Removed new config item
Removed the configuration item. The integration attempts to get the unit from the API.
If this fails *or* the unit key of the API is blank, either the specified unit, or the default will be used.
If approved, documentation will be updated.
* Update homeassistant/components/emoncms/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/emoncms/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Apply suggestions from code review
* Apply suggestions from code review v2
* Update homeassistant/components/emoncms/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update sensor.py
Update `config_unit`
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>