- USB to serial converter module
- I tested this with a cheap & generic CH340G adapter
- 4 male-to-female jumper wires
- I have a soldering iron & needed something more secure for development, so I added a header & used that in the pictures, but you can get by without that.
- esptool.py (windows instructions, generic instructions)
- ESPHome image
You'll want to install the clamps & wiring harness into your panel following the instructions at https://www.emporiaenergy.com/installation-guides. At this time, place a label on each wire using masking tape & a pen rather than connecting them to the energy monitor.
Next, we need to figure out which circuits are on which phases, and in the case of multi-pole breakers, the multiplier. There should be a label like the following on your panel:
For each clamp, you want to make a note of the following information:
- clamp number
- circuit number
- phase
- multiplier, if it is a multi-pole breaker
For the wiring harness, you'll want to make a note of which color cable matches which service main clamp (A, B, C).
Here's a starting point for a configuration:
esphome:
name: emporiavue2
external_components:
- source: github://Maelstrom96/esphome@add-emporia-vue2
components: [ emporia_vue ]
esp32:
board: d-duino-32
framework:
type: esp-idf
version: recommended
# Enable Home Assistant API
api: {"password": "<ota password>"}
ota: {"password": "<ota password>"}
# Enable logging
logger:
wifi:
ssid: "<wifi ssid>"
password: "<wifi password>"
i2c:
sda: 21
scl: 22
scan: false
frequency: 200kHz # recommended range is 50-200kHz
id: i2c_a
sensor:
- platform: emporia_vue
i2c_id: i2c_a
phases:
- id: phase_a
input: BLACK
voltage:
name: "Phase A Voltage"
- id: phase_b
input: RED
voltage:
name: "Phase B Voltage"
ct_clamps:
- name: "A"
phase_id: phase_a
input: "A"
- name: "B"
phase_id: phase_b
input: "B"
- name: "1"
phase_id: phase_a
input: "1"
- name: "2"
phase_id: phase_a
input: "2"
- name: "3"
phase_id: phase_a
input: "3"
You'll want to replace <ota password>
, <wifi ssid>
, and <wifi password>
with a unique password, and your wifi credentials, respectively.
You'll also want to update the sensor
section of the configuration using the information you've collected in Panel installation, part 1.
It's not too critical to get this right on the first try, because you can update the board over WiFi using the ESPHome Dashboard.
Pry the lever on one of the jumper cables up using a pencil or a needle or some other sharp thing. If your cables don't have a lever, cut one end of the cable & strip it using scissors or a knife.
Plug the USB adapter in, connecting the jumpers for RX, TX, and GND between the two. Do not connect the power at this time.
Plug in the unmodified end of the cable we modified above into the IO0 pin of the Emporia Vue 2.
Open a console window and test that esptool.py version
works.
Remove any jumper from the USB dongle. Connect a jumper to the 5V pin of the dongle. While holding the jumpers in the Vue against the holes, and while holding the modified end of the cable against the shield of the ESP32, insert the other end of the 5V jumper into the Vue in the
VCC_5V0
pin
With your other hand, run the following in the console: esptool.py -b 921600 read_flash 0 0x800000 flash_contents.bin
. This will take about 6 minutes, and will perform a backup, which is critical in case something goes wrong later.
With your other hand, run the following in the console: esphome run vue2.yaml
. This will take a few minutes, and install the new software on the Vue 2!
You'll see a bunch of errors like Failed to read from sensor due to I2C error 3
, but that's fine, since they'll go away when it is installed into into the wall.
Reassemble to Vue 2, and follow the instructions to plug everything in & started up!
@cdavis289 Thanks! That's the info I needed. Looking up in the other comments I see that some folks are using MQTT for integration. Is that in addition to adding devices to the energy dashboard, or instead of the energy dashboard integration. What does MQTT integration of the ESPHome Vue2 get you? I apologize for these basic questions, but looking at the documentation and previous Comments/Q&A it's not clear to me.