mirror of
https://github.com/esphome/esphome-docs.git
synced 2024-11-04 09:10:02 +01:00
34b2bef1d1
Co-authored-by: Franck Nijhof <git@frenck.dev>
81 lines
2.9 KiB
ReStructuredText
81 lines
2.9 KiB
ReStructuredText
Non-Invasive Power Meter
|
|
========================
|
|
|
|
.. seo::
|
|
:description: Instructions for hacking your power meter at home to measure your power usage.
|
|
:image: power_meter.jpg
|
|
|
|
So an essential part of making your home smart is knowing how much power it uses over
|
|
the day. Tracking this can be difficult, often you need to install a completely new
|
|
power meter which can often cost a bunch of money. However, quite a few power meters
|
|
have a red LED on the front that blinks every time that one Wh has been used.
|
|
|
|
The simple idea therefore is: Why don't we just abuse that functionality to make the power-meter
|
|
IoT enabled? We just have to hook up a simple photoresistor in front of that aforementioned
|
|
LED and track the amount of pulses we receive. Then using ESPHome we can instantly have
|
|
the power meter show up in Home Assistant 🎉
|
|
|
|
Hooking it all up is quite easy: Just buy a suitable photoresistor (make sure the wave length
|
|
approximately matches the one from your power meter). Then connect it using a simple variable
|
|
resistor divider (see `this article <https://blog.udemy.com/arduino-ldr/>`__ for inspiration).
|
|
And... that should already be it :)
|
|
|
|
.. figure:: images/power_meter-header.jpg
|
|
:align: center
|
|
:width: 80.0%
|
|
|
|
.. note::
|
|
|
|
Some energy meters have an exposed S0 port (which essentially just is a switch that closes), if
|
|
that is the case the photodiode can be replaced with the following connection.
|
|
|
|
.. code-block::
|
|
|
|
S0 ------------ VCC
|
|
S0 --+-- 10k -- GND
|
|
. |
|
|
. +--------- GPIO12
|
|
|
|
For ESPHome, you can then use the
|
|
:doc:`pulse counter sensor </components/sensor/pulse_counter>` using below configuration:
|
|
|
|
.. code-block:: yaml
|
|
|
|
sensor:
|
|
- platform: pulse_counter
|
|
pin: GPIO12
|
|
unit_of_measurement: 'kW'
|
|
name: 'Power Meter'
|
|
filters:
|
|
- multiply: 0.06 # (60s/1000 pulses per kWh)
|
|
|
|
Adjust ``GPIO12`` to match your set up of course. The output from the pulse counter sensor is in
|
|
``pulses/min`` and we also know that 1000 pulses from the LED should equal 1kWh of power usage.
|
|
Thus, rearranging the expression yields a proportional factor of ``0.06`` from ``pulses/min`` to
|
|
``kW``.
|
|
|
|
And if a technician shows up and he looks confused about what the heck you have done to your
|
|
power meter, tell them about ESPHome 😉
|
|
|
|
.. note::
|
|
|
|
Photoresistors often have a bit of noise during their switching phases. So in certain situations,
|
|
a single power meter tick can result in many pulses being counted. This effect is especially big on
|
|
ESP8266s. If you're experiencing this, try enabling the ``internal_filter:`` filter option:
|
|
|
|
.. code-block:: yaml
|
|
|
|
sensor:
|
|
- platform: pulse_counter
|
|
# ...
|
|
internal_filter: 10us
|
|
|
|
See :doc:`/components/sensor/total_daily_energy` for counting up the total daily energy usage
|
|
with these ``pulse_counter`` power meters.
|
|
|
|
See Also
|
|
--------
|
|
|
|
- :doc:`/components/sensor/pulse_counter`
|
|
- :ghedit:`Edit`
|