Merge branch 'current' into next

This commit is contained in:
Jesse Hills 2021-10-13 16:36:23 +13:00
commit ff6435a334
No known key found for this signature in database
GPG Key ID: BEAAE804EFD8E83A
13 changed files with 91 additions and 27 deletions

View File

@ -15,6 +15,15 @@ ESPHome 2021.9.0 - 15th September 2021
ST7920, components/display/st7920, st7920.jpg ST7920, components/display/st7920, st7920.jpg
Web Server Vulnerability
------------------------
It was brought to our attention by :ghuser:`andir` that the :doc:`/components/web_server` had a vulnerability in that
the OTA form could be POST'd to without the basic auth credentials set in the ``web_server`` configuration.
If you use the ``web_server`` and rely on the credentials for security, then you need to upgrade to 2021.9.2 or
disable the ``web_server`` completely. The `Security Advisory on GitHub <https://github.com/esphome/esphome/security/advisories/GHSA-48mj-p7x2-5jfm>`__
has been given ``CVE-2021-41104``.
`Home Assistant Amber <https://home-assistant.io/amber>`__ `Home Assistant Amber <https://home-assistant.io/amber>`__
---------------------------------------------------------- ----------------------------------------------------------
@ -66,6 +75,24 @@ Release 2021.9.1 - September 20
- Add readv and writev for more efficient API packets :esphomepr:`2342` by :ghuser:`OttoWinter` - Add readv and writev for more efficient API packets :esphomepr:`2342` by :ghuser:`OttoWinter`
- Clean-up sensor integration :esphomepr:`2275` by :ghuser:`oxan` - Clean-up sensor integration :esphomepr:`2275` by :ghuser:`oxan`
Release 2021.9.2 - September 28
-------------------------------
- Bump aioesphomeapi to 9.1.1 :esphomepr:`2350` by :ghuser:`OttoWinter`
- Midea fix :esphomepr:`2395` by :ghuser:`dudanov`
- Move web_server auth to web_server_base `be965a6 <https://github.com/esphome/esphome/commit/be965a60eba6bb769e2a5afdbc8eed132f077a59>`__ by :ghuser:`OttoWinter`
- Fix lint issues in web_server_base :esphomepr:`2409` by :ghuser:`jesserockz`
Release 2021.9.3 - October 7
----------------------------
- Re-enable TCP nodelay for ESP32 :esphomepr:`2390` by :ghuser:`OttoWinter`
- Bump aioesphomeapi from 9.1.1 to 9.1.2 :esphomepr:`2426` by :ghuser:`dependabot[bot]`
- Fix socket abstraction for ESP-IDF v4 :esphomepr:`2434` by :ghuser:`agners`
- Bump aioesphomeapi from 9.1.2 to 9.1.4 :esphomepr:`2443` by :ghuser:`dependabot[bot]`
- Add log line to show if API encryption is being used :esphomepr:`2450` by :ghuser:`jesserockz`
- API encryption switch to libsodium backend :esphomepr:`2456` by :ghuser:`OttoWinter`
Full list of changes Full list of changes
-------------------- --------------------

View File

@ -12,7 +12,7 @@ Usage
The ``ili9341`` display platform allows you to use The ``ili9341`` display platform allows you to use
ILI9341 (`datasheet <https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf>`__, ILI9341 (`datasheet <https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf>`__,
`Aliexpress <https://s.click.aliexpress.com/e/_dTKH6Mt>`__) `Aliexpress <https://www.aliexpress.com/af/Ili9341.html>`__)
displays with ESPHome. As this is a somewhat higher resolution display and may require pins displays with ESPHome. As this is a somewhat higher resolution display and may require pins
beyond the typical SPI connections, it is better suited for use with the ESP32. beyond the typical SPI connections, it is better suited for use with the ESP32.
@ -123,5 +123,5 @@ See Also
-------- --------
- :doc:`index` - :doc:`index`
- :apiref:`ili9341/ili9341.h` - :apiref:`ili9341/ili9341_display.h`
- :ghedit:`Edit` - :ghedit:`Edit`

View File

@ -4,7 +4,6 @@ OTA Update Component
.. seo:: .. seo::
:description: Instructions for setting up Over-The-Air (OTA) updates for ESPs to upload firmwares remotely. :description: Instructions for setting up Over-The-Air (OTA) updates for ESPs to upload firmwares remotely.
:image: system-update.png :image: system-update.png
:keywords: Xiaomi, Mi Flora, BLE, Bluetooth
.. _config-ota: .. _config-ota:

View File

@ -26,12 +26,12 @@ To find out your device's MAC address, add the following to your ESPHome configu
The device will then listen for nearby devices, and display a message like this one: The device will then listen for nearby devices, and display a message like this one:
`` .. code-block:: text
[D][airthings_ble:019]:
Found AirThings device Serial: 123456789 (MAC: 01:02:03:04:05:06)
``
Once the device is found, **remove the ``airthings_ble:`` device tracker** from your configuration and take note of the device MAC address, and use it when configuring a sensor below. [D][airthings_ble:019]:
Found AirThings device Serial: 123456789 (MAC: 01:02:03:04:05:06)
Once the device is found, remove the ``airthings_ble`` device tracker from your configuration and take note of the device MAC address, and use it when configuring a sensor below.
Supported Devices Supported Devices
----------------- -----------------
@ -46,6 +46,8 @@ AirThings Wave Plus tracks radon (24h and long term), airborne chemicals, CO2, t
:width: 60.0% :width: 60.0%
Configuration example: Configuration example:
**********************
.. code-block:: yaml .. code-block:: yaml

View File

@ -64,12 +64,14 @@ measure the total consumed energy in kWh.
pin: 12 pin: 12
unit_of_measurement: 'kW' unit_of_measurement: 'kW'
name: 'Electricity Usage' name: 'Electricity Usage'
internal_filter: 100ms
accuracy_decimals: 3
filters: filters:
- multiply: 0.06 - multiply: 0.06
total: total:
name: "Electricity Total" name: "Electricity Total"
unit_of_measurement: "kWh" unit_of_measurement: "kWh"
accuracy_decimals: 0 accuracy_decimals: 3
filters: filters:
- multiply: 0.001 - multiply: 0.001

View File

@ -2,9 +2,9 @@ Peacefair PZEM-004T Energy Monitor
================================== ==================================
.. seo:: .. seo::
:description: Instructions for setting up PZEM-004T power monitors. :description: Instructions for setting up PZEM-004 and PZEM-004T V1 power monitors.
:image: pzem004t.png :image: pzem-004.jpg
:keywords: PZEM-004T :keywords: PZEM-004T, PZEM-004
.. note:: .. note::
@ -14,13 +14,14 @@ Peacefair PZEM-004T Energy Monitor
- An image for the front page. - An image for the front page.
- Images/screenshots/example configs of this device being used in action. - Images/screenshots/example configs of this device being used in action.
The ``pzem004t`` sensor platform allows you to use PZEM-004T energy monitors The ``pzem004t`` sensor platform allows you to use PZEM-004 (version with 8-segment screens, `website <https://www.instructables.com/Power-Peacefair-PZEM-004-ESP8266-Arduino-Nano/>`__) and PZEM-004T V1 energy monitors
(`website <https://innovatorsguru.com/ac-digital-multifunction-meter-using-pzem-004t/>`__) sensors with (`website <https://innovatorsguru.com/ac-digital-multifunction-meter-using-pzem-004t/>`__) sensors with
ESPHome. ESPHome.
.. warning:: .. warning::
This page refers to version V1 of the PZEM004T, which has been out of stock for a while. This page refers to version V1 of the PZEM-004T, which has been out of stock for a while.
The PZEM-004, however, is still working (and selling) with this protocol and does not use modbus.
For using the newer V3 variant of this sensor please see :doc:`pzemac <pzemac>`. For using the newer V3 variant of this sensor please see :doc:`pzemac <pzemac>`.
The communication with this integration is done over a :ref:`UART bus <uart>`. The communication with this integration is done over a :ref:`UART bus <uart>`.
@ -61,6 +62,20 @@ Configuration variables:
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses. to use multiple UART buses.
Hardware considerations:
------------------------
These devices have optocouplers on the UART port and the resistors mounted on the board have been designed to work with 5V devices.
ESPs need a `Level Shifter <https://www.adafruit.com/product/1875>`__ to be compatible with TTL levels.
.. note::
You need a IC level shifter and not a `Mosfet-based <https://www.sparkfun.com/products/12009>`__ level shifter, because you need
to power the optocoupler's LEDs without an additional resistor in the path.
If prefer, you could change the value of the optocoupler's resistors by following `this <https://gregwareblog.wordpress.com/2020/12/13/home-power-monitoring-pzem-004/>`__ or `this <https://www.instructables.com/Power-Peacefair-PZEM-004-ESP8266-Arduino-Nano/>`__ guide.
Your ESP shall be powered by an external power supply and cannot be connected to the PZEM for power.
See Also See Also
-------- --------

View File

@ -6,7 +6,7 @@ Xiaomi Mijia BLE Sensors
:image: xiaomi_mijia_logo.jpg :image: xiaomi_mijia_logo.jpg
:keywords: Xiaomi, Mi Home, Mijia, BLE, Bluetooth, HHCCJCY01, GCLS002, HHCCPOT002, LYWSDCGQ, LYWSD02, CGG1, LYWSD03MMC, CGD1, JQJCY01YM, MUE4094RT, WX08ZM, MHO, C401, MHOC401 :keywords: Xiaomi, Mi Home, Mijia, BLE, Bluetooth, HHCCJCY01, GCLS002, HHCCPOT002, LYWSDCGQ, LYWSD02, CGG1, LYWSD03MMC, CGD1, JQJCY01YM, MUE4094RT, WX08ZM, MHO, C401, MHOC401
The ``xiaomi_ble`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the temperature, humidity, moisture, conductivity, illuminance, formaldehyde, mosquito tablet and battery level of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_ble`` listense passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. The ``xiaomi_ble`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the temperature, humidity, moisture, conductivity, illuminance, formaldehyde, mosquito tablet and battery level of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_ble`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life.
Supported Devices Supported Devices
----------------- -----------------

View File

@ -15,8 +15,8 @@ consists of 2 pins:
- **TX**: This line is used to send data to the device at the other end. - **TX**: This line is used to send data to the device at the other end.
- **RX**: This line is used to receive data from the device at the other end. - **RX**: This line is used to receive data from the device at the other end.
Please note that these the naming of these two pins depends on the chosen perspective and can be ambiguous. For example, Please note that the naming of these two pins depends on the chosen perspective and can be ambiguous. For example,
while the ESP might send (``TX``) on pin A and receive (``RX``) data on pin B, from the other devices while the ESP might send (``TX``) on pin A and receive (``RX``) data on pin B, from the other device's
perspective these two pins are switched (i.e. *it* sends on pin B and receives on pin A). So you might perspective these two pins are switched (i.e. *it* sends on pin B and receives on pin A). So you might
need to try with the two pins switched if it doesn't work immediately. need to try with the two pins switched if it doesn't work immediately.
@ -53,7 +53,7 @@ Configuration variables:
- **baud_rate** (**Required**, int): The baud rate of the UART bus. - **baud_rate** (**Required**, int): The baud rate of the UART bus.
- **tx_pin** (*Optional*, :ref:`config-pin`): The pin to send data to from the ESP's perspective. - **tx_pin** (*Optional*, :ref:`config-pin`): The pin to send data to from the ESP's perspective.
- **rx_pin** (*Optional*, :ref:`config-pin`): The pin to receive data on from the ESP's perspective. - **rx_pin** (*Optional*, :ref:`config-pin`): The pin to receive data on from the ESP's perspective.
- **rx_buffer_size** (*Optional*, int): The size of the buffer used for receiving UART messages. Increase if you use integration that needs to read big payloads from UART. Defaults to ``256``. - **rx_buffer_size** (*Optional*, int): The size of the buffer used for receiving UART messages. Increase if you use an integration that needs to read big payloads from UART. Defaults to ``256``.
- **data_bits** (*Optional*, int): The number of data bits used on the UART bus. Options: 5 to 8. Defaults to 8. - **data_bits** (*Optional*, int): The number of data bits used on the UART bus. Options: 5 to 8. Defaults to 8.
- **parity** (*Optional*): The parity used on the UART bus. Options: ``NONE``, ``EVEN``, ``ODD``. Defaults to ``NONE``. - **parity** (*Optional*): The parity used on the UART bus. Options: ``NONE``, ``EVEN``, ``ODD``. Defaults to ``NONE``.
- **stop_bits** (*Optional*, int): The number of stop bits to send. Options: 1, 2. Defaults to 1. - **stop_bits** (*Optional*, int): The number of stop bits to send. Options: 1, 2. Defaults to 1.

View File

@ -302,7 +302,7 @@ Configuration variables:
Do Automations Work Without a Network Connection Do Automations Work Without a Network Connection
------------------------------------------------ ------------------------------------------------
YES! All automations you define in ESPHome are execute on the ESP itself and will continue to YES! All automations you define in ESPHome are executed on the ESP itself and will continue to
work even if the WiFi network is down or the MQTT server is not reachable. work even if the WiFi network is down or the MQTT server is not reachable.
There is one caveat though: ESPHome automatically reboots if no connection to the MQTT broker can be There is one caveat though: ESPHome automatically reboots if no connection to the MQTT broker can be

View File

@ -49,6 +49,7 @@ Blog Posts & Videos
- `Office Doorbell <https://github.com/shish/esphome-projects/blob/master/office-doorbell.md>`__ by :ghuser:`shish` - `Office Doorbell <https://github.com/shish/esphome-projects/blob/master/office-doorbell.md>`__ by :ghuser:`shish`
- `Display TM1637 with ESPHome and MQTT showing Youtube subscribers count and other info <https://youtu.be/27JZEky0h1Q>`__ by :ghuser:`electrofun-smart` - `Display TM1637 with ESPHome and MQTT showing Youtube subscribers count and other info <https://youtu.be/27JZEky0h1Q>`__ by :ghuser:`electrofun-smart`
- `Automate your garage door with ESP8266 lysignal Yunshan 7v-30v <https://www.haade.fr/en/blog/home-automation-smarthome-jeedom-homeassistant/tutos-haade-lab/domotiser-sa-porte-de-garage-pour-5e/>`__ by :ghuser:`haade-administrator` - `Automate your garage door with ESP8266 lysignal Yunshan 7v-30v <https://www.haade.fr/en/blog/home-automation-smarthome-jeedom-homeassistant/tutos-haade-lab/domotiser-sa-porte-de-garage-pour-5e/>`__ by :ghuser:`haade-administrator`
- `Embedded controller for Audioengine A5+ <https://github.com/chatziko/audioengine-a5-controller/>`__ by :ghuser:`chatziko`
Custom Components & Code Custom Components & Code
------------------------ ------------------------

View File

@ -49,6 +49,7 @@ Contributors
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__ - `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__
- `Alex Barcelo (@alexbarcelo) <https://github.com/alexbarcelo>`__ - `Alex Barcelo (@alexbarcelo) <https://github.com/alexbarcelo>`__
- `Alexandre Danault (@AlexDanault) <https://github.com/AlexDanault>`__ - `Alexandre Danault (@AlexDanault) <https://github.com/AlexDanault>`__
- `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>`__
- `aliktb (@aliktb) <https://github.com/aliktb>`__ - `aliktb (@aliktb) <https://github.com/aliktb>`__
@ -60,7 +61,7 @@ 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>`__
- `anekinloewe (@anekinloewe) <https://github.com/anekinloewe>`__ - `anekinloewe (@anekinloewe) <https://github.com/anekinloewe>`__
- `Vegetto (@angelnu) <https://github.com/angelnu>`__ - `Angel Nunez Mencias (@angelnu) <https://github.com/angelnu>`__
- `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__ - `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__
- `ankycooper (@ankycooper) <https://github.com/ankycooper>`__ - `ankycooper (@ankycooper) <https://github.com/ankycooper>`__
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__ - `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__
@ -87,6 +88,7 @@ Contributors
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__ - `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__
- `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__ - `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__ - `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
- `besteru (@besteru) <https://github.com/besteru>`__
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__ - `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__
- `JDavid (@blackhack) <https://github.com/blackhack>`__ - `JDavid (@blackhack) <https://github.com/blackhack>`__
- `Branimir Lambov (@blambov) <https://github.com/blambov>`__ - `Branimir Lambov (@blambov) <https://github.com/blambov>`__
@ -114,7 +116,9 @@ Contributors
- `cbialobos (@cbialobos) <https://github.com/cbialobos>`__ - `cbialobos (@cbialobos) <https://github.com/cbialobos>`__
- `Ciprian Constantinescu (@cciprian5) <https://github.com/cciprian5>`__ - `Ciprian Constantinescu (@cciprian5) <https://github.com/cciprian5>`__
- `Marco (@cdrfun) <https://github.com/cdrfun>`__ - `Marco (@cdrfun) <https://github.com/cdrfun>`__
- `Kostas Chatzikokolakis (@chatziko) <https://github.com/chatziko>`__
- `chris-jennings (@chris-jennings) <https://github.com/chris-jennings>`__ - `chris-jennings (@chris-jennings) <https://github.com/chris-jennings>`__
- `Christian Taedcke (@chrta) <https://github.com/chrta>`__
- `Pavel Skuratovich (@Chupaka) <https://github.com/Chupaka>`__ - `Pavel Skuratovich (@Chupaka) <https://github.com/Chupaka>`__
- `John (@CircuitSetup) <https://github.com/CircuitSetup>`__ - `John (@CircuitSetup) <https://github.com/CircuitSetup>`__
- `Chris Debenham (@cjd) <https://github.com/cjd>`__ - `Chris Debenham (@cjd) <https://github.com/cjd>`__
@ -129,6 +133,7 @@ Contributors
- `cretep (@cretep) <https://github.com/cretep>`__ - `cretep (@cretep) <https://github.com/cretep>`__
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__ - `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
- `Chris Talkington (@ctalkington) <https://github.com/ctalkington>`__ - `Chris Talkington (@ctalkington) <https://github.com/ctalkington>`__
- `cvwillegen (@cvwillegen) <https://github.com/cvwillegen>`__
- `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>`__
- `d-two (@d-two) <https://github.com/d-two>`__ - `d-two (@d-two) <https://github.com/d-two>`__
@ -136,6 +141,7 @@ Contributors
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__ - `damanti-me (@damanti-me) <https://github.com/damanti-me>`__
- `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 Rheinbay (@danielrheinbay) <https://github.com/danielrheinbay>`__
- `Daniel Schramm (@danielschramm) <https://github.com/danielschramm>`__ - `Daniel Schramm (@danielschramm) <https://github.com/danielschramm>`__
- `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>`__
@ -180,6 +186,7 @@ Contributors
- `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>`__
- `DrRob (@DrRob) <https://github.com/DrRob>`__ - `DrRob (@DrRob) <https://github.com/DrRob>`__
- `Daniel Müller (@dtmuller) <https://github.com/dtmuller>`__
- `dubit0 (@dubit0) <https://github.com/dubit0>`__ - `dubit0 (@dubit0) <https://github.com/dubit0>`__
- `Sergey V. DUDANOV (@dudanov) <https://github.com/dudanov>`__ - `Sergey V. DUDANOV (@dudanov) <https://github.com/dudanov>`__
- `dyarkovoy (@dyarkovoy) <https://github.com/dyarkovoy>`__ - `dyarkovoy (@dyarkovoy) <https://github.com/dyarkovoy>`__
@ -241,6 +248,7 @@ Contributors
- `Gareth Cooper (@gaco79) <https://github.com/gaco79>`__ - `Gareth Cooper (@gaco79) <https://github.com/gaco79>`__
- `galagaking (@galagaking) <https://github.com/galagaking>`__ - `galagaking (@galagaking) <https://github.com/galagaking>`__
- `GeekVisit (@GeekVisit) <https://github.com/GeekVisit>`__ - `GeekVisit (@GeekVisit) <https://github.com/GeekVisit>`__
- `R Huish (@genestealer) <https://github.com/genestealer>`__
- `Geoff Davis (@geoffdavis) <https://github.com/geoffdavis>`__ - `Geoff Davis (@geoffdavis) <https://github.com/geoffdavis>`__
- `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>`__
@ -255,6 +263,7 @@ Contributors
- `Germain Masse (@gmasse) <https://github.com/gmasse>`__ - `Germain Masse (@gmasse) <https://github.com/gmasse>`__
- `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__ - `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__
- `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>`__
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__ - `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
- `Andrea (@Guglio95) <https://github.com/Guglio95>`__ - `Andrea (@Guglio95) <https://github.com/Guglio95>`__
- `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__ - `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__
@ -325,7 +334,7 @@ Contributors
- `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>`__
- `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__ - `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__
- `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__ - `Joppy Furr (@JoppyFurr) <https://github.com/JoppyFurr>`__
- `jsuanet (@jsuanet) <https://github.com/jsuanet>`__ - `jsuanet (@jsuanet) <https://github.com/jsuanet>`__
- `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__ - `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__
- `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__ - `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__
@ -360,7 +369,7 @@ Contributors
- `Kodey Converse (@krconv) <https://github.com/krconv>`__ - `Kodey Converse (@krconv) <https://github.com/krconv>`__
- `krikk (@krikk) <https://github.com/krikk>`__ - `krikk (@krikk) <https://github.com/krikk>`__
- `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__ - `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__
- `kroimon (@kroimon) <https://github.com/kroimon>`__ - `Stefan Rado (@kroimon) <https://github.com/kroimon>`__
- `krunkel (@krunkel) <https://github.com/krunkel>`__ - `krunkel (@krunkel) <https://github.com/krunkel>`__
- `Kendell R (@KTibow) <https://github.com/KTibow>`__ - `Kendell R (@KTibow) <https://github.com/KTibow>`__
- `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__ - `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__
@ -403,6 +412,7 @@ Contributors
- `Marvin Gaube (@margau) <https://github.com/margau>`__ - `Marvin Gaube (@margau) <https://github.com/margau>`__
- `Martynas Griškonis (@Margriko) <https://github.com/Margriko>`__ - `Martynas Griškonis (@Margriko) <https://github.com/Margriko>`__
- `Mario (@mario-tux) <https://github.com/mario-tux>`__ - `Mario (@mario-tux) <https://github.com/mario-tux>`__
- `Marek Marczykowski-Górecki (@marmarek) <https://github.com/marmarek>`__
- `Matthew Harrold (@marrold) <https://github.com/marrold>`__ - `Matthew Harrold (@marrold) <https://github.com/marrold>`__
- `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__ - `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__
- `Martin (@martgras) <https://github.com/martgras>`__ - `Martin (@martgras) <https://github.com/martgras>`__
@ -412,6 +422,7 @@ Contributors
- `matikij (@matikij) <https://github.com/matikij>`__ - `matikij (@matikij) <https://github.com/matikij>`__
- `Michel Marti (@matoxp) <https://github.com/matoxp>`__ - `Michel Marti (@matoxp) <https://github.com/matoxp>`__
- `matt123p (@matt123p) <https://github.com/matt123p>`__ - `matt123p (@matt123p) <https://github.com/matt123p>`__
- `Matteo Franceschini (@matteofranceschini) <https://github.com/matteofranceschini>`__
- `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__ - `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__
- `Maurice Schleußinger (@maurice-schleussinger) <https://github.com/maurice-schleussinger>`__ - `Maurice Schleußinger (@maurice-schleussinger) <https://github.com/maurice-schleussinger>`__
- `mbo18 (@mbo18) <https://github.com/mbo18>`__ - `mbo18 (@mbo18) <https://github.com/mbo18>`__
@ -461,6 +472,7 @@ Contributors
- `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__ - `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__
- `Nazar Mokrynskyi (@nazar-pc) <https://github.com/nazar-pc>`__ - `Nazar Mokrynskyi (@nazar-pc) <https://github.com/nazar-pc>`__
- `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__ - `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__
- `NMC (@ncareau) <https://github.com/ncareau>`__
- `Nebula (@nebula-it) <https://github.com/nebula-it>`__ - `Nebula (@nebula-it) <https://github.com/nebula-it>`__
- `needspeed (@needspeed) <https://github.com/needspeed>`__ - `needspeed (@needspeed) <https://github.com/needspeed>`__
- `nepozs (@nepozs) <https://github.com/nepozs>`__ - `nepozs (@nepozs) <https://github.com/nepozs>`__
@ -515,6 +527,7 @@ Contributors
- `phjr (@phjr) <https://github.com/phjr>`__ - `phjr (@phjr) <https://github.com/phjr>`__
- `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__ - `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__
- `pille (@pille) <https://github.com/pille>`__ - `pille (@pille) <https://github.com/pille>`__
- `Tommy van der Vorst (@pixelspark) <https://github.com/pixelspark>`__
- `pixiandreas (@pixiandreas) <https://github.com/pixiandreas>`__ - `pixiandreas (@pixiandreas) <https://github.com/pixiandreas>`__
- `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>`__
@ -530,13 +543,14 @@ Contributors
- `Leandro Puerari (@puerari) <https://github.com/puerari>`__ - `Leandro Puerari (@puerari) <https://github.com/puerari>`__
- `puuu (@puuu) <https://github.com/puuu>`__ - `puuu (@puuu) <https://github.com/puuu>`__
- `Qc (@qc24) <https://github.com/qc24>`__ - `Qc (@qc24) <https://github.com/qc24>`__
- `Karol Zlot (@qqgg231) <https://github.com/qqgg231>`__ - `qqgg231 (@qqgg231) <https://github.com/qqgg231>`__
- `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__ - `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__
- `Quinn Hosler (@quinnhosler) <https://github.com/quinnhosler>`__ - `Quinn Hosler (@quinnhosler) <https://github.com/quinnhosler>`__
- `r-jordan (@r-jordan) <https://github.com/r-jordan>`__ - `r-jordan (@r-jordan) <https://github.com/r-jordan>`__
- `Richard Kuhnt (@r15ch13) <https://github.com/r15ch13>`__ - `Richard Kuhnt (@r15ch13) <https://github.com/r15ch13>`__
- `Richard Miles (@r89m) <https://github.com/r89m>`__ - `Richard Miles (@r89m) <https://github.com/r89m>`__
- `Pär Stålberg (@rabbadab) <https://github.com/rabbadab>`__ - `Pär Stålberg (@rabbadab) <https://github.com/rabbadab>`__
- `Radim Karniš (@radimkarnis) <https://github.com/radimkarnis>`__
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__ - `Florian Ragwitz (@rafl) <https://github.com/rafl>`__
- `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>`__
@ -575,6 +589,7 @@ Contributors
- `rweather (@rweather) <https://github.com/rweather>`__ - `rweather (@rweather) <https://github.com/rweather>`__
- `ryanalden (@ryanalden) <https://github.com/ryanalden>`__ - `ryanalden (@ryanalden) <https://github.com/ryanalden>`__
- `Ryan Nazaretian (@ryannazaretian) <https://github.com/ryannazaretian>`__ - `Ryan Nazaretian (@ryannazaretian) <https://github.com/ryannazaretian>`__
- `Silvio (@s1lvi0) <https://github.com/s1lvi0>`__
- `samnewman86 (@samnewman86) <https://github.com/samnewman86>`__ - `samnewman86 (@samnewman86) <https://github.com/samnewman86>`__
- `sascha lammers (@sascha432) <https://github.com/sascha432>`__ - `sascha lammers (@sascha432) <https://github.com/sascha432>`__
- `Sascha (@Scarbous) <https://github.com/Scarbous>`__ - `Sascha (@Scarbous) <https://github.com/Scarbous>`__
@ -613,9 +628,11 @@ Contributors
- `starwolf73 (@starwolf73) <https://github.com/starwolf73>`__ - `starwolf73 (@starwolf73) <https://github.com/starwolf73>`__
- `Steve Baxter (@stevebaxter) <https://github.com/stevebaxter>`__ - `Steve Baxter (@stevebaxter) <https://github.com/stevebaxter>`__
- `sticilface (@sticilface) <https://github.com/sticilface>`__ - `sticilface (@sticilface) <https://github.com/sticilface>`__
- `Stijn Tintel (@stintel) <https://github.com/stintel>`__
- `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>`__
- `swhaat (@swhaat) <https://github.com/swhaat>`__ - `swhaat (@swhaat) <https://github.com/swhaat>`__
- `synco (@synco) <https://github.com/synco>`__
- `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__ - `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__
- `Teemu Mikkonen (@T3m3z) <https://github.com/T3m3z>`__ - `Teemu Mikkonen (@T3m3z) <https://github.com/T3m3z>`__
- `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__ - `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__
@ -675,7 +692,7 @@ Contributors
- `Thorsten von Eicken (@tve) <https://github.com/tve>`__ - `Thorsten von Eicken (@tve) <https://github.com/tve>`__
- `Tyler Menezes (@tylermenezes) <https://github.com/tylermenezes>`__ - `Tyler Menezes (@tylermenezes) <https://github.com/tylermenezes>`__
- `tyomikh (@tyomikh) <https://github.com/tyomikh>`__ - `tyomikh (@tyomikh) <https://github.com/tyomikh>`__
- `ukewea (@ukewea) <https://github.com/ukewea>`__ - `wuuker (@ukewea) <https://github.com/ukewea>`__
- `Vc (@Valcob) <https://github.com/Valcob>`__ - `Vc (@Valcob) <https://github.com/Valcob>`__
- `Nad (@valordk) <https://github.com/valordk>`__ - `Nad (@valordk) <https://github.com/valordk>`__
- `Víctor Ferrer García (@vicfergar) <https://github.com/vicfergar>`__ - `Víctor Ferrer García (@vicfergar) <https://github.com/vicfergar>`__
@ -711,8 +728,9 @@ Contributors
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__ - `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
- `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__ - `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__
- `zaluthar (@zaluthar) <https://github.com/zaluthar>`__ - `zaluthar (@zaluthar) <https://github.com/zaluthar>`__
- `ZJY (@zhangjingye03) <https://github.com/zhangjingye03>`__
- `San (@zhujunsan) <https://github.com/zhujunsan>`__ - `San (@zhujunsan) <https://github.com/zhujunsan>`__
- `ZTX18 (@ZTX18) <https://github.com/ZTX18>`__ - `ZTX18 (@ZTX18) <https://github.com/ZTX18>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__ - `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated September 20, 2021.* *This page was last updated October 7, 2021.*

BIN
images/pzem-004.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB