Belling BL0940 Energy Monitor
==================================

.. seo::
    :description: Instructions for setting up BL0940 power monitors.
    :image: bl0940.png
    :keywords: BL0940

.. note::

    This page is incomplete and could some work. If you want to contribute, please read the
    :doc:`contributing guide </guides/contributing>`. This page is missing:

      - Images/screenshots/example configs of this device being used in action.

The ``bl0940`` sensor platform allows you to use BL0940 energy monitors sensors with
ESPHome. These are used in some Tuya-devices (e.g. the power metering BW-SHP10)

The communication with this integration is done over a :ref:`UART bus <uart>`.
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 4800 with 1 stop bit.

.. code-block:: yaml

    # Example configuration entry
    uart:
      id: uart_bus
      tx_pin: TX
      rx_pin: RX
      baud_rate: 4800
      stop_bits: 1

    sensor:
      - platform: bl0940
        uart_id: uart_bus
        voltage:
          name: 'BL0940 Voltage'
        current:
          name: 'BL0940 Current'
        power:
          name: 'BL0940 Power'
        energy:
          name: 'BL0940 Energy'
        temperature:
          name: 'BL0940 Internal temperature'
        target_temperature:
          name: 'BL0940 External temperature'
        update_interval: 60s

Configuration variables:
------------------------

- **voltage** (*Optional*): The voltage value of the sensor in Volts.
  All options from :ref:`Sensor <config-sensor>`.
- **current** (*Optional*): The current value of the sensor in Amperes. All options from
  :ref:`Sensor <config-sensor>`.
- **power** (*Optional*): The (active) power value of the sensor in Watts. All options from
  :ref:`Sensor <config-sensor>`.
- **energy** (*Optional*): Use the voltage value of the sensor in kWh.
  All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): The internal temperature value of the sensor in °C.
  All options from :ref:`Sensor <config-sensor>`.
- **target_temperature** (*Optional*): The external value of the sensor in °C. Often not connected and gives garbage data.
  All options from :ref:`Sensor <config-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 <uart>` if you want
  to use multiple UART buses.

See Also
--------

- :ref:`sensor-filters`
- :apiref:`bl0940/bl0940.h`
- :ghedit:`Edit`
