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

@ -1 +1 @@
2021.10.0-dev
2021.10.0-dev

View File

@ -15,6 +15,15 @@ ESPHome 2021.9.0 - 15th September 2021
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>`__
----------------------------------------------------------
@ -66,6 +75,24 @@ Release 2021.9.1 - September 20
- Add readv and writev for more efficient API packets :esphomepr:`2342` by :ghuser:`OttoWinter`
- 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
--------------------

View File

@ -12,7 +12,7 @@ Usage
The ``ili9341`` display platform allows you to use
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
beyond the typical SPI connections, it is better suited for use with the ESP32.
@ -123,5 +123,5 @@ See Also
--------
- :doc:`index`
- :apiref:`ili9341/ili9341.h`
- :apiref:`ili9341/ili9341_display.h`
- :ghedit:`Edit`

View File

@ -4,7 +4,6 @@ OTA Update Component
.. seo::
:description: Instructions for setting up Over-The-Air (OTA) updates for ESPs to upload firmwares remotely.
:image: system-update.png
:keywords: Xiaomi, Mi Flora, BLE, Bluetooth
.. _config-ota:
@ -167,7 +166,7 @@ enum. These values are:
on_state_change:
then:
- if:
condition:
condition:
lambda: return state == ota::OTA_STARTED
then:
- logger.log: "OTA start"

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:
``
[D][airthings_ble:019]:
Found AirThings device Serial: 123456789 (MAC: 01:02:03:04:05:06)
``
.. code-block:: text
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
-----------------
@ -46,6 +46,8 @@ AirThings Wave Plus tracks radon (24h and long term), airborne chemicals, CO2, t
:width: 60.0%
Configuration example:
**********************
.. code-block:: yaml

View File

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

View File

@ -2,9 +2,9 @@ Peacefair PZEM-004T Energy Monitor
==================================
.. seo::
:description: Instructions for setting up PZEM-004T power monitors.
:image: pzem004t.png
:keywords: PZEM-004T
:description: Instructions for setting up PZEM-004 and PZEM-004T V1 power monitors.
:image: pzem-004.jpg
:keywords: PZEM-004T, PZEM-004
.. note::
@ -14,13 +14,14 @@ Peacefair PZEM-004T Energy Monitor
- An image for the front page.
- 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
ESPHome.
.. 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>`.
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
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
--------

View File

@ -6,7 +6,7 @@ Xiaomi Mijia BLE Sensors
: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
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
-----------------

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.
- **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,
while the ESP might send (``TX``) on pin A and receive (``RX``) data on pin B, from the other devices
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 device's
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.
@ -53,7 +53,7 @@ Configuration variables:
- **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.
- **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.
- **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.

View File

@ -302,7 +302,7 @@ Configuration variables:
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.
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`
- `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`
- `Embedded controller for Audioengine A5+ <https://github.com/chatziko/audioengine-a5-controller/>`__ by :ghuser:`chatziko`
Custom Components & Code
------------------------

View File

@ -49,6 +49,7 @@ Contributors
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__
- `Alex Barcelo (@alexbarcelo) <https://github.com/alexbarcelo>`__
- `Alexandre Danault (@AlexDanault) <https://github.com/AlexDanault>`__
- `Alex Iribarren (@alexiri) <https://github.com/alexiri>`__
- `Alex Mekkering (@AlexMekkering) <https://github.com/AlexMekkering>`__
- `Alex (@alexyao2015) <https://github.com/alexyao2015>`__
- `aliktb (@aliktb) <https://github.com/aliktb>`__
@ -60,7 +61,7 @@ Contributors
- `Andrzej (@andriej) <https://github.com/andriej>`__
- `Andreas (@anduchs) <https://github.com/anduchs>`__
- `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>`__
- `ankycooper (@ankycooper) <https://github.com/ankycooper>`__
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__
@ -87,6 +88,7 @@ Contributors
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__
- `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
- `besteru (@besteru) <https://github.com/besteru>`__
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__
- `JDavid (@blackhack) <https://github.com/blackhack>`__
- `Branimir Lambov (@blambov) <https://github.com/blambov>`__
@ -114,7 +116,9 @@ Contributors
- `cbialobos (@cbialobos) <https://github.com/cbialobos>`__
- `Ciprian Constantinescu (@cciprian5) <https://github.com/cciprian5>`__
- `Marco (@cdrfun) <https://github.com/cdrfun>`__
- `Kostas Chatzikokolakis (@chatziko) <https://github.com/chatziko>`__
- `chris-jennings (@chris-jennings) <https://github.com/chris-jennings>`__
- `Christian Taedcke (@chrta) <https://github.com/chrta>`__
- `Pavel Skuratovich (@Chupaka) <https://github.com/Chupaka>`__
- `John (@CircuitSetup) <https://github.com/CircuitSetup>`__
- `Chris Debenham (@cjd) <https://github.com/cjd>`__
@ -129,6 +133,7 @@ Contributors
- `cretep (@cretep) <https://github.com/cretep>`__
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
- `Chris Talkington (@ctalkington) <https://github.com/ctalkington>`__
- `cvwillegen (@cvwillegen) <https://github.com/cvwillegen>`__
- `Alex Solomaha (@CyanoFresh) <https://github.com/CyanoFresh>`__
- `Luar Roji (@cyberplant) <https://github.com/cyberplant>`__
- `d-two (@d-two) <https://github.com/d-two>`__
@ -136,6 +141,7 @@ Contributors
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__
- `Daniel Bjørnbakk (@danibjor) <https://github.com/danibjor>`__
- `Daniel Kucera (@danielkucera) <https://github.com/danielkucera>`__
- `Daniel Rheinbay (@danielrheinbay) <https://github.com/danielrheinbay>`__
- `Daniel Schramm (@danielschramm) <https://github.com/danielschramm>`__
- `Chris (@darthsebulba04) <https://github.com/darthsebulba04>`__
- `Dan Gentry (@dashdrum) <https://github.com/dashdrum>`__
@ -180,6 +186,7 @@ Contributors
- `dr-oblivium (@dr-oblivium) <https://github.com/dr-oblivium>`__
- `Drew Perttula (@drewp) <https://github.com/drewp>`__
- `DrRob (@DrRob) <https://github.com/DrRob>`__
- `Daniel Müller (@dtmuller) <https://github.com/dtmuller>`__
- `dubit0 (@dubit0) <https://github.com/dubit0>`__
- `Sergey V. DUDANOV (@dudanov) <https://github.com/dudanov>`__
- `dyarkovoy (@dyarkovoy) <https://github.com/dyarkovoy>`__
@ -241,6 +248,7 @@ Contributors
- `Gareth Cooper (@gaco79) <https://github.com/gaco79>`__
- `galagaking (@galagaking) <https://github.com/galagaking>`__
- `GeekVisit (@GeekVisit) <https://github.com/GeekVisit>`__
- `R Huish (@genestealer) <https://github.com/genestealer>`__
- `Geoff Davis (@geoffdavis) <https://github.com/geoffdavis>`__
- `Gérald Guiony (@gerald-guiony) <https://github.com/gerald-guiony>`__
- `Gerard (@gerard33) <https://github.com/gerard33>`__
@ -255,6 +263,7 @@ Contributors
- `Germain Masse (@gmasse) <https://github.com/gmasse>`__
- `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__
- `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__
- `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
- `Andrea (@Guglio95) <https://github.com/Guglio95>`__
- `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__
@ -325,7 +334,7 @@ Contributors
- `Jonathan Adams (@jonathanadams) <https://github.com/jonathanadams>`__
- `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__
- `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>`__
- `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__
- `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__
@ -360,7 +369,7 @@ Contributors
- `Kodey Converse (@krconv) <https://github.com/krconv>`__
- `krikk (@krikk) <https://github.com/krikk>`__
- `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>`__
- `Kendell R (@KTibow) <https://github.com/KTibow>`__
- `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__
@ -403,6 +412,7 @@ Contributors
- `Marvin Gaube (@margau) <https://github.com/margau>`__
- `Martynas Griškonis (@Margriko) <https://github.com/Margriko>`__
- `Mario (@mario-tux) <https://github.com/mario-tux>`__
- `Marek Marczykowski-Górecki (@marmarek) <https://github.com/marmarek>`__
- `Matthew Harrold (@marrold) <https://github.com/marrold>`__
- `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__
- `Martin (@martgras) <https://github.com/martgras>`__
@ -412,6 +422,7 @@ Contributors
- `matikij (@matikij) <https://github.com/matikij>`__
- `Michel Marti (@matoxp) <https://github.com/matoxp>`__
- `matt123p (@matt123p) <https://github.com/matt123p>`__
- `Matteo Franceschini (@matteofranceschini) <https://github.com/matteofranceschini>`__
- `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__
- `Maurice Schleußinger (@maurice-schleussinger) <https://github.com/maurice-schleussinger>`__
- `mbo18 (@mbo18) <https://github.com/mbo18>`__
@ -461,6 +472,7 @@ Contributors
- `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__
- `Nazar Mokrynskyi (@nazar-pc) <https://github.com/nazar-pc>`__
- `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__
- `NMC (@ncareau) <https://github.com/ncareau>`__
- `Nebula (@nebula-it) <https://github.com/nebula-it>`__
- `needspeed (@needspeed) <https://github.com/needspeed>`__
- `nepozs (@nepozs) <https://github.com/nepozs>`__
@ -515,6 +527,7 @@ Contributors
- `phjr (@phjr) <https://github.com/phjr>`__
- `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__
- `pille (@pille) <https://github.com/pille>`__
- `Tommy van der Vorst (@pixelspark) <https://github.com/pixelspark>`__
- `pixiandreas (@pixiandreas) <https://github.com/pixiandreas>`__
- `Peter Kuehne (@pkuehne) <https://github.com/pkuehne>`__
- `Plácido Revilla (@placidorevilla) <https://github.com/placidorevilla>`__
@ -530,13 +543,14 @@ Contributors
- `Leandro Puerari (@puerari) <https://github.com/puerari>`__
- `puuu (@puuu) <https://github.com/puuu>`__
- `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>`__
- `Quinn Hosler (@quinnhosler) <https://github.com/quinnhosler>`__
- `r-jordan (@r-jordan) <https://github.com/r-jordan>`__
- `Richard Kuhnt (@r15ch13) <https://github.com/r15ch13>`__
- `Richard Miles (@r89m) <https://github.com/r89m>`__
- `Pär Stålberg (@rabbadab) <https://github.com/rabbadab>`__
- `Radim Karniš (@radimkarnis) <https://github.com/radimkarnis>`__
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__
- `rbaron (@rbaron) <https://github.com/rbaron>`__
- `Robert Cambridge (@rcambrj) <https://github.com/rcambrj>`__
@ -575,6 +589,7 @@ Contributors
- `rweather (@rweather) <https://github.com/rweather>`__
- `ryanalden (@ryanalden) <https://github.com/ryanalden>`__
- `Ryan Nazaretian (@ryannazaretian) <https://github.com/ryannazaretian>`__
- `Silvio (@s1lvi0) <https://github.com/s1lvi0>`__
- `samnewman86 (@samnewman86) <https://github.com/samnewman86>`__
- `sascha lammers (@sascha432) <https://github.com/sascha432>`__
- `Sascha (@Scarbous) <https://github.com/Scarbous>`__
@ -613,9 +628,11 @@ Contributors
- `starwolf73 (@starwolf73) <https://github.com/starwolf73>`__
- `Steve Baxter (@stevebaxter) <https://github.com/stevebaxter>`__
- `sticilface (@sticilface) <https://github.com/sticilface>`__
- `Stijn Tintel (@stintel) <https://github.com/stintel>`__
- `stubs12 (@stubs12) <https://github.com/stubs12>`__
- `Jordan Vohwinkel (@sublime93) <https://github.com/sublime93>`__
- `swhaat (@swhaat) <https://github.com/swhaat>`__
- `synco (@synco) <https://github.com/synco>`__
- `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__
- `Teemu Mikkonen (@T3m3z) <https://github.com/T3m3z>`__
- `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__
@ -675,7 +692,7 @@ Contributors
- `Thorsten von Eicken (@tve) <https://github.com/tve>`__
- `Tyler Menezes (@tylermenezes) <https://github.com/tylermenezes>`__
- `tyomikh (@tyomikh) <https://github.com/tyomikh>`__
- `ukewea (@ukewea) <https://github.com/ukewea>`__
- `wuuker (@ukewea) <https://github.com/ukewea>`__
- `Vc (@Valcob) <https://github.com/Valcob>`__
- `Nad (@valordk) <https://github.com/valordk>`__
- `Víctor Ferrer García (@vicfergar) <https://github.com/vicfergar>`__
@ -711,8 +728,9 @@ Contributors
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
- `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__
- `zaluthar (@zaluthar) <https://github.com/zaluthar>`__
- `ZJY (@zhangjingye03) <https://github.com/zhangjingye03>`__
- `San (@zhujunsan) <https://github.com/zhujunsan>`__
- `ZTX18 (@ZTX18) <https://github.com/ZTX18>`__
- `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