Erik Montnemery
3f910b49ae
Fix sensor unit conversion ( #87978 )
2023-02-13 10:08:07 +01:00
J. Nick Koston
85649ec589
Reduce overhead to see if an entity is recorded ( #87912 )
...
A significant chunk of list_statistic_ids was checking if the entity
was recorded because it had to get the recorder instance over and
over
2023-02-11 23:21:16 -05:00
J. Nick Koston
c35661947a
Optimize fetching statistics by avoiding timestamp conversions ( #87845 )
...
* Optimize fetching statistics by avoiding timestamp conversions
* remove accidential unrelated change
* fix test
* recreate so we handle timezone changes
2023-02-10 11:26:46 -05:00
Erik Montnemery
cc564026fa
Move EntityCategory to homeassistant.const ( #87792 )
...
* Move EntityCategory to homeassistant.const
* Fix more imports
2023-02-09 20:15:37 +01:00
Franck Nijhof
51a9f65a01
Clean up unnecessary registry mocks from Core tests ( #87726 )
2023-02-08 13:28:44 -06:00
epenet
4142f0d15d
Add return type to tests without arguments ( #87613 )
...
* Add return type to tests without arguments
* Black
* Cancel fixture amends
2023-02-07 14:20:06 +01:00
Erik Montnemery
bcc1aa03b4
Move sensor rounding to frontend ( #87330 )
...
* Move sensor rounding to frontend
* Update integrations
* Add comment
2023-02-04 14:54:36 -05:00
Franck Nijhof
bf482eee24
Extend state class sensor warnings with expected values ( #87294 )
2023-02-04 11:49:24 +01:00
Erik Montnemery
4d4fb2477d
Optionally update sensor units when unit system is changed ( #83851 )
2023-02-03 16:30:50 +01:00
epenet
810367b757
Fix `can not` typo ( #87254 )
2023-02-03 11:37:16 +01:00
epenet
cc469ab9a9
Add unit conversion to Power sensors ( #87136 )
...
* Add missing PowerConverter to UNIT_CONVERTERS
* Adjust tests
2023-02-02 10:27:12 +01:00
Jan Bouwhuis
2e16b7e2df
Add numeric_state_expected property to Sensor class ( #87013 )
...
* Add is_numeric property to Sensor class
* Follw up comment
* Update homeassistant/components/sensor/__init__.py
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Update homeassistant/components/sensor/__init__.py
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Tests and corrections
* Simplify converion check
* Correct custom device class handling
* Update homeassistant/components/sensor/__init__.py
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* rename to numeric_state_expected
* Replace with new const
* Adjust docstr
* Update homeassistant/components/sensor/__init__.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Move to const
* Correct logic
* Do not use bool
* Adjust docstr must be numeric
* remote state from docstr
* protect numeric_state_expected
* Use try_parse_enum for custom class check
* Remove redundant type hints
---------
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-02-01 18:45:13 +01:00
Erik Montnemery
d4489faa68
Drop minus sign on negative zero ( #86939 )
...
* Drop minus sign on negative zero
* Add tests
2023-01-30 08:31:27 -05:00
J. Nick Koston
c612a92cfb
Use python defaults for comparing State, LazyState, and Event objects ( #86856 )
...
* Speed up comparing State and Event objects
Use default python implementation for State and Event __hash__ and __eq__
The default implementation compared based on the id() of the object
which is effectively what we want here anyways. These overrides are
left over from the days when these used to be attrs objects
By avoiding implementing these ourselves all of the equality checks
can happen in native code
* tweak
* adjust tests
* write out some more
* fix test to not compare objects
* more test fixes
* more test fixes
* correct stats tests
* fix more tests
* fix more tests
* update sensor recorder tests
2023-01-29 13:31:43 -05:00
Franck Nijhof
e4a78420b8
Enable Ruff PT013 ( #86757 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-01-27 09:09:46 +01:00
Joakim Plate
1b97a51b5e
Print expected device class units in error log ( #86125 )
2023-01-25 20:45:50 +01:00
Erik Montnemery
086a6460ef
Allow customizing sensor state precision ( #86074 )
...
* Allow customizing sensor precision
* Don't convert integer strings to floats
* Tweak converting sensor state to number
* Drop default rounding to 2 decimals
* Adjust test
* Tweak rounding, improve test coverage
* Don't convert to a number if not necessary
* Raise if native_precision is set and state is not numeric
* Address review comments
* Address comments, simplify
* Don't call property twice
* Make exception more helpful
2023-01-25 08:55:46 +01:00
epenet
30bf0634fe
Add per-file-ignore to pylint ( #86289 )
2023-01-22 17:26:24 +01:00
Franck Nijhof
0a367359f4
Add sensor state class validation for device classes ( #84402 )
...
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2023-01-16 14:31:24 +01:00
epenet
3179101fbc
Warn if numeric sensors have an invalid value ( #85863 )
...
Co-authored-by: mib1185 <mail@mib85.de>
2023-01-16 11:00:07 +01:00
Michael
9709391b52
Replace the usage of unit constants by enumerations in Tests [s-u] ( #85937 )
2023-01-16 09:00:27 +01:00
Erik Montnemery
e4e96d3394
Fix sensor test ( #85740 )
2023-01-12 12:21:19 +01:00
Erik Montnemery
305fb86d50
Add WS command sensor/device_class_convertible_units ( #85213 )
...
* Add WS command sensor/device_class_units
* Rename new command to device_class_convertible_units
2023-01-12 09:31:06 +01:00
Erik Montnemery
b0d4b73874
Add unitless unit converter ( #85694 )
...
* Add unitless unit converter
* Adjust type hints
* Adjust tests
* Rename to UnitlessRatioConverter
2023-01-12 09:20:00 +01:00
epenet
9eb06fd59d
Simplify sensor state validation ( #85513 )
2023-01-10 11:52:29 +01:00
Erik Montnemery
72c9ca2567
Update sensor test ( #85522 )
2023-01-09 14:26:52 +01:00
Franck Nijhof
f8fa676ac8
Do not validate device classes when entity state is unknown ( #84860 )
2022-12-30 13:07:49 -05:00
Franck Nijhof
c832982d94
Add sensor unit of measurement validation for device classes ( #84366 )
2022-12-21 16:14:11 +01:00
epenet
f4c13645d2
Add support for CCF volume unit ( #84029 )
2022-12-19 14:57:04 +01:00
epenet
0c9a78fb8e
Use tuple in test parametrization ( #83379 )
2022-12-06 09:46:10 +01:00
Franck Nijhof
762eb57636
Validate state class and unit of measurement for non-numeric sensors ( #83344 )
...
* Validate state class and unit of measurement for non-numeric sensors
* Remove duration
* Fix rest tests
2022-12-06 00:07:02 +01:00
Erik Montnemery
67875b99a3
Refactor support for integrations to drop custom unit conversion ( #83228 )
...
* Refactor support for integrations to drop custom unit conversion
* Fix lying comment
* Address review comment
2022-12-05 16:12:37 +01:00
Franck Nijhof
ce00f093d6
Add enum device_class and state options property to sensor entities ( #82489 )
2022-12-02 09:11:15 +01:00
Erik Montnemery
a038314d8b
Add display unit to WS recorder/get_statistics_metadata ( #82870 )
2022-11-28 13:46:57 -05:00
Erik Montnemery
b6586d5c34
Align number and sensor device classes ( #81909 )
...
* Align number and sensor device classes
* Add tests
* Tweak tests
2022-11-17 14:00:28 +01:00
Erik Montnemery
607a0e7697
Reduce size of get_statistics_during_period WS API response ( #82131 )
2022-11-16 17:36:30 +01:00
Erik Montnemery
7aa4654eb4
Improve docstring for sensor testcase ( #81875 )
2022-11-09 23:59:58 +01:00
Erik Montnemery
a4310d2085
Allow integrations to drop custom unit conversion ( #81005 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-10-26 15:11:28 -04:00
Erik Montnemery
352976fd1d
Add rules for converting volumes ( #80951 )
...
* Add rules for converting volumes
* Use SensorDeviceClass in new tests
* Tweak tests
* Update flo tests
* Update sensor tests
2022-10-26 10:29:33 +02:00
Erik Montnemery
3d3349240f
Don't trigger statistics issues when sensor units are equivalent ( #80099 )
2022-10-25 09:50:01 +02:00
Erik Montnemery
6979cd95b0
Add suggested_unit_of_measurement attribute to sensors ( #80638 )
...
* Add suggested_unit_of_measurement attribute to sensors
* Lazy calculation of initial entity options
* Add type alias for entity options
* Small tweak
* Add tests
* Store suggested_unit_of_measurement in its own option key
* Adapt to renaming of IMPERIAL_SYSTEM
* Fix rebase mistakes
* Apply suggestions from code review
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2022-10-24 16:08:02 +02:00
epenet
e84e5f134e
Use US_CUSTOMARY_SYSTEM in tests ( #80658 )
...
* Use US_CUSTOMARY_SYSTEM in tests
* Don't update test_unit_system
2022-10-20 15:42:23 +02:00
Erik Montnemery
31a787558f
Ensure recorder test fixture is setup before hass fixture ( #80528 )
...
* Ensure recorder test fixture is setup before hass fixture
* Adjust more tests
2022-10-19 07:58:47 +02:00
Erik Montnemery
918243b7c8
Improve some sensor statistics tests ( #80087 )
2022-10-11 08:57:08 -04:00
Erik Montnemery
a391b8dd9d
Support correcting sensor volume unit ( #80081 )
2022-10-11 13:51:28 +02:00
Erik Montnemery
69d935b7bd
Teach long term statistics that unit 'rpm' is same as 'RPM' ( #80012 )
...
* Teach long term statistics that unit 'rpm' is same as 'RPM'
* Add tests
2022-10-11 10:32:01 +02:00
Erik Montnemery
aa5575ba65
Only validate sensors in sensor.recorder.validate_statistics ( #79749 )
2022-10-06 21:17:46 +02:00
Erik Montnemery
0a59d37e62
Correct how unit used for statistics is determined ( #79725 )
2022-10-06 14:01:54 -04:00
Erik Montnemery
e93deaa8aa
Simplify long term statistics by always supporting unit conversion ( #79557 )
2022-10-03 21:50:05 -04:00
Erik Montnemery
a2e3978d53
Don't normalize units of long term statistics ( #79320 )
...
* Don't normalize units of long term statistics
* Update statistics.py
2022-10-03 21:42:44 +02:00
Erik Montnemery
2de273500e
Remove state_unit_of_measurement from metadata DB table ( #79370 )
...
* Remove state_unit_of_measurement from metadata DB table
* Adjust test
2022-10-01 18:55:00 +02:00
Erik Montnemery
bc2dffabc4
Improve naming of units used in statistics ( #79276 )
2022-09-30 08:38:44 +02:00
epenet
5389ff3253
Add new weight device class ( #79185 )
2022-09-28 12:13:49 +02:00
Erik Montnemery
9084beda32
Keep storing statistics for sensors which change device class ( #79155 )
2022-09-27 14:33:28 -04:00
epenet
12e4d18038
Add volume to SensorDeviceClass ( #77960 )
...
* Add volume to SensorDeviceClass
* Adjust recorder
* Adjust tests
* Adjust sensor UNIT_CONVERTERS
* Adjust recorder
* Update strings.json
2022-09-27 19:37:52 +02:00
epenet
7c448416e1
Add speed to SensorDeviceClass ( #77953 )
...
* Add speed to SensorDeviceClass
* Adjust recorder
* Adjust tests
* Adjust sensor UNIT_CONVERTERS
* Add tests
* Add websocket tests
* Update strings.json
2022-09-27 17:19:34 +01:00
epenet
bfcc18e5b8
Add distance to SensorDeviceClass ( #77951 )
...
* Add distance to SensorDeviceClass
* Adjust recorder
* Adjust tests
* Adjust recorder
* Update __init__.py
* Update test_websocket_api.py
* Update test_websocket_api.py
* Update test_websocket_api.py
* Update strings.json
* Fix tests
* Adjust docstring
2022-09-27 15:34:00 +01:00
Erik Montnemery
5bcef1c7ce
Indicate in statistics issues when units can be converted ( #79121 )
2022-09-27 13:51:38 +02:00
Erik Montnemery
dae00c70de
Allow selecting display unit when fetching statistics ( #78578 )
2022-09-20 17:43:57 -04:00
Erik Montnemery
dd20a7ea62
Display statistics in the source's unit ( #78031 )
2022-09-15 12:01:24 -04:00
Ernst Klamer
db4391adff
Add device class moisture ( #77666 )
2022-09-01 11:47:47 -04:00
Erik Montnemery
008ac8d10d
Improve statistics metadata WS API ( #77209 )
2022-08-31 11:30:45 +02:00
Erik Montnemery
4655ed995e
Fix resetting of attributes in EntityRegistry.async_get_or_create ( #77516 )
...
* Fix resetting of attributes in EntityRegistry.async_get_or_create
* Fix typing
* Fix resetting config entry
* Improve test
* Update tests
2022-08-30 21:07:50 +02:00
Erik Montnemery
2497ff5a39
Add energy and gas sensors to demo integration ( #77206 )
2022-08-24 11:09:23 +02:00
Erik Montnemery
606d544157
Use recorder get_instance function to improve typing ( #75567 )
2022-07-22 11:58:26 +02:00
Franck Nijhof
7adb0f0ef5
Custom component -> Custom integration ( #75404 )
2022-07-18 22:10:22 +02:00
Paulus Schoutsen
b62c0dcb32
Guard invalid data sensor significant change ( #74369 )
2022-07-03 22:03:13 -07:00
Erik Montnemery
baa810aabb
Improve warnings for datetime and date sensors with invalid states ( #73598 )
2022-06-17 12:17:13 +02:00
Erik Montnemery
5f2b4001f3
Separate recorder database schema from other classes ( #72977 )
...
* Separate recorder database schema from other classes
* fix logbook imports
* migrate new tests
* few more
* last one
* fix merge
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-07 14:41:43 +02:00
Erik Montnemery
edd7a3427c
Remove support for databases without ROW_NUMBER ( #72092 )
2022-05-18 21:52:38 -05:00
J. Nick Koston
7c9c0e911a
Move do_adhoc_statistics to recorder test helpers ( #71544 )
2022-05-08 12:45:57 -07:00
J. Nick Koston
29bda196b5
Break apart recorder into tasks and core modules ( #71222 )
2022-05-02 21:53:56 -07:00
Erik Montnemery
3016b5fbfc
Use recorder fixtures and helpers in tests ( #70773 )
2022-04-26 06:08:00 -10:00
Erik Montnemery
28ebab9c5a
Simplify waiting for recorder in tests ( #70647 )
2022-04-25 12:04:47 +02:00
Erik Montnemery
982e314de6
Use recorder_mock in tests ( #70363 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-04-22 19:29:44 -10:00
Erik Montnemery
7b1e0e42f7
Allow device conditions and triggers for unitless sensors ( #70337 )
2022-04-21 09:31:15 -07:00
Erik Montnemery
de9f39745b
Fix race in _process_recorder_platform ( #70339 )
...
* Fix race in _process_recorder_platform
* Update homeassistant/components/recorder/__init__.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update tests
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-04-21 09:03:05 +02:00
Erik Montnemery
5e50a8abd5
Mark device triggers from hidden or auxiliary entities as secondary ( #70335 )
...
* Mark device triggers from hidden or auxiliary entities as secondary
* Update tests
2022-04-21 08:01:32 +02:00
Erik Montnemery
150f173eed
Mark device conditions from hidden or auxiliary entities as secondary ( #70333 )
2022-04-20 21:41:59 +02:00
Diogo Gomes
03874d1b65
Correct state restoring for Utility Meter sensors ( #66851 )
...
* fix merge
* backward compatability
* add status
* increase coverage
* increase further the coverage
* adds support for Decimal in SensorExtraStoredData
* more precise
* review
* don't restore broken last_reset
* increase coverage
* address review comments
* stale
* coverage increase
* Update homeassistant/components/utility_meter/sensor.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* catch corrupt files and respective tests
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-04-19 09:01:52 +02:00
Erik Montnemery
ba07663e7d
Fix adjusting statistics in ft³ ( #69913 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-04-12 14:08:38 -07:00
Erik Montnemery
80ff1ecb2a
Fix adjusting 5-minute statistics ( #69921 )
2022-04-12 18:10:17 +02:00
Erik Montnemery
e830032b33
Remove deprecated temperature conversion of non temperature sensors ( #69069 )
2022-04-04 20:02:40 +02:00
Erik Montnemery
87100c2517
Drop deprecated support for unit_of_measurement from sensor ( #69061 )
2022-04-01 08:22:19 -07:00
Erik Montnemery
9471e4d77c
Don't override temperature unit for sensors ( #68910 )
2022-03-30 10:15:00 -07:00
Erik Montnemery
91f6e58e9a
Allow customizing unit for temperature and pressure sensors ( #64366 )
...
* Allow customizing unit for temperature and pressure sensors
* pylint
* Adjust google_wifi tests
* Address review comments and add tests
* Improve rounding when scaling
* Tweak rounding
* Further tweak rounding
* Allow setting entity options with config/entity_registry/update
* Address review comments
* Tweak tests
* Load custom unit when sensor is added
* Override async_internal_added_to_hass
* Adjust tests after rebase
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Address review comments
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-30 15:43:04 +02:00
Erik Montnemery
61cc8e32f3
Include has_mean + has_sum in statistics metadata WS response ( #68546 )
...
* Include has_mean + has_sum in statistics metadata WS response
* Don't include has_mean/has_sum in history/list_statistic_ids
* Adjust tests
* Do include has_mean/has_sum in history/list_statistic_ids
2022-03-24 10:12:01 +01:00
Erik Montnemery
b5c5da96ac
Add WS API to adjust incorrect energy statistics ( #65147 )
...
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-03-22 15:18:30 -07:00
Erik Montnemery
cf4033b1bc
Simplify time zone setting in tests ( #68330 )
...
* Simplify timezone setting in tests
* Fix typo
* Adjust caldav tests
* Adjust input_datetime tests
* Adjust time_date tests
* Adjust tod tests
* Adjust helper tests
* Adjust recorder tests
* Adjust risco tests
* Adjust aemet tests
* Adjust flux tests
* Adjust forecast_solar tests
* Revert unnecessary change in forecast_solar test
* Adjust climacell tests
* Adjust google tests
* Adjust sensor tests
* Adjust sonarr tests
* Adjust template tests
* Adjust zodiac tests
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-03-20 10:25:15 +01:00
Erik Montnemery
009b31941a
Support restoring SensorEntity native_value ( #66068 )
2022-02-08 14:00:26 -08:00
Franck Nijhof
e242796394
Remove deprecated format for date(time) sensors ( #65734 )
2022-02-04 23:42:29 -08:00
Erik Montnemery
13abac101b
Drop legacy support for sensor sum statistics ( #63884 )
2022-01-11 13:59:08 +01:00
Erik Montnemery
3083f059cc
Drop last_reset attribute for non 'total' sensors ( #63880 )
...
* Drop last_reset attribute for non 'total' sensors
* Adjust MQTT tests
* Add exception for utility_meter
* Rewrite exception for utility_meter
* Add comment in utility_meter
* Tweak comment
2022-01-11 13:58:35 +01:00
Erik Montnemery
8e8e49d3e7
Add sensor device classes for apparent and reactive power ( #62010 )
2021-12-23 10:29:38 +01:00
Erik Montnemery
6151bbe5c8
Improve debug log when warning about a dip in total_increasing sensor ( #62501 )
2021-12-21 17:22:40 +01:00
Erik Montnemery
684c380ce2
Use SensorDeviceClass enum in sensor device automations ( #62480 )
2021-12-21 14:07:01 +01:00
Ville Skyttä
ea58432721
Use DeviceAutomationType in tests/components/[s-z]* ( #62450 )
2021-12-21 11:56:00 +01:00
Robert Hillis
07532c3153
Use enums in sensor tests ( #62152 )
2021-12-17 11:07:18 +01:00
Erik Montnemery
aa36dde148
Correct rest sensor configured to generate timestamps ( #61429 )
2021-12-10 09:59:27 -08:00
Erik Montnemery
49a27e12ad
Add support to entity registry for overriding device_class ( #59985 )
2021-11-22 08:38:06 -08:00