Merge pull request #2859 from esphome/bump-2023.4.0

2023.4.0
This commit is contained in:
Jesse Hills 2023-04-20 15:18:30 +12:00 committed by GitHub
commit fcd7e12169
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 1009 additions and 63 deletions

View File

@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 2023.3.2 PROJECT_NUMBER = 2023.4.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a

View File

@ -1,5 +1,5 @@
ESPHOME_PATH = ../esphome ESPHOME_PATH = ../esphome
ESPHOME_REF = 2023.3.2 ESPHOME_REF = 2023.4.0
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -1 +1 @@
2023.3.2 2023.4.0

241
changelog/2023.4.0.rst Normal file
View File

@ -0,0 +1,241 @@
ESPHome 2023.4.0 - 19th April 2023
==================================
.. seo::
:description: Changelog for ESPHome 2023.4.0.
:image: /_static/changelog-2023.4.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 3
Voice Assistant, components/voice_assistant, voice-assistant.svg
Microphone Core, components/microphone/index, microphone.svg
I2S Microphone, components/microphone/i2s_audio, i2s_audio.svg
MMC5603, components/sensor/mmc5603, mmc5603.jpg
KSZ8081 Ethernet, components/ethernet, ethernet.svg
Voice Assistant
---------------
This year is the Year of the Voice for Home Assistant, and ESPHome is charging ahead with this in mind.
We've added a new :doc:`/components/voice_assistant` component that allows you to use ESPHome devices as an input
for `assist <https://www.home-assistant.io/docs/assist/>`__ in Home Assistant.
With this also comes preliminary :doc:`microphone </components/microphone/index>` support, which has been built in a way that multiple
components, like ``voice_assistant`` can request start / stop of the microphone and get the data. We
hope this leads to more interesting use cases for the microphone in the future.
Home Assistant is hosting a live stream all about the Year of the Voice - Chapter 2.
.. raw:: html
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Tk-pnm7FY7c"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>
Keith joins Nabu Casa
---------------------
Nabu Casa is pleased to annouce that long time contributor Keith Burzinski (:ghuser:`kbx81`) is joining the
team as a full time developer to help out on ESPHome.
Breaking Changes
----------------
I²S Media Player
^^^^^^^^^^^^^^^^
With the introduction of the :doc:`/components/microphone/i2s_audio`, the media player platform has some
required breaking changes to the YAML configuration. This involves moving the ``i2s_lrclk_pin`` and
``i2s_bclk_pin`` to a new :doc:`/components/i2s_audio` component.
.. code-block:: yaml
# Before
media_player:
- platform: i2s_audio
name: ESPHome I2S Media Player
dac_type: external
i2s_lrclk_pin: GPIO33
i2s_bclk_pin: GPIO19
i2s_dout_pin: GPIO22
mode: mono
# After
i2s_audio:
i2s_lrclk_pin: GPIO33
i2s_bclk_pin: GPIO19
media_player:
- platform: i2s_audio
name: ESPHome I2S Media Player
dac_type: external
i2s_dout_pin: GPIO22
mode: mono
Default restore mode for Switches, Fans and Lights
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The default ``restore_mode`` for switches, fans and lights has been changed
from ``RESTORE_DEFAULT_OFF`` to ``ALWAYS_OFF`` with the intention that restoring values
from flash should be manually specified by a user if desired in their YAML configuration.
Number ``step``
^^^^^^^^^^^^^^^
The ``number`` components have always internally set a ``step`` required in config,
but allowed it to be not specified at all. This caused issues on the Home Assistant side
of things. This is only a breaking change for external components that have a ``number`` platform.
UART ids
^^^^^^^^
Due to ``uart0`` / ``uart1`` / ``uart2`` being defined in some of the platform code ESPHome uses,
ESPHome will now disallow these ids from being used in the config. You can simply change them to
``uart_0`` to continue using.
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Added in mmc5603 code :esphomepr:`4175` by :ghuser:`benhoff` (new-integration)
- Add push to talk voice assistant :esphomepr:`4648` by :ghuser:`jesserockz` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Disallow uart0/1/2 as ids in config :esphomepr:`4446` by :ghuser:`jesserockz` (breaking-change)
- Require step to be set when calling register_number :esphomepr:`4622` by :ghuser:`jesserockz` (breaking-change)
- Fix restore :esphomepr:`4655` by :ghuser:`spacemanspiff2007` (breaking-change)
Beta Changes
^^^^^^^^^^^^
- debug component, allow without debug logging :esphomepr:`4685` by :ghuser:`jesserockz`
- Fixed dns2 for ethernet :esphomepr:`4698` by :ghuser:`HeMan`
- Add timeout to i2c write error logs :esphomepr:`4697` by :ghuser:`Szewcson`
- Add event triggers to voice_assistant :esphomepr:`4699` by :ghuser:`jesserockz`
- Call on_error if no api client connected that handles voice :esphomepr:`4709` by :ghuser:`jesserockz`
- Add ethernet powerdown (fixes esphome/issues#4420) :esphomepr:`4706` by :ghuser:`tracestep`
- Bump arduino platform version to 5.3.0 :esphomepr:`4713` by :ghuser:`jesserockz`
All changes
^^^^^^^^^^^
- Mark unique_id() virtual method as deprecated :esphomepr:`4538` by :ghuser:`oxan`
- Drop deprecated entity property base methods :esphomepr:`4539` by :ghuser:`oxan`
- Format test files :esphomepr:`4541` by :ghuser:`jesserockz`
- EntityBase: Icon string can stay in flash. :esphomepr:`4566` by :ghuser:`Fabian-Schmidt`
- Update the delta filter to be able to take a percentage change :esphomepr:`4391` by :ghuser:`TrentHouliston`
- Added missing PM_1_0 and PM_10_0 for PMS5003T and PMS5003ST :esphomepr:`4560` by :ghuser:`genestealer`
- Add an option to force SPI into software mode :esphomepr:`4556` by :ghuser:`wupeka`
- allow using a binary output for the status led :esphomepr:`4532` by :ghuser:`ssieb`
- Add option flip_x :esphomepr:`4555` by :ghuser:`rafal83`
- Bump aioesphomeapi from 13.5.0 to 13.5.1 :esphomepr:`4572` by :ghuser:`dependabot[bot]`
- Verbose output of define. :esphomepr:`4576` by :ghuser:`Fabian-Schmidt`
- Add support for ESP32 CAM 3MP and 5MP resolutions and arbitrary camera clock. :esphomepr:`4580` by :ghuser:`peterhalicky`
- Add a simple 'skip_initial' filter :esphomepr:`4582` by :ghuser:`sybrenstuvel`
- Fix outdated filter string in platformio_api :esphomepr:`4587` by :ghuser:`LordMike`
- Split test3.yaml :esphomepr:`4591` by :ghuser:`jesserockz`
- Disallow uart0/1/2 as ids in config :esphomepr:`4446` by :ghuser:`jesserockz` (breaking-change)
- Upgrade clang-format to v13 :esphomepr:`4535` by :ghuser:`oxan`
- B/W support for GooDisplay GDEY029T94 (as used on Adafruit MagTag) :esphomepr:`4222` by :ghuser:`AaronJackson`
- Fix negative sqrt root in ct_clamp_sensor.cpp :esphomepr:`4236` by :ghuser:`jerome992`
- Wrap ipv6 code a bit more :esphomepr:`4574` by :ghuser:`jesserockz`
- Remove EntityBase from sprinkler :esphomepr:`4606` by :ghuser:`jesserockz`
- Fix wrong port multiplexer name in dump GPIO function of sx1509 :esphomepr:`4592` by :ghuser:`skaldo`
- Bump zeroconf from 0.47.3 to 0.47.4 :esphomepr:`4597` by :ghuser:`dependabot[bot]`
- Bump pytest-asyncio from 0.20.3 to 0.21.0 :esphomepr:`4599` by :ghuser:`dependabot[bot]`
- Limit range on filter time period for remote_receiver :esphomepr:`4604` by :ghuser:`RoboMagus`
- add select_schema to select component :esphomepr:`4545` by :ghuser:`regevbr`
- Add ability to clear the gatt cache :esphomepr:`4621` by :ghuser:`bdraco`
- Bump actions/stale from 7 to 8 :esphomepr:`4615` by :ghuser:`dependabot[bot]`
- Require step to be set when calling register_number :esphomepr:`4622` by :ghuser:`jesserockz` (breaking-change)
- Lower range of CONF_FREQUENCY :esphomepr:`4619` by :ghuser:`berendhaan`
- Allow entity names to be set to None :esphomepr:`4607` by :ghuser:`jesserockz`
- Fix platform restriction for bme680_bsec :esphomepr:`4616` by :ghuser:`jesserockz`
- Fix EzoCommandType enum :esphomepr:`4593` by :ghuser:`alfredopironti`
- `EntityBase` Name can stay in flash. :esphomepr:`4594` by :ghuser:`Fabian-Schmidt`
- feat: Add support to unsubscribe from BLE advertisements :esphomepr:`4620` by :ghuser:`richardhopton`
- EntityBase: Move ObjectId to Flash :esphomepr:`4569` by :ghuser:`Fabian-Schmidt`
- Add workflow to sync device classes with HA dev :esphomepr:`4629` by :ghuser:`jesserockz`
- Synchronise Device Classes from Home Assistant :esphomepr:`4633` by :ghuser:`github-actions[bot]`
- Remove AUTO_LOAD from as3935 :esphomepr:`4630` by :ghuser:`jesserockz`
- Add ifdef to new bt proxy unsubscribe :esphomepr:`4634` by :ghuser:`jesserockz`
- add bluetooth mac address in dump_config() :esphomepr:`4628` by :ghuser:`felixlungu`
- Binary map bugfixes :esphomepr:`4636` by :ghuser:`kahrendt`
- entity_base avoid padding bytes. :esphomepr:`4637` by :ghuser:`Fabian-Schmidt`
- Avoid sensor padding. :esphomepr:`4638` by :ghuser:`Fabian-Schmidt`
- Support advanced UART customization :esphomepr:`4465` by :ghuser:`Fabian-Schmidt`
- Log calibration results at level INFO :esphomepr:`4240` by :ghuser:`Duckle29`
- Number step not optional :esphomepr:`4649` by :ghuser:`RoboMagus`
- VSCode / devcontainer updates :esphomepr:`4647` by :ghuser:`jesserockz`
- Retry PN532_COMMAND_VERSION_DATA on setup() (fixes esphome/issues#3823) :esphomepr:`4651` by :ghuser:`tracestep`
- Bump pylint from 2.16.4 to 2.17.2 :esphomepr:`4650` by :ghuser:`dependabot[bot]`
- Bump black from 23.1.0 to 23.3.0 :esphomepr:`4635` by :ghuser:`dependabot[bot]`
- Added in mmc5603 code :esphomepr:`4175` by :ghuser:`benhoff` (new-integration)
- fix compilation with latest esp-idf :esphomepr:`4671` by :ghuser:`Mic92`
- Bump zeroconf from 0.47.4 to 0.56.0 :esphomepr:`4674` by :ghuser:`dependabot[bot]`
- Bump pytest from 7.2.2 to 7.3.0 :esphomepr:`4673` by :ghuser:`dependabot[bot]`
- Add push to talk voice assistant :esphomepr:`4648` by :ghuser:`jesserockz` (new-integration)
- Fix ESP32 SPI hardware assignment in Arduino fw :esphomepr:`4669` by :ghuser:`kbx81`
- Fix some NFC/PN532 crashes :esphomepr:`4678` by :ghuser:`kbx81`
- Add support for SSD1306 72x40 displays :esphomepr:`4659` by :ghuser:`johnsto`
- Fix pin schema for i2s microphone :esphomepr:`4680` by :ghuser:`jesserockz`
- Fix BedJet setup priority [fixes esphome/issues#3807] :esphomepr:`4677` by :ghuser:`jhansche`
- Add always trigger stop :esphomepr:`4249` by :ghuser:`X-Ryl669`
- Fix graph limits for negative values and other corner cases :esphomepr:`4253` by :ghuser:`unhold`
- Fix cut-off on 2.13" waveshare/ttgo epaper displays :esphomepr:`4255` by :ghuser:`unhold`
- [Ethernet] Add PHY KSZ8081 support :esphomepr:`4668` by :ghuser:`Fabian-Schmidt`
- Fix restore :esphomepr:`4655` by :ghuser:`spacemanspiff2007` (breaking-change)
- debug component, allow without debug logging :esphomepr:`4685` by :ghuser:`jesserockz`
- Fixed dns2 for ethernet :esphomepr:`4698` by :ghuser:`HeMan`
- Add timeout to i2c write error logs :esphomepr:`4697` by :ghuser:`Szewcson`
- Add event triggers to voice_assistant :esphomepr:`4699` by :ghuser:`jesserockz`
- Call on_error if no api client connected that handles voice :esphomepr:`4709` by :ghuser:`jesserockz`
- Add ethernet powerdown (fixes esphome/issues#4420) :esphomepr:`4706` by :ghuser:`tracestep`
- Bump arduino platform version to 5.3.0 :esphomepr:`4713` by :ghuser:`jesserockz`
Past Changelogs
---------------
- :doc:`2023.3.0`
- :doc:`2023.2.0`
- :doc:`2022.12.0`
- :doc:`2022.11.0`
- :doc:`2022.10.0`
- :doc:`2022.9.0`
- :doc:`2022.8.0`
- :doc:`2022.6.0`
- :doc:`2022.5.0`
- :doc:`2022.4.0`
- :doc:`2022.3.0`
- :doc:`2022.2.0`
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`

View File

@ -2,7 +2,7 @@ Changelog
========= =========
.. redirect:: .. redirect::
:url: /changelog/2023.3.0.html :url: /changelog/2023.4.0.html
.. toctree:: .. toctree::
:glob: :glob:

View File

@ -27,6 +27,13 @@ you can always override it.
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name for the binary sensor.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the binary sensor to use that name, you can set ``name: None``.
- **device_class** (*Optional*, string): The device class for the - **device_class** (*Optional*, string): The device class for the
sensor. See https://developers.home-assistant.io/docs/core/entity/binary-sensor/#available-device-classes sensor. See https://developers.home-assistant.io/docs/core/entity/binary-sensor/#available-device-classes
for a list of available options. for a list of available options.

View File

@ -41,6 +41,12 @@ All buttons in ESPHome have a name and an optional icon.
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name for the button. - **name** (**Required**, string): The name for the button.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the button to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the button in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the button in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without

View File

@ -33,6 +33,13 @@ All climate platforms in ESPHome inherit from the climate configuration schema.
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name of the climate device.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the climate to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the climate device in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the climate device in the frontend.
- **visual** (*Optional*): Visual settings for the climate device - these do not - **visual** (*Optional*): Visual settings for the climate device - these do not
affect operation and are solely for controlling how the climate device shows up in the affect operation and are solely for controlling how the climate device shows up in the

View File

@ -28,6 +28,13 @@ All cover config schemas inherit from this schema - you can set these keys for c
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name for the cover.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the cover to use that name, you can set ``name: None``.
- **device_class** (*Optional*, string): The device class for the - **device_class** (*Optional*, string): The device class for the
sensor. See https://www.home-assistant.io/components/cover/ for a list of available options. sensor. See https://www.home-assistant.io/components/cover/ for a list of available options.
- **icon** (*Optional*, icon): Manually set the icon to use for the cover in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the cover in the frontend.

View File

@ -52,6 +52,13 @@ Configuration variables:
detectors. In this configuration the ``stop_action`` is not performed when the open or close detectors. In this configuration the ``stop_action`` is not performed when the open or close
time is completed and if the cover is commanded to open or close the corresponding actions time is completed and if the cover is commanded to open or close the corresponding actions
will be performed without checking current state. Defaults to ``false``. will be performed without checking current state. Defaults to ``false``.
- **manual_control** (*Optional*, boolean): For covers with manual external controls. With this
configuration if the cover is commanded to open or close the corresponding actions will be
performed even if the current state fully open or fully closed matches desired state, then
``stop_action`` will be called after the full duration of the action elapses.
The current state will then be relearned upon completion.
It's recommended to set ``assumed_state`` to true so the cover control button aren't disabled
in the interface. Defaults to ``false``.
- **assumed_state** (*Optional*, boolean): Whether the true state of the cover is not known. - **assumed_state** (*Optional*, boolean): Whether the true state of the cover is not known.
This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead
of hiding or disabling one of them. Defaults to ``true``. of hiding or disabling one of them. Defaults to ``true``.

View File

@ -68,6 +68,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **num_chip_lines** (*Optional*, int): Number of lines if you want to use the displays in Multiline Mode. Defaults to ``1`` Example: https://github.com/esphome/esphome/pull/1622#issue-836179156 - **num_chip_lines** (*Optional*, int): Number of lines if you want to use the displays in Multiline Mode. Defaults to ``1`` Example: https://github.com/esphome/esphome/pull/1622#issue-836179156
- **chip_lines_style** (*Optional*): How are the lines in Multiline Mode connected? Possible values are ``zigzag`` and ``snake``. Defaults to ``snake`` - **chip_lines_style** (*Optional*): How are the lines in Multiline Mode connected? Possible values are ``zigzag`` and ``snake``. Defaults to ``snake``
- **flip_x** (*Optional*, boolean): Flip the horizontal axis on the screen. Defaults to ``false``.
.. _display-max7219digit_lambda: .. _display-max7219digit_lambda:

View File

@ -51,6 +51,7 @@ Configuration variables:
- ``SSD1306 128x32`` - SSD1306 with 128 columns and 32 rows - ``SSD1306 128x32`` - SSD1306 with 128 columns and 32 rows
- ``SSD1306 128x64`` - ``SSD1306 128x64``
- ``SSD1306 96x16`` - ``SSD1306 96x16``
- ``SSD1306 72x40``
- ``SSD1306 64x48`` - ``SSD1306 64x48``
- ``SH1106 128x32`` - ``SH1106 128x32``
- ``SH1106 128x64`` - ``SH1106 128x64``
@ -130,6 +131,7 @@ Configuration variables:
- ``SSD1306 128x32`` (SSD1306 with 128 columns and 32 rows) - ``SSD1306 128x32`` (SSD1306 with 128 columns and 32 rows)
- ``SSD1306 128x64`` - ``SSD1306 128x64``
- ``SSD1306 96x16`` - ``SSD1306 96x16``
- ``SSD1306 72x40``
- ``SSD1306 64x48`` - ``SSD1306 64x48``
- ``SH1106 128x32`` - ``SH1106 128x32``
- ``SH1106 128x64`` - ``SH1106 128x64``

View File

@ -97,6 +97,7 @@ Configuration variables:
- ``7.50inV2`` - Can't use with an ESP8266 as it runs out of RAM - ``7.50inV2`` - Can't use with an ESP8266 as it runs out of RAM
- ``7.50inV2alt`` (alternative version to the above ``7.50inV2``) - ``7.50inV2alt`` (alternative version to the above ``7.50inV2``)
- ``7.50in-hd-b`` - Can't use with an ESP8266 as it runs out of RAM - ``7.50in-hd-b`` - Can't use with an ESP8266 as it runs out of RAM
- ``gdey029t94`` - GooDisplay GDEY029T94, as used on the AdaFruit MagTag
- **busy_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The BUSY pin. Defaults to not connected. - **busy_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The BUSY pin. Defaults to not connected.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected. - **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.

View File

@ -53,8 +53,8 @@ Connection Options:
- **external_clock** (**Required**): The configuration of the external clock to drive the camera. - **external_clock** (**Required**): The configuration of the external clock to drive the camera.
- **pin** (**Required**, pin): The pin the external clock line is connected to. - **pin** (**Required**, pin): The pin the external clock line is connected to.
- **frequency** (*Optional*, float): The frequency of the external clock, must be either 20MHz - **frequency** (*Optional*, float): The frequency of the external clock, must be between 10
or 10MHz. Defaults to ``20MHz``. and 20MHz. Defaults to ``20MHz``.
- **i2c_pins** (**Required**): The I²C control pins of the camera. - **i2c_pins** (**Required**): The I²C control pins of the camera.
@ -90,6 +90,15 @@ Image Settings:
- ``1024x768`` (XGA) - ``1024x768`` (XGA)
- ``1280x1024`` (SXGA) - ``1280x1024`` (SXGA)
- ``1600x1200`` (UXGA) - ``1600x1200`` (UXGA)
- ``1920x1080`` (FHD)
- ``720x1280`` (Portrait HD)
- ``864x1536`` (Portrait 3MP)
- ``2048x1536`` (QXGA)
- ``2560x1440`` (QHD)
- ``2560x1600`` (WQXGA)
- ``1080x1920`` (Portrait FHD)
- ``2560x1920`` (QSXGA)
- **jpeg_quality** (*Optional*, int): The JPEG quality that the camera should encode images with. - **jpeg_quality** (*Optional*, int): The JPEG quality that the camera should encode images with.
From 10 (best) to 63 (worst). Defaults to ``10``. From 10 (best) to 63 (worst). Defaults to ``10``.

View File

@ -40,6 +40,7 @@ Configuration variables:
- ``DP83848`` - ``DP83848``
- ``IP101`` - ``IP101``
- ``JL1101`` - ``JL1101``
- ``KSZ8081``
- **mdc_pin** (**Required**, :ref:`config-pin`): The MDC pin of the board. - **mdc_pin** (**Required**, :ref:`config-pin`): The MDC pin of the board.
Usually this is ``GPIO23``. Usually this is ``GPIO23``.

View File

@ -27,15 +27,21 @@ Base Fan Configuration
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name of the fan. - **name** (**Required**, string): The name of the fan.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the fan to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the fan in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the fan in the frontend.
- **restore_mode** (*Optional*): Control how the fan attempts to restore state on boot. - **restore_mode** (*Optional*): Control how the fan attempts to restore state on boot.
- ``NO_RESTORE`` - Don't restore any state. - ``NO_RESTORE`` - Don't restore any state.
- ``RESTORE_DEFAULT_OFF`` - Attempt to restore state and default to OFF if not possible to restore (default). - ``RESTORE_DEFAULT_OFF`` - Attempt to restore state and default to OFF if not possible to restore.
- ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON. - ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON.
- ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF. - ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF.
- ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON. - ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON.
- ``ALWAYS_OFF`` - Always initialize the fan as OFF on bootup. - ``ALWAYS_OFF`` (Default) - Always initialize the fan as OFF on bootup.
- ``ALWAYS_ON`` - Always initialize the fan as ON on bootup. - ``ALWAYS_ON`` - Always initialize the fan as ON on bootup.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will

29
components/i2s_audio.rst Normal file
View File

@ -0,0 +1,29 @@
I²S Audio Component
===================
.. seo::
:description: Instructions for setting up I²S based devices in ESPHome.
:image: i2s_audio.svg
The ``i2s_audio`` component allows for sending and receiving audio via I²S.
This component only works on ESP32 based chips.
.. code-block:: yaml
# Example configuration entry
i2s_audio:
i2s_lrclk_pin: GPIO33
i2s_bclk_pin: GPIO19
Configuration variables:
------------------------
- **i2s_lrclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S LRCLK (Word Select or Left/Right Clock) signal.
- **i2s_bclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S BCLK (Bit Clock) signal.
See also
--------
- :doc:`microphone/i2s_audio`
- :doc:`media_player/i2s_audio`
- :ghedit:`Edit`

View File

@ -23,5 +23,6 @@ Components
lock/index lock/index
display_menu/index display_menu/index
media_player/index media_player/index
microphone/index
time/index time/index
* *

View File

@ -26,6 +26,13 @@ All light configuration schemas inherit these options.
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name of the light.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the light to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the light in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the light in the frontend.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light. - **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light.
- **gamma_correct** (*Optional*, float): Apply a `gamma correction - **gamma_correct** (*Optional*, float): Apply a `gamma correction
@ -39,13 +46,13 @@ Configuration variables:
For restoring on ESP8266s, also see ``esp8266_restore_from_flash`` in the For restoring on ESP8266s, also see ``esp8266_restore_from_flash`` in the
:doc:`esphome section </components/esphome>`. :doc:`esphome section </components/esphome>`.
- ``RESTORE_DEFAULT_OFF`` (Default) - Attempt to restore state and default to OFF if not possible to restore. - ``RESTORE_DEFAULT_OFF`` - Attempt to restore state and default to OFF if not possible to restore.
- ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON. - ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON.
- ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF. - ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF.
- ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON. - ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON.
- ``RESTORE_AND_OFF`` - Attempt to restore state but initialize the light as OFF. - ``RESTORE_AND_OFF`` - Attempt to restore state but initialize the light as OFF.
- ``RESTORE_AND_ON`` - Attempt to restore state but initialize the light as ON. - ``RESTORE_AND_ON`` - Attempt to restore state but initialize the light as ON.
- ``ALWAYS_OFF`` - Always initialize the light as OFF on bootup. - ``ALWAYS_OFF`` (Default) - Always initialize the light as OFF on bootup.
- ``ALWAYS_ON`` - Always initialize the light as ON on bootup. - ``ALWAYS_ON`` - Always initialize the light as ON on bootup.
- **on_turn_on** (*Optional*, :ref:`Action <config-action>`): An automation to perform - **on_turn_on** (*Optional*, :ref:`Action <config-action>`): An automation to perform

View File

@ -8,6 +8,7 @@ Status LED Light
The ``status_led`` light platform allows to share a single LED for indicating the status of The ``status_led`` light platform allows to share a single LED for indicating the status of
the device (when on error/warning state) or as binary light (when on OK state). the device (when on error/warning state) or as binary light (when on OK state).
This is useful for devices with only one LED available. This is useful for devices with only one LED available.
You can also use a binary :ref:`output`.
It provides the combined functionality of :doc:`status_led component </components/status_led>` and a It provides the combined functionality of :doc:`status_led component </components/status_led>` and a
:doc:`binary light component </components/light/binary>` over a single shared GPIO led. :doc:`binary light component </components/light/binary>` over a single shared GPIO led.
@ -33,9 +34,10 @@ When the device is in OK state, the LED will be restored to the state of the ``b
Configuration variables: Configuration variables:
------------------------ ------------------------
- **name** (**Required**, string): The name of the light. - **name** (*Optional*, string): The name of the light.
- **pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to operate the LED on.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to operate the LED on.
- **output** (*Optional*, :ref:`config-id`): The id of the binary :ref:`output` to use for this light.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light, though binary lights - **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light, though binary lights
only support very few of them. only support very few of them.
- All other options from :ref:`Light <config-light>`. - All other options from :ref:`Light <config-light>`.

View File

@ -26,6 +26,12 @@ Base Lock Configuration
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name of the lock. - **name** (**Required**, string): The name of the lock.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the lock to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the - **icon** (*Optional*, icon): Manually set the icon to use for the
lock in the frontend. lock in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will

View File

@ -2,11 +2,11 @@ I2S Audio Media Player
====================== ======================
.. seo:: .. seo::
:description: Instructions for setting up I2S based media players in ESPHome. :description: Instructions for setting up I²S based media players in ESPHome.
:image: i2s_audio.svg :image: i2s_audio.svg
The ``i2s_audio`` media player platform allows you to play media from webservers and web streams The ``i2s_audio`` media player platform allows you to play media from webservers and web streams
via the I2S bus. This platform only works on ESP32 based chips. via the :doc:`/components/i2s_audio`. This platform only works on ESP32 based chips.
.. code-block:: yaml .. code-block:: yaml
@ -15,9 +15,7 @@ via the I2S bus. This platform only works on ESP32 based chips.
- platform: i2s_audio - platform: i2s_audio
name: ESPHome I2S Media Player name: ESPHome I2S Media Player
dac_type: external dac_type: external
i2s_lrclk_pin: GPIO33
i2s_dout_pin: GPIO22 i2s_dout_pin: GPIO22
i2s_bclk_pin: GPIO19
mode: mono mode: mono
Configuration variables: Configuration variables:
@ -33,10 +31,8 @@ Configuration variables:
External DAC External DAC
************ ************
- **i2s_lrclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I2S LRCLK (Word Select or Left/Right Clock) signal. - **i2s_dout_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S DOUT (Data Out) signal.
- **i2s_dout_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I2S DOUT (Data Out) signal. - **mode** (*Optional*, string): The mode of the I²S bus. Can be ``mono`` or ``stereo``. Defaults to ``mono``.
- **i2s_bclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I2S BCLK (Bit Clock) signal.
- **mode** (*Optional*, string): The mode of the I2S bus. Can be ``mono`` or ``stereo``. Defaults to ``mono``.
For best results, keep the wires as short as possible. For best results, keep the wires as short as possible.

View File

@ -26,6 +26,12 @@ Base Media Player Configuration
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name of the media player. - **name** (**Required**, string): The name of the media player.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the media player to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the - **icon** (*Optional*, icon): Manually set the icon to use for the
media player in the frontend. media player in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will

View File

@ -0,0 +1,29 @@
I²S Audio Microphone
====================
.. seo::
:description: Instructions for setting up I²S based microphones in ESPHome.
:image: i2s_audio.svg
The ``i2s_audio`` microphone platform allows you to receive audio via the the
:doc:`/components/i2s_audio`. This platform only works on ESP32 based chips.
.. code-block:: yaml
# Example configuration entry
microphone:
- platform: i2s_audio
i2s_din_pin: GPIO23
Configuration variables:
------------------------
- **i2s_din_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S DIN (Data In) signal.
- All other options from :ref:`Microphone <config-microphone>`
See also
--------
- :doc:`index`
- :ghedit:`Edit`

View File

@ -0,0 +1,109 @@
Microphone Components
=====================
.. seo::
:description: Instructions for setting up microphones in ESPHome.
:image: folder-open.svg
The ``microphone`` domain contains common functionality shared across the
microphone platforms.
.. _config-microphone:
Base Microphone Configuration
-----------------------------
Configuration variables:
- **on_data** (*Optional*, :ref:`Automation <automation>`): An automation to
perform when new data is received.
.. _microphone-actions:
Microphone Actions
------------------
All ``microphone`` actions can be used without specifying an ``id`` if you have only one ``microphone`` in
your configuration YAML.
Configuration variables:
**id** (*Optional*, :ref:`config-id`): The microphone to control. Defaults to the only one in YAML.
.. _microphone-capture:
``microphone.capture`` Action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This action will start capturing audio data from the microphone. The data will be passed to any components listening
and will be available in the ``on_data`` trigger.
.. _microphone-stop_capture:
``microphone.stop_capture`` Action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This action will stop capturing audio data from the microphone.
.. _microphone-triggers:
Microphone Triggers
-------------------
.. _microphone-on_data:
``microphone.on_data`` Trigger
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This trigger will fire when new data is received from the microphone.
The data is available as a ``std::vector<uint8_t>`` in the variable ``x``.
.. code-block:: yaml
microphone:
- platform: ...
on_data:
- logger.log:
format: "Received %d bytes"
args: ['x.size()']
Configuration variables:
- **id** (*Optional*, :ref:`config-id`): The microphone to check. Defaults to the only one in YAML.
.. _microphone-conditions:
Microphone Conditions
---------------------
All ``microphone`` conditions can be used without specifying an ``id`` if you have only one ``microphone`` in
your configuration YAML.
Configuration variables:
**id** (*Optional*, :ref:`config-id`): The microphone to check. Defaults to the only one in YAML.
.. _microphone-is_capturing:
``microphone.is_capturing`` Condition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This condition will check if the microphone is currently capturing audio data.
Platforms
---------
.. toctree::
:maxdepth: 1
:glob:
*
See Also
--------
- :ghedit:`Edit`

View File

@ -31,6 +31,12 @@ All numbers in ESPHome have a name and an optional icon.
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name for the number. - **name** (**Required**, string): The name for the number.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the number to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the number in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the number in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without

View File

@ -31,6 +31,12 @@ All selects in ESPHome have a name and an optional icon.
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name for the select. - **name** (**Required**, string): The name for the select.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the select to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the select in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the select in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without

View File

@ -40,6 +40,12 @@ Configuration variables:
- **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified. - **id** (*Optional*, string): Manually specify the ID for code generation. At least one of **id** and **name** must be specified.
- **name** (*Optional*, string): The name for the sensor. At least one of **id** and **name** must be specified. - **name** (*Optional*, string): The name for the sensor. At least one of **id** and **name** must be specified.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the sensor to use that name, you can set ``name: None``.
- **unit_of_measurement** (*Optional*, string): Manually set the unit - **unit_of_measurement** (*Optional*, string): Manually set the unit
of measurement the sensor should advertise its values with. This does of measurement the sensor should advertise its values with. This does
not actually do any maths (conversion between units). not actually do any maths (conversion between units).
@ -406,6 +412,21 @@ Configuration variables:
published. With this parameter you can specify when the very first value is to be sent. published. With this parameter you can specify when the very first value is to be sent.
Defaults to ``1``. Defaults to ``1``.
``skip_initial``
****************
A simple skip filter; `skip_initial: N` skips the first `N` sensor readings and passes on the
rest. This can be used when the sensor needs a few readings to 'warm up'. After the initial
readings have been skipped, this filter does nothing.
.. code-block:: yaml
# Example configuration entry
- platform: wifi_signal
# ...
filters:
- skip_initial: 3
``throttle`` ``throttle``
************ ************
@ -456,11 +477,28 @@ values.
``delta`` ``delta``
********* *********
This filter stores the last value passed through this filter and only This filter stores the last value passed through this filter and only passes incoming values through
passes incoming values through if the absolute difference is greater than the configured if incoming value is sufficiently different from the previously passed one.
value. For example if a value of 1.0 first comes in, it's passed on. If the delta filter This difference can be calculated in two ways an absolute difference or a percentage difference.
is configured with a value of 5, it will now not pass on an incoming value of 2.0, only values
that are at least 6.0 big or -4.0. If a number is specified, it will be used as the absolute difference required.
For example if the filter were configured with a value of 2 and the last value passed through was 10,
only values greater than 12 or less than 8 would be passed through.
.. code-block:: yaml
filters:
- delta: 2.0
If a percentage is specified a percentage of the last value will be used as the required difference.
For example if the filter were configured with a value of 20% and the last value passed through was 10,
only values greater than 12 or less than 8 would be passed through.
However, if the last value passed through was 100 only values greater than 120 or less than 80 would be passed through.
.. code-block:: yaml
filters:
- delta: 20%
``or`` ``or``
****** ******

View File

@ -0,0 +1,63 @@
.. _mmc5603:
MMC5603 Magnetometer
=====================
.. seo::
:description: Instructions for setting up MMC5693 IMU compass sensors.
:image: mmc5603.jpg
:keywords: MMC5603
The ``mmc5603`` allows you to use your MMC5603 triple-axis magnetometers
(`datasheet <https://cdn-learn.adafruit.com/assets/assets/000/113/957/original/MMC5603NJ_RevB_7-12-18.pdf?1659554945>`__,
`Adafruit`_) with ESPHome. The :ref:`I²C Bus <i2c>` is required to be set up in your configuration
for this sensor to work.
.. figure:: ../../images/mmc5603.jpg
:align: center
:width: 30.0%
MMC5603 Magnetometer.
.. _Adafruit: https://www.adafruit.com/product/5579
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: MMC5603
address: 0x30
field_strength_x:
name: "MMC5603 Field Strength X"
field_strength_y:
name: "MMC5603 Field Strength Y"
field_strength_z:
name: "MMC5603 Field Strength Z"
heading:
name: "MMC5603 Heading"
update_interval: 60s
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x1E``.
- **field_strength_x** (*Optional*): The field strength in microtesla along the X-Axis. All options from
:ref:`Sensor <config-sensor>`.
- **field_strength_y** (*Optional*): The field strength in microtesla along the Y-Axis. All options from
:ref:`Sensor <config-sensor>`.
- **field_strength_z** (*Optional*): The field strength in microtesla along the Z-Axis. All options from
:ref:`Sensor <config-sensor>`.
- **heading** (*Optional*): The heading of the sensor in degrees. All options from
:ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
See Also
--------
- :ref:`sensor-filters`
- :doc:`template`
- :apiref:`mmc5603/mmc5603.h`
- :ghedit:`Edit`

View File

@ -5,7 +5,7 @@ PMSX003 Particulate Matter Sensor
:description: Instructions for setting up PMSX003 Particulate matter sensors :description: Instructions for setting up PMSX003 Particulate matter sensors
:image: pmsx003.svg :image: pmsx003.svg
The ``pmsx003`` sensor platform allows you to use your PMS5003, PMS7003, ... particulate matter The ``pmsx003`` sensor platform allows you to use your Plantower PMS5003, PMS7003, ... laser based particulate matter sensors
(`datasheet <http://www.aqmd.gov/docs/default-source/aq-spec/resources-page/plantower-pms5003-manual_v2-3.pdf>`__) (`datasheet <http://www.aqmd.gov/docs/default-source/aq-spec/resources-page/plantower-pms5003-manual_v2-3.pdf>`__)
sensors with ESPHome. sensors with ESPHome.
@ -18,9 +18,16 @@ value:
- ``PMSX003`` for generic PMS5003, PMS7003, ...; these sensors support ``pm_1_0``, ``pm_2_5`` and ``pm_10_0`` output. - ``PMSX003`` for generic PMS5003, PMS7003, ...; these sensors support ``pm_1_0``, ``pm_2_5`` and ``pm_10_0`` output.
- ``PMS5003S`` for PMS5003S. These support ``pm_1_0``, ``pm_2_5`` and ``pm_10_0`` and ``formaldehyde``. - ``PMS5003S`` for PMS5003S. These support ``pm_1_0``, ``pm_2_5`` and ``pm_10_0`` and ``formaldehyde``.
- ``PMS5003T`` for PMS5003T. These support ``pm_2_5``, ``temperature`` and ``humidity``. - ``PMS5003T`` for PMS5003T. These support ``pm_1_0``, ``pm_2_5`` and ``pm_10_0``, ``temperature`` and ``humidity``.
- ``PMS5003ST`` for PMS5003ST. These support ``pm_2_5``, ``temperature``, ``humidity`` and ``formaldehyde``. - ``PMS5003ST`` for PMS5003ST. These support ``pm_2_5``, ``temperature``, ``humidity`` and ``formaldehyde``.
Sensor Longevity
------------------------
The laser diode inside the PMSX003 has a lifetime of about 8000 hours, nearly one year.
If you wish to use the optional ``update_interval`` ensure you have a ``tx_pin`` set in the UART configuration and connected to the RECEIVE/RX pin
(may also be called the TX pin, depending on the model) of the PMS. Setting ``update_interval`` to 120 seconds or higher may help extend the life span of the sensor.
.. code-block:: yaml .. code-block:: yaml
# Example configuration entry # Example configuration entry
@ -38,34 +45,34 @@ value:
name: "Particulate Matter <2.5µm Concentration" name: "Particulate Matter <2.5µm Concentration"
pm_10_0: pm_10_0:
name: "Particulate Matter <10.0µm Concentration" name: "Particulate Matter <10.0µm Concentration"
update_interval: 60000ms update_interval: 120s
Configuration variables: Configuration variables:
------------------------ ------------------------
- **pm_1_0_std** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter at standard particle - **pm_1_0_std** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter at standard particle.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5_std** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter at standard particle - **pm_2_5_std** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter at standard particle.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0_std** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter at standard particle - **pm_10_0_std** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter at standard particle.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_1_0** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter under atmospheric environment - **pm_1_0** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter under atmospheric environment.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter under atmospheric environment - **pm_2_5** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter under atmospheric environment.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter under atmospheric environment - **pm_10_0** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter under atmospheric environment.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_0_3um** (*Optional*): Use the number of particles with diameter beyond 0.3um in 0.1L of air - **pm_0_3um** (*Optional*): Use the number of particles with diameter beyond 0.3um in 0.1L of air.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_0_5um** (*Optional*): Use the number of particles with diameter beyond 0.5um in 0.1L of air - **pm_0_5um** (*Optional*): Use the number of particles with diameter beyond 0.5um in 0.1L of air.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_1_0um** (*Optional*): Use the number of particles with diameter beyond 1.0um in 0.1L of air - **pm_1_0um** (*Optional*): Use the number of particles with diameter beyond 1.0um in 0.1L of air.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5um** (*Optional*): Use the number of particles with diameter beyond 2.5um in 0.1L of air - **pm_2_5um** (*Optional*): Use the number of particles with diameter beyond 2.5um in 0.1L of air.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_5_0um** (*Optional*): Use the number of particles with diameter beyond 5.0um in 0.1L of air - **pm_5_0um** (*Optional*): Use the number of particles with diameter beyond 5.0um in 0.1L of air. Not supported by the ``PMS5003T`` type sensors.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0um** (*Optional*): Use the number of particles with diameter beyond 10.0um in 0.1L of air - **pm_10_0um** (*Optional*): Use the number of particles with diameter beyond 10.0um in 0.1L of air. Not supported by the ``PMS5003T`` type sensors.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): Use the temperature value in °C for the ``PMS5003T`` and ``PMS5003ST`` type sensors. - **temperature** (*Optional*): Use the temperature value in °C for the ``PMS5003T`` and ``PMS5003ST`` type sensors.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.

View File

@ -41,6 +41,7 @@ Configuration variables:
- **clk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin used for the clock line of the SPI bus. - **clk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin used for the clock line of the SPI bus.
- **mosi_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin used for the MOSI line of the SPI bus. - **mosi_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin used for the MOSI line of the SPI bus.
- **miso_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin used for the MISO line of the SPI bus. - **miso_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin used for the MISO line of the SPI bus.
- **force_sw** (*Optional*, boolean): Whether software implementation should be used even if hardware one is available.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this SPI hub if you need multiple SPI hubs. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this SPI hub if you need multiple SPI hubs.
See Also See Also

View File

@ -23,6 +23,12 @@ Base Switch Configuration
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name of the switch. - **name** (**Required**, string): The name of the switch.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the switch to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the - **icon** (*Optional*, icon): Manually set the icon to use for the
sensor in the frontend. sensor in the frontend.
- **inverted** (*Optional*, boolean): Whether to invert the binary - **inverted** (*Optional*, boolean): Whether to invert the binary
@ -41,11 +47,11 @@ Configuration variables:
- ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON. - ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON.
- ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF. - ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF.
- ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON. - ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON.
- ``ALWAYS_OFF`` - Always initialize the switch as OFF on bootup. - ``ALWAYS_OFF`` (Default) - Always initialize the switch as OFF on bootup.
- ``ALWAYS_ON`` - Always initialize the switch as ON on bootup. - ``ALWAYS_ON`` - Always initialize the switch as ON on bootup.
- ``DISABLED`` - Does nothing and leaves it up to the downstream platform component to decide. For example, the component could read hardware and determine the state, or have a specific configuration option to regulate initial state. - ``DISABLED`` - Does nothing and leaves it up to the downstream platform component to decide. For example, the component could read hardware and determine the state, or have a specific configuration option to regulate initial state.
Unless a specific platform defines another default value, the default is ``RESTORE_DEFAULT_OFF``. Unless a specific platform defines another default value, the default is ``ALWAYS_OFF``.
- **on_turn_on** (*Optional*, :ref:`Action <config-action>`): An automation to perform - **on_turn_on** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when the switch is turned on. See :ref:`switch-on_turn_on_off_trigger`. when the switch is turned on. See :ref:`switch-on_turn_on_off_trigger`.

View File

@ -25,6 +25,12 @@ Base Text Sensor Configuration
Configuration variables: Configuration variables:
- **name** (**Required**, string): The name for the sensor. - **name** (**Required**, string): The name for the sensor.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the text sensor to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the sensor in the frontend. - **icon** (*Optional*, icon): Manually set the icon to use for the sensor in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without

View File

@ -0,0 +1,79 @@
Voice Assistant
===============
.. seo::
:description: Instructions for setting up a Voice Assistant in ESPHome.
:image: voice-assistant.svg
ESPHome devices with a microphone are able to stream the audio to Home Assistant and be processed there by `assist <https://www.home-assistant.io/docs/assist/>`__.
.. note::
Voice Assistant requires Home Assistant 2023.5 or later.
Configuration:
--------------
.. code-block:: yaml
microphone:
- platform: ...
id: mic_id
voice_assistant:
microphone: mic_id
- **microphone** (**Required**, :ref:`config-id`): The microphone to use for input.
- **on_start** (*Optional*, :ref:`Automation <automation>`): An automation to
perform when the voice assistant starts listening.
- **on_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when the voice assistant is finished all tasks.
- **on_stt_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when the voice assistant has finished speech-to-text. The resulting text is
available to automations as the variable ``x``.
- **on_tts_start** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when the voice assistant has started text-to-speech. The text to be spoken is
available to automations as the variable ``x``.
- **on_tts_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when the voice assistant has finished text-to-speech. A URL containing the audio response
is available to automations as the variable ``x``.
- **on_error** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when the voice assistant has encountered an error. The error code and message are available to
automations as the variables ``code`` and ``message``.
.. _voice_assistant-actions:
Voice Assistant Actions
-----------------------
The following actions are available for use in automations:
- ``voice_assistant.start`` - Start listening for voice commands.
- ``voice_assistant.stop`` - Stop listening for voice commands.
Push to Talk
------------
Here is an example offering Push to Talk with a :doc:`/components/binary_sensor/index`.
.. code-block:: yaml
voice_assistant:
microphone: mic_id
binary_sensor:
- platform: gpio
pin: ...
on_press:
- voice_assistant.start:
on_release:
- voice_assistant.stop:
See Also
--------
- :doc:`microphone/index`
- :apiref:`voice_assistant/voice_assistant.h`
- :ghedit:`Edit`

View File

@ -67,9 +67,9 @@ author = "ESPHome"
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = "2023.3" version = "2023.4"
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = "2023.3.2" release = "2023.4.0"
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.

View File

@ -16,6 +16,7 @@ Contributors
(in alphabetical order) (in alphabetical order)
- `007hacky007 (@007hacky007) <https://github.com/007hacky007>`__
- `0hax (@0hax) <https://github.com/0hax>`__ - `0hax (@0hax) <https://github.com/0hax>`__
- `0x0a11c0de (@0x0a11c0de) <https://github.com/0x0a11c0de>`__ - `0x0a11c0de (@0x0a11c0de) <https://github.com/0x0a11c0de>`__
- `Denis Bodor (aka Lefinnois) (@0xDRRB) <https://github.com/0xDRRB>`__ - `Denis Bodor (aka Lefinnois) (@0xDRRB) <https://github.com/0xDRRB>`__
@ -26,10 +27,12 @@ Contributors
- `Alessandro Campolo (@a13ssandr0) <https://github.com/a13ssandr0>`__ - `Alessandro Campolo (@a13ssandr0) <https://github.com/a13ssandr0>`__
- `Aalian Khan (@AalianKhan) <https://github.com/AalianKhan>`__ - `Aalian Khan (@AalianKhan) <https://github.com/AalianKhan>`__
- `Adam Liddell (@aaliddell) <https://github.com/aaliddell>`__ - `Adam Liddell (@aaliddell) <https://github.com/aaliddell>`__
- `Aaron Gamble (@aarongamble) <https://github.com/aarongamble>`__
- `Aaron S. Jackson (@AaronJackson) <https://github.com/AaronJackson>`__ - `Aaron S. Jackson (@AaronJackson) <https://github.com/AaronJackson>`__
- `Abel Matser (@abelmatser) <https://github.com/abelmatser>`__ - `Abel Matser (@abelmatser) <https://github.com/abelmatser>`__
- `Abílio Costa (@abmantis) <https://github.com/abmantis>`__ - `Abílio Costa (@abmantis) <https://github.com/abmantis>`__
- `Antonio (@acarvajalperez) <https://github.com/acarvajalperez>`__ - `Antonio (@acarvajalperez) <https://github.com/acarvajalperez>`__
- `Avula Chandra Kiran Reddy (@ackr-8) <https://github.com/ackr-8>`__
- `Zhenyu Wu (@Adam5Wu) <https://github.com/Adam5Wu>`__ - `Zhenyu Wu (@Adam5Wu) <https://github.com/Adam5Wu>`__
- `Chris Byrne (@adapt0) <https://github.com/adapt0>`__ - `Chris Byrne (@adapt0) <https://github.com/adapt0>`__
- `Attila Darazs (@adarazs) <https://github.com/adarazs>`__ - `Attila Darazs (@adarazs) <https://github.com/adarazs>`__
@ -41,9 +44,12 @@ Contributors
- `Stefan Agner (@agners) <https://github.com/agners>`__ - `Stefan Agner (@agners) <https://github.com/agners>`__
- `Anders (@ahd71) <https://github.com/ahd71>`__ - `Anders (@ahd71) <https://github.com/ahd71>`__
- `Alexander Pohl (@ahpohl) <https://github.com/ahpohl>`__ - `Alexander Pohl (@ahpohl) <https://github.com/ahpohl>`__
- `aidbish (@aidbish) <https://github.com/aidbish>`__
- `Airy André (@airy10) <https://github.com/airy10>`__ - `Airy André (@airy10) <https://github.com/airy10>`__
- `Airyzz (@Airyzz) <https://github.com/Airyzz>`__
- `Adam Jacques (@ajacques) <https://github.com/ajacques>`__ - `Adam Jacques (@ajacques) <https://github.com/ajacques>`__
- `Andrej Friesen (@ajfriesen) <https://github.com/ajfriesen>`__ - `Andrej Friesen (@ajfriesen) <https://github.com/ajfriesen>`__
- `akennerly (@akennerly) <https://github.com/akennerly>`__
- `akoivist (@akoivist) <https://github.com/akoivist>`__ - `akoivist (@akoivist) <https://github.com/akoivist>`__
- `Andrej Komelj (@akomelj) <https://github.com/akomelj>`__ - `Andrej Komelj (@akomelj) <https://github.com/akomelj>`__
- `Alex Konradi (@akonradi) <https://github.com/akonradi>`__ - `Alex Konradi (@akonradi) <https://github.com/akonradi>`__
@ -58,13 +64,17 @@ Contributors
- `Alex Iribarren (@alexiri) <https://github.com/alexiri>`__ - `Alex Iribarren (@alexiri) <https://github.com/alexiri>`__
- `Alex Mekkering (@AlexMekkering) <https://github.com/AlexMekkering>`__ - `Alex Mekkering (@AlexMekkering) <https://github.com/AlexMekkering>`__
- `Alex (@alexyao2015) <https://github.com/alexyao2015>`__ - `Alex (@alexyao2015) <https://github.com/alexyao2015>`__
- `Alfredo (@alfredopironti) <https://github.com/alfredopironti>`__
- `Andreas Mandel (@amandel) <https://github.com/amandel>`__ - `Andreas Mandel (@amandel) <https://github.com/amandel>`__
- `Amish Vishwakarma (@amishv) <https://github.com/amishv>`__ - `Amish Vishwakarma (@amishv) <https://github.com/amishv>`__
- `Amit Keret (@amitkeret) <https://github.com/amitkeret>`__
- `Jason Nader (@ammgws) <https://github.com/ammgws>`__ - `Jason Nader (@ammgws) <https://github.com/ammgws>`__
- `Branden Cash (@ammmze) <https://github.com/ammmze>`__ - `Branden Cash (@ammmze) <https://github.com/ammmze>`__
- `Alexander Momchilov (@amomchilov) <https://github.com/amomchilov>`__ - `Alexander Momchilov (@amomchilov) <https://github.com/amomchilov>`__
- `anatoly-savchenkov (@anatoly-savchenkov) <https://github.com/anatoly-savchenkov>`__ - `anatoly-savchenkov (@anatoly-savchenkov) <https://github.com/anatoly-savchenkov>`__
- `andig (@andig) <https://github.com/andig>`__ - `andig (@andig) <https://github.com/andig>`__
- `Andi Egli (@andilge) <https://github.com/andilge>`__
- `Kieren (@ando023) <https://github.com/ando023>`__
- `András Bíró (@andrasbiro) <https://github.com/andrasbiro>`__ - `András Bíró (@andrasbiro) <https://github.com/andrasbiro>`__
- `Andreas Hergert (@andreashergert1984) <https://github.com/andreashergert1984>`__ - `Andreas Hergert (@andreashergert1984) <https://github.com/andreashergert1984>`__
- `Andrew J.Swan (@andrewjswan) <https://github.com/andrewjswan>`__ - `Andrew J.Swan (@andrewjswan) <https://github.com/andrewjswan>`__
@ -73,14 +83,17 @@ Contributors
- `Andrzej (@andriej) <https://github.com/andriej>`__ - `Andrzej (@andriej) <https://github.com/andriej>`__
- `Andreas (@anduchs) <https://github.com/anduchs>`__ - `Andreas (@anduchs) <https://github.com/anduchs>`__
- `Andy2No (@Andy2No) <https://github.com/Andy2No>`__ - `Andy2No (@Andy2No) <https://github.com/Andy2No>`__
- `AndyRPH (@AndyRPH) <https://github.com/AndyRPH>`__
- `Vegetto (@angelnu) <https://github.com/angelnu>`__ - `Vegetto (@angelnu) <https://github.com/angelnu>`__
- `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__ - `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__ - `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__
- `Anthony Keane (@anthonykeane) <https://github.com/anthonykeane>`__ - `Anthony Keane (@anthonykeane) <https://github.com/anthonykeane>`__
- `Rémi K. (@antibill51) <https://github.com/antibill51>`__
- `Antonio Fiol (@antonio-fiol) <https://github.com/antonio-fiol>`__ - `Antonio Fiol (@antonio-fiol) <https://github.com/antonio-fiol>`__
- `Adriaan Peeters (@apeeters) <https://github.com/apeeters>`__ - `Adriaan Peeters (@apeeters) <https://github.com/apeeters>`__
- `apendley (@apendley) <https://github.com/apendley>`__ - `apendley (@apendley) <https://github.com/apendley>`__
- `Darius Ratkevičius (@aphex008) <https://github.com/aphex008>`__ - `Darius Ratkevičius (@aphex008) <https://github.com/aphex008>`__
- `aquaticus (@aquaticus) <https://github.com/aquaticus>`__
- `Andy Allsopp (@arallsopp) <https://github.com/arallsopp>`__ - `Andy Allsopp (@arallsopp) <https://github.com/arallsopp>`__
- `arantius (@arantius) <https://github.com/arantius>`__ - `arantius (@arantius) <https://github.com/arantius>`__
- `arturo182 (@arturo182) <https://github.com/arturo182>`__ - `arturo182 (@arturo182) <https://github.com/arturo182>`__
@ -88,33 +101,45 @@ Contributors
- `Arya (@Arya11111) <https://github.com/Arya11111>`__ - `Arya (@Arya11111) <https://github.com/Arya11111>`__
- `Borys Pierov (@ashald) <https://github.com/ashald>`__ - `Borys Pierov (@ashald) <https://github.com/ashald>`__
- `Ash McKenzie (@ashmckenzie) <https://github.com/ashmckenzie>`__ - `Ash McKenzie (@ashmckenzie) <https://github.com/ashmckenzie>`__
- `ashp8i (@ashp8i) <https://github.com/ashp8i>`__
- `Ashton Kemerling (@AshtonKem) <https://github.com/AshtonKem>`__ - `Ashton Kemerling (@AshtonKem) <https://github.com/AshtonKem>`__
- `杨成锴 (@asjdf) <https://github.com/asjdf>`__ - `杨成锴 (@asjdf) <https://github.com/asjdf>`__
- `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__ - `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__
- `Andreas Soehlke (@asoehlke) <https://github.com/asoehlke>`__ - `Andreas Soehlke (@asoehlke) <https://github.com/asoehlke>`__
- `Mike Dunston (@atanisoft) <https://github.com/atanisoft>`__ - `Mike Dunston (@atanisoft) <https://github.com/atanisoft>`__
- `Glenn Morrison (@atomicpapa) <https://github.com/atomicpapa>`__
- `Alexander Turlov (@aturlov) <https://github.com/aturlov>`__ - `Alexander Turlov (@aturlov) <https://github.com/aturlov>`__
- `aus (@aus) <https://github.com/aus>`__
- `AustinMorris (@AustinMorris) <https://github.com/AustinMorris>`__ - `AustinMorris (@AustinMorris) <https://github.com/AustinMorris>`__
- `Avirsaam (@Avirsaam) <https://github.com/Avirsaam>`__ - `Avirsaam (@Avirsaam) <https://github.com/Avirsaam>`__
- `Arsène von Wyss (@avonwyss) <https://github.com/avonwyss>`__ - `Arsène von Wyss (@avonwyss) <https://github.com/avonwyss>`__
- `Andrew Weddle (@aweddle2) <https://github.com/aweddle2>`__
- `Achilleas Pipinellis (@axilleas) <https://github.com/axilleas>`__ - `Achilleas Pipinellis (@axilleas) <https://github.com/axilleas>`__
- `Kamil Trzciński (@ayufan) <https://github.com/ayufan>`__ - `Kamil Trzciński (@ayufan) <https://github.com/ayufan>`__
- `Nicholas Peters (@Azimath) <https://github.com/Azimath>`__ - `Nicholas Peters (@Azimath) <https://github.com/Azimath>`__
- `Daniel (@azrael783) <https://github.com/azrael783>`__ - `Daniel (@azrael783) <https://github.com/azrael783>`__
- `B48D81EFCC (@B48D81EFCC) <https://github.com/B48D81EFCC>`__ - `B48D81EFCC (@B48D81EFCC) <https://github.com/B48D81EFCC>`__
- `Florian Mösch (@badbadc0ffee) <https://github.com/badbadc0ffee>`__ - `Florian Mösch (@badbadc0ffee) <https://github.com/badbadc0ffee>`__
- `Baden (@baden03) <https://github.com/baden03>`__
- `Marco Tombesi (@baggior) <https://github.com/baggior>`__ - `Marco Tombesi (@baggior) <https://github.com/baggior>`__
- `balk77 (@balk77) <https://github.com/balk77>`__ - `balk77 (@balk77) <https://github.com/balk77>`__
- `Paulus Schoutsen (@balloob) <https://github.com/balloob>`__ - `Paulus Schoutsen (@balloob) <https://github.com/balloob>`__
- `Andrew Zaborowski (@balrog-kun) <https://github.com/balrog-kun>`__ - `Andrew Zaborowski (@balrog-kun) <https://github.com/balrog-kun>`__
- `BarryMar (@BarryMar) <https://github.com/BarryMar>`__ - `BarryMar (@BarryMar) <https://github.com/BarryMar>`__
- `bartoszpierzchlewicz (@bartoszpierzchlewicz) <https://github.com/bartoszpierzchlewicz>`__
- `BartoszPierzchlewiczMacrix (@BartoszPierzchlewiczMacrix) <https://github.com/BartoszPierzchlewiczMacrix>`__
- `Bascht74 (@Bascht74) <https://github.com/Bascht74>`__ - `Bascht74 (@Bascht74) <https://github.com/Bascht74>`__
- `Viktr (@BbIKTOP) <https://github.com/BbIKTOP>`__ - `Viktr (@BbIKTOP) <https://github.com/BbIKTOP>`__
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__ - `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__
- `Maxim Ocheretianko (@bearpawmaxim) <https://github.com/bearpawmaxim>`__ - `Maxim Ocheretianko (@bearpawmaxim) <https://github.com/bearpawmaxim>`__
- `beaudeanadams (@beaudeanadams) <https://github.com/beaudeanadams>`__
- `Benjamin Freeman (@Beetix) <https://github.com/Beetix>`__ - `Benjamin Freeman (@Beetix) <https://github.com/Beetix>`__
- `beikeland (@beikeland) <https://github.com/beikeland>`__
- `Ben-Schwabe (@Ben-Schwabe) <https://github.com/Ben-Schwabe>`__
- `Ben Hoff (@benhoff) <https://github.com/benhoff>`__
- `Benno Pütz (@bennop) <https://github.com/bennop>`__ - `Benno Pütz (@bennop) <https://github.com/bennop>`__
- `Benoit3 (@Benoit3) <https://github.com/Benoit3>`__ - `Benoit3 (@Benoit3) <https://github.com/Benoit3>`__
- `Ben Shaner (@bens545) <https://github.com/bens545>`__
- `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__ - `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__
- `Berend Haan (@berendhaan) <https://github.com/berendhaan>`__ - `Berend Haan (@berendhaan) <https://github.com/berendhaan>`__
- `Arturo Casal (@berfenger) <https://github.com/berfenger>`__ - `Arturo Casal (@berfenger) <https://github.com/berfenger>`__
@ -122,22 +147,29 @@ Contributors
- `Bert Hertogen (@berthertogen) <https://github.com/berthertogen>`__ - `Bert Hertogen (@berthertogen) <https://github.com/berthertogen>`__
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__ - `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
- `Brandon (@bgulla) <https://github.com/bgulla>`__ - `Brandon (@bgulla) <https://github.com/bgulla>`__
- `Benedikt Hübschen (@bhuebschen) <https://github.com/bhuebschen>`__
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__ - `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__
- `Bill Church (@billchurch) <https://github.com/billchurch>`__ - `Bill Church (@billchurch) <https://github.com/billchurch>`__
- `Brian Kaufman (@bkaufx) <https://github.com/bkaufx>`__ - `Brian Kaufman (@bkaufx) <https://github.com/bkaufx>`__
- `JDavid (@blackhack) <https://github.com/blackhack>`__ - `JDavid (@blackhack) <https://github.com/blackhack>`__
- `blakadder (@blakadder) <https://github.com/blakadder>`__ - `blakadder (@blakadder) <https://github.com/blakadder>`__
- `Branimir Lambov (@blambov) <https://github.com/blambov>`__ - `Branimir Lambov (@blambov) <https://github.com/blambov>`__
- `bleeisme (@bleeisme) <https://github.com/bleeisme>`__
- `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__ - `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__
- `Scott Smith (@blurfl) <https://github.com/blurfl>`__ - `Scott Smith (@blurfl) <https://github.com/blurfl>`__
- `Bob (@Bmooij) <https://github.com/Bmooij>`__ - `Bob (@Bmooij) <https://github.com/Bmooij>`__
- `Benjamin Klotz (@bnw) <https://github.com/bnw>`__ - `Benjamin Klotz (@bnw) <https://github.com/bnw>`__
- `Bob Kersten (@bobkersten) <https://github.com/bobkersten>`__
- `Bodmer (@Bodmer) <https://github.com/Bodmer>`__ - `Bodmer (@Bodmer) <https://github.com/Bodmer>`__
- `Anthony Todd (@bohregard) <https://github.com/bohregard>`__
- `Bomaker (@Bomaker) <https://github.com/Bomaker>`__
- `Mauricio Bonani (@bonanitech) <https://github.com/bonanitech>`__ - `Mauricio Bonani (@bonanitech) <https://github.com/bonanitech>`__
- `Casey Olson (@bookcasey) <https://github.com/bookcasey>`__ - `Casey Olson (@bookcasey) <https://github.com/bookcasey>`__
- `Borja Burgos (@borjaburgos) <https://github.com/borjaburgos>`__
- `BoukeHaarsma23 (@BoukeHaarsma23) <https://github.com/BoukeHaarsma23>`__ - `BoukeHaarsma23 (@BoukeHaarsma23) <https://github.com/BoukeHaarsma23>`__
- `brambo123 (@brambo123) <https://github.com/brambo123>`__ - `brambo123 (@brambo123) <https://github.com/brambo123>`__
- `Bram Kragten (@bramkragten) <https://github.com/bramkragten>`__ - `Bram Kragten (@bramkragten) <https://github.com/bramkragten>`__
- `Brandan Cotton (@Brando47) <https://github.com/Brando47>`__
- `Brad Davidson (@brandond) <https://github.com/brandond>`__ - `Brad Davidson (@brandond) <https://github.com/brandond>`__
- `Daniel H Brown (@brauhausdc) <https://github.com/brauhausdc>`__ - `Daniel H Brown (@brauhausdc) <https://github.com/brauhausdc>`__
- `Jens Bretschneider (@breti) <https://github.com/breti>`__ - `Jens Bretschneider (@breti) <https://github.com/breti>`__
@ -147,36 +179,52 @@ Contributors
- `brianrjones69 (@brianrjones69) <https://github.com/brianrjones69>`__ - `brianrjones69 (@brianrjones69) <https://github.com/brianrjones69>`__
- `Ben Brooks (@brooksben11) <https://github.com/brooksben11>`__ - `Ben Brooks (@brooksben11) <https://github.com/brooksben11>`__
- `buddydvd (@buddydvd) <https://github.com/buddydvd>`__ - `buddydvd (@buddydvd) <https://github.com/buddydvd>`__
- `Matt Burke (@burkemw3) <https://github.com/burkemw3>`__
- `Jon Little (@burundiocibu) <https://github.com/burundiocibu>`__ - `Jon Little (@burundiocibu) <https://github.com/burundiocibu>`__
- `buxtronix (@buxtronix) <https://github.com/buxtronix>`__ - `buxtronix (@buxtronix) <https://github.com/buxtronix>`__
- `bvansambeek (@bvansambeek) <https://github.com/bvansambeek>`__ - `bvansambeek (@bvansambeek) <https://github.com/bvansambeek>`__
- `c0ffeeca7 (@c0ffeeca7) <https://github.com/c0ffeeca7>`__
- `Captain Haddock (@ca-haddock) <https://github.com/ca-haddock>`__
- `Cal Howard (@calhoward) <https://github.com/calhoward>`__ - `Cal Howard (@calhoward) <https://github.com/calhoward>`__
- `callacomp (@callacomp) <https://github.com/callacomp>`__
- `Callum Gare (@callumgare) <https://github.com/callumgare>`__
- `Carlos Gustavo Sarmiento (@carlos-sarmiento) <https://github.com/carlos-sarmiento>`__ - `Carlos Gustavo Sarmiento (@carlos-sarmiento) <https://github.com/carlos-sarmiento>`__
- `Carlos Garcia Saura (@CarlosGS) <https://github.com/CarlosGS>`__ - `Carlos Garcia Saura (@CarlosGS) <https://github.com/CarlosGS>`__
- `Carlos Ruiz (@CarlosRDomin) <https://github.com/CarlosRDomin>`__ - `Carlos Ruiz (@CarlosRDomin) <https://github.com/CarlosRDomin>`__
- `carlywarly (@carlywarly) <https://github.com/carlywarly>`__
- `carstenschroeder (@carstenschroeder) <https://github.com/carstenschroeder>`__ - `carstenschroeder (@carstenschroeder) <https://github.com/carstenschroeder>`__
- `Valentin Ochs (@Cat-Ion) <https://github.com/Cat-Ion>`__ - `Valentin Ochs (@Cat-Ion) <https://github.com/Cat-Ion>`__
- `Stroe Andrei Catalin (@catalin2402) <https://github.com/catalin2402>`__ - `Stroe Andrei Catalin (@catalin2402) <https://github.com/catalin2402>`__
- `cbialobos (@cbialobos) <https://github.com/cbialobos>`__ - `cbialobos (@cbialobos) <https://github.com/cbialobos>`__
- `Cameron Bulock (@cbulock) <https://github.com/cbulock>`__
- `Ciprian Constantinescu (@cciprian5) <https://github.com/cciprian5>`__ - `Ciprian Constantinescu (@cciprian5) <https://github.com/cciprian5>`__
- `cdmonk (@cdmonk) <https://github.com/cdmonk>`__
- `ceaswaran (@ceaswaran) <https://github.com/ceaswaran>`__
- `Cellie (@CelliesProjects) <https://github.com/CelliesProjects>`__ - `Cellie (@CelliesProjects) <https://github.com/CelliesProjects>`__
- `Chris Feenstra (@cfeenstra1024) <https://github.com/cfeenstra1024>`__ - `Chris Feenstra (@cfeenstra1024) <https://github.com/cfeenstra1024>`__
- `cg089 (@cg089) <https://github.com/cg089>`__
- `Kostas Chatzikokolakis (@chatziko) <https://github.com/chatziko>`__ - `Kostas Chatzikokolakis (@chatziko) <https://github.com/chatziko>`__
- `Audric Schiltknecht (@chemicalstorm) <https://github.com/chemicalstorm>`__
- `chris-jennings (@chris-jennings) <https://github.com/chris-jennings>`__ - `chris-jennings (@chris-jennings) <https://github.com/chris-jennings>`__
- `Chris (@chrismaki) <https://github.com/chrismaki>`__ - `Chris (@chrismaki) <https://github.com/chrismaki>`__
- `Christoph Wagner (@Christoph-Wagner) <https://github.com/Christoph-Wagner>`__ - `Christoph Wagner (@Christoph-Wagner) <https://github.com/Christoph-Wagner>`__
- `Christian Taedcke (@chrta) <https://github.com/chrta>`__ - `Christian Taedcke (@chrta) <https://github.com/chrta>`__
- `Pavel Skuratovich (@Chupaka) <https://github.com/Chupaka>`__ - `Pavel Skuratovich (@Chupaka) <https://github.com/Chupaka>`__
- `Chris Johnson (@ciband) <https://github.com/ciband>`__ - `Chris Johnson (@ciband) <https://github.com/ciband>`__
- `CircuitGuy (@CircuitGuy) <https://github.com/CircuitGuy>`__
- `John (@CircuitSetup) <https://github.com/CircuitSetup>`__ - `John (@CircuitSetup) <https://github.com/CircuitSetup>`__
- `Colby Rome (@cisasteelersfan) <https://github.com/cisasteelersfan>`__ - `Colby Rome (@cisasteelersfan) <https://github.com/cisasteelersfan>`__
- `Chris Debenham (@cjd) <https://github.com/cjd>`__ - `Chris Debenham (@cjd) <https://github.com/cjd>`__
- `Chester (@clowrey) <https://github.com/clowrey>`__ - `Chester (@clowrey) <https://github.com/clowrey>`__
- `Colin McCambridge (@cmccambridge) <https://github.com/cmccambridge>`__
- `Clifford Roche (@cmroche) <https://github.com/cmroche>`__ - `Clifford Roche (@cmroche) <https://github.com/cmroche>`__
- `Casey Burnett (@codeangler) <https://github.com/codeangler>`__ - `Casey Burnett (@codeangler) <https://github.com/codeangler>`__
- `CODeRUS (@CODeRUS) <https://github.com/CODeRUS>`__ - `CODeRUS (@CODeRUS) <https://github.com/CODeRUS>`__
- `Alex Miller (@Codex-) <https://github.com/Codex->`__
- `Cody James (@codyjamestechnical) <https://github.com/codyjamestechnical>`__ - `Cody James (@codyjamestechnical) <https://github.com/codyjamestechnical>`__
- `Ashton Lafferty (@cogneato) <https://github.com/cogneato>`__
- `Colin Leroy-Mira (@colinleroy) <https://github.com/colinleroy>`__ - `Colin Leroy-Mira (@colinleroy) <https://github.com/colinleroy>`__
- `Max (@coltoncat) <https://github.com/coltoncat>`__
- `Conclusio (@Conclusio) <https://github.com/Conclusio>`__ - `Conclusio (@Conclusio) <https://github.com/Conclusio>`__
- `John Coggeshall (@coogle) <https://github.com/coogle>`__ - `John Coggeshall (@coogle) <https://github.com/coogle>`__
- `James Crook (@cooljimy84) <https://github.com/cooljimy84>`__ - `James Crook (@cooljimy84) <https://github.com/cooljimy84>`__
@ -189,20 +237,28 @@ Contributors
- `Connor Prussin (@cprussin) <https://github.com/cprussin>`__ - `Connor Prussin (@cprussin) <https://github.com/cprussin>`__
- `Corey Rice (@crice009) <https://github.com/crice009>`__ - `Corey Rice (@crice009) <https://github.com/crice009>`__
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__ - `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
- `Christian Schwarzgruber (@cslux) <https://github.com/cslux>`__
- `cstaahl (@cstaahl) <https://github.com/cstaahl>`__ - `cstaahl (@cstaahl) <https://github.com/cstaahl>`__
- `Chris Talkington (@ctalkington) <https://github.com/ctalkington>`__ - `Chris Talkington (@ctalkington) <https://github.com/ctalkington>`__
- `Massimo Cetra (@ctrix) <https://github.com/ctrix>`__ - `Massimo Cetra (@ctrix) <https://github.com/ctrix>`__
- `cvwillegen (@cvwillegen) <https://github.com/cvwillegen>`__ - `cvwillegen (@cvwillegen) <https://github.com/cvwillegen>`__
- `Christoph Wempe (@CWempe) <https://github.com/CWempe>`__ - `Christoph Wempe (@CWempe) <https://github.com/CWempe>`__
- `Steven Webb (@cy1701) <https://github.com/cy1701>`__
- `Alex Solomaha (@CyanoFresh) <https://github.com/CyanoFresh>`__ - `Alex Solomaha (@CyanoFresh) <https://github.com/CyanoFresh>`__
- `Luar Roji (@cyberplant) <https://github.com/cyberplant>`__ - `Luar Roji (@cyberplant) <https://github.com/cyberplant>`__
- `Petr Diviš (@czechdude) <https://github.com/czechdude>`__
- `Aleš Komárek (@cznewt) <https://github.com/cznewt>`__ - `Aleš Komárek (@cznewt) <https://github.com/cznewt>`__
- `d-rez (@d-rez) <https://github.com/d-rez>`__
- `Dale Higgs (@dale3h) <https://github.com/dale3h>`__ - `Dale Higgs (@dale3h) <https://github.com/dale3h>`__
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__ - `damanti-me (@damanti-me) <https://github.com/damanti-me>`__
- `Dan C Williams (@dancwilliams) <https://github.com/dancwilliams>`__
- `Daniel Bjørnbakk (@danibjor) <https://github.com/danibjor>`__ - `Daniel Bjørnbakk (@danibjor) <https://github.com/danibjor>`__
- `Daniel Kucera (@danielkucera) <https://github.com/danielkucera>`__ - `Daniel Kucera (@danielkucera) <https://github.com/danielkucera>`__
- `Daniel O'Connor (@DanielO) <https://github.com/DanielO>`__
- `Daniel Rheinbay (@danielrheinbay) <https://github.com/danielrheinbay>`__ - `Daniel Rheinbay (@danielrheinbay) <https://github.com/danielrheinbay>`__
- `Daniel Schramm (@danielschramm) <https://github.com/danielschramm>`__ - `Daniel Schramm (@danielschramm) <https://github.com/danielschramm>`__
- `Daniel Martin Gonzalez (@danimart1991) <https://github.com/danimart1991>`__
- `danlimlu (@danlimlu) <https://github.com/danlimlu>`__
- `Chris (@darthsebulba04) <https://github.com/darthsebulba04>`__ - `Chris (@darthsebulba04) <https://github.com/darthsebulba04>`__
- `Dan Gentry (@dashdrum) <https://github.com/dashdrum>`__ - `Dan Gentry (@dashdrum) <https://github.com/dashdrum>`__
- `Aliasghar Dashkhaneh (@dashkhaneh) <https://github.com/dashkhaneh>`__ - `Aliasghar Dashkhaneh (@dashkhaneh) <https://github.com/dashkhaneh>`__
@ -215,13 +271,16 @@ Contributors
- `David De Sloovere (@DavidDeSloovere) <https://github.com/DavidDeSloovere>`__ - `David De Sloovere (@DavidDeSloovere) <https://github.com/DavidDeSloovere>`__
- `David Beitey (@davidjb) <https://github.com/davidjb>`__ - `David Beitey (@davidjb) <https://github.com/davidjb>`__
- `David Newgas (@davidn) <https://github.com/davidn>`__ - `David Newgas (@davidn) <https://github.com/davidn>`__
- `David Noyes (@davidnoyes) <https://github.com/davidnoyes>`__
- `David Zovko (@davidzovko) <https://github.com/davidzovko>`__ - `David Zovko (@davidzovko) <https://github.com/davidzovko>`__
- `Davy Landman (@DavyLandman) <https://github.com/DavyLandman>`__ - `Davy Landman (@DavyLandman) <https://github.com/DavyLandman>`__
- `Dawid Cieszyński (@dawidcieszynski) <https://github.com/dawidcieszynski>`__
- `Darren Tucker (@daztucker) <https://github.com/daztucker>`__ - `Darren Tucker (@daztucker) <https://github.com/daztucker>`__
- `Donovan Baarda (@dbaarda) <https://github.com/dbaarda>`__ - `Donovan Baarda (@dbaarda) <https://github.com/dbaarda>`__
- `David Buezas (@dbuezas) <https://github.com/dbuezas>`__ - `David Buezas (@dbuezas) <https://github.com/dbuezas>`__
- `dckiller51 (@dckiller51) <https://github.com/dckiller51>`__ - `dckiller51 (@dckiller51) <https://github.com/dckiller51>`__
- `Daniel Correa Lobato (@dclobato) <https://github.com/dclobato>`__ - `Daniel Correa Lobato (@dclobato) <https://github.com/dclobato>`__
- `DeadEnd (@DeadEnded) <https://github.com/DeadEnded>`__
- `Debashish Sahu (@debsahu) <https://github.com/debsahu>`__ - `Debashish Sahu (@debsahu) <https://github.com/debsahu>`__
- `declanshanaghy (@declanshanaghy) <https://github.com/declanshanaghy>`__ - `declanshanaghy (@declanshanaghy) <https://github.com/declanshanaghy>`__
- `Maximilian (@DeerMaximum) <https://github.com/DeerMaximum>`__ - `Maximilian (@DeerMaximum) <https://github.com/DeerMaximum>`__
@ -237,7 +296,9 @@ Contributors
- `Deun Lee (@deunlee) <https://github.com/deunlee>`__ - `Deun Lee (@deunlee) <https://github.com/deunlee>`__
- `Develo (@devyte) <https://github.com/devyte>`__ - `Develo (@devyte) <https://github.com/devyte>`__
- `Dezorian (@Dezorian) <https://github.com/Dezorian>`__ - `Dezorian (@Dezorian) <https://github.com/Dezorian>`__
- `Damian Gołda (@dgolda) <https://github.com/dgolda>`__
- `Dan Halbert (@dhalbert) <https://github.com/dhalbert>`__ - `Dan Halbert (@dhalbert) <https://github.com/dhalbert>`__
- `Dustin L. Howett (@DHowett) <https://github.com/DHowett>`__
- `Alain Turbide (@Dilbert66) <https://github.com/Dilbert66>`__ - `Alain Turbide (@Dilbert66) <https://github.com/Dilbert66>`__
- `Mark (@Diramu) <https://github.com/Diramu>`__ - `Mark (@Diramu) <https://github.com/Diramu>`__
- `Dirk Heinke (@DirkHeinke) <https://github.com/DirkHeinke>`__ - `Dirk Heinke (@DirkHeinke) <https://github.com/DirkHeinke>`__
@ -254,19 +315,24 @@ Contributors
- `Dorian Zedler (@dorianim) <https://github.com/dorianim>`__ - `Dorian Zedler (@dorianim) <https://github.com/dorianim>`__
- `Mark Dietzer (@Doridian) <https://github.com/Doridian>`__ - `Mark Dietzer (@Doridian) <https://github.com/Doridian>`__
- `Jiang Sheng (@doskoi) <https://github.com/doskoi>`__ - `Jiang Sheng (@doskoi) <https://github.com/doskoi>`__
- `Artem Sheremet (@dotdoom) <https://github.com/dotdoom>`__
- `Robert Schütz (@dotlambda) <https://github.com/dotlambda>`__ - `Robert Schütz (@dotlambda) <https://github.com/dotlambda>`__
- `Daniel Hyles (@DotNetDann) <https://github.com/DotNetDann>`__ - `Daniel Hyles (@DotNetDann) <https://github.com/DotNetDann>`__
- `dr-oblivium (@dr-oblivium) <https://github.com/dr-oblivium>`__ - `dr-oblivium (@dr-oblivium) <https://github.com/dr-oblivium>`__
- `Drew Perttula (@drewp) <https://github.com/drewp>`__ - `Drew Perttula (@drewp) <https://github.com/drewp>`__
- `drmpf (@drmpf) <https://github.com/drmpf>`__ - `drmpf (@drmpf) <https://github.com/drmpf>`__
- `drogfild (@drogfild) <https://github.com/drogfild>`__
- `DrRob (@DrRob) <https://github.com/DrRob>`__ - `DrRob (@DrRob) <https://github.com/DrRob>`__
- `Daniel Müller (@dtmuller) <https://github.com/dtmuller>`__ - `Daniel Müller (@dtmuller) <https://github.com/dtmuller>`__
- `Tom Soer (@dtx3k) <https://github.com/dtx3k>`__
- `dubit0 (@dubit0) <https://github.com/dubit0>`__ - `dubit0 (@dubit0) <https://github.com/dubit0>`__
- `Mikkel Jeppesen (@Duckle29) <https://github.com/Duckle29>`__ - `Mikkel Jeppesen (@Duckle29) <https://github.com/Duckle29>`__
- `Sergey V. DUDANOV (@dudanov) <https://github.com/dudanov>`__ - `Sergey V. DUDANOV (@dudanov) <https://github.com/dudanov>`__
- `David Girón (@duhow) <https://github.com/duhow>`__ - `David Girón (@duhow) <https://github.com/duhow>`__
- `Duncan Findlay (@duncf) <https://github.com/duncf>`__ - `Duncan Findlay (@duncf) <https://github.com/duncf>`__
- `Jannick (@DutchDeffy) <https://github.com/DutchDeffy>`__ - `Jannick (@DutchDeffy) <https://github.com/DutchDeffy>`__
- `David van der Leij (@dvanderleij) <https://github.com/dvanderleij>`__
- `dxta1986 (@dxta1986) <https://github.com/dxta1986>`__
- `dyarkovoy (@dyarkovoy) <https://github.com/dyarkovoy>`__ - `dyarkovoy (@dyarkovoy) <https://github.com/dyarkovoy>`__
- `Janez Troha (@dz0ny) <https://github.com/dz0ny>`__ - `Janez Troha (@dz0ny) <https://github.com/dz0ny>`__
- `Dimitris Zervas (@dzervas) <https://github.com/dzervas>`__ - `Dimitris Zervas (@dzervas) <https://github.com/dzervas>`__
@ -279,10 +345,13 @@ Contributors
- `Eduardo Pérez (@eduperez) <https://github.com/eduperez>`__ - `Eduardo Pérez (@eduperez) <https://github.com/eduperez>`__
- `Eenoo (@Eenoo) <https://github.com/Eenoo>`__ - `Eenoo (@Eenoo) <https://github.com/Eenoo>`__
- `Eli Fidler (@efidler) <https://github.com/efidler>`__ - `Eli Fidler (@efidler) <https://github.com/efidler>`__
- `egandro (@egandro) <https://github.com/egandro>`__
- `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__ - `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__
- `Eike (@ei-ke) <https://github.com/ei-ke>`__ - `Eike (@ei-ke) <https://github.com/ei-ke>`__
- `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__ - `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__
- `Eli Yu (@elizhyu) <https://github.com/elizhyu>`__
- `Elkropac (@Elkropac) <https://github.com/Elkropac>`__ - `Elkropac (@Elkropac) <https://github.com/Elkropac>`__
- `Elliot Wood (@elliot-wood) <https://github.com/elliot-wood>`__
- `Joakim Plate (@elupus) <https://github.com/elupus>`__ - `Joakim Plate (@elupus) <https://github.com/elupus>`__
- `EmbeddedDevver (@EmbeddedDevver) <https://github.com/EmbeddedDevver>`__ - `EmbeddedDevver (@EmbeddedDevver) <https://github.com/EmbeddedDevver>`__
- `EmmanuelLM (@EmmanuelLM) <https://github.com/EmmanuelLM>`__ - `EmmanuelLM (@EmmanuelLM) <https://github.com/EmmanuelLM>`__
@ -293,6 +362,7 @@ Contributors
- `Bert (@Engelbert) <https://github.com/Engelbert>`__ - `Bert (@Engelbert) <https://github.com/Engelbert>`__
- `Nico Weichbrodt (@envy) <https://github.com/envy>`__ - `Nico Weichbrodt (@envy) <https://github.com/envy>`__
- `Evan Petousis (@epetousis) <https://github.com/epetousis>`__ - `Evan Petousis (@epetousis) <https://github.com/epetousis>`__
- `Josh Gwosdz (@erdii) <https://github.com/erdii>`__
- `Eric Coffman (@ericbrian) <https://github.com/ericbrian>`__ - `Eric Coffman (@ericbrian) <https://github.com/ericbrian>`__
- `Eric Hiller (@erichiller) <https://github.com/erichiller>`__ - `Eric Hiller (@erichiller) <https://github.com/erichiller>`__
- `Matt Hamilton (@Eriner) <https://github.com/Eriner>`__ - `Matt Hamilton (@Eriner) <https://github.com/Eriner>`__
@ -307,20 +377,27 @@ Contributors
- `Evgeni Golov (@evgeni) <https://github.com/evgeni>`__ - `Evgeni Golov (@evgeni) <https://github.com/evgeni>`__
- `Expaso (@Expaso) <https://github.com/Expaso>`__ - `Expaso (@Expaso) <https://github.com/Expaso>`__
- `Malte Franken (@exxamalte) <https://github.com/exxamalte>`__ - `Malte Franken (@exxamalte) <https://github.com/exxamalte>`__
- `f0rdprefect (@f0rdprefect) <https://github.com/f0rdprefect>`__
- `Fabian Affolter (@fabaff) <https://github.com/fabaff>`__ - `Fabian Affolter (@fabaff) <https://github.com/fabaff>`__
- `Fabian (@Fabian-Schmidt) <https://github.com/Fabian-Schmidt>`__ - `Fabian (@Fabian-Schmidt) <https://github.com/Fabian-Schmidt>`__
- `Federico Ariel Castagnini (@facastagnini) <https://github.com/facastagnini>`__ - `Federico Ariel Castagnini (@facastagnini) <https://github.com/facastagnini>`__
- `C W (@fake-name) <https://github.com/fake-name>`__ - `C W (@fake-name) <https://github.com/fake-name>`__
- `Florian idB (@fbeek) <https://github.com/fbeek>`__ - `Florian idB (@fbeek) <https://github.com/fbeek>`__
- `Fabian Berthold (@fbrthld) <https://github.com/fbrthld>`__ - `Fabian Berthold (@fbrthld) <https://github.com/fbrthld>`__
- `felixlungu (@felixlungu) <https://github.com/felixlungu>`__
- `Felix Storm (@felixstorm) <https://github.com/felixstorm>`__ - `Felix Storm (@felixstorm) <https://github.com/felixstorm>`__
- `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__ - `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__
- `FeuerSturm (@FeuerSturm) <https://github.com/FeuerSturm>`__ - `FeuerSturm (@FeuerSturm) <https://github.com/FeuerSturm>`__
- `Florian Golemo (@fgolemo) <https://github.com/fgolemo>`__
- `Frank Riley (@fhriley) <https://github.com/fhriley>`__ - `Frank Riley (@fhriley) <https://github.com/fhriley>`__
- `finity69x2 (@finity69x2) <https://github.com/finity69x2>`__
- `Frédéric Jouault (@fjouault) <https://github.com/fjouault>`__ - `Frédéric Jouault (@fjouault) <https://github.com/fjouault>`__
- `Sean Vig (@flacjacket) <https://github.com/flacjacket>`__ - `Sean Vig (@flacjacket) <https://github.com/flacjacket>`__
- `Diego Elio Pettenò (@Flameeyes) <https://github.com/Flameeyes>`__ - `Diego Elio Pettenò (@Flameeyes) <https://github.com/Flameeyes>`__
- `Flaviu Tamas (@flaviut) <https://github.com/flaviut>`__ - `Flaviu Tamas (@flaviut) <https://github.com/flaviut>`__
- `fluffymadness (@fluffymadness) <https://github.com/fluffymadness>`__
- `fluffymonster (@fluffymonster) <https://github.com/fluffymonster>`__
- `flyize (@flyize) <https://github.com/flyize>`__
- `风飘雨 (@flyrainning) <https://github.com/flyrainning>`__ - `风飘雨 (@flyrainning) <https://github.com/flyrainning>`__
- `Fractal147 (@Fractal147) <https://github.com/Fractal147>`__ - `Fractal147 (@Fractal147) <https://github.com/Fractal147>`__
- `Francis-labo (@Francis-labo) <https://github.com/Francis-labo>`__ - `Francis-labo (@Francis-labo) <https://github.com/Francis-labo>`__
@ -333,6 +410,7 @@ Contributors
- `Evgeny (@freekode) <https://github.com/freekode>`__ - `Evgeny (@freekode) <https://github.com/freekode>`__
- `Brett McKenzie (@freerangeeggs) <https://github.com/freerangeeggs>`__ - `Brett McKenzie (@freerangeeggs) <https://github.com/freerangeeggs>`__
- `Franck Nijhof (@frenck) <https://github.com/frenck>`__ - `Franck Nijhof (@frenck) <https://github.com/frenck>`__
- `Kenneth Fribert (@fribse) <https://github.com/fribse>`__
- `frippe75 (@frippe75) <https://github.com/frippe75>`__ - `frippe75 (@frippe75) <https://github.com/frippe75>`__
- `Fritz Mueller (@fritzm) <https://github.com/fritzm>`__ - `Fritz Mueller (@fritzm) <https://github.com/fritzm>`__
- `Florian Trück (@ftrueck) <https://github.com/ftrueck>`__ - `Florian Trück (@ftrueck) <https://github.com/ftrueck>`__
@ -350,6 +428,8 @@ Contributors
- `Gérald Guiony (@gerald-guiony) <https://github.com/gerald-guiony>`__ - `Gérald Guiony (@gerald-guiony) <https://github.com/gerald-guiony>`__
- `Gerard (@gerard33) <https://github.com/gerard33>`__ - `Gerard (@gerard33) <https://github.com/gerard33>`__
- `Giampiero Baggiani (@giampiero7) <https://github.com/giampiero7>`__ - `Giampiero Baggiani (@giampiero7) <https://github.com/giampiero7>`__
- `Gideon Kanikevich (@gid204) <https://github.com/gid204>`__
- `Giel Janssens (@gieljnssns) <https://github.com/gieljnssns>`__
- `Giovanni (@Gio-dot) <https://github.com/Gio-dot>`__ - `Giovanni (@Gio-dot) <https://github.com/Gio-dot>`__
- `GitforZhangXL (@GitforZhangXL) <https://github.com/GitforZhangXL>`__ - `GitforZhangXL (@GitforZhangXL) <https://github.com/GitforZhangXL>`__
- `github-actions[bot] (@github-actions[bot]) <https://github.com/github-actions[bot]>`__ - `github-actions[bot] (@github-actions[bot]) <https://github.com/github-actions[bot]>`__
@ -362,45 +442,62 @@ Contributors
- `Germain Masse (@gmasse) <https://github.com/gmasse>`__ - `Germain Masse (@gmasse) <https://github.com/gmasse>`__
- `Garret Buell (@gmbuell) <https://github.com/gmbuell>`__ - `Garret Buell (@gmbuell) <https://github.com/gmbuell>`__
- `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__ - `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__
- `Go0oSer (@Go0oSer) <https://github.com/Go0oSer>`__
- `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__ - `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__
- `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__ - `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__
- `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__ - `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__
- `Granville Barker (@granvillebarker) <https://github.com/granvillebarker>`__
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__ - `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
- `Greg Arnold (@GregJArnold) <https://github.com/GregJArnold>`__
- `Greg MacLellan (@gregmac) <https://github.com/gregmac>`__
- `Gil Peeters (@grillp) <https://github.com/grillp>`__ - `Gil Peeters (@grillp) <https://github.com/grillp>`__
- `George (@grob6000) <https://github.com/grob6000>`__ - `George (@grob6000) <https://github.com/grob6000>`__
- `groovejumper (@groovejumper) <https://github.com/groovejumper>`__
- `gsexton (@gsexton) <https://github.com/gsexton>`__ - `gsexton (@gsexton) <https://github.com/gsexton>`__
- `Gabriel Sieben (@gsieben) <https://github.com/gsieben>`__ - `Gabriel Sieben (@gsieben) <https://github.com/gsieben>`__
- `Jadson Santos (@gtjadsonsantos) <https://github.com/gtjadsonsantos>`__ - `Jadson Santos (@gtjadsonsantos) <https://github.com/gtjadsonsantos>`__
- `guardmedia (@guardmedia) <https://github.com/guardmedia>`__
- `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__ - `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__
- `guillempages (@guillempages) <https://github.com/guillempages>`__ - `guillempages (@guillempages) <https://github.com/guillempages>`__
- `Guyohms (@Guyohms) <https://github.com/Guyohms>`__ - `Guyohms (@Guyohms) <https://github.com/Guyohms>`__
- `Gilles van den Hoven (@gvdhoven) <https://github.com/gvdhoven>`__ - `Gilles van den Hoven (@gvdhoven) <https://github.com/gvdhoven>`__
- `h0jeZvgoxFepBQ2C (@h0jeZvgoxFepBQ2C) <https://github.com/h0jeZvgoxFepBQ2C>`__
- `h3ndrik (@h3ndrik) <https://github.com/h3ndrik>`__ - `h3ndrik (@h3ndrik) <https://github.com/h3ndrik>`__
- `Andi (@h4de5) <https://github.com/h4de5>`__
- `haade (@haade-administrator) <https://github.com/haade-administrator>`__ - `haade (@haade-administrator) <https://github.com/haade-administrator>`__
- `Peter van Dijk (@Habbie) <https://github.com/Habbie>`__ - `Peter van Dijk (@Habbie) <https://github.com/Habbie>`__
- `Hagai Shatz (@hagai-shatz) <https://github.com/hagai-shatz>`__ - `Hagai Shatz (@hagai-shatz) <https://github.com/hagai-shatz>`__
- `Boris Hajduk (@hajdbo) <https://github.com/hajdbo>`__ - `Boris Hajduk (@hajdbo) <https://github.com/hajdbo>`__
- `Gavin Mogan (@halkeye) <https://github.com/halkeye>`__ - `Gavin Mogan (@halkeye) <https://github.com/halkeye>`__
- `Charles (@hallard) <https://github.com/hallard>`__ - `Charles (@hallard) <https://github.com/hallard>`__
- `Alex Griffith (@halomademeapc) <https://github.com/halomademeapc>`__
- `Aniket (@HandyHat) <https://github.com/HandyHat>`__
- `Charles Thompson (@haryadoon) <https://github.com/haryadoon>`__ - `Charles Thompson (@haryadoon) <https://github.com/haryadoon>`__
- `Ha Thach (@hathach) <https://github.com/hathach>`__ - `Ha Thach (@hathach) <https://github.com/hathach>`__
- `hcoohb (@hcoohb) <https://github.com/hcoohb>`__ - `hcoohb (@hcoohb) <https://github.com/hcoohb>`__
- `Héctor Giménez (@hectorgimenez) <https://github.com/hectorgimenez>`__ - `Héctor Giménez (@hectorgimenez) <https://github.com/hectorgimenez>`__
- `Jimmy Hedman (@HeMan) <https://github.com/HeMan>`__ - `Jimmy Hedman (@HeMan) <https://github.com/HeMan>`__
- `Hemi03 (@Hemi03) <https://github.com/Hemi03>`__
- `HepoH3 (@HepoH3) <https://github.com/HepoH3>`__ - `HepoH3 (@HepoH3) <https://github.com/HepoH3>`__
- `Hermann Kraus (@herm) <https://github.com/herm>`__ - `Hermann Kraus (@herm) <https://github.com/herm>`__
- `Herr Frei (@herrfrei) <https://github.com/herrfrei>`__
- `highground88 (@highground88) <https://github.com/highground88>`__
- `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__ - `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__
- `Marcel Hoppe (@hobbypunk90) <https://github.com/hobbypunk90>`__ - `Marcel Hoppe (@hobbypunk90) <https://github.com/hobbypunk90>`__
- `MoA (@honomoa) <https://github.com/honomoa>`__ - `MoA (@honomoa) <https://github.com/honomoa>`__
- `Hopperpop (@Hopperpop) <https://github.com/Hopperpop>`__ - `Hopperpop (@Hopperpop) <https://github.com/Hopperpop>`__
- `Yang Hau (@howjmay) <https://github.com/howjmay>`__ - `Yang Hau (@howjmay) <https://github.com/howjmay>`__
- `hpineapples (@hpineapples) <https://github.com/hpineapples>`__
- `Antonio Vanegas (@hpsaturn) <https://github.com/hpsaturn>`__ - `Antonio Vanegas (@hpsaturn) <https://github.com/hpsaturn>`__
- `hreintke (@hreintke) <https://github.com/hreintke>`__ - `hreintke (@hreintke) <https://github.com/hreintke>`__
- `Jan Hubík (@hubikj) <https://github.com/hubikj>`__ - `Jan Hubík (@hubikj) <https://github.com/hubikj>`__
- `Huub Eikens (@huubeikens) <https://github.com/huubeikens>`__ - `Huub Eikens (@huubeikens) <https://github.com/huubeikens>`__
- `Steve Rodgers (@hwstar) <https://github.com/hwstar>`__ - `Steve Rodgers (@hwstar) <https://github.com/hwstar>`__
- `hificat (@hzkincony) <https://github.com/hzkincony>`__
- `Arjan Filius (@iafilius) <https://github.com/iafilius>`__ - `Arjan Filius (@iafilius) <https://github.com/iafilius>`__
- `Iain Hay (@IainPHay) <https://github.com/IainPHay>`__
- `Adrián Panella (@ianchi) <https://github.com/ianchi>`__ - `Adrián Panella (@ianchi) <https://github.com/ianchi>`__
- `Ian Anderson (@ianderso) <https://github.com/ianderso>`__
- `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__ - `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__
- `Jan Pobořil (@iBobik) <https://github.com/iBobik>`__ - `Jan Pobořil (@iBobik) <https://github.com/iBobik>`__
- `igg (@igg) <https://github.com/igg>`__ - `igg (@igg) <https://github.com/igg>`__
@ -408,28 +505,38 @@ Contributors
- `Petko Bordjukov (@ignisf) <https://github.com/ignisf>`__ - `Petko Bordjukov (@ignisf) <https://github.com/ignisf>`__
- `ikatkov (@ikatkov) <https://github.com/ikatkov>`__ - `ikatkov (@ikatkov) <https://github.com/ikatkov>`__
- `iKK001 (@iKK001) <https://github.com/iKK001>`__ - `iKK001 (@iKK001) <https://github.com/iKK001>`__
- `ilium007 (@ilium007) <https://github.com/ilium007>`__
- `imgbot[bot] (@imgbot[bot]) <https://github.com/imgbot[bot]>`__ - `imgbot[bot] (@imgbot[bot]) <https://github.com/imgbot[bot]>`__
- `ImSorryButWho (@ImSorryButWho) <https://github.com/ImSorryButWho>`__ - `ImSorryButWho (@ImSorryButWho) <https://github.com/ImSorryButWho>`__
- `Dom (@Ing-Dom) <https://github.com/Ing-Dom>`__ - `Dom (@Ing-Dom) <https://github.com/Ing-Dom>`__
- `Ingo Becker (@ingobecker) <https://github.com/ingobecker>`__
- `Ingurum (@Ingurum) <https://github.com/Ingurum>`__ - `Ingurum (@Ingurum) <https://github.com/Ingurum>`__
- `IoT-devices LLC (@iotdevicesdev) <https://github.com/iotdevicesdev>`__
- `Ivo Roefs (@ironirc) <https://github.com/ironirc>`__ - `Ivo Roefs (@ironirc) <https://github.com/ironirc>`__
- `irtimaled (@irtimaled) <https://github.com/irtimaled>`__ - `irtimaled (@irtimaled) <https://github.com/irtimaled>`__
- `Ingo Theiss (@itn3rd77) <https://github.com/itn3rd77>`__ - `Ingo Theiss (@itn3rd77) <https://github.com/itn3rd77>`__
- `Ivan Shvedunov (@ivan4th) <https://github.com/ivan4th>`__ - `Ivan Shvedunov (@ivan4th) <https://github.com/ivan4th>`__
- `Ivan Kravets (@ivankravets) <https://github.com/ivankravets>`__ - `Ivan Kravets (@ivankravets) <https://github.com/ivankravets>`__
- `Ivan Lisenkov (@ivlis) <https://github.com/ivlis>`__
- `Ivo-tje (@Ivo-tje) <https://github.com/Ivo-tje>`__ - `Ivo-tje (@Ivo-tje) <https://github.com/Ivo-tje>`__
- `J0RD4N300 (@J0RD4N300) <https://github.com/J0RD4N300>`__
- `Fredrik Gustafsson (@jagheterfredrik) <https://github.com/jagheterfredrik>`__ - `Fredrik Gustafsson (@jagheterfredrik) <https://github.com/jagheterfredrik>`__
- `Jan Harkes (@jaharkes) <https://github.com/jaharkes>`__ - `Jan Harkes (@jaharkes) <https://github.com/jaharkes>`__
- `Jake Shirley (@JakeShirley) <https://github.com/JakeShirley>`__
- `Jakob Reiter (@jakommo) <https://github.com/jakommo>`__ - `Jakob Reiter (@jakommo) <https://github.com/jakommo>`__
- `James Braid (@jamesbraid) <https://github.com/jamesbraid>`__ - `James Braid (@jamesbraid) <https://github.com/jamesbraid>`__
- `James Duke (@jamesduke) <https://github.com/jamesduke>`__ - `James Duke (@jamesduke) <https://github.com/jamesduke>`__
- `James Gao (@jamesgao) <https://github.com/jamesgao>`__ - `James Gao (@jamesgao) <https://github.com/jamesgao>`__
- `James Hirka (@jameshirka) <https://github.com/jameshirka>`__
- `James Lakin (@jamesorlakin) <https://github.com/jamesorlakin>`__ - `James Lakin (@jamesorlakin) <https://github.com/jamesorlakin>`__
- `James Swift (@JamesSwift) <https://github.com/JamesSwift>`__ - `James Swift (@JamesSwift) <https://github.com/JamesSwift>`__
- `Jason (@jamman9000) <https://github.com/jamman9000>`__
- `Juraj Andrássy (@JAndrassy) <https://github.com/JAndrassy>`__ - `Juraj Andrássy (@JAndrassy) <https://github.com/JAndrassy>`__
- `Delio Castillo (@jangeador) <https://github.com/jangeador>`__
- `Jan Grewe (@jangrewe) <https://github.com/jangrewe>`__ - `Jan Grewe (@jangrewe) <https://github.com/jangrewe>`__
- `János Rusiczki (@janosrusiczki) <https://github.com/janosrusiczki>`__ - `János Rusiczki (@janosrusiczki) <https://github.com/janosrusiczki>`__
- `Jan Pieper (@janpieper) <https://github.com/janpieper>`__ - `Jan Pieper (@janpieper) <https://github.com/janpieper>`__
- `Jared Ring (@jaredring) <https://github.com/jaredring>`__
- `Jarek.P (@JaroslawPrzybyl) <https://github.com/JaroslawPrzybyl>`__ - `Jarek.P (@JaroslawPrzybyl) <https://github.com/JaroslawPrzybyl>`__
- `Jason-nz (@Jason-nz) <https://github.com/Jason-nz>`__ - `Jason-nz (@Jason-nz) <https://github.com/Jason-nz>`__
- `Jason2866 (@Jason2866) <https://github.com/Jason2866>`__ - `Jason2866 (@Jason2866) <https://github.com/Jason2866>`__
@ -450,6 +557,7 @@ Contributors
- `Jeff Rescignano (@JeffResc) <https://github.com/JeffResc>`__ - `Jeff Rescignano (@JeffResc) <https://github.com/JeffResc>`__
- `Jej (@jej) <https://github.com/jej>`__ - `Jej (@jej) <https://github.com/jej>`__
- `Jens-Christian Skibakk (@jenscski) <https://github.com/jenscski>`__ - `Jens-Christian Skibakk (@jenscski) <https://github.com/jenscski>`__
- `Jeremy Willans (@jeremywillans) <https://github.com/jeremywillans>`__
- `Jeroen (@jeroen85) <https://github.com/jeroen85>`__ - `Jeroen (@jeroen85) <https://github.com/jeroen85>`__
- `Jérôme Laban (@jeromelaban) <https://github.com/jeromelaban>`__ - `Jérôme Laban (@jeromelaban) <https://github.com/jeromelaban>`__
- `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__ - `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__
@ -458,6 +566,7 @@ Contributors
- `Jan Pieter Waagmeester (@jieter) <https://github.com/jieter>`__ - `Jan Pieter Waagmeester (@jieter) <https://github.com/jieter>`__
- `Jim Bauwens (@jimbauwens) <https://github.com/jimbauwens>`__ - `Jim Bauwens (@jimbauwens) <https://github.com/jimbauwens>`__
- `jimtng (@jimtng) <https://github.com/jimtng>`__ - `jimtng (@jimtng) <https://github.com/jimtng>`__
- `jivesinger (@jivesinger) <https://github.com/jivesinger>`__
- `Jérémy JOURDIN (@JJK801) <https://github.com/JJK801>`__ - `Jérémy JOURDIN (@JJK801) <https://github.com/JJK801>`__
- `Jonathan Jefferies (@jjok) <https://github.com/jjok>`__ - `Jonathan Jefferies (@jjok) <https://github.com/jjok>`__
- `John K. Luebs (@jkl1337) <https://github.com/jkl1337>`__ - `John K. Luebs (@jkl1337) <https://github.com/jkl1337>`__
@ -465,14 +574,18 @@ Contributors
- `Jeppe Ladefoged (@jladefoged) <https://github.com/jladefoged>`__ - `Jeppe Ladefoged (@jladefoged) <https://github.com/jladefoged>`__
- `Jean-Luc Béchennec (@jlbirccyn) <https://github.com/jlbirccyn>`__ - `Jean-Luc Béchennec (@jlbirccyn) <https://github.com/jlbirccyn>`__
- `Jonas De Kegel (@jlsjonas) <https://github.com/jlsjonas>`__ - `Jonas De Kegel (@jlsjonas) <https://github.com/jlsjonas>`__
- `Jeff Anderson (@jman203) <https://github.com/jman203>`__
- `Jonathan Martens (@jmartens) <https://github.com/jmartens>`__ - `Jonathan Martens (@jmartens) <https://github.com/jmartens>`__
- `jmichiel (@jmichiel) <https://github.com/jmichiel>`__ - `jmichiel (@jmichiel) <https://github.com/jmichiel>`__
- `Jonathas Barbosa (@jnthas) <https://github.com/jnthas>`__
- `Joe Gross (@joegross) <https://github.com/joegross>`__ - `Joe Gross (@joegross) <https://github.com/joegross>`__
- `Johan van der Kuijl (@johanvanderkuijl) <https://github.com/johanvanderkuijl>`__ - `Johan van der Kuijl (@johanvanderkuijl) <https://github.com/johanvanderkuijl>`__
- `Johboh (@Johboh) <https://github.com/Johboh>`__ - `Johboh (@Johboh) <https://github.com/Johboh>`__
- `John Britton (@johndbritton) <https://github.com/johndbritton>`__ - `John Britton (@johndbritton) <https://github.com/johndbritton>`__
- `John Erik Halse (@johnerikhalse) <https://github.com/johnerikhalse>`__ - `John Erik Halse (@johnerikhalse) <https://github.com/johnerikhalse>`__
- `John Moxley (@johnmoxley) <https://github.com/johnmoxley>`__ - `John Moxley (@johnmoxley) <https://github.com/johnmoxley>`__
- `Dave Johnston (@johnsto) <https://github.com/johnsto>`__
- `joiboi (@joiboi) <https://github.com/joiboi>`__
- `JonasEr (@JonasEr) <https://github.com/JonasEr>`__ - `JonasEr (@JonasEr) <https://github.com/JonasEr>`__
- `Jonathan Adams (@jonathanadams) <https://github.com/jonathanadams>`__ - `Jonathan Adams (@jonathanadams) <https://github.com/jonathanadams>`__
- `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__ - `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__
@ -481,10 +594,12 @@ Contributors
- `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__ - `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__
- `Jared Sanson (@jorticus) <https://github.com/jorticus>`__ - `Jared Sanson (@jorticus) <https://github.com/jorticus>`__
- `Joshua Spence (@joshuaspence) <https://github.com/joshuaspence>`__ - `Joshua Spence (@joshuaspence) <https://github.com/joshuaspence>`__
- `joskfg (@joskfg) <https://github.com/joskfg>`__
- `Joscha Wagner (@jowgn) <https://github.com/jowgn>`__ - `Joscha Wagner (@jowgn) <https://github.com/jowgn>`__
- `Javier Peletier (@jpeletier) <https://github.com/jpeletier>`__ - `Javier Peletier (@jpeletier) <https://github.com/jpeletier>`__
- `jsuanet (@jsuanet) <https://github.com/jsuanet>`__ - `jsuanet (@jsuanet) <https://github.com/jsuanet>`__
- `James Szalay (@jtszalay) <https://github.com/jtszalay>`__ - `James Szalay (@jtszalay) <https://github.com/jtszalay>`__
- `Jules-R (@Jules-R) <https://github.com/Jules-R>`__
- `Julie Koubová (@juliekoubova) <https://github.com/juliekoubova>`__ - `Julie Koubová (@juliekoubova) <https://github.com/juliekoubova>`__
- `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__ - `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__
- `Mike Ryan (@justfalter) <https://github.com/justfalter>`__ - `Mike Ryan (@justfalter) <https://github.com/justfalter>`__
@ -495,10 +610,12 @@ Contributors
- `Jack Wozny (@jwozny) <https://github.com/jwozny>`__ - `Jack Wozny (@jwozny) <https://github.com/jwozny>`__
- `Jozef Zuzelka (@jzlka) <https://github.com/jzlka>`__ - `Jozef Zuzelka (@jzlka) <https://github.com/jzlka>`__
- `Kris (@K-r-i-s-t-i-a-n) <https://github.com/K-r-i-s-t-i-a-n>`__ - `Kris (@K-r-i-s-t-i-a-n) <https://github.com/K-r-i-s-t-i-a-n>`__
- `k0rtina (@k0rtina) <https://github.com/k0rtina>`__
- `Harald Nagel (@k7hpn) <https://github.com/k7hpn>`__ - `Harald Nagel (@k7hpn) <https://github.com/k7hpn>`__
- `kaegi (@kaegi) <https://github.com/kaegi>`__ - `kaegi (@kaegi) <https://github.com/kaegi>`__
- `kahrendt (@kahrendt) <https://github.com/kahrendt>`__ - `kahrendt (@kahrendt) <https://github.com/kahrendt>`__
- `Kamahat (@kamahat) <https://github.com/kamahat>`__ - `Kamahat (@kamahat) <https://github.com/kamahat>`__
- `Karl0ss (@karl0ss) <https://github.com/karl0ss>`__
- `Karol Zlot (@karolzlot) <https://github.com/karolzlot>`__ - `Karol Zlot (@karolzlot) <https://github.com/karolzlot>`__
- `Kattni (@kattni) <https://github.com/kattni>`__ - `Kattni (@kattni) <https://github.com/kattni>`__
- `Krasimir Nedelchev (@kaykayehnn) <https://github.com/kaykayehnn>`__ - `Krasimir Nedelchev (@kaykayehnn) <https://github.com/kaykayehnn>`__
@ -506,17 +623,25 @@ Contributors
- `Keilin Bickar (@kbickar) <https://github.com/kbickar>`__ - `Keilin Bickar (@kbickar) <https://github.com/kbickar>`__
- `Keith Burzinski (@kbx81) <https://github.com/kbx81>`__ - `Keith Burzinski (@kbx81) <https://github.com/kbx81>`__
- `Ken Piper (@Kealper) <https://github.com/Kealper>`__ - `Ken Piper (@Kealper) <https://github.com/Kealper>`__
- `Robert Kiss (@kepten) <https://github.com/kepten>`__ - `Kelvie Wong (@kelvie) <https://github.com/kelvie>`__
- `Kenny Stier (@KennyStier) <https://github.com/KennyStier>`__
- `kernelpanic85 (@kernelpanic85) <https://github.com/kernelpanic85>`__
- `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__ - `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__
- `kevlar10 (@kevlar10) <https://github.com/kevlar10>`__
- `kfulko (@kfulko) <https://github.com/kfulko>`__
- `Kai Gerken (@KG3RK3N) <https://github.com/KG3RK3N>`__ - `Kai Gerken (@KG3RK3N) <https://github.com/KG3RK3N>`__
- `kghandi (@kghandi) <https://github.com/kghandi>`__
- `Khoi Hoang (@khoih-prog) <https://github.com/khoih-prog>`__ - `Khoi Hoang (@khoih-prog) <https://github.com/khoih-prog>`__
- `Kilowatt (@Kilowatt-W) <https://github.com/Kilowatt-W>`__
- `Ed (@kixtarter) <https://github.com/kixtarter>`__ - `Ed (@kixtarter) <https://github.com/kixtarter>`__
- `Kurt Kellner (@kkellner) <https://github.com/kkellner>`__ - `Kurt Kellner (@kkellner) <https://github.com/kkellner>`__
- `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__ - `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__ - `Klarstein (@Klarstein) <https://github.com/Klarstein>`__
- `Marcus Klein (@kleini) <https://github.com/kleini>`__ - `Marcus Klein (@kleini) <https://github.com/kleini>`__
- `Kevin Lewis (@kll) <https://github.com/kll>`__ - `Kevin Lewis (@kll) <https://github.com/kll>`__
- `KNXBroker (@KNXBroker) <https://github.com/KNXBroker>`__
- `Koen Vervloesem (@koenvervloesem) <https://github.com/koenvervloesem>`__ - `Koen Vervloesem (@koenvervloesem) <https://github.com/koenvervloesem>`__
- `kokangit (@kokangit) <https://github.com/kokangit>`__
- `Petr Vraník (@konikvranik) <https://github.com/konikvranik>`__ - `Petr Vraník (@konikvranik) <https://github.com/konikvranik>`__
- `Kevin Pelzel (@kpelzel) <https://github.com/kpelzel>`__ - `Kevin Pelzel (@kpelzel) <https://github.com/kpelzel>`__
- `Karl Q. (@kquinsland) <https://github.com/kquinsland>`__ - `Karl Q. (@kquinsland) <https://github.com/kquinsland>`__
@ -524,24 +649,26 @@ Contributors
- `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__ - `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__
- `kroimon (@kroimon) <https://github.com/kroimon>`__ - `kroimon (@kroimon) <https://github.com/kroimon>`__
- `krunkel (@krunkel) <https://github.com/krunkel>`__ - `krunkel (@krunkel) <https://github.com/krunkel>`__
- `kryptonitecb3 (@kryptonitecb3) <https://github.com/kryptonitecb3>`__
- `Kendell R (@KTibow) <https://github.com/KTibow>`__ - `Kendell R (@KTibow) <https://github.com/KTibow>`__
- `Kuba Szczodrzyński (@kuba2k2) <https://github.com/kuba2k2>`__ - `Kuba Szczodrzyński (@kuba2k2) <https://github.com/kuba2k2>`__
- `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__ - `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__
- `Mark Kuchel (@kuchel77) <https://github.com/kuchel77>`__
- `Ken Davidson (@kwdavidson) <https://github.com/kwdavidson>`__ - `Ken Davidson (@kwdavidson) <https://github.com/kwdavidson>`__
- `Kyle Hendricks (@kylehendricks) <https://github.com/kylehendricks>`__ - `Kyle Hill (@kylhill) <https://github.com/kylhill>`__
- `Kyle Manna (@kylemanna) <https://github.com/kylemanna>`__
- `Kalashnikov Ilya (@l1bbcsg) <https://github.com/l1bbcsg>`__ - `Kalashnikov Ilya (@l1bbcsg) <https://github.com/l1bbcsg>`__
- `Limor "Ladyada" Fried (@ladyada) <https://github.com/ladyada>`__ - `Limor "Ladyada" Fried (@ladyada) <https://github.com/ladyada>`__
- `Lakshantha Dissanayake (@lakshanthad) <https://github.com/lakshanthad>`__
- `Luca Adrian L (@lal12) <https://github.com/lal12>`__ - `Luca Adrian L (@lal12) <https://github.com/lal12>`__
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__ - `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__
- `Lawrie George (@lawriege) <https://github.com/lawriege>`__
- `Laszlo Gazdag (@lazlyhu) <https://github.com/lazlyhu>`__ - `Laszlo Gazdag (@lazlyhu) <https://github.com/lazlyhu>`__
- `Ludovic BOUÉ (@lboue) <https://github.com/lboue>`__
- `lcavalli (@lcavalli) <https://github.com/lcavalli>`__ - `lcavalli (@lcavalli) <https://github.com/lcavalli>`__
- `Craig Fletcher (@leakypixel) <https://github.com/leakypixel>`__ - `Craig Fletcher (@leakypixel) <https://github.com/leakypixel>`__
- `Dominik Wagenknecht (@LeDominik) <https://github.com/LeDominik>`__ - `Dominik Wagenknecht (@LeDominik) <https://github.com/LeDominik>`__
- `Benny de Leeuw (@leeuwte) <https://github.com/leeuwte>`__ - `Benny de Leeuw (@leeuwte) <https://github.com/leeuwte>`__
- `Leonardo La Rocca (@leoli51) <https://github.com/leoli51>`__ - `Leonardo La Rocca (@leoli51) <https://github.com/leoli51>`__
- `Lerosen (@Lerosen) <https://github.com/Lerosen>`__ - `Leo Winter (@LeoWinterDE) <https://github.com/LeoWinterDE>`__
- `Leon Loopik (@Lewn) <https://github.com/Lewn>`__ - `Leon Loopik (@Lewn) <https://github.com/Lewn>`__
- `Luca Gugelmann (@lgugelmann) <https://github.com/lgugelmann>`__ - `Luca Gugelmann (@lgugelmann) <https://github.com/lgugelmann>`__
- `Lubos Horacek (@lhoracek) <https://github.com/lhoracek>`__ - `Lubos Horacek (@lhoracek) <https://github.com/lhoracek>`__
@ -549,6 +676,7 @@ Contributors
- `lillborje71 (@lillborje71) <https://github.com/lillborje71>`__ - `lillborje71 (@lillborje71) <https://github.com/lillborje71>`__
- `lingex (@lingex) <https://github.com/lingex>`__ - `lingex (@lingex) <https://github.com/lingex>`__
- `lkomurcu (@lkomurcu) <https://github.com/lkomurcu>`__ - `lkomurcu (@lkomurcu) <https://github.com/lkomurcu>`__
- `loadrunner42 (@loadrunner42) <https://github.com/loadrunner42>`__
- `Lazar Obradovic (@lobradov) <https://github.com/lobradov>`__ - `Lazar Obradovic (@lobradov) <https://github.com/lobradov>`__
- `Barry Loong (@loongyh) <https://github.com/loongyh>`__ - `Barry Loong (@loongyh) <https://github.com/loongyh>`__
- `Michael Bisbjerg (@LordMike) <https://github.com/LordMike>`__ - `Michael Bisbjerg (@LordMike) <https://github.com/LordMike>`__
@ -556,6 +684,9 @@ Contributors
- `Joakim Sørensen (@ludeeus) <https://github.com/ludeeus>`__ - `Joakim Sørensen (@ludeeus) <https://github.com/ludeeus>`__
- `ludrao (@ludrao) <https://github.com/ludrao>`__ - `ludrao (@ludrao) <https://github.com/ludrao>`__
- `Lukas Klass (@LukasK13) <https://github.com/LukasK13>`__ - `Lukas Klass (@LukasK13) <https://github.com/LukasK13>`__
- `Łukasz Świtaj (@lukaszswitaj) <https://github.com/lukaszswitaj>`__
- `Luke (@Lukeskaiwalker) <https://github.com/Lukeskaiwalker>`__
- `Jayden (@lukyjay) <https://github.com/lukyjay>`__
- `Lumpusz (@Lumpusz) <https://github.com/Lumpusz>`__ - `Lumpusz (@Lumpusz) <https://github.com/Lumpusz>`__
- `Ohad Lutzky (@lutzky) <https://github.com/lutzky>`__ - `Ohad Lutzky (@lutzky) <https://github.com/lutzky>`__
- `Luke Fitzgerald (@lwfitzgerald) <https://github.com/lwfitzgerald>`__ - `Luke Fitzgerald (@lwfitzgerald) <https://github.com/lwfitzgerald>`__
@ -565,24 +696,31 @@ Contributors
- `Marc-Antoine Courteau (@macourteau) <https://github.com/macourteau>`__ - `Marc-Antoine Courteau (@macourteau) <https://github.com/macourteau>`__
- `Massimiliano Ravelli (@madron) <https://github.com/madron>`__ - `Massimiliano Ravelli (@madron) <https://github.com/madron>`__
- `Alexandre-Jacques St-Jacques (@Maelstrom96) <https://github.com/Maelstrom96>`__ - `Alexandre-Jacques St-Jacques (@Maelstrom96) <https://github.com/Maelstrom96>`__
- `Scott Cappellani (@maeneak) <https://github.com/maeneak>`__
- `Magnus Nordlander (@magnusnordlander) <https://github.com/magnusnordlander>`__ - `Magnus Nordlander (@magnusnordlander) <https://github.com/magnusnordlander>`__
- `majbthrd (@majbthrd) <https://github.com/majbthrd>`__ - `majbthrd (@majbthrd) <https://github.com/majbthrd>`__
- `Major Péter (@majorpeter) <https://github.com/majorpeter>`__ - `Major Péter (@majorpeter) <https://github.com/majorpeter>`__
- `Kasper Malfroid (@malfroid) <https://github.com/malfroid>`__
- `Malle355 (@Malle355) <https://github.com/Malle355>`__
- `raymonder jin (@mamil) <https://github.com/mamil>`__ - `raymonder jin (@mamil) <https://github.com/mamil>`__
- `Manuel Díez (@manutenfruits) <https://github.com/manutenfruits>`__ - `Manuel Díez (@manutenfruits) <https://github.com/manutenfruits>`__
- `marcelolcosta (@marcelolcosta) <https://github.com/marcelolcosta>`__
- `Marcel van der Veldt (@marcelveldt) <https://github.com/marcelveldt>`__ - `Marcel van der Veldt (@marcelveldt) <https://github.com/marcelveldt>`__
- `Marc (@MarcHagen) <https://github.com/MarcHagen>`__ - `Marc (@MarcHagen) <https://github.com/MarcHagen>`__
- `marcinkowalczyk (@marcinkowalczyk) <https://github.com/marcinkowalczyk>`__
- `Marcio Granzotto Rodrigues (@marciogranzotto) <https://github.com/marciogranzotto>`__ - `Marcio Granzotto Rodrigues (@marciogranzotto) <https://github.com/marciogranzotto>`__
- `marecabo (@marecabo) <https://github.com/marecabo>`__ - `marecabo (@marecabo) <https://github.com/marecabo>`__
- `Ben Marengo (@marengaz) <https://github.com/marengaz>`__ - `Ben Marengo (@marengaz) <https://github.com/marengaz>`__
- `Marvin Gaube (@margau) <https://github.com/margau>`__ - `Marvin Gaube (@margau) <https://github.com/margau>`__
- `maringeph (@maringeph) <https://github.com/maringeph>`__ - `maringeph (@maringeph) <https://github.com/maringeph>`__
- `Mario (@mario-tux) <https://github.com/mario-tux>`__ - `Mario (@mario-tux) <https://github.com/mario-tux>`__
- `Mark Schabacker (@markschabacker) <https://github.com/markschabacker>`__
- `Marek Marczykowski-Górecki (@marmarek) <https://github.com/marmarek>`__ - `Marek Marczykowski-Górecki (@marmarek) <https://github.com/marmarek>`__
- `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__ - `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__
- `Martin (@martgras) <https://github.com/martgras>`__ - `Martin (@martgras) <https://github.com/martgras>`__
- `Martin Hjelmare (@MartinHjelmare) <https://github.com/MartinHjelmare>`__ - `Martin Hjelmare (@MartinHjelmare) <https://github.com/MartinHjelmare>`__
- `MartinWelsch (@MartinWelsch) <https://github.com/MartinWelsch>`__ - `MartinWelsch (@MartinWelsch) <https://github.com/MartinWelsch>`__
- `M-A (@maruel) <https://github.com/maruel>`__
- `MasterTim17 (@MasterTim17) <https://github.com/MasterTim17>`__ - `MasterTim17 (@MasterTim17) <https://github.com/MasterTim17>`__
- `Christopher Masto (@masto) <https://github.com/masto>`__ - `Christopher Masto (@masto) <https://github.com/masto>`__
- `Mat931 (@Mat931) <https://github.com/Mat931>`__ - `Mat931 (@Mat931) <https://github.com/Mat931>`__
@ -595,28 +733,38 @@ Contributors
- `Matus Ivanecky (@maty535) <https://github.com/maty535>`__ - `Matus Ivanecky (@maty535) <https://github.com/maty535>`__
- `Maximilian Gerhardt (@maxgerhardt) <https://github.com/maxgerhardt>`__ - `Maximilian Gerhardt (@maxgerhardt) <https://github.com/maxgerhardt>`__
- `mbo18 (@mbo18) <https://github.com/mbo18>`__ - `mbo18 (@mbo18) <https://github.com/mbo18>`__
- `mcmuller (@mcmuller) <https://github.com/mcmuller>`__
- `Miguel Diaz Gonçalves (@mdiazgoncalves) <https://github.com/mdiazgoncalves>`__
- `Matthew Donoughe (@mdonoughe) <https://github.com/mdonoughe>`__ - `Matthew Donoughe (@mdonoughe) <https://github.com/mdonoughe>`__
- `Me No Dev (@me-no-dev) <https://github.com/me-no-dev>`__ - `Me No Dev (@me-no-dev) <https://github.com/me-no-dev>`__
- `Alexandr Zarubkin (@me21) <https://github.com/me21>`__ - `Alexandr Zarubkin (@me21) <https://github.com/me21>`__
- `Joseph Mearman (@Mearman) <https://github.com/Mearman>`__ - `Joseph Mearman (@Mearman) <https://github.com/Mearman>`__
- `mechanarchy (@mechanarchy) <https://github.com/mechanarchy>`__ - `mechanarchy (@mechanarchy) <https://github.com/mechanarchy>`__
- `Bas (@Mechazawa) <https://github.com/Mechazawa>`__ - `Bas (@Mechazawa) <https://github.com/Mechazawa>`__
- `megabitdragon (@megabitdragon) <https://github.com/megabitdragon>`__
- `meijerwynand (@meijerwynand) <https://github.com/meijerwynand>`__ - `meijerwynand (@meijerwynand) <https://github.com/meijerwynand>`__
- `Marco (@Melkor82) <https://github.com/Melkor82>`__ - `Marco (@Melkor82) <https://github.com/Melkor82>`__
- `Merlin Schumacher (@merlinschumacher) <https://github.com/merlinschumacher>`__ - `Merlin Schumacher (@merlinschumacher) <https://github.com/merlinschumacher>`__
- `Martin Flasskamp (@MFlasskamp) <https://github.com/MFlasskamp>`__ - `Martin Flasskamp (@MFlasskamp) <https://github.com/MFlasskamp>`__
- `Michael Gorven (@mgorven) <https://github.com/mgorven>`__ - `Michael Gorven (@mgorven) <https://github.com/mgorven>`__
- `Jörg Thalheim (@Mic92) <https://github.com/Mic92>`__
- `Michael Muré (@MichaelMure) <https://github.com/MichaelMure>`__ - `Michael Muré (@MichaelMure) <https://github.com/MichaelMure>`__
- `Micha Nordmann (@Michanord) <https://github.com/Michanord>`__ - `Micha Nordmann (@Michanord) <https://github.com/Michanord>`__
- `Michel Munzert (@michelde) <https://github.com/michelde>`__
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__ - `Pauline Middelink (@middelink) <https://github.com/middelink>`__
- `Mike_Went (@MikeWent) <https://github.com/MikeWent>`__
- `Mikko Tervala (@MikkoTervala) <https://github.com/MikkoTervala>`__ - `Mikko Tervala (@MikkoTervala) <https://github.com/MikkoTervala>`__
- `MiKuBB (@MiKuBB) <https://github.com/MiKuBB>`__ - `MiKuBB (@MiKuBB) <https://github.com/MiKuBB>`__
- `André Klitzing (@misery) <https://github.com/misery>`__ - `André Klitzing (@misery) <https://github.com/misery>`__
- `Tomasz (@Misiu) <https://github.com/Misiu>`__ - `Tomasz (@Misiu) <https://github.com/Misiu>`__
- `mjbogusz (@mjbogusz) <https://github.com/mjbogusz>`__
- `Matthew Garrett (@mjg59) <https://github.com/mjg59>`__ - `Matthew Garrett (@mjg59) <https://github.com/mjg59>`__
- `Morton Jonuschat (@mjonuschat) <https://github.com/mjonuschat>`__ - `Morton Jonuschat (@mjonuschat) <https://github.com/mjonuschat>`__
- `mjoshd (@mjoshd) <https://github.com/mjoshd>`__ - `mjoshd (@mjoshd) <https://github.com/mjoshd>`__
- `Matt Kaatman (@mkaatman) <https://github.com/mkaatman>`__
- `Marcel Karger (@mkar1984) <https://github.com/mkar1984>`__
- `mknjc (@mknjc) <https://github.com/mknjc>`__ - `mknjc (@mknjc) <https://github.com/mknjc>`__
- `Matthew Kosmoski (@mkosmo) <https://github.com/mkosmo>`__
- `Maurice Makaay (@mmakaay) <https://github.com/mmakaay>`__ - `Maurice Makaay (@mmakaay) <https://github.com/mmakaay>`__
- `mmanza (@mmanza) <https://github.com/mmanza>`__ - `mmanza (@mmanza) <https://github.com/mmanza>`__
- `mnltake (@mnltake) <https://github.com/mnltake>`__ - `mnltake (@mnltake) <https://github.com/mnltake>`__
@ -628,6 +776,8 @@ Contributors
- `Morgan Robertson (@mrgnr) <https://github.com/mrgnr>`__ - `Morgan Robertson (@mrgnr) <https://github.com/mrgnr>`__
- `Mariusz Kryński (@mrk-its) <https://github.com/mrk-its>`__ - `Mariusz Kryński (@mrk-its) <https://github.com/mrk-its>`__
- `Michael Davidson (@MrMDavidson) <https://github.com/MrMDavidson>`__ - `Michael Davidson (@MrMDavidson) <https://github.com/MrMDavidson>`__
- `Murray Scott (@mscottco) <https://github.com/mscottco>`__
- `MSe-5-14 (@MSe-5-14) <https://github.com/MSe-5-14>`__
- `mtl010957 (@mtl010957) <https://github.com/mtl010957>`__ - `mtl010957 (@mtl010957) <https://github.com/mtl010957>`__
- `mulcmu (@mulcmu) <https://github.com/mulcmu>`__ - `mulcmu (@mulcmu) <https://github.com/mulcmu>`__
- `Martin Murray (@murrayma) <https://github.com/murrayma>`__ - `Martin Murray (@murrayma) <https://github.com/murrayma>`__
@ -642,6 +792,7 @@ Contributors
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__ - `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__
- `H. Árkosi Róbert (@nagyrobi) <https://github.com/nagyrobi>`__ - `H. Árkosi Róbert (@nagyrobi) <https://github.com/nagyrobi>`__
- `Viktor Nagy (@nagyv) <https://github.com/nagyv>`__ - `Viktor Nagy (@nagyv) <https://github.com/nagyv>`__
- `NanoSector (@NanoSector) <https://github.com/NanoSector>`__
- `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__ - `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__
- `Nate Lust (@natelust) <https://github.com/natelust>`__ - `Nate Lust (@natelust) <https://github.com/natelust>`__
- `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__ - `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__
@ -654,24 +805,31 @@ Contributors
- `Nick B. (@NickB1) <https://github.com/NickB1>`__ - `Nick B. (@NickB1) <https://github.com/NickB1>`__
- `nickrout (@nickrout) <https://github.com/nickrout>`__ - `nickrout (@nickrout) <https://github.com/nickrout>`__
- `Nick Whyte (@nickw444) <https://github.com/nickw444>`__ - `Nick Whyte (@nickw444) <https://github.com/nickw444>`__
- `Nicky Ivy (@nickyivyca) <https://github.com/nickyivyca>`__
- `NP v/d Spek (@nielsnl68) <https://github.com/nielsnl68>`__ - `NP v/d Spek (@nielsnl68) <https://github.com/nielsnl68>`__
- `Niels Zeilemaker (@NielsZeilemaker) <https://github.com/NielsZeilemaker>`__
- `Joakim Vindgard (@nigobo) <https://github.com/nigobo>`__ - `Joakim Vindgard (@nigobo) <https://github.com/nigobo>`__
- `nikito7 (@nikito7) <https://github.com/nikito7>`__ - `nikito7 (@nikito7) <https://github.com/nikito7>`__
- `niklasweber (@niklasweber) <https://github.com/niklasweber>`__ - `niklasweber (@niklasweber) <https://github.com/niklasweber>`__
- `Niorix (@Niorix) <https://github.com/Niorix>`__ - `Niorix (@Niorix) <https://github.com/Niorix>`__
- `Zvonimir Haramustek (@nitko12) <https://github.com/nitko12>`__ - `Zvonimir Haramustek (@nitko12) <https://github.com/nitko12>`__
- `Nixspers (@Nixspers) <https://github.com/Nixspers>`__
- `Dennis (@Nizzle) <https://github.com/Nizzle>`__ - `Dennis (@Nizzle) <https://github.com/Nizzle>`__
- `nldroid (@nldroid) <https://github.com/nldroid>`__ - `nldroid (@nldroid) <https://github.com/nldroid>`__
- `Niccolò Maggioni (@nmaggioni) <https://github.com/nmaggioni>`__ - `Niccolò Maggioni (@nmaggioni) <https://github.com/nmaggioni>`__
- `nmeachen (@nmeachen) <https://github.com/nmeachen>`__
- `Jan Sandbrink (@NobodysNightmare) <https://github.com/NobodysNightmare>`__ - `Jan Sandbrink (@NobodysNightmare) <https://github.com/NobodysNightmare>`__
- `Álvaro Fernández Rojas (@Noltari) <https://github.com/Noltari>`__
- `Łukasz Śliwiński (@nonameplum) <https://github.com/nonameplum>`__ - `Łukasz Śliwiński (@nonameplum) <https://github.com/nonameplum>`__
- `Greg Johnson (@notgwj) <https://github.com/notgwj>`__ - `Greg Johnson (@notgwj) <https://github.com/notgwj>`__
- `nouser2013 (@nouser2013) <https://github.com/nouser2013>`__ - `nouser2013 (@nouser2013) <https://github.com/nouser2013>`__
- `Nick (@ntompson) <https://github.com/ntompson>`__
- `Stephen Edgar (@ntwb) <https://github.com/ntwb>`__ - `Stephen Edgar (@ntwb) <https://github.com/ntwb>`__
- `Stanislav Meduna (@numo68) <https://github.com/numo68>`__ - `Stanislav Meduna (@numo68) <https://github.com/numo68>`__
- `Nuno Sousa (@nunofgs) <https://github.com/nunofgs>`__ - `Nuno Sousa (@nunofgs) <https://github.com/nunofgs>`__
- `Maksym Lunin (@nut-code-monkey) <https://github.com/nut-code-monkey>`__ - `Maksym Lunin (@nut-code-monkey) <https://github.com/nut-code-monkey>`__
- `Chris Nussbaum (@nuttytree) <https://github.com/nuttytree>`__ - `Chris Nussbaum (@nuttytree) <https://github.com/nuttytree>`__
- `Michał Sochoń (@nvtkaszpir) <https://github.com/nvtkaszpir>`__
- `Nathaniel Wesley Filardo (@nwf) <https://github.com/nwf>`__ - `Nathaniel Wesley Filardo (@nwf) <https://github.com/nwf>`__
- `obrain17 (@obrain17) <https://github.com/obrain17>`__ - `obrain17 (@obrain17) <https://github.com/obrain17>`__
- `Ockert Marais (@OckertM) <https://github.com/OckertM>`__ - `Ockert Marais (@OckertM) <https://github.com/OckertM>`__
@ -679,12 +837,14 @@ Contributors
- `Andrey Ganzevich (@odya) <https://github.com/odya>`__ - `Andrey Ganzevich (@odya) <https://github.com/odya>`__
- `ogatatsu (@ogatatsu) <https://github.com/ogatatsu>`__ - `ogatatsu (@ogatatsu) <https://github.com/ogatatsu>`__
- `Oğuzhan Başer (@oguzhanbaser) <https://github.com/oguzhanbaser>`__ - `Oğuzhan Başer (@oguzhanbaser) <https://github.com/oguzhanbaser>`__
- `OkhammahkO (@OkhammahkO) <https://github.com/OkhammahkO>`__
- `Omar Ghader (@omarghader) <https://github.com/omarghader>`__ - `Omar Ghader (@omarghader) <https://github.com/omarghader>`__
- `Ömer Şiar Baysal (@omersiar) <https://github.com/omersiar>`__ - `Ömer Şiar Baysal (@omersiar) <https://github.com/omersiar>`__
- `optimusprimespace (@optimusprimespace) <https://github.com/optimusprimespace>`__ - `optimusprimespace (@optimusprimespace) <https://github.com/optimusprimespace>`__
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__ - `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__
- `Otamay (@Otamay) <https://github.com/Otamay>`__ - `Otamay (@Otamay) <https://github.com/Otamay>`__
- `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__ - `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__
- `Maxime Dufour (@outscale-mdr) <https://github.com/outscale-mdr>`__
- `Ben Owen (@owenb321) <https://github.com/owenb321>`__ - `Ben Owen (@owenb321) <https://github.com/owenb321>`__
- `Oxan van Leeuwen (@oxan) <https://github.com/oxan>`__ - `Oxan van Leeuwen (@oxan) <https://github.com/oxan>`__
- `Pablo Clemente Maseda (@paclema) <https://github.com/paclema>`__ - `Pablo Clemente Maseda (@paclema) <https://github.com/paclema>`__
@ -698,21 +858,30 @@ Contributors
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__ - `Paul Nicholls (@pauln) <https://github.com/pauln>`__
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__ - `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
- `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__ - `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__
- `peddamat (@peddamat) <https://github.com/peddamat>`__
- `pedjas (@pedjas) <https://github.com/pedjas>`__ - `pedjas (@pedjas) <https://github.com/pedjas>`__
- `pedrobsm (@pedrobsm) <https://github.com/pedrobsm>`__
- `per1234 (@per1234) <https://github.com/per1234>`__ - `per1234 (@per1234) <https://github.com/per1234>`__
- `David (@perldj) <https://github.com/perldj>`__
- `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__ - `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__
- `Peter Galantha (@peterg79) <https://github.com/peterg79>`__ - `Peter Galantha (@peterg79) <https://github.com/peterg79>`__
- `Peter Halicky (@peterhalicky) <https://github.com/peterhalicky>`__ - `Peter Halicky (@peterhalicky) <https://github.com/peterhalicky>`__
- `Philippe Delodder (@phdelodder) <https://github.com/phdelodder>`__
- `philbowers (@philbowers) <https://github.com/philbowers>`__
- `Philippe FOUQUET (@Philippe12) <https://github.com/Philippe12>`__ - `Philippe FOUQUET (@Philippe12) <https://github.com/Philippe12>`__
- `Philip Rosenberg-Watt (@PhilRW) <https://github.com/PhilRW>`__
- `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__ - `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__
- `Piotr Kubiak (@piotr-kubiak) <https://github.com/piotr-kubiak>`__ - `Piotr Kubiak (@piotr-kubiak) <https://github.com/piotr-kubiak>`__
- `Peter Kuehne (@pkuehne) <https://github.com/pkuehne>`__ - `Peter Kuehne (@pkuehne) <https://github.com/pkuehne>`__
- `Plácido Revilla (@placidorevilla) <https://github.com/placidorevilla>`__ - `Plácido Revilla (@placidorevilla) <https://github.com/placidorevilla>`__
- `Marcus Kempe (@plopp) <https://github.com/plopp>`__ - `Marcus Kempe (@plopp) <https://github.com/plopp>`__
- `Jan Pluskal (@pluskal) <https://github.com/pluskal>`__
- `DK (@poldim) <https://github.com/poldim>`__ - `DK (@poldim) <https://github.com/poldim>`__
- `poloswiss (@poloswiss) <https://github.com/poloswiss>`__
- `Pontus Oldberg (@PontusO) <https://github.com/PontusO>`__ - `Pontus Oldberg (@PontusO) <https://github.com/PontusO>`__
- `poptix (@poptix) <https://github.com/poptix>`__ - `poptix (@poptix) <https://github.com/poptix>`__
- `Iván Povedano (@pove) <https://github.com/pove>`__ - `Iván Povedano (@pove) <https://github.com/pove>`__
- `Peter Provost (@PProvost) <https://github.com/PProvost>`__
- `probonopd (@probonopd) <https://github.com/probonopd>`__ - `probonopd (@probonopd) <https://github.com/probonopd>`__
- `Mike Lynch (@Prow7) <https://github.com/Prow7>`__ - `Mike Lynch (@Prow7) <https://github.com/Prow7>`__
- `Peter Tatrai (@ptatrai) <https://github.com/ptatrai>`__ - `Peter Tatrai (@ptatrai) <https://github.com/ptatrai>`__
@ -722,6 +891,7 @@ Contributors
- `Alex (@pxe-la) <https://github.com/pxe-la>`__ - `Alex (@pxe-la) <https://github.com/pxe-la>`__
- `[pʲɵs] (@pyos) <https://github.com/pyos>`__ - `[pʲɵs] (@pyos) <https://github.com/pyos>`__
- `Qc (@qc24) <https://github.com/qc24>`__ - `Qc (@qc24) <https://github.com/qc24>`__
- `Quinn Casey (@qcasey) <https://github.com/qcasey>`__
- `Karol Zlot (@qqgg231) <https://github.com/qqgg231>`__ - `Karol Zlot (@qqgg231) <https://github.com/qqgg231>`__
- `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__ - `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__
- `Quentin Smith (@quentinmit) <https://github.com/quentinmit>`__ - `Quentin Smith (@quentinmit) <https://github.com/quentinmit>`__
@ -735,14 +905,21 @@ Contributors
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__ - `Florian Ragwitz (@rafl) <https://github.com/rafl>`__
- `Rai-Rai (@Rai-Rai) <https://github.com/Rai-Rai>`__ - `Rai-Rai (@Rai-Rai) <https://github.com/Rai-Rai>`__
- `randomllama (@randomllama) <https://github.com/randomllama>`__ - `randomllama (@randomllama) <https://github.com/randomllama>`__
- `Marc Seeger (@rb2k) <https://github.com/rb2k>`__
- `rbaron (@rbaron) <https://github.com/rbaron>`__ - `rbaron (@rbaron) <https://github.com/rbaron>`__
- `Robert Cambridge (@rcambrj) <https://github.com/rcambrj>`__ - `Robert Cambridge (@rcambrj) <https://github.com/rcambrj>`__
- `Rebbe Pod (@RebbePod) <https://github.com/RebbePod>`__ - `Rebbe Pod (@RebbePod) <https://github.com/RebbePod>`__
- `reddn (@reddn) <https://github.com/reddn>`__
- `Alex (@redwngsrul) <https://github.com/redwngsrul>`__ - `Alex (@redwngsrul) <https://github.com/redwngsrul>`__
- `Refferic (@Refferic) <https://github.com/Refferic>`__
- `Regev Brody (@regevbr) <https://github.com/regevbr>`__ - `Regev Brody (@regevbr) <https://github.com/regevbr>`__
- `Alex Reid (@reidprojects) <https://github.com/reidprojects>`__ - `Alex Reid (@reidprojects) <https://github.com/reidprojects>`__
- `RenierM26 (@RenierM26) <https://github.com/RenierM26>`__
- `Reuben (@reubn) <https://github.com/reubn>`__ - `Reuben (@reubn) <https://github.com/reubn>`__
- `Robin Pronk (@rfpronk) <https://github.com/rfpronk>`__ - `Robin Pronk (@rfpronk) <https://github.com/rfpronk>`__
- `Robert Gabrielson (@rgabrielson11) <https://github.com/rgabrielson11>`__
- `Rafael Goes (@rgriffogoes) <https://github.com/rgriffogoes>`__
- `rheinz (@rheinz) <https://github.com/rheinz>`__
- `richardhopton (@richardhopton) <https://github.com/richardhopton>`__ - `richardhopton (@richardhopton) <https://github.com/richardhopton>`__
- `Richard Klingler (@richardklingler) <https://github.com/richardklingler>`__ - `Richard Klingler (@richardklingler) <https://github.com/richardklingler>`__
- `Richard Lewis (@richrd) <https://github.com/richrd>`__ - `Richard Lewis (@richrd) <https://github.com/richrd>`__
@ -750,47 +927,60 @@ Contributors
- `rjlexx (@rjlexx) <https://github.com/rjlexx>`__ - `rjlexx (@rjlexx) <https://github.com/rjlexx>`__
- `René Klomp (@rklomp) <https://github.com/rklomp>`__ - `René Klomp (@rklomp) <https://github.com/rklomp>`__
- `rlowens (@rlowens) <https://github.com/rlowens>`__ - `rlowens (@rlowens) <https://github.com/rlowens>`__
- `LMR (@rmooreID) <https://github.com/rmooreID>`__
- `Ryan Mounce (@rmounce) <https://github.com/rmounce>`__ - `Ryan Mounce (@rmounce) <https://github.com/rmounce>`__
- `rnauber (@rnauber) <https://github.com/rnauber>`__ - `rnauber (@rnauber) <https://github.com/rnauber>`__
- `Rob Deutsch (@rob-deutsch) <https://github.com/rob-deutsch>`__ - `Rob Deutsch (@rob-deutsch) <https://github.com/rob-deutsch>`__
- `Rob de Jonge (@robdejonge) <https://github.com/robdejonge>`__
- `Robert Alfaro (@robert-alfaro) <https://github.com/robert-alfaro>`__ - `Robert Alfaro (@robert-alfaro) <https://github.com/robert-alfaro>`__
- `Rob Gridley (@robgridley) <https://github.com/robgridley>`__ - `Rob Gridley (@robgridley) <https://github.com/robgridley>`__
- `Robin Smidsrød (@robinsmidsrod) <https://github.com/robinsmidsrod>`__ - `Robinson1999 (@Robinson1999) <https://github.com/Robinson1999>`__
- `RoboMagus (@RoboMagus) <https://github.com/RoboMagus>`__ - `RoboMagus (@RoboMagus) <https://github.com/RoboMagus>`__
- `Roi Tagar (@roitagar) <https://github.com/roitagar>`__ - `Roeland Lutters (@Roeland54) <https://github.com/Roeland54>`__
- `RoganDawes (@RoganDawes) <https://github.com/RoganDawes>`__
- `Jérôme W. (@RomRider) <https://github.com/RomRider>`__ - `Jérôme W. (@RomRider) <https://github.com/RomRider>`__
- `roscoegray (@roscoegray) <https://github.com/roscoegray>`__
- `rotarykite (@rotarykite) <https://github.com/rotarykite>`__ - `rotarykite (@rotarykite) <https://github.com/rotarykite>`__
- `Bob Perciaccante (@rperciaccante) <https://github.com/rperciaccante>`__ - `Bob Perciaccante (@rperciaccante) <https://github.com/rperciaccante>`__
- `rradar (@rradar) <https://github.com/rradar>`__ - `rradar (@rradar) <https://github.com/rradar>`__
- `rspaargaren (@rspaargaren) <https://github.com/rspaargaren>`__ - `rspaargaren (@rspaargaren) <https://github.com/rspaargaren>`__
- `rsumner (@rsumner) <https://github.com/rsumner>`__ - `rsumner (@rsumner) <https://github.com/rsumner>`__
- `Ruben De Smet (@rubdos) <https://github.com/rubdos>`__
- `@RubenKelevra (@RubenKelevra) <https://github.com/RubenKelevra>`__ - `@RubenKelevra (@RubenKelevra) <https://github.com/RubenKelevra>`__
- `RubyBailey (@RubyBailey) <https://github.com/RubyBailey>`__ - `RubyBailey (@RubyBailey) <https://github.com/RubyBailey>`__
- `Rus Ti (@Rusti-gotrage) <https://github.com/Rusti-gotrage>`__
- `rweather (@rweather) <https://github.com/rweather>`__ - `rweather (@rweather) <https://github.com/rweather>`__
- `Ryan Lang (@ryan-lang) <https://github.com/ryan-lang>`__
- `ryanalden (@ryanalden) <https://github.com/ryanalden>`__ - `ryanalden (@ryanalden) <https://github.com/ryanalden>`__
- `Lukas Bachschwell (@s00500) <https://github.com/s00500>`__
- `Sabesto (@Sabesto) <https://github.com/Sabesto>`__
- `Jan Čermák (@sairon) <https://github.com/sairon>`__ - `Jan Čermák (@sairon) <https://github.com/sairon>`__
- `Sam Turner (@samturner3) <https://github.com/samturner3>`__
- `Sender (@sanderlv) <https://github.com/sanderlv>`__
- `sascha lammers (@sascha432) <https://github.com/sascha432>`__ - `sascha lammers (@sascha432) <https://github.com/sascha432>`__
- `sbur83 (@sbur83) <https://github.com/sbur83>`__
- `Søren Christian Aarup (@scaarup) <https://github.com/scaarup>`__ - `Søren Christian Aarup (@scaarup) <https://github.com/scaarup>`__
- `Matthew Schinckel (@schinckel) <https://github.com/schinckel>`__ - `Matthew Schinckel (@schinckel) <https://github.com/schinckel>`__
- `Nils Schulte (@Schnilz) <https://github.com/Schnilz>`__ - `Nils Schulte (@Schnilz) <https://github.com/Schnilz>`__
- `Wolle (@schreibfaul1) <https://github.com/schreibfaul1>`__ - `Wolle (@schreibfaul1) <https://github.com/schreibfaul1>`__
- `Ville Skyttä (@scop) <https://github.com/scop>`__ - `Ville Skyttä (@scop) <https://github.com/scop>`__
- `Jeremy Pack (@scriptengine) <https://github.com/scriptengine>`__ - `Jeremy Pack (@scriptengine) <https://github.com/scriptengine>`__
- `Sean True (@seantrue) <https://github.com/seantrue>`__
- `sebcaps (@sebcaps) <https://github.com/sebcaps>`__ - `sebcaps (@sebcaps) <https://github.com/sebcaps>`__
- `Stefan Seyfried (@seife) <https://github.com/seife>`__ - `Stefan Seyfried (@seife) <https://github.com/seife>`__
- `SenexCrenshaw (@SenexCrenshaw) <https://github.com/SenexCrenshaw>`__ - `SenexCrenshaw (@SenexCrenshaw) <https://github.com/SenexCrenshaw>`__
- `Jason Sepinsky (@Sepinsky) <https://github.com/Sepinsky>`__
- `Sergey Popov (@Sergey-SRG) <https://github.com/Sergey-SRG>`__
- `Sergio Mayoral Martínez (@sermayoral) <https://github.com/sermayoral>`__ - `Sergio Mayoral Martínez (@sermayoral) <https://github.com/sermayoral>`__
- `Seth Girvan (@sethgirvan) <https://github.com/sethgirvan>`__
- `Emanuele Tessore (@setola) <https://github.com/setola>`__ - `Emanuele Tessore (@setola) <https://github.com/setola>`__
- `Abdelkader Boudih (@seuros) <https://github.com/seuros>`__ - `Abdelkader Boudih (@seuros) <https://github.com/seuros>`__
- `SharkSharp (@SharkSharp) <https://github.com/SharkSharp>`__ - `SharkSharp (@SharkSharp) <https://github.com/SharkSharp>`__
- `Sebastiaan (@SharkWipf) <https://github.com/SharkWipf>`__
- `Fabio Todaro (@SharpEdgeMarshall) <https://github.com/SharpEdgeMarshall>`__ - `Fabio Todaro (@SharpEdgeMarshall) <https://github.com/SharpEdgeMarshall>`__
- `ShellAddicted (@ShellAddicted) <https://github.com/ShellAddicted>`__ - `ShellAddicted (@ShellAddicted) <https://github.com/ShellAddicted>`__
- `sherbang (@sherbang) <https://github.com/sherbang>`__ - `sherbang (@sherbang) <https://github.com/sherbang>`__
- `Shish (@shish) <https://github.com/shish>`__ - `Shish (@shish) <https://github.com/shish>`__
- `signix (@signix) <https://github.com/signix>`__
- `SiliconAvatar (@SiliconAvatar) <https://github.com/SiliconAvatar>`__ - `SiliconAvatar (@SiliconAvatar) <https://github.com/SiliconAvatar>`__
- `Mark Lopez (@Silvenga) <https://github.com/Silvenga>`__
- `Francisco J. Solis (@sisco0) <https://github.com/sisco0>`__ - `Francisco J. Solis (@sisco0) <https://github.com/sisco0>`__
- `Derek Hageman (@Sizurka) <https://github.com/Sizurka>`__ - `Derek Hageman (@Sizurka) <https://github.com/Sizurka>`__
- `Stephen Tierney (@sjtrny) <https://github.com/sjtrny>`__ - `Stephen Tierney (@sjtrny) <https://github.com/sjtrny>`__
@ -804,6 +994,8 @@ Contributors
- `Sourabh Jaiswal (@sourabhjaiswal) <https://github.com/sourabhjaiswal>`__ - `Sourabh Jaiswal (@sourabhjaiswal) <https://github.com/sourabhjaiswal>`__
- `Philip Allgaier (@spacegaier) <https://github.com/spacegaier>`__ - `Philip Allgaier (@spacegaier) <https://github.com/spacegaier>`__
- `spacemanspiff2007 (@spacemanspiff2007) <https://github.com/spacemanspiff2007>`__ - `spacemanspiff2007 (@spacemanspiff2007) <https://github.com/spacemanspiff2007>`__
- `sparkydave1981 (@sparkydave1981) <https://github.com/sparkydave1981>`__
- `spattinson (@spattinson) <https://github.com/spattinson>`__
- `Sean Brogan (@spbrogan) <https://github.com/spbrogan>`__ - `Sean Brogan (@spbrogan) <https://github.com/spbrogan>`__
- `Spegs21 (@Spegs21) <https://github.com/Spegs21>`__ - `Spegs21 (@Spegs21) <https://github.com/Spegs21>`__
- `Eric Lind (@sperly) <https://github.com/sperly>`__ - `Eric Lind (@sperly) <https://github.com/sperly>`__
@ -812,49 +1004,73 @@ Contributors
- `Stanislav Habich (@standahabich) <https://github.com/standahabich>`__ - `Stanislav Habich (@standahabich) <https://github.com/standahabich>`__
- `stegm (@stegm) <https://github.com/stegm>`__ - `stegm (@stegm) <https://github.com/stegm>`__
- `Stewart (@stewiem2000) <https://github.com/stewiem2000>`__ - `Stewart (@stewiem2000) <https://github.com/stewiem2000>`__
- `sthorley (@sthorley) <https://github.com/sthorley>`__
- `sticilface (@sticilface) <https://github.com/sticilface>`__ - `sticilface (@sticilface) <https://github.com/sticilface>`__
- `Stijn Tintel (@stintel) <https://github.com/stintel>`__ - `Stijn Tintel (@stintel) <https://github.com/stintel>`__
- `Mathias Stock (@Stock-M) <https://github.com/Stock-M>`__ - `Mathias Stock (@Stock-M) <https://github.com/Stock-M>`__
- `Strixx76 (@Strixx76) <https://github.com/Strixx76>`__
- `stubs12 (@stubs12) <https://github.com/stubs12>`__ - `stubs12 (@stubs12) <https://github.com/stubs12>`__
- `Jordan Vohwinkel (@sublime93) <https://github.com/sublime93>`__ - `Jordan Vohwinkel (@sublime93) <https://github.com/sublime93>`__
- `sud33p (@sud33p) <https://github.com/sud33p>`__
- `sumirati (@sumirati) <https://github.com/sumirati>`__ - `sumirati (@sumirati) <https://github.com/sumirati>`__
- `swifty99 (@swifty99) <https://github.com/swifty99>`__ - `swifty99 (@swifty99) <https://github.com/swifty99>`__
- `Jan Gutowski (@Switch123456789) <https://github.com/Switch123456789>`__
- `Sybren A. Stüvel (@sybrenstuvel) <https://github.com/sybrenstuvel>`__ - `Sybren A. Stüvel (@sybrenstuvel) <https://github.com/sybrenstuvel>`__
- `synco (@synco) <https://github.com/synco>`__ - `synco (@synco) <https://github.com/synco>`__
- `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__ - `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__
- `Suryandaru Triandana (@syndtr) <https://github.com/syndtr>`__ - `Suryandaru Triandana (@syndtr) <https://github.com/syndtr>`__
- `SyXavier (@SyXavier) <https://github.com/SyXavier>`__ - `SyXavier (@SyXavier) <https://github.com/SyXavier>`__
- `Peter (@szpeter80) <https://github.com/szpeter80>`__
- `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__ - `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__
- `Stefan Dragnev (@tailsu) <https://github.com/tailsu>`__
- `Levente Tamas (@tamisoft) <https://github.com/tamisoft>`__ - `Levente Tamas (@tamisoft) <https://github.com/tamisoft>`__
- `Aleksandr Oleinikov (@tannisroot) <https://github.com/tannisroot>`__ - `Aleksandr Oleinikov (@tannisroot) <https://github.com/tannisroot>`__
- `tantive (@tantive) <https://github.com/tantive>`__ - `tantive (@tantive) <https://github.com/tantive>`__
- `Ryan Hoffman (@tekmaven) <https://github.com/tekmaven>`__ - `Ryan Hoffman (@tekmaven) <https://github.com/tekmaven>`__
- `testbughub (@testbughub) <https://github.com/testbughub>`__ - `testbughub (@testbughub) <https://github.com/testbughub>`__
- `Greg Lincoln (@tetious) <https://github.com/tetious>`__ - `Greg Lincoln (@tetious) <https://github.com/tetious>`__
- `Terry Hardie (@thardie) <https://github.com/thardie>`__
- `The-Paran0id-Andr0id (@The-Paran0id-Andr0id) <https://github.com/The-Paran0id-Andr0id>`__
- `Nejc (@thedexboy) <https://github.com/thedexboy>`__ - `Nejc (@thedexboy) <https://github.com/thedexboy>`__
- `Thomas Eckerstorfer (@TheEggi) <https://github.com/TheEggi>`__ - `Thomas Eckerstorfer (@TheEggi) <https://github.com/TheEggi>`__
- `Theexternaldisk (@Theexternaldisk) <https://github.com/Theexternaldisk>`__ - `Theexternaldisk (@Theexternaldisk) <https://github.com/Theexternaldisk>`__
- `Martijn van der Pol (@TheFes) <https://github.com/TheFes>`__
- `TheGroundZero (@TheGroundZero) <https://github.com/TheGroundZero>`__ - `TheGroundZero (@TheGroundZero) <https://github.com/TheGroundZero>`__
- `thejonesyboy (@thejonesyboy) <https://github.com/thejonesyboy>`__ - `thejonesyboy (@thejonesyboy) <https://github.com/thejonesyboy>`__
- `TheJulianJES (@TheJulianJES) <https://github.com/TheJulianJES>`__ - `TheJulianJES (@TheJulianJES) <https://github.com/TheJulianJES>`__
- `Zixuan Wang (@TheNetAdmin) <https://github.com/TheNetAdmin>`__ - `Zixuan Wang (@TheNetAdmin) <https://github.com/TheNetAdmin>`__
- `Dominik Bruhn (@theomega) <https://github.com/theomega>`__ - `Dominik Bruhn (@theomega) <https://github.com/theomega>`__
- `Brian Levinsen (@therealeldaria) <https://github.com/therealeldaria>`__
- `Steve Scott (@thewishy) <https://github.com/thewishy>`__
- `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__ - `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__
- `Thibault Maekelbergh (@thibmaek) <https://github.com/thibmaek>`__
- `Matt (@ThisIsTheOnlyUsernameAvailable) <https://github.com/ThisIsTheOnlyUsernameAvailable>`__
- `Thomas Heiser (@thomasheiser85) <https://github.com/thomasheiser85>`__
- `Andrew Thompson (@thompsa) <https://github.com/thompsa>`__ - `Andrew Thompson (@thompsa) <https://github.com/thompsa>`__
- `John (@thorrak) <https://github.com/thorrak>`__ - `John (@thorrak) <https://github.com/thorrak>`__
- `Thomas Langewouters (@thouters) <https://github.com/thouters>`__
- `Transylvania High Tech (@thtro) <https://github.com/thtro>`__
- `Thunderbiscuits (@Thunderbiscuits) <https://github.com/Thunderbiscuits>`__
- `tiagofreire-pt (@tiagofreire-pt) <https://github.com/tiagofreire-pt>`__ - `tiagofreire-pt (@tiagofreire-pt) <https://github.com/tiagofreire-pt>`__
- `Tijs-B (@Tijs-B) <https://github.com/Tijs-B>`__ - `Tijs-B (@Tijs-B) <https://github.com/Tijs-B>`__
- `Tim Laurence (@timdaman) <https://github.com/timdaman>`__
- `Aidan Timson (@timmo001) <https://github.com/timmo001>`__ - `Aidan Timson (@timmo001) <https://github.com/timmo001>`__
- `Tim Savage (@timsavage) <https://github.com/timsavage>`__ - `Tim Savage (@timsavage) <https://github.com/timsavage>`__
- `Tinkerfish (@tinkerfish) <https://github.com/tinkerfish>`__
- `TJ Horner (@tjhorner) <https://github.com/tjhorner>`__
- `Christian (@Tntdruid) <https://github.com/Tntdruid>`__
- `Philipp Tölke (@toelke) <https://github.com/toelke>`__ - `Philipp Tölke (@toelke) <https://github.com/toelke>`__
- `tomaszduda23 (@tomaszduda23) <https://github.com/tomaszduda23>`__ - `tomaszduda23 (@tomaszduda23) <https://github.com/tomaszduda23>`__
- `Tom Brien (@TomBrien) <https://github.com/TomBrien>`__ - `Tom Brien (@TomBrien) <https://github.com/TomBrien>`__
- `Tom Hartogs (@TomHartogs) <https://github.com/TomHartogs>`__
- `tomlut (@tomlut) <https://github.com/tomlut>`__ - `tomlut (@tomlut) <https://github.com/tomlut>`__
- `tomle (@tomole444) <https://github.com/tomole444>`__ - `tomle (@tomole444) <https://github.com/tomole444>`__
- `Tom Price (@tomtom5152) <https://github.com/tomtom5152>`__ - `Tom Price (@tomtom5152) <https://github.com/tomtom5152>`__
- `David Kiliani (@torfbolt) <https://github.com/torfbolt>`__ - `David Kiliani (@torfbolt) <https://github.com/torfbolt>`__
- `tracestep (@tracestep) <https://github.com/tracestep>`__
- `Felix Eckhofer (@tribut) <https://github.com/tribut>`__ - `Felix Eckhofer (@tribut) <https://github.com/tribut>`__
- `Trick van Staveren (@trickv) <https://github.com/trickv>`__ - `Trick van Staveren (@trickv) <https://github.com/trickv>`__
- `TripitakaBC (@TripitakaBC) <https://github.com/TripitakaBC>`__
- `Tobias (@tripplet) <https://github.com/tripplet>`__ - `Tobias (@tripplet) <https://github.com/tripplet>`__
- `Tyler Bules (@Troublebrewing) <https://github.com/Troublebrewing>`__ - `Tyler Bules (@Troublebrewing) <https://github.com/Troublebrewing>`__
- `Olli Salonen (@trsqr) <https://github.com/trsqr>`__ - `Olli Salonen (@trsqr) <https://github.com/trsqr>`__
@ -865,17 +1081,25 @@ Contributors
- `tubalainen (@tubalainen) <https://github.com/tubalainen>`__ - `tubalainen (@tubalainen) <https://github.com/tubalainen>`__
- `tube0013 (@tube0013) <https://github.com/tube0013>`__ - `tube0013 (@tube0013) <https://github.com/tube0013>`__
- `Alexey Vlasov (@turbulator) <https://github.com/turbulator>`__ - `Alexey Vlasov (@turbulator) <https://github.com/turbulator>`__
- `tvan0076 (@tvan0076) <https://github.com/tvan0076>`__
- `Thorsten von Eicken (@tve) <https://github.com/tve>`__ - `Thorsten von Eicken (@tve) <https://github.com/tve>`__
- `Ubi de Feo (@ubidefeo) <https://github.com/ubidefeo>`__ - `Ubi de Feo (@ubidefeo) <https://github.com/ubidefeo>`__
- `ulic75 (@ulic75) <https://github.com/ulic75>`__
- `unhold (@unhold) <https://github.com/unhold>`__
- `Aaron Mildenstein (@untergeek) <https://github.com/untergeek>`__
- `uPesy Electronics (@uPesy) <https://github.com/uPesy>`__ - `uPesy Electronics (@uPesy) <https://github.com/uPesy>`__
- `UT2UH (@UT2UH) <https://github.com/UT2UH>`__ - `UT2UH (@UT2UH) <https://github.com/UT2UH>`__
- `Vc (@Valcob) <https://github.com/Valcob>`__ - `Vc (@Valcob) <https://github.com/Valcob>`__
- `Nad (@valordk) <https://github.com/valordk>`__ - `Nad (@valordk) <https://github.com/valordk>`__
- `Veli Veromann (@velijv) <https://github.com/velijv>`__
- `André Lademann (@vergissberlin) <https://github.com/vergissberlin>`__ - `André Lademann (@vergissberlin) <https://github.com/vergissberlin>`__
- `Austin (@vidplace7) <https://github.com/vidplace7>`__ - `Austin (@vidplace7) <https://github.com/vidplace7>`__
- `Vincèn (@vincegre) <https://github.com/vincegre>`__ - `Vincèn (@vincegre) <https://github.com/vincegre>`__
- `Virage Laboratories (@viragelabs) <https://github.com/viragelabs>`__
- `VitaliyKurokhtin (@VitaliyKurokhtin) <https://github.com/VitaliyKurokhtin>`__ - `VitaliyKurokhtin (@VitaliyKurokhtin) <https://github.com/VitaliyKurokhtin>`__
- `Xuming Feng (@voicevon) <https://github.com/voicevon>`__ - `Xuming Feng (@voicevon) <https://github.com/voicevon>`__
- `vt-vaio (@vt-vaio) <https://github.com/vt-vaio>`__
- `vtechun (@vtechun) <https://github.com/vtechun>`__
- `vxider (@Vxider) <https://github.com/Vxider>`__ - `vxider (@Vxider) <https://github.com/Vxider>`__
- `Wai Weng (@waiweng83) <https://github.com/waiweng83>`__ - `Wai Weng (@waiweng83) <https://github.com/waiweng83>`__
- `WallyCZ (@WallyCZ) <https://github.com/WallyCZ>`__ - `WallyCZ (@WallyCZ) <https://github.com/WallyCZ>`__
@ -886,6 +1110,7 @@ Contributors
- `Ian Wells (@wellsi) <https://github.com/wellsi>`__ - `Ian Wells (@wellsi) <https://github.com/wellsi>`__
- `wifwucite (@wifwucite) <https://github.com/wifwucite>`__ - `wifwucite (@wifwucite) <https://github.com/wifwucite>`__
- `wilberforce (@wilberforce) <https://github.com/wilberforce>`__ - `wilberforce (@wilberforce) <https://github.com/wilberforce>`__
- `Wingman3434 (@Wingman3434) <https://github.com/Wingman3434>`__
- `Emil Hesslow (@WizKid) <https://github.com/WizKid>`__ - `Emil Hesslow (@WizKid) <https://github.com/WizKid>`__
- `WJCarpenter (@wjcarpenter) <https://github.com/wjcarpenter>`__ - `WJCarpenter (@wjcarpenter) <https://github.com/wjcarpenter>`__
- `Wouter van der Wal (@wjtje) <https://github.com/wjtje>`__ - `Wouter van der Wal (@wjtje) <https://github.com/wjtje>`__
@ -895,6 +1120,8 @@ Contributors
- `Sven Serlier (@wrt54g) <https://github.com/wrt54g>`__ - `Sven Serlier (@wrt54g) <https://github.com/wrt54g>`__
- `Wolfgang Tremmel (@wtremmel) <https://github.com/wtremmel>`__ - `Wolfgang Tremmel (@wtremmel) <https://github.com/wtremmel>`__
- `wysiwyng (@wysiwyng) <https://github.com/wysiwyng>`__ - `wysiwyng (@wysiwyng) <https://github.com/wysiwyng>`__
- `Jakob (@XDjackieXD) <https://github.com/XDjackieXD>`__
- `Mike Brown (@xenoxaos) <https://github.com/xenoxaos>`__
- `WitchKing (@xvil) <https://github.com/xvil>`__ - `WitchKing (@xvil) <https://github.com/xvil>`__
- `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__ - `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__
- `Marcin Jaworski (@yawor) <https://github.com/yawor>`__ - `Marcin Jaworski (@yawor) <https://github.com/yawor>`__
@ -903,10 +1130,13 @@ Contributors
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__ - `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
- `Björn Stenberg (@zagor) <https://github.com/zagor>`__ - `Björn Stenberg (@zagor) <https://github.com/zagor>`__
- `david reid (@zathras777) <https://github.com/zathras777>`__ - `david reid (@zathras777) <https://github.com/zathras777>`__
- `Brynley McDonald (@ZephireNZ) <https://github.com/ZephireNZ>`__
- `Geek_cat (@zhzhzhy) <https://github.com/zhzhzhy>`__ - `Geek_cat (@zhzhzhy) <https://github.com/zhzhzhy>`__
- `I. Tomita (@ziceva) <https://github.com/ziceva>`__ - `I. Tomita (@ziceva) <https://github.com/ziceva>`__
- `Michael Labuschke (@zigman79) <https://github.com/zigman79>`__ - `Michael Labuschke (@zigman79) <https://github.com/zigman79>`__
- `zivillian (@zivillian) <https://github.com/zivillian>`__
- `Loïc (@zoic21) <https://github.com/zoic21>`__
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__ - `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__ - `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated March 27, 2023.* *This page was last updated April 20, 2023.*

1
images/microphone.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z" /></svg>

After

Width:  |  Height:  |  Size: 260 B

BIN
images/mmc5603.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z" /></svg>

After

Width:  |  Height:  |  Size: 303 B

View File

@ -339,6 +339,7 @@ Magnetic
ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg, ESP internal ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg, ESP internal
HMC5883L, components/sensor/hmc5883l, hmc5883l.jpg, 3-Axis magnetometer HMC5883L, components/sensor/hmc5883l, hmc5883l.jpg, 3-Axis magnetometer
MMC5603, components/sensor/mmc5603, mmc5603.jpg, 3-Axis magnetometer
MLX90393, components/sensor/mlx90393, mlx90393.jpg, 3-Axis magnetometer MLX90393, components/sensor/mlx90393, mlx90393.jpg, 3-Axis magnetometer
QMC5883L, components/sensor/qmc5883l, qmc5883l.jpg, 3-Axis magnetometer QMC5883L, components/sensor/qmc5883l, qmc5883l.jpg, 3-Axis magnetometer
@ -704,6 +705,14 @@ Media Player Components
Media Player Core, components/media_player/index, folder-open.svg Media Player Core, components/media_player/index, folder-open.svg
I2S Audio, components/media_player/i2s_audio, i2s_audio.svg I2S Audio, components/media_player/i2s_audio, i2s_audio.svg
Microphone Components
---------------------
.. imgtable::
Microphone Core, components/microphone/index, microphone.svg
I2S Microphone, components/microphone/i2s_audio, i2s_audio.svg
Time Components Time Components
--------------- ---------------
@ -716,6 +725,17 @@ Time Components
DS1307 RTC, components/time/ds1307, clock-outline.svg DS1307 RTC, components/time/ds1307, clock-outline.svg
PCF85063 RTC, components/time/pcf85063, clock-outline.svg PCF85063 RTC, components/time/pcf85063, clock-outline.svg
Home Assistant Companion Components
-----------------------------------
.. imgtable::
Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg
Voice Assistant, components/voice_assistant, voice-assistant.svg
Sensor, components/sensor/homeassistant, home-assistant.svg
Text Sensor, components/text_sensor/homeassistant, home-assistant.svg
Binary Sensor, components/binary_sensor/homeassistant, home-assistant.svg
Miscellaneous Components Miscellaneous Components
------------------------ ------------------------
@ -743,6 +763,8 @@ Miscellaneous Components
ESP32 Camera, components/esp32_camera, camera.svg ESP32 Camera, components/esp32_camera, camera.svg
ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg
I²S Audio, components/i2s_audio, i2s_audio.svg
Stepper, components/stepper/index, stepper.svg Stepper, components/stepper/index, stepper.svg
Servo, components/servo, servo.svg Servo, components/servo, servo.svg
Sprinkler, components/sprinkler, sprinkler-variant.svg Sprinkler, components/sprinkler, sprinkler-variant.svg