Commit graph

771 commits

Author SHA1 Message Date
Jevgeni Kiski
34dce0acbf
AMS iAQ Core CO2 sensor component (#5192)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-24 12:35:51 +13:00
Piu Piuson
96822aaa3a
Feat: Add GREE climateir component (#4464)
Co-authored-by: orestismers <33354671+orestismers@users.noreply.github.com>
Co-authored-by: Orestes Mersinias <orestis.mers@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-24 11:34:46 +13:00
Chris Feenstra
b4765fb5fb
Add ZH/LT-01 climate component with IR receiver option (#4333)
Co-authored-by: Chris Feenstra <chris@cfeenstra.nl>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-24 11:33:47 +13:00
Simone Rossetto
e7d51f9c16
Add address text sensor to WireGuard (#5576) 2023-10-24 08:05:57 +13:00
Samuel Sieb
84c00a5867
fix canbus send config (#5585)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2023-10-24 07:26:23 +13:00
Jimmy Hedman
05a95f8ee9
Remove explicit cast for IPAddress (#5574)
* Remove explicit cast for IPAddress

* Make linter happy
2023-10-21 17:04:07 +13:00
Jordan W. Cobb
9f033bce3b
Fan no off cycle action (#5564)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-19 20:02:27 +13:00
jj-uk
a7d817656e
Hydreon updates (#5424) 2023-10-19 13:06:28 +13:00
Clyde Stubbs
a794836ebe
Add config to allow suppression of warnings about use of strapping pins (#5287)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-19 13:04:53 +13:00
Samuel Sieb
c19dbdb02d
add on/off options for uart switch (#5539)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2023-10-18 08:07:29 +13:00
Samuel Sieb
6839de69c1
add uart button (#5540)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2023-10-18 07:30:32 +13:00
ghsensdev
6143099f60
Add Support for Sensirion SFA30 sensor (#5519)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-16 07:49:57 +13:00
NP v/d Spek
04b708c336
Splits FastLed test scripts out of test1.yaml (#5522) 2023-10-13 07:20:31 +13:00
Jesse Hills
511af5845e
Remote wake word support for voice assistant (#5229) 2023-10-10 19:52:42 +13:00
Ilia Sotnikov
412a866de8
Move to Pillow 10.x (#5489)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-09 13:47:52 +13:00
Adam Goode
af62c2d9cf
Implement sensor component for MMC5983 (#5361) 2023-10-09 10:26:58 +13:00
Pavlo Dudnytskyi
7e7c83b3ca
Support for Haier IR protocol added (#5403) 2023-10-09 09:49:55 +13:00
Clyde Stubbs
b6d5cb4142
St7789v and SPI data rate (#5472) 2023-10-04 15:18:33 -05:00
Clyde Stubbs
506c2ba6c7
ST7789v - Allow predefined backlight pin to be disabled. (#5476)
* Allow predefined backlight pin to be disabled.

* Add test

* Update esphome/components/st7789v/display.py
2023-10-03 20:10:26 -05:00
kahrendt
88bb051f37
Add xor automation condition (#5453) 2023-10-03 22:58:11 +13:00
Clyde Stubbs
205f41509b
Support RP2040 hardware SPI (#5466) 2023-10-03 10:24:20 +13:00
De Cock Xavier
a33b8abce8
Feat/component poller suspend (#5423) 2023-10-03 09:25:13 +13:00
Angel Nunez Mencias
2513ede3ec
Add testcases for multiple SPI buses on ESP32 Arduino (#5457) 2023-09-29 20:48:51 -05:00
Jimmy Hedman
57b7dd0fa2
Refactor ip address representation (#5252) 2023-09-27 21:38:43 +13:00
Clyde Stubbs
5360e14a9c
Fix #4896 and #4903 (#5433) 2023-09-27 12:25:14 +13:00
Samuel Sieb
1100f67b66
support keypads with pulldowns (#5404)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2023-09-21 10:26:36 +12:00
Kuba Szczodrzyński
056a28906b
Wizard: fix colored text in input prompts (#5313) 2023-09-21 10:09:23 +12:00
Keith Burzinski
736dbfac13
Add IDF 5 test yaml, add adc to IDF tests, fix adc for IDF 5 (#5379) 2023-09-13 11:36:17 +12:00
Jesse Hills
fe81bcc003
Use /data directory for .esphome folder when running as HA add-on (#5374) 2023-09-12 09:26:48 +12:00
Daniel Dunn
10eee47b6b
Make string globals persist-able using fixed size allocations (#5296)
Co-authored-by: Daniel Dunn <dannydunn@eternityforest.com>
2023-09-12 09:26:00 +12:00
Lubos Horacek
b107948c47
Wireguard component (#4256)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Simone Rossetto <simros85@gmail.com>
Co-authored-by: Thomas Bernard <thomas0bernard@gmail.com>
2023-09-12 07:13:24 +12:00
Clyde Stubbs
d2648657fb
Native SPI RGB LED component (#5288)
* Add testing branch to workflow

* Add workflow

* Checkpoint

* Align SPI data rates in c++ code with Python code.

* Checkpoint

* CI fixes

* Update codeowners

* Workflow cleanup

* Rename to spi_rgb_led

* Rename header file

* Clang tidy

* Disable spi after transfer.

* Move enable() to where it belongs

* Call spi_setup before enable

* Clang tidy

* Add test

* Rename to spi_led_strip

* Include 'defines.h'

* Fix CODEOWNERS

* Migrate data rate to new style setting.

* Remove defines.h

* Fix class name

* Fix name in .py

* And more more name tidy up.

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-09-10 21:20:06 -05:00
Flaviu Tamas
e66047e072
Add BMI160 support (#5143)
* Add BMI160 support

* BMI160: use set_timeout for delay

* Add support for old compilers

Fix "warning: missing terminating ' character"

* Increase power-on delay to be more conservative

* Add helper for reading little-endian data over i2c

* Replace configuration names with globals

Note: for testing with external components, you will need to comment out the import & define your own CONF_GYROSCOPE_X, etc, in this file

* Improve icons

* Fix tests & lint
2023-09-09 21:25:09 -05:00
Ilia Sotnikov
7bb67ae94b
[ADC] Support measuring VCC on Raspberry Pico (W) (#5335)
* [ADC] Support measuring VCC on Raspberry Pico (W)

Added support for measuring VCC on Raspberry Pico (W) with ADC.
GPIO pin is provided as `VCC`, same as with ESP8266. VSYS is the voltage
being actually processed, and might have an offset from actual power
supply voltage (e.g. USB on VBUS) due to voltage drop on
Schottky diode between VSYS and VBUS on Rasberry Pico. The offset has
experimentally been found to be ~0.25V on Pico W and ~0.1 on Pico,
presumably due to different power consumption.

Example usage:

	sensor:
	  - platform: adc
	    pin: VCC
	    name: "VSYS"

* + Added tests for VCC measuring on `rpipicow` board
2023-09-09 04:00:45 -05:00
Péter Sárközi
d9523a0cbf
Fix repeat.count = 0 case (#5364)
* Only play first action if count is non-zero

* Add test to  yaml

* Update test5.yaml
2023-09-09 09:10:20 +12:00
Clyde Stubbs
5c26f95a4b
Refactor SPI code; Add ESP-IDF hardware support (#5311)
* Checkpoint

* Checkpoint

* Checkpoint

* Revert hal change

* Checkpoint

* Checkpoint

* Checkpoint

* Checkpoint

* ESP-IDF working

* clang-format

* use bus_list

* Add spi_device; fix 16 bit transfer.

* Enable multi_conf;
Fix LSB 16 bit transactions

* Formatting fixes

* Clang-format, codeowners

* Add test

* Formatting

* clang tidy

* clang-format

* clang-tidy

* clang-format

* Checkpoint

* Checkpoint

* Checkpoint

* Revert hal change

* Checkpoint

* Checkpoint

* Checkpoint

* Checkpoint

* ESP-IDF working

* clang-format

* use bus_list

* Add spi_device; fix 16 bit transfer.

* Enable multi_conf;
Fix LSB 16 bit transactions

* Formatting fixes

* Clang-format, codeowners

* Add test

* Formatting

* clang tidy

* clang-format

* clang-tidy

* clang-format

* Clang-tidy

* Clang-format

* clang-tidy

* clang-tidy

* Fix ESP8266

* RP2040

* RP2040

* Avoid use of spi1 as id

* Refactor SPI code.
Add support for ESP-IDF hardware SPI

* Force SW only for RP2040

* Break up large transfers

* Add interface: option for spi.
validate pins in python.

* Can't use match/case with Python 3.9.
Check for inverted pins.

* Work around target_platform issue with

* Remove debug code

* Optimize write_array16

* Show errors in hex

* Only one spi on ESP32Cx variants

* Ensure bus is claimed before asserting /CS.

* Check on init/deinit

* Allow maximum rate write only SPI on GPIO MUXed pins.

* Clang-format

* Clang-tidy

* Fix issue with reads.

* Finger trouble...

* Make comment about missing SPI on Cx variants

* Pacify CI clang-format. Did not complain locally??

* Restore 8266 to its former SPI glory

* Fix per clang-format

* Move validation and choice of SPI into Python code.

* Add test for interface: config

* Fix issues found on self-review.

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-09-08 02:27:19 -05:00
Christian
76ebbfefd2
Integration LightwaveRF switches (#4812)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-09-06 10:33:49 +12:00
JJ
74ab940aff
Adding DFRobot Ozone Sensor Support (sen0321) (#4782) 2023-09-06 10:09:22 +12:00
Jimmy Hedman
ac5c6ec288
Add debug component to all tests (#5333) 2023-09-06 07:38:58 +12:00
Clyde Stubbs
32b24726ed
Add Lilygo T-Embed to st7789v display config. (#5337)
* Add Lilygo T-Embed to st7789v display config.

* Move all configuration into the Python code.
Add presets for TTGO.
All preset configuration can be overridden.

* Add Adafruit S2 pin presets

* Add test

* Add funhouse pins.

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Keep ordering of options consistent

* Remove unused declarations

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-09-05 02:01:28 -05:00
kahrendt
562f7c8718
Debug component: add free PSRAM sensor (#5334)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-09-05 14:02:59 +12:00
Kuba Szczodrzyński
a9630ac847
Support for LibreTiny platform (RTL8710, BK7231 & other modules) (#3509)
Co-authored-by: Kuba Szczodrzyński <kuba@szczodrzynski.pl>
Co-authored-by: Sam Neirinck <git@samneirinck.com>
Co-authored-by: David Buezas <dbuezas@users.noreply.github.com>
Co-authored-by: Stroe Andrei Catalin <catalin2402@gmail.com>
Co-authored-by: Sam Neirinck <github@samneirinck.be>
Co-authored-by: Péter Sárközi <xmisterhu@gmail.com>
Co-authored-by: Hajo Noerenberg <hn@users.noreply.github.com>
2023-09-05 10:16:08 +12:00
Christian
2165960ba1
add heating functionality to SI7021 (#4828)
* add heating functoinality

* add test

* add heat

* fix

* fix

* fix

* fix

* fix

* fix sensor

* restore class

* Update esphome/components/htu21d/sensor.py

* Update esphome/components/htu21d/sensor.py

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>

* Update esphome/components/htu21d/sensor.py

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>

---------

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-09-01 19:03:30 -05:00
Daniel Dunn
19d53c6643
Use gzip compression for the web server component's static resources (#5291)
Co-authored-by: Daniel Dunn <dannydunn@eternityforest.com>
2023-09-01 14:02:26 +12:00
Rob Deutsch
0443310385
Bump arduino-heatpumpir to v1.0.23 (#5269) 2023-08-21 12:20:00 +12:00
Jesse Hills
c287e529a8
Change haier from AUTO to HEAT_COOL (#5267) 2023-08-18 08:06:21 +12:00
Clyde Stubbs
164d05fdce
Add manufacturer data config to BLE server (#5251) 2023-08-18 08:05:25 +12:00
SeByDocKy
c11c4dad2f
Add pmwcs3 capacitive soil moisture & temperature sensor component (#4624)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-08-18 08:03:39 +12:00
Regev Brody
5cb5594288
Add configuration flow abilites to the ld2410 component (#4434) 2023-08-16 11:31:18 +12:00
Sergey Dudanov
0daf4545a9
fix midea: undo approved PR#4053 (#5233) 2023-08-14 09:06:04 +12:00
Jesse Hills
a84365659b
Read string of bool env and match against well known values (#5232) 2023-08-11 16:20:58 +12:00
Samuel Sieb
b56c606523
add value option to timeout filter (#5222)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
2023-08-10 17:11:03 +12:00
Francesco Ciocchetti
f457269a68
Add missing on_(arming|pending|armed_home|armed_night|armed_away|disarmed) triggers to alarm_control_panel (#5219) 2023-08-10 17:09:21 +12:00
Greg Cormier
0ed0bdc655
New PM sensor Panasonic SN-GCJA5 (#4988) 2023-08-10 17:04:22 +12:00
kahrendt
a8fa4b56f9
New component: Add support for bmp581 pressure and temperature sensors (#4657) 2023-08-08 17:05:08 +12:00
Rudd-O
f3329fdc8c
Add KMeterISO component. (#5170)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-08-08 12:32:34 +12:00
Francesco Ciocchetti
a6b89e4e8a
Add arm night to alarm control panel (#5186) 2023-08-08 11:57:40 +12:00
André Cirne
1495fada90
Add support for a01nyub (#4863)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-08-07 12:22:18 +12:00
Keith Burzinski
56630bb717
Swap ADC back to use 'int' because C3 (#5151) 2023-07-31 09:19:06 +12:00
Mat931
cd46a69f2c
Add 'map_linear' and 'clamp' sensor filters (#5040) 2023-07-31 09:09:09 +12:00
Sergey Dudanov
a120a455bf
climate triggers Climate and ClimateCall references (#5028) 2023-07-31 07:52:01 +12:00
Sergey Dudanov
827b2def1e
Coolix IR protocol improvements (#5105)
* coolix protocol

* tests

* 24-bit range

* some DRY in coolix

* added short condition

* one more change

* final prettify

* v2023.8
2023-07-23 08:15:37 +12:00
Clyde Stubbs
ac81fae855
Add timeout filter (#5104) 2023-07-17 09:17:31 +12:00
Jesse Hills
8c6cddf1bb
Remove template switch restore_state (#5106) 2023-07-17 09:11:43 +12:00
Sergey Dudanov
a539197bc4
New 'Duty Time' sensor component (#5069) 2023-07-13 08:48:16 +12:00
Christian
119bbba254
Grove amend name (#5093) 2023-07-13 08:13:50 +12:00
danieltwagner
8c5978599a
Add support for ATM90E26 (#4366)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-07-12 17:10:22 +12:00
Christian
e0fd8cd850
Add support for Grove tb6612 fng (#4797)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-07-12 15:02:53 +12:00
Kevin P. Fleming
cf65bd8ad7
airthings_wave: Battery level reporting (#4979) 2023-07-12 13:38:52 +12:00
Stefan Rado
5f531ac9b0
Add TT21100 touchscreen component (#4793)
Co-authored-by: Rajan Patel <rpatel3001@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-07-12 13:19:19 +12:00
KoenBreeman
74139985c9
RTC implementation of pcf8563 (#4998)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-07-12 09:19:28 +12:00
jan-hofmeier
f3cdcc008a
Add Alpha3 pump component (#3787)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-07-11 17:12:43 +12:00
kahrendt
a391815921
Add Zio Ultrasonic Distance Sensor Component (#5059) 2023-07-11 16:24:18 +12:00
Tobias Oort
301a78f983
Adds 1.54" e-ink display (gdew0154m09) support to waveshare_epaper component (#4939)
* Added GDEW0154M09 in waveshare_epaper component

* noop change - trigger workflow

* Make linter happy

* Update test4.yaml

* linter doing linty things

* revert the newline removal.

* revert to prove unstable test

* add code back into test.

* no partial updates supported yet - removed from test.

* Update esphome/components/waveshare_epaper/waveshare_epaper.cpp

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-07-05 14:32:00 -05:00
Fabian
e74ab00b3e
Mopeka std fixes (#5041)
Co-authored-by: Your Name <you@example.com>
2023-07-04 12:55:04 +12:00
Sergey Dudanov
5b2176562b
binary_sensor filters templatable delays (#5029) 2023-07-04 12:25:48 +12:00
Kevin P. Fleming
8bd9f50659
airthings_wave: refactor to eliminate code duplication (#4910) 2023-06-21 11:53:44 +12:00
MrEditor97
41a618737b
XL9535 I/O Expander (#4899)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-06-19 15:26:06 +12:00
Pavlo Dudnytskyi
5a8e93ed0a
Upgraded Haier climate component implementation (#4521)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Pavlo Dudnytskyi <pdudnytskyi@astrata.eu>
Co-authored-by: esphomebot <esphome@nabucasa.com>
2023-06-19 10:24:52 +12:00
guillempages
ffa669899a
Split display_buffer sub-components into own files (#4950)
* Split display_buffer sub-components into own files

Move the Image, Animation and Font classes to their own h/cpp pairs,
instead of having everything into the display_buffer h/cpp files.

* Fixed COLOR_ON duplicate definition
2023-06-17 03:32:07 -05:00
Graham Brown
54474e5b33
Add Alarm Control Panel (#4770)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-06-15 12:34:39 +12:00
RoboMagus
5f0892dec4
Allow multiple MAC addresses for 'on_ble_advertise' filter (#4773) 2023-06-09 12:53:30 +12:00
guillempages
6b00622329
Add support for mdi images (#4654) 2023-06-07 09:32:21 +12:00
Samuel Sieb
71387846dc
move pio tools to LED component (#4903) 2023-05-28 20:49:27 +00:00
Sybren A. Stüvel
97c1c34708
Add support for TMP1075 temperature sensor (#4776)
* Add support for TMP1075 temperature sensor

TMP1075 is a temperature sensor with I2C interface in industry standard
LM75 form factor and pinout.

https://www.ti.com/product/TMP1075

Example YAML:

```yaml
sensor:
  - platform: tmp1075
    name: TMP1075 Temperature
    id: radiator_temp
    update_interval: 10s
    i2c_id: i2c_bus_1
    conversion_rate: 27.5ms
    alert:
      limit_low: 50
      limit_high: 75
      fault_count: 1
      polarity: active_high
```

* Add myself as codeowner of the TMP1075 component

* Include '°C' unit when logging low/high limit setting

* Reformat

No functional changes.

* Fix logging: use %.4f for temperatures, not %d

* Fix config initialisation

* Use relative include for `tmp1075.h`

* Apply formatting changes suggested by script/clang-tidy for ESP32

* Add YAML to test1.yaml

* Fix test1.yaml by giving TMP1075 a name

* Less verbose logging (debug -> verbose level)

* Schema: reduce accuracy_decimals to 2

* I2C address as hexadecimal

* Proper name for enum in Python

The enum on the C++ side was renamed (clang-tidy) but I forgot to take that
into account in the Python code.

* Expose 'alert function' to the code generator/YAML params and remove 'shutdown'

Shutdown mode doesn't work the way I expect it, so remove it until someone
actually asks for it.

Also 'alert mode' was renamed to 'alert function' for clarity.

* Move simple setters to header file

* Remove `load_config_();` function
2023-05-26 00:01:21 -05:00
Rajan Patel
bb044a789c
Add i2s mclk (#4885) 2023-05-24 19:28:08 +12:00
Daniel Mahaney
a15ac06771
Rp2040 pio ledstrip (#4818)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-05-22 10:31:27 +12:00
Stefan Rado
8384bd7fc7
Run YAML test 8 during CI and fix board used (#4862) 2023-05-22 08:08:33 +12:00
guillempages
8a518f0def
Add transparency support to all image types (#4600) 2023-05-22 08:03:21 +12:00
Joel Goguen
b3ed988119
Allow substitutions to be valid names (#4726) 2023-05-17 16:33:08 +12:00
Christian
0de47e2a4e
Add DNS to Text info (#4821)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-05-17 16:29:21 +12:00
Federico G. Schwindt
8e4aeec3bd
Fix time period validation for the auto cleaning interval (#4811) 2023-05-16 10:28:01 +12:00
Jesse Hills
b4c2433bac
Run black over tests folder (#4824) 2023-05-15 16:09:56 +12:00
Jesse Hills
39a650ee54
Add more configuration for microphones - i2s/pdm/adc (#4775) 2023-05-10 16:37:21 +12:00
bouhaa
ffdc721c79
SM2135 Add optional current configuration, avoid communication failures. (#3850)
Co-authored-by: matika77 <xmaximx@gmx.net>
Co-authored-by: Dion <contact@dd32.id.au>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-05-10 11:06:26 +12:00
Jesse Hills
4b664b6f09
Create esp32 rmt addressable light driver (#4708) 2023-05-09 09:33:43 +12:00
Jesse Hills
679633245d
Add gp8403 output component (#4495)
Co-authored-by: Samuel Sieb <samuel-github@sieb.net>
2023-05-08 12:45:12 +12:00
Jesse Hills
ce8a77c765
Speaker support (#4743) 2023-05-08 10:36:17 +12:00
looping40
de10b356cf
Max6956 support added (#3764)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-05-02 09:51:48 +12:00
Mat931
1c4af08ed3
Add support for BLE passkey authentication (#4258)
Co-authored-by: Branden Cash <203336+ammmze@users.noreply.github.com>
2023-05-02 09:25:10 +12:00