Commit Graph

39750 Commits (fdb7a23171fd5cc9f18a0fef0294c95f1a0bbc31)

Author SHA1 Message Date
Erik Montnemery a267045a31
Migrate open_meteo to native_* (#73910) 2022-06-25 01:05:31 +02:00
epenet 9b88b77b66
Use attributes in wilight (#73898)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-25 00:55:01 +02:00
epenet 0461eda83b
Adjust demo cover position methods (#73944) 2022-06-25 00:34:49 +02:00
J. Nick Koston 32e0d9f47c
Speed up generation of template states (#73728)
* Speed up generation of template states

* tweak

* cache

* cache hash

* weaken

* Revert "weaken"

This reverts commit 4856f50080.

* lower cache size as it tends to be the same ones over and over

* lower cache size as it tends to be the same ones over and over

* lower cache size as it tends to be the same ones over and over

* cover

* Update homeassistant/helpers/template.py

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>

* id reuse is possible

* account for iterting all sensors

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-06-24 17:28:26 -04:00
Paulus Schoutsen 57efa9569c
Cache is_supported for Google entities (#73936) 2022-06-24 17:05:36 -04:00
J. Nick Koston 44da543ca0
Bump nexia to 2.0.0 (#73935) 2022-06-24 09:59:41 -05:00
J. Nick Koston 1866a1e925
Handle non-str keys when storing json data (#73958) 2022-06-24 09:59:01 -05:00
epenet b880a05e45
Fix type hints in zha remaining channels (#73778)
* Fix hvac channel type hints

* Fix security channel type hints

* Fix homeautomation channel type hints

* Fix type hints in zha base channel

* Adjust select entity

* Remove unused arg
2022-06-24 10:35:38 -04:00
J. Nick Koston f29cc33fa0
Fix selecting entity_ids and device_ids in events with MySQL and PostgreSQL with logbook (#73918)
* Fix selecting entity_ids and device_ids in events with MySQL and PostgreSQL

Fixes #73818

* add cover
2022-06-24 15:43:35 +02:00
epenet 6cafcb016f
Adjust rfxtrx cover type hints (#73947) 2022-06-24 10:22:40 +02:00
J. Nick Koston 2f78faa718
Make aiohttp mockers aware of the json loads kwarg (#73939) 2022-06-24 08:44:35 +02:00
Rami Mosleh d1708861db
Add config flow for `simplepush` (#73471)
* Add config flow for `simplepush`

* fix warning message

* fix typos

* Add importing yaml config

* patch integration setup

* Add check for errrors raised by the library

* fix coverage

* Adjust comment and logging message

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-24 08:39:48 +02:00
epenet a92ab7a669
Adjust CoverEntity function type hints in components (#73912)
Adjust CoverEntity functions in components
2022-06-24 06:40:26 +02:00
Zack Barett 307666da7f
Bump Frontend to 20220624.0 (#73938) 2022-06-23 22:51:31 -05:00
Christopher Bailey e4a770984d
Bump version of pyunifiprotect to 4.0.8 (#73934) 2022-06-23 21:50:39 -05:00
J. Nick Koston e5c40d58ff
Add roku 3820X model to discovery (#73933) 2022-06-23 21:13:43 -05:00
GitHub Action c607994fbe [ci skip] Translation update 2022-06-24 00:23:27 +00:00
Raman Gupta 768e53ac2d
Add zwave_js/get_any_firmware_update_progress WS cmd (#73905) 2022-06-23 20:13:37 -04:00
J. Nick Koston 28dd92d928
Fix logbook state query with postgresql (#73924) 2022-06-23 23:35:10 +02:00
0bmay 3058a432a5
Bump py-canary to 0.5.3 (#73922) 2022-06-23 23:33:03 +02:00
Erik Montnemery 9b8c3e37bb
Improve group tests (#73630) 2022-06-23 21:38:17 +02:00
epenet 186141ee4d
Use attributes in keba locks and binary sensors (#73894)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-23 21:35:05 +02:00
avee87 8865a58f74
Improve Glances entity descriptions, add long term statistics (#73049) 2022-06-23 21:34:08 +02:00
epenet 0df0533cd4
Use attributes in smarty fan (#73895) 2022-06-23 21:20:42 +02:00
tbertonatti 03f0916e7c
Add embed image parameter for Discord notify (#73474) 2022-06-23 21:02:48 +02:00
Erik Montnemery e57f34f0f2
Migrate openweathermap to native_* (#73913) 2022-06-23 21:01:08 +02:00
J. Nick Koston 00a79635c1
Revert "Remove sqlalchemy lambda_stmt usage from history, logbook, and statistics (#73191)" (#73917) 2022-06-23 13:59:55 -05:00
J. Nick Koston 5c193323b2
Bump aiohomekit to 0.7.18 (#73919)
Changelog: https://github.com/Jc2k/aiohomekit/compare/0.7.17...0.7.18
2022-06-23 20:43:56 +02:00
Erik Montnemery 01606c34aa
Correct handling of weather forecast (#73909) 2022-06-23 20:34:16 +02:00
J. Nick Koston fd9fdc6283
Fix error reporting with unserializable json (#73908) 2022-06-23 20:32:45 +02:00
Robert Svensson b3b4707579
Fix deCONZ group state regression (#73907) 2022-06-23 20:26:51 +02:00
J. Nick Koston edb386c736
Switch frontend to use json helper (#73874) 2022-06-23 20:19:13 +02:00
J. Nick Koston 3d59088a62
Bump sqlalchemy to 1.4.38 (#73916)
Changes: https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.38
2022-06-23 14:13:42 -04:00
Erik Montnemery 17d839df79
Set codeowner of weather to @home-assistant/core (#73915) 2022-06-23 19:50:46 +02:00
epenet e874ba2a42
Improve CoverEntity typing (#73903) 2022-06-23 16:48:49 +02:00
epenet 3c82c718cb
Improve typing in fans and locks (#73901) 2022-06-23 16:34:40 +02:00
Raman Gupta ff7d840a6c
Bump zwave-js-server-python to 0.39.0 (#73904) 2022-06-23 16:13:36 +02:00
kingy444 95abfb5748
Powerview polling tdbu (#73899) 2022-06-23 08:37:28 -05:00
J. Nick Koston 8015bb98a9
Switch recorder and templates to use json helper (#73876)
- These were using orjson directly, its a bit cleaner
  to use the helper so everything is easier to adjust
  in the future if we need to change anything about
  the loading
2022-06-23 14:32:26 +02:00
J. Nick Koston 2742bf86e3
Switch mqtt to use json helper (#73871)
* Switch mqtt to use json helper

* whitespace
2022-06-23 14:29:09 +02:00
epenet 0787ee1345
Use attributes in comfoconnect fan (#73892) 2022-06-23 12:42:05 +02:00
rikroe b4cc9367cf
Bump bimmer_connected to 0.9.5 (#73888)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-23 12:18:01 +02:00
epenet 48bd7cf5e1
Add missing ToggleEntity type hints in fans (#73887) 2022-06-23 12:01:05 +02:00
epenet a3ce80baed
Improve nuki type hints (#73891) 2022-06-23 11:44:25 +02:00
Paulus Schoutsen 10b083bbf5
Sync empty entities when Google is disabled in cloud (#72806) 2022-06-23 11:41:34 +02:00
Rami Mosleh 0dd181f922
Remove deprecated YAML for Islamic prayer times (#72483) 2022-06-23 11:35:47 +02:00
Hans Oischinger 4ee92f3953
Improve hvac_mode compatibility of vicare (#66454) 2022-06-23 11:34:34 +02:00
G Johansson 90e1fb6ce2
Weather unit conversion (#73441)
Co-authored-by: Erik <erik@montnemery.com>
2022-06-23 10:48:30 +02:00
henryptung bccec77e19
Fix Broadlink discovery for new RM Mini3 (#73822) 2022-06-23 09:38:39 +02:00
gigatexel 303ce715ed
Adapt DSMR integration to changes in dsmr_parser for Belgian/Dutch meters (#73817) 2022-06-23 09:15:16 +02:00
J. Nick Koston 164eba7e5d
Switch loader to use json helper (#73872) 2022-06-22 21:57:38 -05:00
J. Nick Koston b5f6f785d5
Switch mobile_app to use the json helper (#73870) 2022-06-22 22:32:48 -04:00
Christopher Bailey 168065a9a0
Bump version of pyunifiprotect to 4.0.7 (#73875) 2022-06-22 21:10:41 -05:00
J. Nick Koston 6c41a10142
Switch api and event stream to use json helper (#73868) 2022-06-22 20:13:02 -05:00
J. Nick Koston ab30d38469
Switch rest to use the json helper (#73867) 2022-06-22 20:12:48 -05:00
GitHub Action 33c263d09b [ci skip] Translation update 2022-06-23 00:20:13 +00:00
Christian Rodriguez 3ce5b05aa5
Add bypassed custom attribute to NX584ZoneSensor (#71767) 2022-06-23 01:59:59 +02:00
Waldemar Tomme e855529f73
Fix fints integration (#69041) 2022-06-23 01:08:51 +02:00
Alex Groleau fe54db6eb9
Improve Tuya integration fan controller support (#73062) 2022-06-23 00:58:36 +02:00
jjlawren b0f4b3030f
Extend timeouts for Spotify and Plex playback on Sonos (#73803) 2022-06-23 00:58:10 +02:00
Robert Svensson aef69f87f4
More enums in deCONZ Alarm Control Panel (#73800) 2022-06-22 23:02:34 +02:00
Christopher Bailey 01a9367281
UniFi Protect cleanup and enable unadopted devices (#73860) 2022-06-22 15:57:21 -05:00
Robert Hillis 5c5fd746fd
Add digital loggers as a Belkin supported brand (#72515) 2022-06-22 22:38:45 +02:00
Franck Nijhof a8a033681f
Automatically onboard DiscoveryFlows (#73841) 2022-06-22 22:37:49 +02:00
Franck Nijhof ec119ae718
Automatically onboard WLED (#73853) 2022-06-22 22:37:36 +02:00
Franck Nijhof 320ef55085
Automatically onboard Elgato (#73847) 2022-06-22 22:37:25 +02:00
epenet ad7da9803f
Adjust lutron_caseta type hints (#73840)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-06-22 22:37:01 +02:00
Khole 73c54b14d0
Hive bump pyhiveapi version (#73846) 2022-06-22 22:20:47 +02:00
epenet 75cfe845e1
Adjust freedompro type hints (#73839) 2022-06-22 22:17:50 +02:00
J. Nick Koston 8b067e83f7
Initial orjson support take 3 (#73849)
* Initial orjson support take 2

Still need to work out problem building wheels

--

Redux of #72754 / #32153 Now possible since the following is solved:
ijl/orjson#220 (comment)

This implements orjson where we use our default encoder.  This does not implement orjson where `ExtendedJSONEncoder` is used as these areas tend to be called far less frequently.  If its desired, this could be done in a followup, but it seemed like a case of diminishing returns (except maybe for large diagnostics files, or traces, but those are not expected to be downloaded frequently).

Areas where this makes a perceptible difference:
- Anything that subscribes to entities (Initial subscribe_entities payload)
- Initial download of registries on first connection / restore
- History queries
- Saving states to the database
- Large logbook queries
- Anything that subscribes to events (appdaemon)

Cavets:
orjson supports serializing dataclasses natively (and much faster) which
eliminates the need to implement `as_dict` in many places
when the data is already in a dataclass. This works
well as long as all the data in the dataclass can also
be serialized. I audited all places where we have an `as_dict`
for a dataclass and found only backups needs to be adjusted (support for `Path` needed to be added for backups).  I was a little bit worried about `SensorExtraStoredData` with `Decimal` but it all seems to work out from since it converts it before it gets to the json encoding cc @dgomes

If it turns out to be a problem we can disable this
with option |= [orjson.OPT_PASSTHROUGH_DATACLASS](https://github.com/ijl/orjson#opt_passthrough_dataclass) and it
will fallback to `as_dict`

Its quite impressive for history queries
<img width="1271" alt="Screen_Shot_2022-05-30_at_23_46_30" src="https://user-images.githubusercontent.com/663432/171145699-661ad9db-d91d-4b2d-9c1a-9d7866c03a73.png">

* use for views as well

* handle UnicodeEncodeError

* tweak

* DRY

* DRY

* not needed

* fix tests

* Update tests/components/http/test_view.py

* Update tests/components/http/test_view.py

* black

* templates
2022-06-22 21:59:51 +02:00
epenet 9ac28d2076
Adjust vesync type hints (#73842) 2022-06-22 21:40:22 +02:00
Martin Hjelmare 0e674fc597
Clean up zwave_js logging and hass.data (#73856) 2022-06-22 21:35:26 +02:00
Franck Nijhof 1ead6d6762
Automatically onboard Yeelight (#73854) 2022-06-22 21:19:34 +02:00
Franck Nijhof 9229d14962
Automatically onboard Wiz (#73851) 2022-06-22 20:17:28 +02:00
jjlawren 8d66623036
Add ZoneGroupState statistics to Sonos diagnostics (#73848) 2022-06-22 12:29:34 -05:00
Christopher Bailey 54d04d233b
Bump version of pyunifiprotect to 4.0.6 (#73843) 2022-06-22 12:13:43 -05:00
Pascal Vizeli 6cf9b22b5a
Python 3.10 / Base image 2022.06.01 (#73830)
* Python 3.10 / Base image 2022.06.01

* Update requirements

* push opencv

* we don't need numpy on core for now

* Remove unused ignore

Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-06-22 12:04:39 -05:00
epenet 6b6e5fad3c
Add missing type hints in fans (#73835) 2022-06-22 18:43:41 +02:00
G Johansson 532e25d087
Sensibo use switch for Pure boost (#73833)
* Initial commit

* Finalize pure boost switch

* Fix service required
2022-06-22 18:26:25 +02:00
epenet 837957d89e
Adjust set_percentage routine in fans (#73837) 2022-06-22 18:22:01 +02:00
jjlawren 86fde1a644
Handle failures during initial Sonos subscription (#73456) 2022-06-22 10:56:17 -05:00
epenet 143e6a7adc
Add missing type hints in locks (#73831) 2022-06-22 10:23:51 -05:00
G Johansson 7a407d09dc
Fix filter & room occupied binary sensors (#73827) 2022-06-22 10:13:16 -05:00
Christopher Bailey 0461ec1566
Fix auth_sign_path with query params (take 2) (#73829) 2022-06-22 10:09:21 -05:00
J. Nick Koston 19b2b33037
Speed up subscribing to mqtt topics on connect (#73685)
* Speed up subscribing to mqtt topics

* update tests

* Remove extra function wrapper

* Recover debug logging for subscriptions

* Small changes and test

* Update homeassistant/components/mqtt/client.py

* Update client.py

Co-authored-by: jbouwh <jan@jbsoft.nl>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-22 16:03:18 +02:00
rikroe 54591b8ca1
BMW Connected Drive: Handle HTTP 429 issues better (#73675)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2022-06-22 14:24:16 +02:00
epenet 754fe86dd9
Add fan to strict typing (#73820)
* Add fan to strict typing

* Adjust state_attributes

* Adjust capability_attributes

* Adjust is_on

* Adjust vallox component

* Revert "Adjust is_on"

This reverts commit 48d207f250.

* Fix is_on property
2022-06-22 14:15:44 +02:00
epenet 33a84838b4
Fix type hints in zha smartenergy channel (#73775)
* Fix type hints in zha smartenergy channel

* Adjust unit_of_measurement
2022-06-22 07:41:28 -04:00
Franck Nijhof fb2a3ae135
Update sentry-sdk to 1.6.0 (#73819) 2022-06-22 13:39:19 +02:00
uvjustin 03246d2649
Use ha-av instead of av and bump to v10.0.0b3 (#73789)
* Use ha-av instead of av and bump to v10.0.0b1

* Change generic

* Use v10.0.0b2

* Use v10.0.0b3
2022-06-22 13:38:44 +02:00
Christopher Bailey 90ad6ca540
Bumps version of pyunifiprotect to 4.0.5 (#73798) 2022-06-22 10:46:38 +02:00
Jonny Bergdahl 95eb55dd66
Fix thumbnail issues in Twitch integration (#72564)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-06-22 10:22:09 +02:00
Tom Harris 08b69319ca
Insteon bug fixes (#73791) 2022-06-22 10:04:11 +02:00
J. Nick Koston 4bfdc61045
Fix rachio webhook not being unregistered on unload (#73795) 2022-06-22 10:02:02 +02:00
Franck Nijhof 504f4a7acf
Update Fibaro config entry on duplicate entry (#73814) 2022-06-22 09:55:36 +02:00
Franck Nijhof 998e63df61
Fix Plugwise migration error (#73812) 2022-06-22 09:54:35 +02:00
Franck Nijhof 39a00ffe09
Automatically onboard Cast (#73813) 2022-06-22 09:49:54 +02:00
jjlawren 07a46dee39
Additional surround controls for Sonos (#73805) 2022-06-22 09:08:31 +02:00
J. Nick Koston 1e0a3246f4
Revert "Fix auth_sign_path with query params (#73240)" (#73808) 2022-06-21 22:45:16 -05:00
epenet 243905ae3e
Fix cover, light, select, sensor, switch type hints in zha (#73770)
* Fix zha sensor type hints

* Fix zha entity type hints

* Fix switch type hints

* Fix light type hints

* Fix cover type hints

* Fix select type hints
2022-06-21 21:04:24 -04:00
epenet 6c83ed4c9d
Fix api, button and climate type hints in zha (#73771)
* Fix zha api type hints

* Fix zha button type hints

* Fix zha climate type hints
2022-06-21 21:02:08 -04:00
epenet 21275669d5
Fix inheritance in zha general channel (#73774)
Fix general channel type hints in zha
2022-06-21 21:00:58 -04:00
GitHub Action 78dd522ccd [ci skip] Translation update 2022-06-22 00:26:36 +00:00
Erik Montnemery 562ad18fb4
Bump pychromecast to 12.1.4 (#73792) 2022-06-22 00:45:47 +02:00
Erik Montnemery 274f585646
Tweak title of zha config entry created by yellow hw (#73797) 2022-06-21 16:21:31 -04:00
Christopher Bailey 67618311fa
Fix auth_sign_path with query params (#73240)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-21 14:21:47 -05:00
J. Nick Koston adf0f62963
Add websocket api to fetch config entries (#73570)
* Add websocket api to fetch config entries

* add coverage for failure case
2022-06-21 20:09:22 +02:00
Christopher Bailey 9940a85e28
Add sensors for read-only devices for UniFi Protect (#73768) 2022-06-21 12:01:06 -05:00
J. Nick Koston db9c242723
Speed up creating group entities from YAML (#73649)
* Speed up creating group entities from YAML

- Pass all the entities to async_add_entities in one call to
  avoid multiple levels of gather

* Speed up creating group entities from YAML

- Pass all the entities to async_add_entities in one call to
  avoid multiple levels of gather

* Update homeassistant/components/group/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/group/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/group/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/group/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* typing

* unbreak

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-21 18:56:32 +02:00
Christopher Bailey 3823edda32
Add Permission checking for UniFi Protect (#73765)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-21 11:17:29 -05:00
kingy444 a816348616
Powerview dataclass (#73746)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-21 11:12:11 -05:00
rappenze f285b6099a
Code cleanup fibaro sensor (#73388)
* Code cleanup fibaro sensor

* Adjustments based on code review

* Changes from code review, use dict instead of tuple

* Remove unneeded deafult in dict get

* Another variant to create dict
2022-06-21 18:08:47 +02:00
AdmiralStipe efb4b10629
Change Microsoft TTS default and not configurable audio settings from poor 16kHz/128kbit/s to better quality 24kHz/96kbit/s (#73609)
* Update tts.py

* Update tts.py

* Update tts.py
2022-06-21 18:05:16 +02:00
Mick Vleeshouwer 28cc0b9fb2
Expose ThreeWayWindowHandle direction as sensor in Overkiz integration (#73784)
* Expose ThreeWayWindowHandle direction as sensor

* Compile translations
2022-06-21 17:31:26 +02:00
Pascal Vizeli eac7c5f177
Remove deprecated X-Hassio-Key usage (#73783)
* Remove deprecated X-Hassio-Key usage

* ...

* Update const.py

* Update ingress.py

* Update test_ingress.py

Co-authored-by: Ludeeus <ludeeus@ludeeus.dev>
2022-06-21 17:11:20 +02:00
Robert Svensson 27209574d2
Use pydeconz interface controls for lock, scene, siren and switch platforms (#73748) 2022-06-21 16:50:44 +02:00
Allen Porter cf9cab900e
Allow multiple configuration entries for nest integration (#73720)
* Add multiple config entry support for Nest

* Set a config entry unique id based on nest project id

* Add missing translations and remove untested committed

* Remove unnecessary translation

* Remove dead code

* Remove old handling to avoid duplicate error logs
2022-06-21 16:36:13 +02:00
Mick Vleeshouwer a96aa64dd1
Add Somfy to supported brands of Overkiz integration (#73786)
Add Somfy to supported brands
2022-06-21 16:35:22 +02:00
Allen Porter d399815bea
Allow multiple google calendar config entries (#73715)
* Support multiple config entries at once

* Add test coverage for multiple config entries

* Add support for multiple config entries to google config flow

* Clear hass.data when unloading config entry

* Make google config flow defensive against reuse of the same account

* Assign existing google config entries a unique id

* Migrate entities to new unique id format

* Support muliple accounts per oauth client id

* Fix mypy typing errors

* Hard fail to keep state consistent, removing graceful degredation

* Remove invalid entity regsitry entries
2022-06-21 06:42:41 -07:00
Thibaut c674af3ba1
Remove hvac_action for Somfy Thermostat (#73776) 2022-06-21 10:22:06 +02:00
rappenze 4813e6e420
Code cleanup fibaro lock (#73389)
* Code cleanup fibaro lock

* Adjust typings as suggested in code review
2022-06-21 09:55:08 +02:00
J. Nick Koston 9d13252142
Cleanup device callbacks in unifiprotect (#73463) 2022-06-20 22:52:41 -05:00
G Johansson 0007178d63
Add filters and service to Sensibo (#73687) 2022-06-20 22:33:47 -05:00
Christopher Bailey 3851c7b4b4
Bumps version of pyunifiprotect to 4.0.4 (#73722) 2022-06-20 22:09:13 -05:00
GitHub Action 109d1844b3 [ci skip] Translation update 2022-06-21 00:22:51 +00:00
Christopher Bailey b956d125f9
Fix UniFi Protect write rate sensor (#73759) 2022-06-20 19:10:59 -05:00
epenet 4bc1314499
Fix REPORT_CONFIG type hint in zha (#73762)
Fix REPORT_CONFIG type hint
2022-06-20 18:32:32 -04:00
Nate Harris 55eca2e2b4
Bump pycketcasts to 1.0.1 (#73262)
* Replace outdated pocketcast dependency

* Fix pycketcasts in requirements_all.txt

* Fix pycketcasts in requirements_all.txt

* Fix pycketcasts in requirements_all.txt
2022-06-20 21:04:31 +02:00
jjlawren c98419b031
Bump soco to 0.28.0 (#73750) 2022-06-20 20:59:29 +02:00
Franck Nijhof 16e7593a7b
Add state class to Flipr sensors (#73747) 2022-06-20 20:29:50 +02:00
Gordon Allott 66b02ecff0
Ensure metoffice daily are returned once daily (#72440)
* ensure metoffice daily are returned once daily

* Fixes metoffice tests for MODE_DAILY
2022-06-20 20:27:39 +02:00
epenet f43cc18aa3
Fix type hints in zha platforms (#73745)
* Adjust binary_sensor

* Adjust device_action

* Adjust device_tracker

* Adjust fan

* Adjust lock

* Adjust siren
2022-06-20 11:31:16 -04:00
epenet 9a95649a22
Use a TypedDict for REPORT_CONFIG in zha (#73629)
* Introduce ReportConfig TypedDict in zha

* Fix hint

* Always use Tuple

* Replace empty list with empty tuple

* Allow float for third config tuple value

* ReportConfig -> AttrReportConfig

* dict -> AttrReportConfig

* Allow int attributes

* Add coments
2022-06-20 11:29:45 -04:00
epenet be2aa44559
Fix mypy issues in zha config_flow (#73744) 2022-06-20 16:25:24 +02:00
Rami Mosleh 81e3ed790d
Add re-authentication for `transmission` (#73124)
* Add reauth flow to transmission

* fix async_setup

* add strings

* fix test coverage
2022-06-20 16:09:58 +02:00
Joel 3824703a64
Fix homematicip cloud cover tilt position (#73410)
* cover slats fixed set tilt position

* Update cover.py

* Adjust tests

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-20 16:08:43 +02:00
rappenze 483406dea5
Code cleanup fibaro switch and binary sensor (#73386) 2022-06-20 15:46:28 +02:00
Alessandro Ghedini 670bf0641a
Update london-tube-status for TfL API breaking change (#73671)
* Update london-tube-status for TfL API breaking change

The TfL API used by the london_underground component (through the
london-tube-status module) introduced breaking changes recently, which
in turn broke the component, and require updating the london-tube-status
dependency to fix.

However the newer module versions also introduced other changes,
including switching from requests to aiohttp, which require converting
the london_underground component to use async APIs.

Fixes #73442

* Update sensor.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-06-20 15:08:50 +02:00
epenet b6d3e34ebc
Drop custom type (CALLABLE_T) from zha (#73736)
* Drop CALLABLE_T from zha

* Adjust .coveragerc

* Apply suggestions from code review

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Add TypeVar

* Apply suggestions from code review

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* One more

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Flake8

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-06-20 14:50:27 +02:00
w-marco c075760ca0
Display Windows as TYPE_WINDOW in Google Home (#73533)
* Display Windows as TYPE_WINDOW in Google Home

* set window type to window in smart_home test
2022-06-20 13:03:43 +02:00
Thibaut 3571a80c8d
Add support for Somfy Thermostat in Overkiz integration (#67169)
* Add Somfy Thermostat

* Fix linked device

Co-authored-by: Vincent Le Bourlot <vlebourl@gmail.com>

* Mark Somfy thermostat as supported

* Fix wrong usage of cast

* Update presets to lowercase

* Rename constants

* Remove _saved_target_temp

* Apply black

* Clean code

* Fix mypy errors

* Use constants from pyoverkiz

* Use enum for target temp

* Add comment

* Use ClimateEntityFeature

* Ease code

Co-authored-by: Mick Vleeshouwer <mick@imick.nl>

* Remove unused imports

* Use HVACAction

* Use HVACMode

* Use more Overkiz constants

* Don’t copy/paste

* Don’t use magic number

Co-authored-by: Vincent Le Bourlot <vlebourl@gmail.com>
Co-authored-by: Mick Vleeshouwer <mick@imick.nl>
2022-06-20 12:58:08 +02:00
epenet 2de4b193e3
Remove unnecessary type definitions in zha (#73735)
* Cleanup ZigpyClusterType

* Cleanup ZigpyDeviceType

* Cleanup ZigpyEndpointType

* Cleanup ZigpyGroupType

* Cleanup ZigpyZdoType
2022-06-20 12:49:40 +02:00
epenet b318b9b196
Improve onvif type hints (#73642)
* Remove onvif from mypy ignore list

* Adjust parsers

* Adjust event

* Adjust config_flow
2022-06-20 12:07:33 +02:00
Robert Svensson 474e0fd6d0
Use pydeconz interface controls for climate platform (#73670)
* Use pydeconz interface controls for climate

* Bump pydeconz to make use of enums in more places
2022-06-20 12:04:12 +02:00
Franck Nijhof edeb5b9286
Update spotipy to 2.20.0 (#73731) 2022-06-20 11:46:58 +02:00
epenet 06e45893aa
Remove invalid type definitions in zha (#73596) 2022-06-20 11:28:53 +02:00
J. Nick Koston 120479acef
Enable polling for hardwired powerview devices (#73659)
* Enable polling for hardwired powerview devices

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* docs were wrong

* Update homeassistant/components/hunterdouglas_powerview/cover.py

* Update homeassistant/components/hunterdouglas_powerview/sensor.py
2022-06-20 11:10:01 +02:00
Peter Galantha 8e3d9d7435
Specify device_class and state_class on OpenEVSE sensors (#73672)
* Specify device_class and state_class

* import SensorStateClass
2022-06-20 10:45:35 +02:00
micha91 d733a0547a
Update aiomusiccast (#73694) 2022-06-20 10:36:04 +02:00
Robert Svensson e0dbf10808
Fix CSRF token for UniFi (#73716)
Bump aiounifi to v32
2022-06-20 10:31:19 +02:00
Duco Sebel db5e94c93b
Fix HomeWizard is not catching RequestError (#73719)
* Fix RequestError was not catched

* Add test for RequestError
2022-06-20 10:30:57 +02:00
J. Nick Koston 006ea441ad
Pickup emulated_hue codeowner (#73725)
- I made some changes to this during this cycle so I
  want to get notifications for the next release.
2022-06-20 10:27:38 +02:00
Erik Montnemery cd08f1d0c0
Don't attempt to reload MQTT device tracker (#73577) 2022-06-20 10:26:50 +02:00
Erik Montnemery 9680a367c8
Prevent using deprecated number features (#73578) 2022-06-20 10:26:24 +02:00
Erwin Oldenkamp 4e6d753d2f
Add support for the locked status but car is connected (#73551) 2022-06-20 10:10:10 +02:00
epenet bd29b91867
Use Mapping for async_step_reauth (a-e) (#72763)
* Adjust abode

* Adjust airvisual

* Adjust aladdin_connect

* Adjust ambee

* Adjust aussie-broadband

* Adjust brunt

* Adjust cloudflare

* Adjust deconz

* Adjust deluge

* Adjust devolo_home_control

* Adjust efergy

* Adjust esphome
2022-06-20 09:08:11 +02:00
Max Gashkov 1f4add0119
Fix AmbiClimate services definition (#73668) 2022-06-20 09:05:28 +02:00
J. Nick Koston cf000fae1b
Remove self from tplink codeowners (#73723) 2022-06-20 09:04:54 +02:00
Erik Montnemery 2c936addd2
Fix handling of illegal dates in onvif sensor (#73600)
* Fix handling of illegal dates in onvif sensor

* Address review comment

* Address review comment
2022-06-20 08:52:37 +02:00
Jan Bouwhuis 57daeaa174
Fix MQTT config schema to ensure correct validation (#73619)
* Ensure config schema validation

* Use correct schema for device_tracker

* Remove schema validation from the platform setup

* Remove loop to build schema
2022-06-20 08:51:12 +02:00
J. Nick Koston fcd8859542
Remove self from logbook codeowners (#73724) 2022-06-19 22:24:42 -04:00
GitHub Action 6f8e0419f0 [ci skip] Translation update 2022-06-20 00:22:34 +00:00
epenet a92105171c
Remove vizio from mypy ignore list (#73585)
* Remove vizio config_flow from mypy ignore list

* Fix mypy errors

* Adjust media_player

* Add space
2022-06-19 21:39:24 +02:00
epenet e7e9c65e44
Adjust zha routine to get name and original_name (#73646) 2022-06-19 21:38:01 +02:00
Raman Gupta e53372f559
Add `zwave_js/get_firmware_update_progress` WS command (#73304)
Add zwave_js/get_firmware_update_progress WS command
2022-06-19 15:33:58 -04:00
Raman Gupta bb5a6a7104
Add `zwave_js/get_firmware_update_capabilties` WS command (#73691)
* Add zwave_js/get_firmware_update_capabilties WS command

* Fix test
2022-06-19 14:50:47 -04:00
Raman Gupta 801ba6ff8e
Add target option to zwave_js firmware upload view (#73690) 2022-06-19 14:50:05 -04:00
Allen Porter ab95299150
Bump gcal_sync to 0.10.0 and fix `google` typing (#73710)
Bump gcal_sync to 0.10.0
2022-06-19 20:16:07 +02:00
Raman Gupta 9b93071720
Bump zwave-js-server-python to 0.38.0 (#73707)
* Bump zwave-js-server-python to 0.38.0

* Fix test
2022-06-19 20:12:01 +02:00
Steven Looman 26641fc90d
Bump async-upnp-client to 0.31.2 (#73712) 2022-06-19 12:59:37 -05:00
Álvaro Fernández Rojas be6c2554dd
Add QNAP QSW DHCP discovery (#73130)
* qnap_qsw: add DHCP discovery

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* qnap_qsw: config_flow: add async_step_dhcp

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* qnap_qsw: config_flow: lower DHCP logging

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* tests: qnap_qsw: fix copy & paste

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* qnap_qsw: dhcp: introduce changes suggested by @bdraco

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* Update homeassistant/components/qnap_qsw/config_flow.py

Co-authored-by: J. Nick Koston <nick@koston.org>

* qnap_qsw: async_step_user: disable raising on progress

Allows async_step_user to win over a discovery.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-06-19 09:43:29 -05:00
Marc Mueller 24bf42cfbe
Update pylint to 2.14.3 (#73703) 2022-06-19 16:29:57 +02:00
G Johansson 68135e57af
Split timer service for Sensibo (#73684) 2022-06-19 09:28:33 -05:00
Christopher Bailey b19b6ec6ea
Update UniFi Protect to use MAC address for unique ID (#73508) 2022-06-19 09:22:33 -05:00
Raman Gupta 7714183118
Add `zwave_js/subscribe_node_status` WS API cmd (#73249)
* Add zwave_js/subscribe_node_status WS API cmd

* add ready to event
2022-06-19 10:09:26 -04:00
Rechner Fox 45142558ef
Bump pyenvisalink to 4.5 (#73663)
* Bump pyenvisalink to latest version 4.5

* Minor bugfixes:
* Prevent reconnects from being scheduled simultaneously
* Fix parsing keypad messages containing extra commas

* Add pyenvisalink updated dependency
2022-06-19 08:54:10 +02:00
GitHub Action dcf6c2d3a4 [ci skip] Translation update 2022-06-19 00:23:14 +00:00
G Johansson d5df2b2ee7
Sensibo Add Pure Boost Service (#73114)
* Pure Boost Service

* Fix tests

* Fix mypy

* One service to two services

* Minor fix test

* Fix issues
2022-06-18 15:15:44 -05:00
Christopher Bailey 691d49f23b
Refactor migration code for UniFi Protect (#73499) 2022-06-18 12:56:28 -05:00
J. Nick Koston 0a27211356
Switch bond data to use a dataclass (#73514) 2022-06-17 22:45:20 -05:00
J. Nick Koston 7a792b093f
Fix calling permanent off with nexia (#73623)
* Fix calling permanent off with nexia

Changelog: https://github.com/bdraco/nexia/compare/1.0.1...1.0.2

Fixes #73610

* one more
2022-06-17 21:57:44 -05:00
GitHub Action 027f54ca15 [ci skip] Translation update 2022-06-18 00:24:33 +00:00
uvjustin 7a3f632c1d
Make stream recorder work concurrently (#73478) 2022-06-18 05:13:07 +10:00
J. Nick Koston 600d23e052
Retry on SenseAPIException during sense config entry setup (#73651) 2022-06-17 14:03:42 -05:00
Steven Looman bf15df75dd
Ignore fake upnp/IGD devices when upnp is discovered (#73645) 2022-06-17 11:26:45 -05:00
Steven Looman 2be54de448
Don't verify ssl certificates for ssdp/upnp devices (#73647) 2022-06-17 11:26:25 -05: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 66feac2257
Finish migrating zha NumberEntity to native_value (#73580) 2022-06-17 12:15:59 +02:00
Erik Montnemery 2107966fa8
Finish migrating sleepiq NumberEntity to native_value (#73582) 2022-06-17 12:14:35 +02:00
Erik Montnemery d90f029772
Finish migrating demo NumberEntity to native_value (#73581) 2022-06-17 12:14:11 +02:00
epenet e0b362ef3b
Fix zha log message (#73626) 2022-06-17 12:13:16 +02:00
Michael e30478457b
Fix voltage and current values for Fritz!DECT smart plugs (#73608)
fix voltage and current values
2022-06-17 07:40:02 +02:00
Dave T cdd5a5f68b
Generic ipcam configflow2 followup (#73511)
* Address code review comments

* Add type hints

* Remvoe unused strings

* Remove persistent notification setup

* Patch async_configre

* Fix pylint warning

* Address review comments

* Clean types

* Code review: defer local var assignment

Co-authored-by: Dave T <davet2001@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-17 07:07:21 +02:00
uvjustin f276523ef3
Ignore in progress segment when adding stream recorder lookback (#73604) 2022-06-17 11:07:08 +10:00
GitHub Action d43178db06 [ci skip] Translation update 2022-06-17 00:20:34 +00:00
uvjustin 01a4a83bab
Improve stream playback on high latency cameras (#72547)
* Disable LL-HLS for HLS sources
* Add extra wait for Nest cameras
2022-06-17 01:48:52 +10:00
Erik Montnemery 3e1a4d86a3
Fix modification of mutable global in xiaomi_miio number (#73579) 2022-06-16 16:35:00 +02:00
Erik Montnemery e2327622c3
Migrate SNMP sensor to TemplateEntity (#73324) 2022-06-16 15:02:50 +02:00
Martin Hjelmare 8049170e5a
Initialize hass.config_entries for check config (#73575) 2022-06-16 14:40:41 +02:00
Erik Montnemery ddca199961
Migrate tuya NumberEntity to native_value (#73491) 2022-06-16 13:49:16 +02:00
Erik Montnemery dea8041461
Add device_class to MQTT number and migrate to native_value (#73534) 2022-06-16 13:34:54 +02:00
epenet 67b0354632
Adjust FlowResult construction in data entry flow (#72884) 2022-06-16 12:57:41 +02:00
Maciej Bieniek c2b484e38b
Use IP address instead of hostname in Brother integration (#73556) 2022-06-16 11:43:36 +02:00
epenet 7731cfd978
Add lock typing in freedompro (#73544) 2022-06-16 10:40:55 +02:00
epenet 521d52a8b9
Add lock typing in nuki (#73545) 2022-06-16 10:20:34 +02:00
epenet 2b5748912d
Add lock typing in starline (#73546) 2022-06-16 10:20:08 +02:00
epenet 6374fd0992
Add lock typing in volvooncall (#73548) 2022-06-16 10:19:44 +02:00
muppet3000 7a7729678e
Bump growattServer to 1.2.2 (#73561)
Fix #71577 - Updating growattServer dependency
2022-06-16 10:15:19 +02:00
Erik Montnemery 2d07cda4e7
Improve number deprecation warnings (#73552) 2022-06-16 09:05:13 +02:00
J. Nick Koston af81ec1f5f
Handle offline generators in oncue (#73568)
Fixes #73565
2022-06-16 07:51:55 +02:00
Corbeno 90dba36f80
Proxmoxve code cleanup (#73571)
code cleanup
2022-06-16 07:35:58 +02:00
jjlawren 90e402eca5
Allow removing Sonos devices (#73567) 2022-06-15 19:21:39 -10:00
GitHub Action b4359c7721 [ci skip] Translation update 2022-06-16 00:22:45 +00:00
Erik Montnemery 0ace5af914
Correct migration of unifiprotect number (#73553) 2022-06-15 11:07:18 -10:00
Erik Montnemery 7a82794ad7
Migrate template NumberEntity to native_value (#73537) 2022-06-15 17:06:44 +02:00
Allen Porter b014d558ff
Add application credentials platform for nest and deprecate yaml for SDM API (#73050)
* Update the nest integration to be useable fully from the config flow

* Support discovery in nest config flow

* Remove configuration entries

* Remove unused import

* Remove dead code

* Update homeassistant/components/nest/strings.json

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Remove commented out code

* Use config flow for app auth reauthentication path

* Improves for re-auth for upgrading existing project and creds

* More dead code removal

* Apply suggestions from code review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Remove outdated code

* Update homeassistant/components/nest/config_flow.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-15 07:15:53 -07:00
epenet f8f1bfde21
Add lock typing in components (#73539)
* Add lock typing in components

* Revert freedompro amends
2022-06-15 15:23:36 +02:00
Erik Montnemery 8c0ae545c9
Migrate knx NumberEntity to native_value (#73536) 2022-06-15 14:39:56 +02:00
Thibaut 658ce9d4f2
Remove Somfy integration (#73527)
* Remove somfy

* Remove somfy
2022-06-15 12:18:15 +02:00
Franck Nijhof 05d7d31dfd
Improve Elgato error handling (#73444) 2022-06-15 12:12:07 +02:00
Erik Montnemery e05e79e53d
Migrate NumberEntity r-t to native_value (#73485) 2022-06-15 10:56:41 +02:00
Erik Montnemery 4ace2c4d3a
Migrate overkiz NumberEntity to native_value (#73493) 2022-06-15 10:49:40 +02:00
epenet 94a8fe0052
Remove xiaomi_aqara from mypy ignore list (#73526) 2022-06-15 10:45:47 +02:00
Bram Goolaerts 17eb8c95dd
Fix De Lijn 'tzinfo' error (#73502)
* Fix De Lijn component tzinfo error

This fix should update the issue "Error:'str' object has no attribute 'tzinfo'" (issue #67455)

* fix Black and isort errors

fixing errors from Black and isort CI validation

* Fix black and flake8 issues

Fixing black and flake8 issues to pass CI
2022-06-15 10:33:53 +02:00
Corbeno a77ea1c390
Add device class to proxmoxve binary sensor (#73465)
* add device class property to binary sensor

* add newline
2022-06-15 08:49:55 +02:00
J. Nick Koston 16dd70ba99
Switch to a dataclass for lutron_caseta entry data (#73500) 2022-06-14 20:32:38 -10:00
jjlawren 77c92b0b77
Mark Sonos speaker as offline when switching to bluetooth (#73519) 2022-06-14 20:32:13 -10:00
J. Nick Koston 1e956bc52f
Reduce bond startup time (#73506) 2022-06-14 20:30:59 -10:00
Jean-François Roy c64b108789
Bump aiobafi6 to 0.6.0 to fix logging performance (#73517) 2022-06-14 17:11:37 -10:00
GitHub Action 188b1670a3 [ci skip] Translation update 2022-06-15 00:25:37 +00:00
G Johansson 32b61e15a1
Strict typing Trafikverket Ferry (#72459) 2022-06-14 13:35:29 -10:00
J. Nick Koston d25a5f3836
Bump zeroconf to 0.38.7 (#73497) 2022-06-14 12:16:30 -10:00
Michael 103a6266a2
Fix fetching upgrade data during setup of Synology DSM (#73507) 2022-06-14 11:18:59 -10:00
Michael 3bbb4c052c
Add camera diagnostics to Synology DSM (#73391) 2022-06-14 10:49:06 -10:00
J. Nick Koston a0ed54465f
Migrate lutron caseta occupancygroup unique ids so they are actually unique (#73378) 2022-06-14 10:02:45 -10:00
IceBotYT 8e6fa54e0a
Improve PECO integration (#73460) 2022-06-14 21:08:47 +02:00
Erik Montnemery 1f7340313a
Migrate NumberEntity a-j to native_value (#73486) 2022-06-14 08:16:36 -10:00
Erik Montnemery 576de9ac40
Migrate NumberEntity u-z to native_value (#73488) 2022-06-14 08:15:56 -10:00
Erik Montnemery 23fa19b75a
Support restoring NumberEntity native_value (#73475) 2022-06-14 10:56:27 -07:00
Paulus Schoutsen 61e4b56e19
Guard withings accessing hass.data without it being set (#73454)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-06-14 10:55:58 -07:00
J. Nick Koston 9b157f974d
Reduce overhead to refire events from async_track_point_in_utc_time when an asyncio timer fires early (#73295)
* Reduce overhead to refire events

- asyncio timers can fire early for a varity of reasons including
  poor clock resolution and performance. To solve this problem
  we re-arm async_track_point_in_utc_time and try again later
  when this happens.

- On some platforms this means the async_track_point_in_utc_time can
  end up trying many times to prevent firing the timer early since as
  soon as it rearms it fires again and this repeats until we reach
  the appointed time. While there is not much we can do to prevent
  asyncio from firing the timer callback early, we can reduce the
  overhead when this happens by using avoiding creating datetime
  objects

* tweak mocking

* -vvv

* fix time freeze being too broad in litterrobot

* adjust
2022-06-14 07:46:00 -10:00
Franck Nijhof f69ea6017d
Add device class support to Tuya number entities (#73483) 2022-06-14 16:00:07 +02:00
Allen Porter 0b7a030bd4
Fix fan support in nest, removing FAN_ONLY which isn't supported (#73422)
* Fix fan support in nest, removing FAN_ONLY which isn't supported

* Revert change to make supported features dynamic
2022-06-14 06:19:22 -07:00
Thibaut e08465fe8c
Fix max_value access for number platform in Overkiz (#73479)
Fix wrong property name
2022-06-14 15:17:40 +02:00
Mick Vleeshouwer 04c60d2183
Add support for AtlanticPassAPCZoneControl to Overkiz integration (#72384)
* Add support for AtlanticPassAPCZoneControl (overkiz)

* Remove unneeded comments

* Remove supported features

* Fix new standards
2022-06-14 13:27:58 +02:00
Mick Vleeshouwer 1ef0102f12
Add active alarm zones as select entity to Overkiz integration (#68997)
* Add active zones as select entity

* Clean up for PR
2022-06-14 13:21:35 +02:00
Franck Nijhof 99db2a5afe
Update requests to 2.28.0 (#73406)
* Update requests to 2.28.0

* Fix mypy warning

* Fix Facebook messenger tests
2022-06-14 12:21:32 +02:00
Franck Nijhof 65378f19c8
Update caldav to 0.9.1 (#73472) 2022-06-14 12:21:02 +02:00
Erik Montnemery 3da3503673
Add temperature unit conversion support to NumberEntity (#73233)
* Add temperature unit conversion to number

* Remove type enforcements

* Lint

* Fix legacy unit_of_measurement

* Address review comments

* Fix unit_of_measurement, improve test coverage
2022-06-14 09:40:57 +02:00
Erik Montnemery e3b6c7a66f
Add Home Assistant Yellow integration (#73272)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2022-06-13 23:25:11 -07:00