EKM to Home Assistant (HEMS)

Things we have found to be useful when installing or using our metering systems.
Post Reply
Jameson
Posts: 887
Joined: Fri Nov 04, 2011 7:42 pm
Location: Santa Cruz, CA
Contact:

EKM to Home Assistant (HEMS)

Post by Jameson »

Here are the settings we use to gather data with Home Assistant. We use both the cloud REST API and/or the Push3 LAN APIs (direct from the Push3 gateway itself) to gather data from Omnimeters and ioStacks. Please see the attached image and the contents of our sensors.yml file below.

You will want to change the API calls to use your own Omnimeter/ioStack numbers and EKM Push account key (in the case of the EKM Push real-time cloud API), and your own EKM Push3 gateway key in the case of the LAN API.

Please let us know if you have any questions about HA or how this integration works.
Screen Shot 2025-01-31 at 5.22.18 PM.png
Screen Shot 2025-01-31 at 5.22.18 PM.png (443.71 KiB) Viewed 28183 times
- platform: rest
## Omnimeter 300004127 from EKM Push3 Cloud API ##
resource: https://api.ekmpush.com/readmeter?key=M ... 0300004127
name: "ekm_meter_combined_data"
json_attributes_path: "$.readMeter.ReadSet[0].ReadData[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Meter_Time"
- "Firmware"
- "Model"
- "kWh_Tot"
- "kWh_Tariff_1"
- "kWh_Tariff_2"
- "kWh_Tariff_3"
- "kWh_Tariff_4"
- "Rev_kWh_Tot"
- "Rev_kWh_Tariff_1"
- "Rev_kWh_Tariff_2"
- "Rev_kWh_Tariff_3"
- "Rev_kWh_Tariff_4"
- "RMS_Volts_Ln_1"
- "RMS_Volts_Ln_2"
- "RMS_Volts_Ln_3"
- "Amps_Ln_1"
- "Amps_Ln_2"
- "Amps_Ln_3"
- "Power_Factor_Ln_1"
- "Power_Factor_Ln_2"
- "Power_Factor_Ln_3"
- "Cos_Theta_Ln_1"
- "Cos_Theta_Ln_2"
- "Cos_Theta_Ln_3"
- "RMS_Watts_Ln_1"
- "RMS_Watts_Ln_2"
- "RMS_Watts_Ln_3"
- "RMS_Watts_Tot"
- "RMS_Watts_Max_Demand"
- "Max_Demand_Period"
- "Max_Demand_Rst"
- "CT_Ratio"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "State_Inputs"
- "Pulse_Ratio_1"
- "Pulse_Ratio_2"
- "Pulse_Ratio_3"
- "Reactive_Energy_Tot"
- "kWh_Rst"
- "Rev_kWh_Rst"
- "kWh_Scale"
- "Reactive_Pwr_Ln_1"
- "Reactive_Pwr_Ln_2"
- "Reactive_Pwr_Ln_3"
- "Reactive_Pwr_Tot"
- "Line_Freq"
- "State_Watts_Dir"
- "State_Out"
- "kWh_Ln_1"
- "kWh_Ln_2"
- "kWh_Ln_3"
- "Rev_kWh_Ln_1"
- "Rev_kWh_Ln_2"
- "Rev_kWh_Ln_3"
- "Net_Calc_Watts_Ln_1"
- "Net_Calc_Watts_Ln_2"
- "Net_Calc_Watts_Ln_3"
- "Net_Calc_Watts_Tot"
- "CF_Ratio"
- "Meter_Status_Code_A"
- "Meter_Status_Code_B"
- "Meter_Status_Code_C"
value_template: "OK"
scan_interval: 60

- platform: rest
## Omnimeter 300004127 from EKM Push3 LAN API Whole House
resource: http://10.200.0.21/readMeter?key=NjUyNT ... =300004127
name: "300004127_ekm_meter_instant_combined_data"
json_attributes_path: "$.[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Meter_Time"
- "Firmware"
- "Model"
- "kWh_Tot"
- "kWh_Tariff_1"
- "kWh_Tariff_2"
- "kWh_Tariff_3"
- "kWh_Tariff_4"
- "Rev_kWh_Tot"
- "Rev_kWh_Tariff_1"
- "Rev_kWh_Tariff_2"
- "Rev_kWh_Tariff_3"
- "Rev_kWh_Tariff_4"
- "RMS_Volts_Ln_1"
- "RMS_Volts_Ln_2"
- "RMS_Volts_Ln_3"
- "Amps_Ln_1"
- "Amps_Ln_2"
- "Amps_Ln_3"
- "Power_Factor_Ln_1"
- "Power_Factor_Ln_2"
- "Power_Factor_Ln_3"
- "Cos_Theta_Ln_1"
- "Cos_Theta_Ln_2"
- "Cos_Theta_Ln_3"
- "RMS_Watts_Ln_1"
- "RMS_Watts_Ln_2"
- "RMS_Watts_Ln_3"
- "RMS_Watts_Tot"
- "RMS_Watts_Max_Demand"
- "Max_Demand_Period"
- "Max_Demand_Rst"
- "CT_Ratio"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "State_Inputs"
- "Pulse_Ratio_1"
- "Pulse_Ratio_2"
- "Pulse_Ratio_3"
- "Reactive_Energy_Tot"
- "kWh_Rst"
- "Rev_kWh_Rst"
- "kWh_Scale"
- "Reactive_Pwr_Ln_1"
- "Reactive_Pwr_Ln_2"
- "Reactive_Pwr_Ln_3"
- "Reactive_Pwr_Tot"
- "Line_Freq"
- "State_Watts_Dir"
- "State_Out"
- "kWh_Ln_1"
- "kWh_Ln_2"
- "kWh_Ln_3"
- "Rev_kWh_Ln_1"
- "Rev_kWh_Ln_2"
- "Rev_kWh_Ln_3"
- "Net_Calc_Watts_Ln_1"
- "Net_Calc_Watts_Ln_2"
- "Net_Calc_Watts_Ln_3"
- "Net_Calc_Watts_Tot"
- "CF_Ratio"
- "Meter_Status_Code_A"
- "Meter_Status_Code_B"
- "Meter_Status_Code_C"
value_template: "OK"
scan_interval: 1

- platform: rest
## Omnimeter 300004129 from EKM Push3 LAN API Car Charger
resource: http://10.200.0.21/readMeter?key=NjUyNT ... =300004129
name: "300004129_car_charger_ekm_meter_instant_combined_data"
json_attributes_path: "$.[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Meter_Time"
- "Firmware"
- "Model"
- "kWh_Tot"
- "kWh_Tariff_1"
- "kWh_Tariff_2"
- "kWh_Tariff_3"
- "kWh_Tariff_4"
- "Rev_kWh_Tot"
- "Rev_kWh_Tariff_1"
- "Rev_kWh_Tariff_2"
- "Rev_kWh_Tariff_3"
- "Rev_kWh_Tariff_4"
- "RMS_Volts_Ln_1"
- "RMS_Volts_Ln_2"
- "RMS_Volts_Ln_3"
- "Amps_Ln_1"
- "Amps_Ln_2"
- "Amps_Ln_3"
- "Power_Factor_Ln_1"
- "Power_Factor_Ln_2"
- "Power_Factor_Ln_3"
- "Cos_Theta_Ln_1"
- "Cos_Theta_Ln_2"
- "Cos_Theta_Ln_3"
- "RMS_Watts_Ln_1"
- "RMS_Watts_Ln_2"
- "RMS_Watts_Ln_3"
- "RMS_Watts_Tot"
- "RMS_Watts_Max_Demand"
- "Max_Demand_Period"
- "Max_Demand_Rst"
- "CT_Ratio"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "State_Inputs"
- "Pulse_Ratio_1"
- "Pulse_Ratio_2"
- "Pulse_Ratio_3"
- "Reactive_Energy_Tot"
- "kWh_Rst"
- "Rev_kWh_Rst"
- "kWh_Scale"
- "Reactive_Pwr_Ln_1"
- "Reactive_Pwr_Ln_2"
- "Reactive_Pwr_Ln_3"
- "Reactive_Pwr_Tot"
- "Line_Freq"
- "State_Watts_Dir"
- "State_Out"
- "kWh_Ln_1"
- "kWh_Ln_2"
- "kWh_Ln_3"
- "Rev_kWh_Ln_1"
- "Rev_kWh_Ln_2"
- "Rev_kWh_Ln_3"
- "Net_Calc_Watts_Ln_1"
- "Net_Calc_Watts_Ln_2"
- "Net_Calc_Watts_Ln_3"
- "Net_Calc_Watts_Tot"
- "CF_Ratio"
- "Meter_Status_Code_A"
- "Meter_Status_Code_B"
- "Meter_Status_Code_C"
value_template: "OK"
scan_interval: 60

- platform: rest
## ioStack 810001053 from EKM Push3 Cloud API
resource: https://api.ekmpush.com/readiostack?key ... 0810001053
name: "ekm_iostack_810001053_combined_data"
json_attributes_path: "$.readiostack.ReadSet[0].ReadData[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Device_Time"
- "Firmware"
- "Hardware_Type"
- "Model"
- "Analog_In_1"
- "Analog_In_2"
- "Analog_In_3"
- "Analog_In_4"
- "State_Inputs"
- "State_Out"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "Pulse_Cnt_4"
- "Pulse_Cnt_Rst_1"
- "Pulse_Cnt_Rst_2"
- "Pulse_Cnt_Rst_3"
- "Pulse_Cnt_Rst_4"
- "Pulse_Hold_ms_1"
- "Pulse_Hold_ms_2"
- "Pulse_Hold_ms_3"
- "Pulse_Hold_ms_4"
- "Pulse_Hi_Prev_ms_1"
- "Pulse_Hi_Prev_ms_2"
- "Pulse_Hi_Prev_ms_3"
- "Pulse_Hi_Prev_ms_4"
- "Pulse_Lo_Prev_ms_1"
- "Pulse_Lo_Prev_ms_2"
- "Pulse_Lo_Prev_ms_3"
- "Pulse_Lo_Prev_ms_4"
- "Pulse_Hi_Total_sec_1"
- "Pulse_Hi_Total_sec_2"
- "Pulse_Hi_Total_sec_3"
- "Pulse_Hi_Total_sec_4"
- "Pulse_Lo_Total_sec_1"
- "Pulse_Lo_Total_sec_2"
- "Pulse_Lo_Total_sec_3"
- "Pulse_Lo_Total_sec_4"
- "OW_1_1_degC"
- "OW_1_2_degC"
- "OW_1_3_degC"
- "OW_1_4_degC"
- "OW_2_1_degC"
- "OW_2_2_degC"
- "OW_2_3_degC"
- "OW_2_4_degC"
- "OW_3_1_degC"
- "OW_3_2_degC"
- "OW_3_3_degC"
- "OW_3_4_degC"
- "OW_4_1_degC"
- "OW_4_2_degC"
- "OW_4_3_degC"
- "OW_4_4_degC"
value_template: "OK"
scan_interval: 60

- platform: rest
## ioStack 55555 from EKM Push3 Cloud API Tank Level
resource: https://api.ekmpush.com/readiostack?key ... ress=55555
name: "ekm_iostack_55555_combined_data"
json_attributes_path: "$.readiostack.ReadSet[0].ReadData[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Device_Time"
- "Firmware"
- "Hardware_Type"
- "Model"
- "Analog_In_1"
- "Analog_In_2"
- "Analog_In_3"
- "Analog_In_4"
- "State_Inputs"
- "State_Out"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "Pulse_Cnt_4"
- "Pulse_Cnt_Rst_1"
- "Pulse_Cnt_Rst_2"
- "Pulse_Cnt_Rst_3"
- "Pulse_Cnt_Rst_4"
- "Pulse_Hold_ms_1"
- "Pulse_Hold_ms_2"
- "Pulse_Hold_ms_3"
- "Pulse_Hold_ms_4"
- "Pulse_Hi_Prev_ms_1"
- "Pulse_Hi_Prev_ms_2"
- "Pulse_Hi_Prev_ms_3"
- "Pulse_Hi_Prev_ms_4"
- "Pulse_Lo_Prev_ms_1"
- "Pulse_Lo_Prev_ms_2"
- "Pulse_Lo_Prev_ms_3"
- "Pulse_Lo_Prev_ms_4"
- "Pulse_Hi_Total_sec_1"
- "Pulse_Hi_Total_sec_2"
- "Pulse_Hi_Total_sec_3"
- "Pulse_Hi_Total_sec_4"
- "Pulse_Lo_Total_sec_1"
- "Pulse_Lo_Total_sec_2"
- "Pulse_Lo_Total_sec_3"
- "Pulse_Lo_Total_sec_4"
- "OW_1_1_degC"
- "OW_1_2_degC"
- "OW_1_3_degC"
- "OW_1_4_degC"
- "OW_2_1_degC"
- "OW_2_2_degC"
- "OW_2_3_degC"
- "OW_2_4_degC"
- "OW_3_1_degC"
- "OW_3_2_degC"
- "OW_3_3_degC"
- "OW_3_4_degC"
- "OW_4_1_degC"
- "OW_4_2_degC"
- "OW_4_3_degC"
- "OW_4_4_degC"
value_template: "OK"
scan_interval: 300

#does not work:
# - platform: worldclock
# time_zone: America/Los_Angeles
Jameson
EKM METERING
http://www.ekmmetering.com
831.425.7371
Jameson
Posts: 887
Joined: Fri Nov 04, 2011 7:42 pm
Location: Santa Cruz, CA
Contact:

Re: EKM to Home Assistant (HEMS)

Post by Jameson »

For the LAN API, you can either use a fixed local IP address (if you set the Push3 gateway to a fixed IP) as the example above shows using 10.200.0.21 in our case ... Or (if your network supports it and your HA gateway is on the same network) you can use .local, which is great if the Push3 gateway local IP address is dynamic (using DHCP for example)

Here is the format of the local address using mDNS: ekmpush3-[MACADDRESS].local

There is more about mDNS here (it does not work with all computers or all networks): https://help.ekmmetering.com/support/so ... h3-to-wifi

Here are some examples using .local for the LAN API:

- platform: rest
## Omnimeter 300004127 from EKM Push3 LAN API Whole House
resource: http://ekmpush3-4016fa05007f.local/read ... =300004127
name: "300004127_ekm_meter_instant_combined_data"
json_attributes_path: "$.[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Meter_Time"
- "Firmware"
- "Model"
- "kWh_Tot"
- "kWh_Tariff_1"
- "kWh_Tariff_2"
- "kWh_Tariff_3"
- "kWh_Tariff_4"
- "Rev_kWh_Tot"
- "Rev_kWh_Tariff_1"
- "Rev_kWh_Tariff_2"
- "Rev_kWh_Tariff_3"
- "Rev_kWh_Tariff_4"
- "RMS_Volts_Ln_1"
- "RMS_Volts_Ln_2"
- "RMS_Volts_Ln_3"
- "Amps_Ln_1"
- "Amps_Ln_2"
- "Amps_Ln_3"
- "Power_Factor_Ln_1"
- "Power_Factor_Ln_2"
- "Power_Factor_Ln_3"
- "Cos_Theta_Ln_1"
- "Cos_Theta_Ln_2"
- "Cos_Theta_Ln_3"
- "RMS_Watts_Ln_1"
- "RMS_Watts_Ln_2"
- "RMS_Watts_Ln_3"
- "RMS_Watts_Tot"
- "RMS_Watts_Max_Demand"
- "Max_Demand_Period"
- "Max_Demand_Rst"
- "CT_Ratio"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "State_Inputs"
- "Pulse_Ratio_1"
- "Pulse_Ratio_2"
- "Pulse_Ratio_3"
- "Reactive_Energy_Tot"
- "kWh_Rst"
- "Rev_kWh_Rst"
- "kWh_Scale"
- "Reactive_Pwr_Ln_1"
- "Reactive_Pwr_Ln_2"
- "Reactive_Pwr_Ln_3"
- "Reactive_Pwr_Tot"
- "Line_Freq"
- "State_Watts_Dir"
- "State_Out"
- "kWh_Ln_1"
- "kWh_Ln_2"
- "kWh_Ln_3"
- "Rev_kWh_Ln_1"
- "Rev_kWh_Ln_2"
- "Rev_kWh_Ln_3"
- "Net_Calc_Watts_Ln_1"
- "Net_Calc_Watts_Ln_2"
- "Net_Calc_Watts_Ln_3"
- "Net_Calc_Watts_Tot"
- "CF_Ratio"
- "Meter_Status_Code_A"
- "Meter_Status_Code_B"
- "Meter_Status_Code_C"
value_template: "OK"
scan_interval: 1

- platform: rest
## Omnimeter 300004129 from EKM Push3 LAN API Car Charger
resource: http://ekmpush3-4016fa05007f.local/read ... =300004129
name: "300004129_car_charger_ekm_meter_instant_combined_data"
json_attributes_path: "$.[0]"
json_attributes:
- "Good"
- "Good_Reads_Ratio"
- "Read_Attempts"
- "Date"
- "Time"
- "Time_Stamp_UTC_ms"
- "Meter_Time"
- "Firmware"
- "Model"
- "kWh_Tot"
- "kWh_Tariff_1"
- "kWh_Tariff_2"
- "kWh_Tariff_3"
- "kWh_Tariff_4"
- "Rev_kWh_Tot"
- "Rev_kWh_Tariff_1"
- "Rev_kWh_Tariff_2"
- "Rev_kWh_Tariff_3"
- "Rev_kWh_Tariff_4"
- "RMS_Volts_Ln_1"
- "RMS_Volts_Ln_2"
- "RMS_Volts_Ln_3"
- "Amps_Ln_1"
- "Amps_Ln_2"
- "Amps_Ln_3"
- "Power_Factor_Ln_1"
- "Power_Factor_Ln_2"
- "Power_Factor_Ln_3"
- "Cos_Theta_Ln_1"
- "Cos_Theta_Ln_2"
- "Cos_Theta_Ln_3"
- "RMS_Watts_Ln_1"
- "RMS_Watts_Ln_2"
- "RMS_Watts_Ln_3"
- "RMS_Watts_Tot"
- "RMS_Watts_Max_Demand"
- "Max_Demand_Period"
- "Max_Demand_Rst"
- "CT_Ratio"
- "Pulse_Cnt_1"
- "Pulse_Cnt_2"
- "Pulse_Cnt_3"
- "State_Inputs"
- "Pulse_Ratio_1"
- "Pulse_Ratio_2"
- "Pulse_Ratio_3"
- "Reactive_Energy_Tot"
- "kWh_Rst"
- "Rev_kWh_Rst"
- "kWh_Scale"
- "Reactive_Pwr_Ln_1"
- "Reactive_Pwr_Ln_2"
- "Reactive_Pwr_Ln_3"
- "Reactive_Pwr_Tot"
- "Line_Freq"
- "State_Watts_Dir"
- "State_Out"
- "kWh_Ln_1"
- "kWh_Ln_2"
- "kWh_Ln_3"
- "Rev_kWh_Ln_1"
- "Rev_kWh_Ln_2"
- "Rev_kWh_Ln_3"
- "Net_Calc_Watts_Ln_1"
- "Net_Calc_Watts_Ln_2"
- "Net_Calc_Watts_Ln_3"
- "Net_Calc_Watts_Tot"
- "CF_Ratio"
- "Meter_Status_Code_A"
- "Meter_Status_Code_B"
- "Meter_Status_Code_C"
value_template: "OK"
scan_interval: 60
Jameson
EKM METERING
http://www.ekmmetering.com
831.425.7371
Post Reply