Smart Home Energy Monitor by Fusion Energy

Is there any way to prevent software from automatically pushing updates?

There is no such setting as I am aware of. I guess that the firmware update may require your having an account. After you set up the local MQTT, you can go into the app and delete your account on the Profile page. Then delete the app. It should prevent it from being updated. Additionally you can also block the device from accessing Internet.

Anyone keen to help create an ESPHome replacement firmware for this?

I have so far worked out that there is a ARM M4 that handles all the sensor readings and it just streams that data to the ESP32 that handles all the networking communications

The ARM MCU streams via UART to the ESP32 with JSON data

This is a capture of my unit with nothing attached

{
  "data": [
    { "I": 555 },
    {
      "Ch": "00",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 121,
      "Am": "000",
      "Vrms0": "00006383689",
      "Vrms1": "00005229861",
      "Vrms2": "00005229466",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.836,
      "v0": 714.043
    },
    {
      "Ch": "01",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 120,
      "Am": "000",
      "Vrms0": "00006383080",
      "Vrms1": "00005240202",
      "Vrms2": "00005239521",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.975
    },
    {
      "Ch": "02",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 126,
      "Am": "000",
      "Vrms0": "00006377724",
      "Vrms1": "00005234196",
      "Vrms2": "00005233335",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.376
    },
    {
      "Ch": "03",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 125,
      "Am": "000",
      "Vrms0": "00006382713",
      "Vrms1": "00005231384",
      "Vrms2": "00005231002",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.934
    },
    {
      "Ch": "04",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 125,
      "Am": "000",
      "Vrms0": "00006384034",
      "Vrms1": "00005228577",
      "Vrms2": "00005228256",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.836,
      "v0": 714.082
    },
    {
      "Ch": "05",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 124,
      "Am": "000",
      "Vrms0": "00006380755",
      "Vrms1": "00005229577",
      "Vrms2": "00005229793",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.715
    },
    {
      "Ch": "06",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 123,
      "Am": "000",
      "Vrms0": "00006380203",
      "Vrms1": "00005233772",
      "Vrms2": "00005232710",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.653
    },
    {
      "Ch": "07",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": -58,
      "Am": "000",
      "Vrms0": "00006384919",
      "Vrms1": "00005235943",
      "Vrms2": "00005235472",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 714.181
    },
    {
      "Ch": "08",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 121,
      "Am": "000",
      "Vrms0": "00006388745",
      "Vrms1": "00005235476",
      "Vrms2": "00005235091",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 714.609
    },
    {
      "Ch": "09",
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": -60,
      "Am": "000",
      "Vrms0": "00006382935",
      "Vrms1": "00005235885",
      "Vrms2": "00005235537",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.959
    },
    {
      "Ch": 10,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 127,
      "Am": "000",
      "Vrms0": "00006375604",
      "Vrms1": "00005232206",
      "Vrms2": "00005231935",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.139
    },
    {
      "Ch": 11,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 126,
      "Am": "000",
      "Vrms0": "00006374869",
      "Vrms1": "00005222799",
      "Vrms2": "00005222288",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.836,
      "v0": 713.057
    },
    {
      "Ch": 12,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 125,
      "Am": "000",
      "Vrms0": "00006378179",
      "Vrms1": "00005225304",
      "Vrms2": "00005224852",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.836,
      "v0": 713.427
    },
    {
      "Ch": 13,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 124,
      "Am": "000",
      "Vrms0": "00006381409",
      "Vrms1": "00005229667",
      "Vrms2": "00005229673",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.788
    },
    {
      "Ch": 14,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 123,
      "Am": "000",
      "Vrms0": "00006377880",
      "Vrms1": "00005229519",
      "Vrms2": "00005229095",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.394
    },
    {
      "Ch": 15,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 122,
      "Am": "000",
      "Vrms0": "00006375522",
      "Vrms1": "00005227354",
      "Vrms2": "00005227236",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.130
    },
    {
      "Ch": 16,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 121,
      "Am": "000",
      "Vrms0": "00006382353",
      "Vrms1": "00005231418",
      "Vrms2": "00005231084",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.894
    },
    {
      "Ch": 17,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 120,
      "Am": "000",
      "Vrms0": "00006382730",
      "Vrms1": "00005240518",
      "Vrms2": "00005239979",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.838,
      "v0": 713.936
    },
    {
      "Ch": 18,
      "M": 255,
      "I": "xxx",
      "P": "xxx",
      "angle": 127,
      "Am": "000",
      "Vrms0": "00006379519",
      "Vrms1": "00005235614",
      "Vrms2": "00005235087",
      "Irms": "0000000000000",
      "rp[m]": "00000000000000000",
      "rp_adj[m]": "00000000000000000",
      "rp_wh": "000.0",
      "adj": 0.000,
      "av": 0.837,
      "v0": 713.577
    },
    {
      "G0": {
        "RMS": [ 597.49, 597.49, 597.49 ],
        "Angle": [ 0.00, -12.97, -12.98 ]
      },
      "Channels": [
        {
          "Id": 0,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 1,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 2,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 3,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 4,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 5,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 6,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 7,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 8,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 9,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 10,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 11,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 12,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 13,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 14,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 15,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 16,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 17,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        },
        {
          "Id": 18,
          "rawflg": 0,
          "flg": 1,
          "M": 255,
          "R": 0.00,
          "Ad": 0.00,
          "Pa": 0.00,
          "E": 0.00
        }
      ],
      "Frequency": 50.04,
      "buf_size": 160,
      "match_en": 1,
      "match_start": 0,
      "ts": 129936
    }
  ]
}
3 Likes

I figured it used UART based on the traces but hadn’t had a chance to probe it since I installed the device. I’m interested in doing an ESPhome firmware. I started a thread on Digiblur’s Discord of some of my findings if you want to help out. I have Esp32 dev experience but haven’t written a custom ESPhome component yet.

1 Like

I’m looking at replacing my aging Neurio device, researching options, and stumbled on this device.

Any reason to use the Fusion Energy device over the Refoss device?

It is currently priced just a bit above the Fusion Energy device but advertises local HA support avoiding having to do all the extra steps?

I know it’s a few bucks more but native local HA support without hours of config is worth $50 to me.

1 Like

Completely agree with that last statement. It was a little hard to create an 1100 line yaml for two devices. The device you linked also supports cloud free, and has a lightning deal right now.

The Refoss isn’t anymore cloud free than Fusion. Both require you to download an app and create an account to set it up.

My meter reading voltage at around 170V… any idea why this happen?

Check if the antenna touches any metal part of the panel. I heard that it would give you weird readings.

If I were you I would choose ALL my circuits. Just because you only have 16 circuits doesn’t mean you can only chose 16 wires. As long as they are on the same phase you can run a couple of wires through one CT clamp and it will capture data of more than 1 circuit at a time.

I actually have 36 breakers and 25 is after combined some of them. Can I get it down to 16? Probably, but would lose the meaning of some of the readings. I just chose to skip those circuits with low usage. My data from the last couple months shows that I can capture 98-99% of all usage with the 16 clamps. Not bad.

I copied from this and the mqtt sensors are working great. I was expecting to see the utility_meter.yaml stuff making everything show up in the energy tab, but I see nothing new there. Did I do something wrong, or am I expecting the wrong thing?

The utility meters only show up at the Helpers tab. For the Energy dashboard you need to open the Energy Configuration and add the Sem Meter total energy to the grid and the circuits to the individual devices. See attached screenshots.


1 Like

Can you hook up more than one unit?

Yes. Each SEM-Meter has its own MQTT topic based on SN (based on the Bluetooth Mac address). So you can set up as many as you want. In home assistant you can combine the totals using templates.

I’m just going through this topic after I bought and configured this SEM meter (and loving it). Just an FYI: if you have clamps short: you also can combine multiple circuits in one clamp. I had over 30 circuits and was able to combine them all with 16 clamps. I’ve sent back & forth with support to make sure how it works. Basically just make sure the clamps you combine are on the same phase. Also highly recommend the energy plus card & power flow plus card to have a nice realtime overview of current power flow (& history).

1 Like

finally got around to swapping over to your yaml, with some personal preference adjustments, and wanted to say thanks again for sharing! Love the hourly, daily etc utility sensors!

Is this snip-it in addition to your original script? Or did you change only the one for ā€œpowerā€? Can you post your entire modified script? I will understand it better that way. Thanks.

I make a blueprint to help add the information from the meter into Home Assistant. It is based on this one: Smart Home Energy Monitor by Fusion Energy - #14 by peterxian by @peterxian

In addition to the blueprint, it also has instructions on how to setup MQTT.

5 Likes

Thanks, @eyal0 — you beat me to it! This is the perfect use of a blueprint and I was planning on making one but just haven’t had the time. Great work and fantastic write-up. Highly recommend people use this method going forward.

1 Like