IPEM SIX ESPHome Integration

This commit is contained in:
Dave Williams | DitroniX | G8PUO
2026-06-20 15:43:33 +01:00
parent e2e43521e3
commit 5296f82782
6 changed files with 1622 additions and 1 deletions
@@ -0,0 +1,217 @@
# Dave Williams, DitroniX 2019-2026 (ditronix.net)
# IPEM SIX - ESP32-C5 | ATM90E32 | WiFi 2.4/5GHz | Zigbee | Bluetooth | SIX Channel IoT Mains Power Energy Monitor
# June 2026: Example Code, to demonstrate and test the IPEM SIX
# Remember!
# - Set the BOARD to Use ESP32C5 Dev Module (or similar).
# - You can also set the BAUD rate up to 921600 to speed up flashing.
# - The SDK does NOT need external power to flash. It will take Power from the USB 5V.
# - The Serial Monitor is configured for BAUD 115200
# The purpose of this test code is to cycle through the various main functions of the board as part of bring up testing.
# This test code is OPEN SOURCE and formatted for easier viewing. Although is is not intended for real world use, it may be freely used, or modified as needed.
# It is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# For board configuration, see github.com/DitroniX/IPEM-SIX-ESP32C5-ATM90E32-IoT-Mains-Power-Energy-Monitor/wiki/Arduino-IDE
# Further information, details and examples can be found on our website or github.com/DitroniX
# * ditronix.net
# * github.com/DitroniX
# * github.com/DitroniX/IPEM-SIX-ESP32C5-ATM90E32-IoT-Mains-Power-Energy-Monitor
# * github.com/DitroniX/IPEM-SIX-ESP32C5-ATM90E32-IoT-Mains-Power-Energy-Monitor/wiki
# * hackster.io/DitroniX/ipem-six-esp32c5-atm90e32-iot-mains-power-energy-monitor-e323bd
# This YAML code is used to be the equivalent of the Hello World but for the IPEM SIX and both ATM90E32's.
esphome:
name: ipem-six-c5
friendly_name: IPEM SIX C5
on_boot:
priority: -100
then:
- delay: 2s
- light.turn_on:
id: heartbeat_led
effect: "Green Heartbeat"
esp32:
board: esp32-c5-devkitc-1
variant: esp32c5
framework:
type: esp-idf
# ############################# CONFIG #############################
# Enable Home Assistant API
api:
encryption:
key: "xxxx="
ota:
- platform: esphome
password: "xxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "IPEM SIX C5 Fallback Hotspot"
password: "xxxx"
captive_portal:
# ==================== LOGGING ====================
logger:
# level: WARN # Reduces spam - only shows warnings and errors
# level: ERROR # Even quieter (uncomment if you want)
# level: DEBUG # Head scratching time.
# ############################# CODE #############################
# ========================= SPI BUS (Shared) =========================
spi:
clk_pin: GPIO10
mosi_pin: GPIO8
miso_pin: GPIO9
# ========================= HEARTBEAT LED =========================
light:
- platform: esp32_rmt_led_strip
id: heartbeat_led
pin: GPIO27
num_leds: 1
chipset: WS2812
rgb_order: GRB
restore_mode: RESTORE_AND_ON
effects:
- addressable_lambda:
name: "Green Heartbeat"
update_interval: 50ms
lambda: |-
static uint8_t step = 0;
uint8_t b = 0;
if (step == 0 || step == 2)
b = 30;
else if (step == 1 || step == 3)
b = 10;
it[0] = Color(0, b, 0);
step++;
if (step > 20)
step = 0;
# ========================= ENERGY MONITORS =========================
sensor:
# ==================== ATM90E32 BANK A CS GPIO6 ======================
- platform: atm90e32
id: bank_a
cs_pin: GPIO6
phase_a:
voltage:
name: "Bank A Mains Voltage"
id: bank_a_voltage
accuracy_decimals: 1
current:
name: "Bank A Current"
id: bank_a_current
accuracy_decimals: 3
power:
name: "Bank A Power"
id: bank_a_power
accuracy_decimals: 1
gain_voltage: 38300
gain_ct: 64800
frequency:
name: "Bank A Frequency"
chip_temperature:
name: "Bank A Temperature"
line_frequency: 50Hz
gain_pga: 2X
update_interval: 1s
# ==================== ATM90E32 BANK B CS GPIO7 ======================
- platform: atm90e32
id: bank_b
cs_pin: GPIO7
phase_a:
voltage:
name: "Bank B Mains Voltage"
id: bank_b_voltage
accuracy_decimals: 1
current:
name: "Bank B Current"
id: bank_b_current
accuracy_decimals: 3
power:
name: "Bank B Power"
id: bank_b_power
accuracy_decimals: 1
gain_voltage: 38300
gain_ct: 64800
frequency:
name: "Bank B Frequency"
chip_temperature:
name: "Bank B Temperature"
line_frequency: 50Hz
gain_pga: 2X
update_interval: 1s
# ========================== TOTALS ============================
- platform: template
name: "IPEM SIX Total Power"
unit_of_measurement: W
device_class: power
state_class: measurement
lambda: |-
return id(bank_a_power).state +
id(bank_b_power).state;
update_interval: 1s