From 538db9b42833a11644e6ca059a3784542d5e3cdf Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Tue, 16 Aug 2022 18:16:59 +0200 Subject: [PATCH 01/18] Update sdm_meter.rst --- components/sensor/sdm_meter.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index 90df50baf..e0621cfa9 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -19,7 +19,8 @@ with ESPHome. The communication with this integration is done over a :ref:`UART bus ` using the :ref:`Modbus protocol ` over RS485 wiring. You will need an RS485 to UART converter for communication. You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set -to some pins on your board and the baud rate set to 9600. +to some pins on your board and the baud rate set to 9600 bps. +! For the SDM230M Energy Monitor the default factory baud rate is 2400 bps. .. code-block:: yaml From be1ffa5e6fdbdec2760c179605dd521758db74a2 Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Tue, 16 Aug 2022 18:28:53 +0200 Subject: [PATCH 02/18] Update sdm_meter.rst --- components/sensor/sdm_meter.rst | 34 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index e0621cfa9..c6e3578fd 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -4,7 +4,7 @@ Eastron SDM Energy Monitor .. seo:: :description: Instructions for setting up SDM power monitors. :image: sdm220m.jpg - :keywords: SDM220M, SDM220, SDM630 + :keywords: SDM230M, SDM220, SDM630, SDM120M, SDM72 The ``sdm_meter`` sensor platform allows you to use Eastron SDM modbus energy monitors (`website `__) @@ -14,13 +14,13 @@ with ESPHome. :align: center :width: 50.0% - SDM220M Energy Monitor. + SDM230M Energy Monitor. The communication with this integration is done over a :ref:`UART bus ` using the :ref:`Modbus protocol ` over RS485 wiring. You will need an RS485 to UART converter for communication. You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set -to some pins on your board and the baud rate set to 9600 bps. -! For the SDM230M Energy Monitor the default factory baud rate is 2400 bps. +to some pins on your board and the baud rate set to 9600bps. +! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. For more information search for your model: https://www.eastroneurope.com/products/category/din-rail-mounted-metering . .. code-block:: yaml @@ -35,31 +35,31 @@ to some pins on your board and the baud rate set to 9600 bps. - platform: sdm_meter phase_a: current: - name: "SDM220M Current" + name: "SDM230M Current" voltage: - name: "SDM220M Voltage" + name: "SDM230M Voltage" active_power: - name: "SDM220M Power" + name: "SDM230M Power" power_factor: - name: "SDM220M Power Factor" + name: "SDM230M Power Factor" apparent_power: - name: "SDM220M Apparent Power" + name: "SDM230M Apparent Power" reactive_power: - name: "SDM220M Reactive Power" + name: "SDM230M Reactive Power" phase_angle: - name: "SDM220M Phase Angle" + name: "SDM230M Phase Angle" frequency: - name: "SDM220M Frequency" + name: "SDM230M Frequency" total_power: - name: "SDM220M Total Power" + name: "SDM230M Total Power" import_active_energy: - name: "SDM220M Import Active Energy" + name: "SDM230M Import Active Energy" export_active_energy: - name: "SDM220M Export Active Energy" + name: "SDM230M Export Active Energy" import_reactive_energy: - name: "SDM220M Import Reactive Energy" + name: "SDM230M Import Reactive Energy" export_reactive_energy: - name: "SDM220M Export Reactive Energy" + name: "SDM230M Export Reactive Energy" update_interval: 60s From 48cef6d02f2432936d95b182212af0ad467813a5 Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Tue, 16 Aug 2022 18:30:52 +0200 Subject: [PATCH 03/18] Update sdm_meter.rst --- components/sensor/sdm_meter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index c6e3578fd..3a1cf6de5 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -20,7 +20,7 @@ The communication with this integration is done over a :ref:`UART bus ` us over RS485 wiring. You will need an RS485 to UART converter for communication. You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set to some pins on your board and the baud rate set to 9600bps. -! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. For more information search for your model: https://www.eastroneurope.com/products/category/din-rail-mounted-metering . +! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. You either need to change the code to 2400 or change the settings on your Energy Meter For more information search for your model: https://www.eastroneurope.com/products/category/din-rail-mounted-metering . .. code-block:: yaml From 0b7a66694ec093ac1aa5642ab57f091d6967e2be Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Tue, 16 Aug 2022 18:31:31 +0200 Subject: [PATCH 04/18] Update sdm_meter.rst --- components/sensor/sdm_meter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index 3a1cf6de5..8a5db297d 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -20,7 +20,7 @@ The communication with this integration is done over a :ref:`UART bus ` us over RS485 wiring. You will need an RS485 to UART converter for communication. You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set to some pins on your board and the baud rate set to 9600bps. -! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. You either need to change the code to 2400 or change the settings on your Energy Meter For more information search for your model: https://www.eastroneurope.com/products/category/din-rail-mounted-metering . +! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. You either need to change the code to 2400bps for these models or change the settings on your Energy Meter For more information search for your model: https://www.eastroneurope.com/products/category/din-rail-mounted-metering . .. code-block:: yaml From 412c8590b2e72623b7a9028230ce05e749b379ea Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Sun, 21 Aug 2022 15:00:31 +0200 Subject: [PATCH 05/18] Updated the website link --- components/sensor/sdm_meter.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index 8a5db297d..333f3b29a 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -20,7 +20,7 @@ The communication with this integration is done over a :ref:`UART bus ` us over RS485 wiring. You will need an RS485 to UART converter for communication. You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set to some pins on your board and the baud rate set to 9600bps. -! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. You either need to change the code to 2400bps for these models or change the settings on your Energy Meter For more information search for your model: https://www.eastroneurope.com/products/category/din-rail-mounted-metering . +! For the SDM230M, SDM120M Energy Monitor the default factory baud rate is 2400bps. You either need to change the code to 2400bps for these models or change the settings on your Energy Meter For more information search for your model: (`eastron's website `__). .. code-block:: yaml @@ -114,3 +114,4 @@ See Also - :ref:`sensor-filters` - :apiref:`sdm220m/sdm220m.h` - :ghedit:`Edit` + From 14e5c78c7194b724e71bc7594b4bb0d57d07a10b Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Sun, 21 Aug 2022 15:02:18 +0200 Subject: [PATCH 06/18] updated example code to baud rate --- components/sensor/sdm_meter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index 333f3b29a..7fc7f5f7f 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -28,7 +28,7 @@ to some pins on your board and the baud rate set to 9600bps. uart: rx_pin: D1 tx_pin: D2 - baud_rate: 9600 + baud_rate: 9600 #if your energy meter is SDM230M or SDM120M than the change the baud_rate: 2400 stop_bits: 1 sensor: From 4d65509f8ec619e0acad3b9b933366eb94f1265d Mon Sep 17 00:00:00 2001 From: optimusprimespace <62800678+optimusprimespace@users.noreply.github.com> Date: Sun, 21 Aug 2022 15:02:47 +0200 Subject: [PATCH 07/18] typo --- components/sensor/sdm_meter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sdm_meter.rst b/components/sensor/sdm_meter.rst index 7fc7f5f7f..44067ca03 100644 --- a/components/sensor/sdm_meter.rst +++ b/components/sensor/sdm_meter.rst @@ -28,7 +28,7 @@ to some pins on your board and the baud rate set to 9600bps. uart: rx_pin: D1 tx_pin: D2 - baud_rate: 9600 #if your energy meter is SDM230M or SDM120M than the change the baud_rate: 2400 + baud_rate: 9600 #if your energy meter is SDM230M or SDM120M than change the baud_rate: 2400 stop_bits: 1 sensor: From 47fb39cdd81bc0236f6db6e46a441f8da3e770a7 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 9 Nov 2022 17:27:19 +1300 Subject: [PATCH 08/18] Bump version to 2022.11.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index b489df92e..8bc2c31dd 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.11.0-dev +PROJECT_NUMBER = 2022.11.0b1 # 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 diff --git a/Makefile b/Makefile index 299496721..709a09d40 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = dev +ESPHOME_REF = 2022.11.0b1 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index 17d938bba..121de79cf 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.11.0-dev \ No newline at end of file +2022.11.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index 4743aa159..897e1b72e 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.11" # The full version, including alpha/beta/rc tags. -release = "2022.11.0-dev" +release = "2022.11.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 8d5f6d70986bd8b6a85ebab2bf448b33abfc2022 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 9 Nov 2022 17:29:56 +1300 Subject: [PATCH 09/18] Update changelog for 2022.11.0b1 --- changelog/2022.11.0.rst | 116 ++++++++++++++++++++++++++++++++++++++++ changelog/index.rst | 2 +- 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 changelog/2022.11.0.rst diff --git a/changelog/2022.11.0.rst b/changelog/2022.11.0.rst new file mode 100644 index 000000000..7fa7bbf19 --- /dev/null +++ b/changelog/2022.11.0.rst @@ -0,0 +1,116 @@ +ESPHome 2022.11.0 - 16th November 2022 +====================================== + +.. seo:: + :description: Changelog for ESPHome 2022.11.0. + :image: /_static/changelog-2022.10.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 2 + + +Raspberry Pi Pico-W +------------------- + +To be written... + +Script Parameters +----------------- + +To be written... + +LCD Menu +-------- + +To be written... + + +Full list of changes +-------------------- + +New Features +^^^^^^^^^^^^ + +- Allow preserving WiFi credentials entered with captive_portal :esphomepr:`3813` by :ghuser:`kuba2k2` (new-feature) + +New Components +^^^^^^^^^^^^^^ + +- Add support for wl-134 :esphomepr:`3569` by :ghuser:`hobbypunk90` (new-integration) +- New platform ethernet_info from component text_sensor :esphomepr:`3811` by :ghuser:`gtjadsonsantos` (new-integration) +- Implementation for Atlas Scientific Peristaltic Pump :esphomepr:`3528` by :ghuser:`carlos-sarmiento` (new-integration) +- Add adc128s102 sensor :esphomepr:`3822` by :ghuser:`DeerMaximum` (new-integration) +- Added component Daikin BRC to support ceiling cassette heatpumps :esphomepr:`3743` by :ghuser:`hagak` (new-integration) +- Initial Support for RP2040 platform :esphomepr:`3284` by :ghuser:`jesserockz` (new-integration) +- Implement a simple LCD menu :esphomepr:`3406` by :ghuser:`numo68` (new-integration) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- Don't Use Base Network Manual IP for WiFi AP :esphomepr:`3902` by :ghuser:`bkaufx` (breaking-change) + +All changes +^^^^^^^^^^^ + +- Update the ibeacon code :esphomepr:`3859` by :ghuser:`fhriley` +- Don't Use Base Network Manual IP for WiFi AP :esphomepr:`3902` by :ghuser:`bkaufx` (breaking-change) +- Allow preserving WiFi credentials entered with captive_portal :esphomepr:`3813` by :ghuser:`kuba2k2` (new-feature) +- Add support for wl-134 :esphomepr:`3569` by :ghuser:`hobbypunk90` (new-integration) +- New platform ethernet_info from component text_sensor :esphomepr:`3811` by :ghuser:`gtjadsonsantos` (new-integration) +- Implementation for Atlas Scientific Peristaltic Pump :esphomepr:`3528` by :ghuser:`carlos-sarmiento` (new-integration) +- Add adc128s102 sensor :esphomepr:`3822` by :ghuser:`DeerMaximum` (new-integration) +- Added component Daikin BRC to support ceiling cassette heatpumps :esphomepr:`3743` by :ghuser:`hagak` (new-integration) +- Bump platformio from 6.0.2 to 6.1.4 :esphomepr:`3711` by :ghuser:`dependabot[bot]` +- Add API interface to request a complete device config as JSON. :esphomepr:`3911` by :ghuser:`RoboMagus` +- Initial Support for RP2040 platform :esphomepr:`3284` by :ghuser:`jesserockz` (new-integration) +- Bump esphome-dashboard to 20221020.0 :esphomepr:`3920` by :ghuser:`jesserockz` +- Fix missing dependencies for heatpumpir :esphomepr:`3933` by :ghuser:`jesserockz` +- Update the PR template :esphomepr:`3934` by :ghuser:`jesserockz` +- Fix error with require_framework_version and rp2040 :esphomepr:`3923` by :ghuser:`jesserockz` +- Make mDNS on rp2040 work :esphomepr:`3936` by :ghuser:`jesserockz` +- Send manufacturer name via API :esphomepr:`3938` by :ghuser:`jesserockz` +- Update base platformio board for rp2040 :esphomepr:`3937` by :ghuser:`jesserockz` +- Implement different random for rp2040 :esphomepr:`3939` by :ghuser:`jesserockz` +- add proper device class to uptime :esphomepr:`3928` by :ghuser:`nagyrobi` +- Show local mac when scanning wifi :esphomepr:`3635` by :ghuser:`cvwillegen` +- Prefix devcontainer image with ghcr.io :esphomepr:`3942` by :ghuser:`jesserockz` +- Implement InterruptLock for RP2040 :esphomepr:`3945` by :ghuser:`jesserockz` +- Implement RP2040 preferences :esphomepr:`3946` by :ghuser:`jesserockz` +- Fix filesystem size for RP2040 OTA :esphomepr:`3947` by :ghuser:`jesserockz` +- Bump esphome/Improv to 1.2.3 :esphomepr:`3948` by :ghuser:`jesserockz` +- Add core config option to limit compile process count :esphomepr:`3952` by :ghuser:`jesserockz` +- Some RP2040 wifi changes for AP mode :esphomepr:`3953` by :ghuser:`jesserockz` +- Update rp2040 to latest framework release from GitHub :esphomepr:`3954` by :ghuser:`jesserockz` +- [SM300D2] Reduce log severity for successful reads :esphomepr:`3955` by :ghuser:`pauln` +- Fix imports for rp2040 with no wifi :esphomepr:`3956` by :ghuser:`jesserockz` +- Allow using LED pin on rpi pico-w :esphomepr:`3957` by :ghuser:`jesserockz` +- Fix RP2040 SPISettings :esphomepr:`3960` by :ghuser:`jesserockz` +- Make some minor changes to I²C so rp2040 works :esphomepr:`3959` by :ghuser:`jesserockz` +- Bump tornado from 6.1 to 6.2 :esphomepr:`3620` by :ghuser:`dependabot[bot]` +- Bump pytest-cov from 3.0.0 to 4.0.0 :esphomepr:`3922` by :ghuser:`dependabot[bot]` +- Remove gitpod :esphomepr:`3964` by :ghuser:`balloob` +- Bump pyupgrade from 3.0.0 to 3.2.0 :esphomepr:`3973` by :ghuser:`dependabot[bot]` +- Bump pytest from 7.1.3 to 7.2.0 :esphomepr:`3966` by :ghuser:`dependabot[bot]` +- Bump actions/stale from 5 to 6 :esphomepr:`3841` by :ghuser:`dependabot[bot]` +- Bump pylint from 2.15.3 to 2.15.5 :esphomepr:`3978` by :ghuser:`dependabot[bot]` +- Bump pytest-mock from 3.8.2 to 3.10.0 :esphomepr:`3877` by :ghuser:`dependabot[bot]` +- Allow multiple bluetooth proxy connections :esphomepr:`3971` by :ghuser:`jesserockz` +- Always use gh releases in base platformio file for rp2040 :esphomepr:`3988` by :ghuser:`jesserockz` +- Allow the use of multiple RDM6300 devices :esphomepr:`3989` by :ghuser:`mbardeen` +- Bump aioesphomeapi from 10.13.0 to 11.4.2 :esphomepr:`3987` by :ghuser:`dependabot[bot]` +- rp2040: Set watchdog to reboot properly :esphomepr:`3991` by :ghuser:`jesserockz` +- RP2040 uart support :esphomepr:`3990` by :ghuser:`jesserockz` +- add uart number to LOGCONFIG :esphomepr:`3996` by :ghuser:`tomaszduda23` +- Implement a simple LCD menu :esphomepr:`3406` by :ghuser:`numo68` (new-integration) +- Lint updates :esphomepr:`3992` by :ghuser:`jesserockz` +- Bump zeroconf from 0.39.1 to 0.39.4 :esphomepr:`3979` by :ghuser:`dependabot[bot]` +- Bump black from 22.8.0 to 22.10.0 :esphomepr:`3986` by :ghuser:`dependabot[bot]` +- Skip validation of defined pins :esphomepr:`3999` by :ghuser:`jenscski` +- Bump pytest-asyncio from 0.19.0 to 0.20.1 :esphomepr:`4003` by :ghuser:`dependabot[bot]` +- Bump aioesphomeapi from 11.4.2 to 11.4.3 :esphomepr:`4002` by :ghuser:`dependabot[bot]` +- Bump platformio from 6.1.4 to 6.1.5 :esphomepr:`4004` by :ghuser:`dependabot[bot]` +- Enable calibration, callbacks and custom commands for EZO sensors :esphomepr:`3910` by :ghuser:`gvdhoven` +- Bump esphome-dashboard to 20221109.0 :esphomepr:`4006` by :ghuser:`jesserockz` +- Add support for parameters in scripts :esphomepr:`3538` by :ghuser:`jimtng` diff --git a/changelog/index.rst b/changelog/index.rst index babc04499..ab582c12b 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2022.10.0.html + :url: /changelog/2022.11.0.html .. toctree:: :glob: From 444271adfbbb25e3a9a4a5004435871b5eecc2e4 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 9 Nov 2022 17:30:33 +1300 Subject: [PATCH 10/18] Update supporters for 2022.11.0b1 --- guides/supporters.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index cccb67bad..ab29c41f5 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -175,6 +175,7 @@ Contributors - `Dmitry Berezovsky (@corvis) `__ - `Cougar (@Cougar) `__ - `Connor Prussin (@cprussin) `__ +- `Corey Rice (@crice009) `__ - `cryptelli (@cryptelli) `__ - `cstaahl (@cstaahl) `__ - `Chris Talkington (@ctalkington) `__ @@ -499,6 +500,7 @@ Contributors - `Kyle Manna (@kylemanna) `__ - `Kalashnikov Ilya (@l1bbcsg) `__ - `Limor "Ladyada" Fried (@ladyada) `__ +- `Lakshantha Dissanayake (@lakshanthad) `__ - `Luca Adrian L (@lal12) `__ - `Fredrik Lindqvist (@Landrash) `__ - `Laszlo Gazdag (@lazlyhu) `__ @@ -652,12 +654,10 @@ Contributors - `Ockert Marais (@OckertM) `__ - `Dave Walker (@oddsockmachine) `__ - `Andrey Ganzevich (@odya) `__ -- `Olivér Falvai (@ofalvai) `__ - `ogatatsu (@ogatatsu) `__ - `Oğuzhan Başer (@oguzhanbaser) `__ - `Omar Ghader (@omarghader) `__ - `Ömer Şiar Baysal (@omersiar) `__ -- `Oncleben31 (@oncleben31) `__ - `Oscar Bolmsten (@oscar-b) `__ - `Trammell Hudson (@osresearch) `__ - `Otamay (@Otamay) `__ @@ -740,6 +740,7 @@ Contributors - `Silvio (@s1lvi0) `__ - `Jan Čermák (@sairon) `__ - `sascha lammers (@sascha432) `__ +- `Søren Christian Aarup (@scaarup) `__ - `Nils Schulte (@Schnilz) `__ - `Wolle (@schreibfaul1) `__ - `Ville Skyttä (@scop) `__ @@ -896,4 +897,4 @@ Contributors - `Zack Barett (@zsarnett) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated November 1, 2022.* +*This page was last updated November 9, 2022.* From bc12457fb534d4e7d96036e3a451e9cb8f5a728d Mon Sep 17 00:00:00 2001 From: Colin Leroy-Mira Date: Wed, 9 Nov 2022 16:49:31 +0100 Subject: [PATCH 11/18] Explicit wiring a bit --- components/sensor/pulse_counter.rst | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/components/sensor/pulse_counter.rst b/components/sensor/pulse_counter.rst index b418d2757..a9ae0a16a 100644 --- a/components/sensor/pulse_counter.rst +++ b/components/sensor/pulse_counter.rst @@ -129,6 +129,43 @@ trying to match. This value is the raw count of pulses, and not the value you see after the filters are applied. +Wiring +------ + +If you want to count pulses from a simple reed switch, the simplest way is to make +use of the internal pull-up/pull-down resistors. + +You can wire the switch between a GPIO pin and GND; in this case set the pin to input, pullup and inverted: + +.. code-block:: yaml + + # Reed switch between GPIO and GND + sensor: + - platform: pulse_counter + pin: + number: 12 + inverted: true + mode: + input: true + pullup: true + name: "Pulse Counter" + +If you wire it between a GPIO pin and +3.3V, set the pin to input, pulldown: + +.. code-block:: yaml + + # Reed switch between GPIO and +3.3V + sensor: + - platform: pulse_counter + pin: + number: 12 + mode: + input: true + pulldown: true + name: "Pulse Counter" + +The safest way is to use GPIO + GND, as this avoids the possibility of short +circuiting the wire by mistake. See Also -------- From bf06d6a4f20db57555e20b9199a7bdf42e7b8173 Mon Sep 17 00:00:00 2001 From: Jeroen Date: Wed, 9 Nov 2022 19:56:08 +0100 Subject: [PATCH 12/18] Update custom_component.rst (#2282) --- custom/custom_component.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/custom/custom_component.rst b/custom/custom_component.rst index 926e54c34..801df3700 100644 --- a/custom/custom_component.rst +++ b/custom/custom_component.rst @@ -49,6 +49,9 @@ And in YAML: - lambda: |- auto my_custom = new MyCustomComponent(); return {my_custom}; + components: + - id: my_custom_id + Configuration variables: From e5f325ef7c5fd54cca57f6ebb7471694b70a7149 Mon Sep 17 00:00:00 2001 From: Patrick Stigler Date: Wed, 9 Nov 2022 19:59:39 +0100 Subject: [PATCH 13/18] Added Geiger Counter to the cookbook (#2382) --- cookbook/geiger-counter.rst | 80 ++++++++++++++++++ .../images/radiationD-v1-1-cajoe_small.jpg | Bin 0 -> 12258 bytes images/radiationD-v1-1-cajoe_small.jpg | Bin 0 -> 12258 bytes index.rst | 1 + 4 files changed, 81 insertions(+) create mode 100644 cookbook/geiger-counter.rst create mode 100644 cookbook/images/radiationD-v1-1-cajoe_small.jpg create mode 100644 images/radiationD-v1-1-cajoe_small.jpg diff --git a/cookbook/geiger-counter.rst b/cookbook/geiger-counter.rst new file mode 100644 index 000000000..eede8b6ae --- /dev/null +++ b/cookbook/geiger-counter.rst @@ -0,0 +1,80 @@ +Geiger counter RadiationD v1.1 (CAJOE) +====================================== + +.. seo:: + :description: Instructions for setting up RadiationD v1.1(CAJOE) sensor in ESPHome and calculate the current radation level. + :image: radiationD-v1-1-cajoe_small.jpg + :keywords: Radiation Geiger counter + +With the help of :doc:`/components/sensor/pulse_counter` and the RadiationD v1.1(CAJOE) you can make your own Geiger counter, which will give you +a more or less precise messurement of the current radation level. But it should be good enough to warn you about critical events. + + +Assambly: +--------- + +.. figure:: images/radiationD-v1-1-cajoe_small.jpg + :align: center + :width: 100.0% + +The first step is to connect the sensor. + +You just need to connect the +5V, the ground and a GPIO pin to the ESP. +In my case I used the pin 34 for the signal. (The print on the PCB is wrong VIN is the signal.) +This setup should give you the pulse of each messurement or count. For more information check the Video of `Andreas Spiess `__. + +Housing: +********* +I just 3D printed an small housing the avoid touching the high voltage Geiger Mueller tube. +`Counter Tube Case `__ +(The tube should not be in direct sunlight. So maybe you will need another case.) + + +Configuartion: +--------------- + +The block :doc:`/components/sensor/pulse_counter` will count the radation events per minute. +With the found specs of the tube you will be able to calculate the radiation in μSv/h. + +It's just the counts per minute (CPM) times the factor of your Geiger Mueller tube you're using. It should be the J305ß, which comes with the PCB. +(To make sure - check your printing on the tube) + +μSv/h = (CPM - Tube noise) * Factor +According to the video of `Andreas Spiess `__ the tube should have about 12 CPM as background noise. + +.. note:: + + The current version of the pack comes with the J305ß Geiger tube which detectes Beta and Gamma radiation. Specifications: + Manufacturer: North Optic Radiation Detection: β, γ Length: 111mm Diameter: 11mm Recommended Voltage: 350V Plateau Voltage: 360-440V + Sensitivy γ (60Co): 65cps/(μR/s) + Sensitivy γ (equivalent Sievert): 108cpm / (μSv/h) + Max cpm: 30000 + cps/mR/h: 18 + cpm/m/h: 1080 + cpm/μSv/h: 123.147092360319 + Factor: 0.00812037037037 + + +`Source: opengeiger.de/LibeliumDoku.pdf `__. + + +.. code-block:: yaml + + sensor: + - platform: pulse_counter + pin: 34 + name: "Radiation" + unit_of_measurement: 'μSv/h' + count_mode: + rising_edge: DISABLE + falling_edge: INCREMENT + filters: + - offset: -12.0 # J305ß Geiger Mueller tube background noise 0.2 pulses / sec x 60 sec = 12 CPM (Counts per Minute) + - multiply: 0.00812037037037 # Factor: 0.00812037037037 + + +See Also +-------- + +- :doc:`/components/sensor/pulse_counter` +- :ghedit:`Edit` diff --git a/cookbook/images/radiationD-v1-1-cajoe_small.jpg b/cookbook/images/radiationD-v1-1-cajoe_small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee6325bc71d1dd9e527cd9627854777d28eb3c30 GIT binary patch literal 12258 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 literal 0 HcmV?d00001 diff --git a/images/radiationD-v1-1-cajoe_small.jpg b/images/radiationD-v1-1-cajoe_small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee6325bc71d1dd9e527cd9627854777d28eb3c30 GIT binary patch literal 12258 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 literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index e60884275..4c641a688 100644 --- a/index.rst +++ b/index.rst @@ -756,6 +756,7 @@ Cookbook EPEVER Tracer, cookbook/tracer-an, tracer-an.jpg Ilonda Wifi Smart Fish Feeder, cookbook/ilonda-wifi-smart-fish-feeder, ilonda-wifi-smart-fish-feeder-cookbook.jpg AirGradient DIY Air Quality Sensor, cookbook/air_gradient_diy_air_quality_sensor, air_gradient_diy_air_quality_sensor.jpg + Geiger Counter, cookbook/geiger-counter, radiationD-v1-1-cajoe_small.jpg Do you have other awesome automations or cool setups? Please feel free to add them to the documentation for others to copy. See :doc:`Contributing `. From 5a1b07af19488cb83998211a70c167f7b37ed250 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 9 Nov 2022 11:00:56 -0800 Subject: [PATCH 14/18] Add information about 3.3v current ability and UART rx_buffer_size (#2281) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/daly_bms.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/components/sensor/daly_bms.rst b/components/sensor/daly_bms.rst index 55777f792..77ae91737 100644 --- a/components/sensor/daly_bms.rst +++ b/components/sensor/daly_bms.rst @@ -238,6 +238,19 @@ Connect RX from BMS to TX in ESP board and TX from BMS to RX in ESP board :width: 100.0% Uart Pinout. + +**3.3v Warning:** some BMS 3.3v cant source large currents and may not work to properly power the ESP. If you are having WIFI connection issues or similar, try a different power source. There is 12-15v available on the Daly connector which via a proper step-down converter can properly power the ESP. + +On the ESP32 (untested on ESP8266) if you are having missing data (such as Temperature 1/2), it may be due to UART buffer size. +Add the following to your configuration to increase the buffer from the default 256 to 512. + +.. code-block:: + + uart: + ... + rx_buffer_size: 512 + + See Also -------- From 983ca09fdc8315713957054bb7aa4fb1215ad3a4 Mon Sep 17 00:00:00 2001 From: Gilles van den Hoven Date: Wed, 9 Nov 2022 23:07:16 +0100 Subject: [PATCH 15/18] Updates for new functionality of the EZO component. (#2133) Co-authored-by: Steve HOLWEG Co-authored-by: Samuel Sieb --- components/sensor/ezo.rst | 135 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 131 insertions(+), 4 deletions(-) diff --git a/components/sensor/ezo.rst b/components/sensor/ezo.rst index 042722250..fd7e2b7a4 100644 --- a/components/sensor/ezo.rst +++ b/components/sensor/ezo.rst @@ -9,6 +9,8 @@ EZO sensor circuits The ``ezo`` sensor platform allows you to use your EZO sensor circuits with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. +All embedded solutions from EZO can be found `here `__. +If a certain command is not supported directly, it can be executed with the ``send_custom()`` method call. .. figure:: images/ezo-ph-circuit.png :align: center @@ -43,20 +45,145 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. +.. _evo_callbacks: + +Callbacks +--------- + +- **on_led:** : Triggered when the result of ``get_led_state()`` is ready. The LED state is provided as a boolean variable named ``x``. +- **on_device_information:** : Triggered when the result of ``get_device_information()`` is ready. The result is provided as a ``std::string`` variable named ``x``. +- **on_slope:** : Triggered when the result of ``get_slope()`` is ready. The result is provided as a ``std::string`` variable named ``x``. +- **on_calibration:** : Triggered when the result of ``get_calibration()`` is ready. The result is provided as a ``std::string`` variable named ``x``. +- **on_t:** : Triggered when the result of ``get_t()`` is ready. The result is provided as a ``std::string`` variable named ``x``. +- **on_custom:** : Triggered when the result of ``get_custom()`` is ready. The result is provided as a ``std::string`` variable named ``x``. + +.. _evo_lambda_calls: + lambda calls ------------ -From :ref:`lambdas `, you can set the temperature compensation for the -sensors that support that option. +From :ref:`lambdas `, you can interact with the sensor in various ways. For any ``get`` command a trigger will be called with the information retrieved from the sensor. See :ref:`evo_callbacks`. For more information on the command specifics, refer to the datasheet. -- ``set_tempcomp_value()``: Send the given temperature to the sensor. +- ``set_i2c(uint8_t address)``: Set I2C address of the device, must be an integer between 1 and 127 + + .. code-block:: cpp + + id(ph_ezo).set_i2c(100); + + +- ``get_device_information()``: Sensor retrieves calibration and triggers ``on_device_information:`` once done + + .. code-block:: cpp + + id(ph_ezo).get_device_information(); + + +- ``set_sleep()``: Put the device to sleep + + .. code-block:: cpp + + id(ph_ezo).set_sleep(); + + +- ``get_state()``: Performs a read on the current sensor. + + .. code-block:: cpp + + id(ph_ezo).get_state(); + + +- ``get_slope()``: Sensor retrieves slope and triggers ``on_slope:`` once done + + .. code-block:: cpp + + id(ph_ezo).get_slope(); + + +- ``get_t()``: Sensor retrieves temperature compensation value (in Celcius) and triggers ``on_t:`` once done + + .. code-block:: cpp + + id(ph_ezo).get_t(); + + +- ``set_t(float value)``: Send the given temperature (in Celcius) to the sensor. + + .. code-block:: cpp + + id(ph_ezo).set_t("27.00"); + + +- ``set_tempcomp_value(float temp)``: Send the given temperature (in Celcius) to the sensor (this is an alias of `set_t()` for backwards compatibility) .. code-block:: cpp - // Within a lambda, set the temperature compensation value from the temperature sensor id(ph_ezo).set_tempcomp_value(id(rtd_ezo).state); +- ``get_calibration()``: Sensor retrieves calibration and triggers ``on_calibration:`` once done + + .. code-block:: cpp + + id(ph_ezo).get_calibration(); + + +- ``set_calibration_generic(float value)``: Sets the calibration with no point. + + .. code-block:: cpp + + id(ph_ezo).set_calibration_generic(750.0); + + +- ``set_calibration_point_low(float value)``: Sets the low calibration point. + + .. code-block:: cpp + + id(ph_ezo).set_calibration_point_low(4.00); + + +- ``set_calibration_point_mid(float value)``: Sets the medium calibration point. + + .. code-block:: cpp + + id(ph_ezo).set_calibration_point_mid(7.00); + + +- ``set_calibration_point_high(float value)``: Sets the high calibration point. + + .. code-block:: cpp + + id(ph_ezo).set_calibration_point_low(10.00); + + +- ``clear_calibration()``: Clears all calibration points. + + .. code-block:: cpp + + id(ph_ezo).clear_calibration(); + + +- ``get_led_state()``: Sensor LED state and triggers ``on_led:`` once done + + .. code-block:: cpp + + id(ph_ezo).get_led_state(); + + +- ``set_led_state(bool on)``: Sensor LED on or off + + .. code-block:: cpp + + id(ph_ezo).set_led_state(true); + + +- ``send_custom(const std::string &payload, uint16_t delay_ms = 300, bool response_expected = false)``: Runs a custom command. This sends exactly what is in ``payload``. Optionally you can set a ``delay`` and if a response is expected that should be parsed. Defaults to ``false`` for custom commands. Triggers ``on_custom:`` if there's a response. + + .. code-block:: cpp + + // Run a custom command to turn on the LED + id(ph_ezo).send_custom("L,1"); + + See Also -------- From 8a901cb1d91cfd11f5031ccdbb34f6c948576a8c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 10 Nov 2022 11:08:25 +1300 Subject: [PATCH 16/18] Bump version to 2022.11.0b2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 8bc2c31dd..f2f74d453 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.11.0b1 +PROJECT_NUMBER = 2022.11.0b2 # 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 diff --git a/Makefile b/Makefile index 709a09d40..eaa1d771a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.11.0b1 +ESPHOME_REF = 2022.11.0b2 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index 121de79cf..e4f798a0a 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.11.0b1 \ No newline at end of file +2022.11.0b2 \ No newline at end of file diff --git a/conf.py b/conf.py index 897e1b72e..241a5d9dc 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.11" # The full version, including alpha/beta/rc tags. -release = "2022.11.0b1" +release = "2022.11.0b2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 2dd813669861c15662c2891c2b7193b263330f78 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 10 Nov 2022 11:48:34 +1300 Subject: [PATCH 17/18] Update changelog for 2022.11.0b2 --- _static/changelog-2022.11.0.png | Bin 0 -> 60166 bytes changelog/2022.11.0.rst | 99 ++++++++++++++++++++++++++++++-- index.rst | 1 + 3 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 _static/changelog-2022.11.0.png diff --git a/_static/changelog-2022.11.0.png b/_static/changelog-2022.11.0.png new file mode 100644 index 0000000000000000000000000000000000000000..3d28c77c9c1f148b70e121c8cb0dbe0a444b43ed GIT binary patch literal 60166 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 literal 0 HcmV?d00001 diff --git a/changelog/2022.11.0.rst b/changelog/2022.11.0.rst index 7fa7bbf19..63634d484 100644 --- a/changelog/2022.11.0.rst +++ b/changelog/2022.11.0.rst @@ -3,27 +3,74 @@ ESPHome 2022.11.0 - 16th November 2022 .. seo:: :description: Changelog for ESPHome 2022.11.0. - :image: /_static/changelog-2022.10.0.png + :image: /_static/changelog-2022.11.0.png :author: Jesse Hills :author_twitter: @jesserockz .. imgtable:: - :columns: 2 + :columns: 4 + + RP2040, components/rp2040, rp2040.svg + WL-134 Pet Tag Sensor , components/text_sensor/wl_134, fingerprint.svg + Ethernet Info, components/text_sensor/ethernet_info, ethernet.svg + Atlas Scientific Peristaltic Pump, components/ezo_pmp, ezo-pmp.jpg + ADC128S102, components/sensor/adc128s102, adc128s102.png + Daikin BRC, components/climate/climate_ir, air-conditioner-ir.svg + Display Menu Core, components/display_menu/index, folder-open.svg + LCD Menu, components/display_menu/lcd_menu, lcd_menu.png Raspberry Pi Pico-W ------------------- -To be written... +What can I say... I (Jesse) started working on making ESPHome run on the original Raspberry Pi +Pico one random weekend just for fun with no real intention of taking it further myself. +Little did I know there would be a Raspberry Pi Pico-W released earlier this year which sparked +up interest in continuing that PR and almost fully implementing RP2040 and the Pico-W as +a supported platform in ESPHome. + +There are things that have not been tested, and most likely things that will not work, so +please `create or search for an issue `__ if this is the case. + +Looking forward to seeing peoples projects built on these boards running ESPHome. Script Parameters ----------------- -To be written... +Thanks :ghuser:`jimtng` for taking the time to implement a feature requested by many people over time. +Parameters on scripts are now a thing. + +.. code-block:: yaml + + script: + - id: push_button + parameters: + button: int + then: + - logger.log: + format: "Button %d pressed" + args: [ button ] + + on_...: + - script.execute: + id: push_button + button: 1 + + on_...: + - script.execute: + id: push_button + button: 2 LCD Menu -------- +Another great feature added this release is the LCD Menu. This allows a user to build a simple (or complex) +menu system on an lcd display within ESPHome YAML, with support for switches, numbers, selects etc. +Thanks :ghuser:`numo68`. + +Preserving User WiFi Credentials +-------------------------------- + To be written... @@ -51,6 +98,14 @@ Breaking Changes - Don't Use Base Network Manual IP for WiFi AP :esphomepr:`3902` by :ghuser:`bkaufx` (breaking-change) +Beta Changes +^^^^^^^^^^^^ + +- Update set-output to use new GITHUB_OUTPUT :esphomepr:`4008` by :ghuser:`jesserockz` +- Add cover toggle support to current based cover :esphomepr:`3950` by :ghuser:`maringeph` +- Add option for dashboard command to only generate the project and supporting files :esphomepr:`3981` by :ghuser:`jesserockz` +- Fix local webserver based on esphome/esphome-webserver#17 :esphomepr:`3958` by :ghuser:`RoboMagus` + All changes ^^^^^^^^^^^ @@ -114,3 +169,39 @@ All changes - Enable calibration, callbacks and custom commands for EZO sensors :esphomepr:`3910` by :ghuser:`gvdhoven` - Bump esphome-dashboard to 20221109.0 :esphomepr:`4006` by :ghuser:`jesserockz` - Add support for parameters in scripts :esphomepr:`3538` by :ghuser:`jimtng` +- Update set-output to use new GITHUB_OUTPUT :esphomepr:`4008` by :ghuser:`jesserockz` +- Add cover toggle support to current based cover :esphomepr:`3950` by :ghuser:`maringeph` +- Add option for dashboard command to only generate the project and supporting files :esphomepr:`3981` by :ghuser:`jesserockz` +- Fix local webserver based on esphome/esphome-webserver#17 :esphomepr:`3958` by :ghuser:`RoboMagus` + +Past Changelogs +--------------- + +- :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` diff --git a/index.rst b/index.rst index 6b1131f83..67854888f 100644 --- a/index.rst +++ b/index.rst @@ -697,6 +697,7 @@ Misc Components PipSolar - compatible PV Inverter, components/pipsolar, pipsolar.jpg Grow Fingerprint Reader, components/fingerprint_grow, fingerprint.svg SML, components/sml, sml.svg + Atlas Scientific Peristaltic Pump, components/ezo_pmp, ezo-pmp.jpg Demo, components/demo, description.svg Copy, components/copy, content-copy.svg From ce7dc625903329f517ead05627f6172527e8d630 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 10 Nov 2022 11:49:11 +1300 Subject: [PATCH 18/18] Update supporters for 2022.11.0b2 --- guides/supporters.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index ab29c41f5..277f3989a 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -17,7 +17,6 @@ Contributors (in alphabetical order) - `0hax (@0hax) `__ -- `Nikola (@0nikola1) `__ - `0x0a11c0de (@0x0a11c0de) `__ - `Tercio Filho (@0x3333) `__ - `2016for (@2016for) `__ @@ -165,7 +164,9 @@ Contributors - `Clifford Roche (@cmroche) `__ - `code-review-doctor (@code-review-doctor) `__ - `CODeRUS (@CODeRUS) `__ +- `Nick (@codewise-nicolas) `__ - `Cody James (@codyjamestechnical) `__ +- `Colin Leroy-Mira (@colinleroy) `__ - `Conclusio (@Conclusio) `__ - `John Coggeshall (@coogle) `__ - `James Crook (@cooljimy84) `__ @@ -433,6 +434,7 @@ Contributors - `Joe (@jhansche) `__ - `Jim Bauwens (@jimbauwens) `__ - `jimtng (@jimtng) `__ +- `Jeroen (@jjansen85) `__ - `Jérémy JOURDIN (@JJK801) `__ - `Jonathan Jefferies (@jjok) `__ - `John K. Luebs (@jkl1337) `__ @@ -615,7 +617,6 @@ Contributors - `Martin Weinelt (@mweinelt) `__ - `Igor Scheller (@MyIgel) `__ - `Mynasru (@Mynasru) `__ -- `Niels Ulrik Andersen (@myplacedk) `__ - `Kevin Uhlir (@n0bel) `__ - `Erik Näsström (@Naesstrom) `__ - `H. Árkosi Róbert (@nagyrobi) `__ @@ -638,9 +639,7 @@ Contributors - `niklasweber (@niklasweber) `__ - `Niorix (@Niorix) `__ - `Zvonimir Haramustek (@nitko12) `__ -- `Nikolay Kitanov (@nkitanov) `__ - `nldroid (@nldroid) `__ -- `Nicolas Liaudat (@nliaudat) `__ - `Niccolò Maggioni (@nmaggioni) `__ - `Jan Sandbrink (@NobodysNightmare) `__ - `Łukasz Śliwiński (@nonameplum) `__ @@ -658,6 +657,7 @@ Contributors - `Oğuzhan Başer (@oguzhanbaser) `__ - `Omar Ghader (@omarghader) `__ - `Ömer Şiar Baysal (@omersiar) `__ +- `optimusprimespace (@optimusprimespace) `__ - `Oscar Bolmsten (@oscar-b) `__ - `Trammell Hudson (@osresearch) `__ - `Otamay (@Otamay) `__ @@ -897,4 +897,4 @@ Contributors - `Zack Barett (@zsarnett) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated November 9, 2022.* +*This page was last updated November 10, 2022.*