From 825cf25f5a11ea4fbf1de5e795bec74beab5cf74 Mon Sep 17 00:00:00 2001 From: Arturo Casal Date: Thu, 28 Oct 2021 20:59:01 +0200 Subject: [PATCH] Added docs for CSE7761 power sensor (#1541) * Added docs for CSE7761 power sensor Also added docs for Sonoff Dual R3 v1.x * Update components/sensor/cse7761.rst Co-authored-by: Oxan van Leeuwen Co-authored-by: Oxan van Leeuwen --- components/sensor/cse7761.rst | 74 ++++++++++++++++++++++++++++++++++ devices/sonoff.rst | 16 ++++++++ images/cse7761.svg | 49 ++++++++++++++++++++++ index.rst | 1 + svg2png/cse7761.png | Bin 0 -> 16900 bytes 5 files changed, 140 insertions(+) create mode 100644 components/sensor/cse7761.rst create mode 100644 images/cse7761.svg create mode 100644 svg2png/cse7761.png diff --git a/components/sensor/cse7761.rst b/components/sensor/cse7761.rst new file mode 100644 index 000000000..999047aa8 --- /dev/null +++ b/components/sensor/cse7761.rst @@ -0,0 +1,74 @@ +CSE7761 Power Sensor +==================== + +.. seo:: + :description: Instructions for setting up CSE7761 power sensors for the Sonoff Dual R3 v1.x + :image: cse7761.png + :keywords: cse7761, Sonoff Dual R3 + +The ``cse7761`` sensor platform allows you to use your CSE7761 voltage/current and power sensors +with ESPHome. This sensor is commonly found in Sonoff Dual R3 v1.x. + +.. note:: + + SAFETY HAZARD: Some devices such as Sonoff POWs/Shelly/etc, have the digital GND connected directly to mains voltage so **the GPIOs become LIVE during normal operation**. Our advice is to mark these boards to prevent any use of the dangerous digital pins. + +As the communication with the CSE7761 done using UART, you need +to have an :ref:`UART bus ` in your configuration with the ``tx_pin`` and ``rx_pin`` connected to the CSE7761. +Additionally, you need to set the baud rate to 38400 and parity to ``EVEN``. + +.. code-block:: yaml + + # Example configuration entry + # Disable logging over serial + logger: + baud_rate: 0 + + uart: + tx_pin: GPIO25 + rx_pin: GPIO26 + baud_rate: 38400 + parity: EVEN + + sensor: + - platform: cse7761 + voltage: + name: 'CSE7761 Voltage' + current_1: + name: 'CSE7761 Current 1' + current_2: + name: 'CSE7761 Current 2' + active_power_1: + name: 'CSE7761 Active Power 1' + active_power_2: + name: 'CSE7761 Active Power 2' + update_interval: 5s + +.. note:: + + The configuration above should work for Sonoff Dual R3 v1.x. + +Configuration variables: +------------------------ + +- **voltage** (*Optional*): Use the voltage value of the sensor in V (RMS). + All options from :ref:`Sensor `. +- **current_1** (*Optional*): Use the current value of the channel 1 in amperes. All options from + :ref:`Sensor `. +- **current_2** (*Optional*): Use the current value of the channel 2 in amperes. All options from + :ref:`Sensor `. +- **active_power_1** (*Optional*): Use the (active) power value of the channel 1 in watts. All options from + :ref:`Sensor `. +- **active_power_2** (*Optional*): Use the (active) power value of the channel 2 in watts. All options from + :ref:`Sensor `. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the + sensor. Defaults to ``60s``. +- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component ` if you want + to use multiple UART buses. + +See Also +-------- + +- :ref:`sensor-filters` +- :apiref:`cse7761/cse7761.h` +- :ghedit:`Edit` diff --git a/devices/sonoff.rst b/devices/sonoff.rst index 0c4004c49..9bb2eca46 100644 --- a/devices/sonoff.rst +++ b/devices/sonoff.rst @@ -102,6 +102,22 @@ Sonoff Dual R2 v1.4 GPIO10, Button on the case, GPIO13, Blue LED (inverted) +Sonoff Dual R3 v1.x +------------------- + +.. pintable:: + + GPIO27, Relay #1, + GPIO14, Relay #2, + GPIO0, Button, + GPIO13, Blue LED (inverted), + GPIO32, SW Input #1 (inverted), + GPIO33, SW Input #2 (inverted), + GPIO25, UART TX pin (for power sensor) + GPIO26, UART RX pin (for power sensor) + +See :doc:`/components/sensor/cse7761` for measuring power. + Sonoff Pow R1 ------------- diff --git a/images/cse7761.svg b/images/cse7761.svg new file mode 100644 index 000000000..697d4d0fb --- /dev/null +++ b/images/cse7761.svg @@ -0,0 +1,49 @@ + + + + + + + + diff --git a/index.rst b/index.rst index 330bff03b..73e8f2908 100644 --- a/index.rst +++ b/index.rst @@ -238,6 +238,7 @@ Electricity ADE7953, components/sensor/ade7953, ade7953.svg, Power ATM90E32, components/sensor/atm90e32, atm90e32.jpg, Voltage & Current & Power CS5460A, components/sensor/cs5460a, cs5460a.png, Voltage & Current & Power + CSE7761, components/sensor/cse7761, cse7761.svg, Voltage & Current & Power CSE7766, components/sensor/cse7766, cse7766.svg, Voltage & Current & Power CT Clamp, components/sensor/ct_clamp, ct_clamp.jpg, AC current Daly BMS, components/sensor/daly_bms, daly_bms.png, Voltage & Current & Power diff --git a/svg2png/cse7761.png b/svg2png/cse7761.png new file mode 100644 index 0000000000000000000000000000000000000000..60190d12671c621b7d332faf73ad18e976d26d64 GIT binary patch literal 16900 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