Monitor your Generac generator with Home Assistant

I deliberately chose to normalize the value to watts, since Home Assistant has a well-known “unit of measurement” in watts. This has some downstream implications for me, at least, since I use the influxdb component to feed a bunch of entities into the influxdb time series database. In that DB, power is normalized as “W” units.

If all you’re using that for is a cosmetic display, it likely doesn’t matter at all. Just thought I’d pass along the rationale.

I poked around, and it looks like that number comes from a configuration value that’s initially set up during installation when genmon does a serial number lookup to find out what kind of generator you have. I just looked up my model number on the generac site, and it comes up as a 22kW unit. I’ll see if I can figure out the serial number result. Just curious…

I added a few more entities, including fetching the generator run time (in hours). I updated the very first post of this thread with the current version of my YAML configuration. Hopefully this will also avoid those new to all this from going down the original path of using the REST-based sensors I used initially.

Hi just wondering the status of this project since the thread hasnt been updated in almost a year. I just ordered a 26kw standby generator (have to wait 6 months im told!) and was hoping there was an integration for it. Was disappointed there wasnt esspecially since I saw kohler was added in the last update. (I really hope i made the right decision going with generac over kohler!) Hoping this still works! I’m assuming I am getting the wifi link system because I was told i am getting one that doesnt have a monthly fee.

Look at the GitHub link in the very first post.
Development is still active.
I only have a little 22KW Generator compared to your 26. So yours will be liquid cooled.
You will have to look to see if your model is supported. I know Generac made a firmware ‘update’ that tried to disable 3rd party products, I think this has been overcome. I would not get a generator with a cell transmitter built in, this give you no protection from forced updates.

The genmon project for some time now has worked around the “encryption” scheme they’ve used on the MODBUS interface that software relies upon. That doesn’t affect what’s going on here on the Home Assistant side, which is just a bunch of MQTT-based entities.

There’s not been much activity as the Home Assistant end of things is largely a solved problem. I’ve not tried to go through the process of creating a third-party “integration” since just using the existing MQTT-based entities insulates me from any internal API changes that Home Assistant might have over time.

Thanks, I havent had time to read this thread in detail but I did see reference to working around their security, my biggest concern was they shut down this “hack”. glad to hear its still working, hopefully whatever method is being used hasnt been patched in the latest versions? It says it works for:

nexus and evolution v1 and 2, hopefully i dont end up with v3 lol.

Has anyone tried parsing the outage log?
/generator/Outage/Outage Log

When I add that mqtt entity, it never gets set in HA but shows up fine monitoring the mqtt side. Was hoping to make a template to parse the comma separated list.

I have a variant that heavily builds on @lmamakos’s template (thank you very much!) but makes some changes:

  • newer-style yaml
  • device_class and icon set
  • Uses JSON numerics only (this avoids extra string parsing in HA)
  • Removed automations
  • Change Battery Voltage Raw to just Battery Voltage (it was stable enough for me)

Rather than have a Raspberry Pi outside (and worry about EMF, temperature, etc), I setup an ESP32 (via esphome) to act as an RS232-Wifi bridge, and run genmon on a VM on a server inside.

If you’re interested this setup is fully documented at https://github.com/gregmac/Genmon-ESP32-Serial-Bridge

5 Likes

@gregmac - this looks like a very nice bit of work! Great idea to remote the generator serial port using an ESP32 since you can get enough power to run it from the controller. I went to way more effort to build an isolated RS-232 serial interface to avoid ground loops with the Pi powered from the starter battery.

I was just thinking about updating my configuration to the “new” MQTT sensor types, and you’ve saved me a bit of work to figure it out. Thanks for posting this, I’m sure it will be useful for many people.

This is incredibly cool, I need to check this out. Especially with Pi boards so hard to find.

I went through this thread today and was not able to get any of the custom sensors to come in until I switched to @gregmac generator.yaml that he has as part of his project. I am running the very latest Home Assistant, and I think the deprecated format in @lmamakos example was not working at all. Very odd since it that format is deprecated, not incorrect configuration, but that was my experience.

I’m running version 2022.06.6 of Home Assistant and, of course, my configuration as posted in the “old” MQTT sensor format and it continues to work for me. If you copied my configuration, you’d need to modify the MQTT topics in the sensor definitions; the topics in my configuration are non-standard to reflect the convention that I use for MQTT topics in my home.

Also, my configuration pre-dates the “JSON Numerics” option in genmon, so it parses out the numbers from the more verbose format. I think I should also work with JSON Numerics turned on, but I’ve not tested that specifically.

I’m really glad to see other work being done by @gregmac and that he’s figured out the newer-style MQTT sensors; I’ll have to steal some of that work! Great that we’re able to each share and learn from each others work in this community.

1 Like

If you copied my configuration, you’d need to modify the MQTT topics in the sensor definitions;

Yeah, @bstempien, I think this is most likely cause of “not working” you’d have. You either need to remove 19916/ from all the state topics in the yaml (eg, 19916/generator/Outage/Status), or you need to add 19916 as the Root Topic in genmon.

In my yaml config I removed the prefix (eg generator/Outage/Status) and in genmon left the Root Topic blank (which is default).

If you have trouble, I highly recommend something like http://mqtt-explorer.com/ for troubleshooting. It lets you easily see the data and topic names.


Also, my configuration pre-dates the “JSON Numerics” option in genmon, so it parses out the numbers from the more verbose format.

Ahh, makes sense @lmamakos; I was kind of curious why you went that path.

For anyone doing a new install I’d recommend just sticking to JSON Numerics, as it’s simpler (removes the need for string parsing, which is fragile) and there’s really no benefit to having it off.

I am getting a Champion 14kW standby whole house generator and I know that it connects to a phone for setting up certain parameters and probably to connect with the mother ship.

I think it has an internal webserver because no APP is needed but rather you use our phone to connect to its network

Can anyone share steps on determining if it has MODBUS?

If it has an internal webserver, then ideally you can pull the data with a REST API.
When you get it, and go to the generator webpage you will be able to determine if it is setup with JSON by looking at the web page with DevTools (name depends on browser)

MODBUS is just a transport for getting and setting data from enumerated “registers”. Different bits of hardware use MODBUS in different ways, and the register use isn’t standardize. Even if it does have MODBUS, it doesn’t mean that it’ll work with the genmon software.

You’ll need to investigate that with the other software project to verify. This page Appendix N Genmon Supporting Other Controller Types · jgyates/genmon Wiki · GitHub might give a hint on how all this works.

Slightly off-topic, but tagging on as this group has the expertise on standby generators. First, thanks for posting your monitoring dashboards - definitely going to borrow some of the ideas.

Second: I have a Kohler, so integration was easy thanks to the Kohler OnCue integration, and I have a rudimentary dashboard showing transfer switch state, % load, and frequency. Now that I have the data, I want to use it for automating things, like turning off baseboard heaters etc. when we go on generator power. Writing automations would be pretty straightforward, but before I do that, is anyone aware of a blueprint for standby power monitoring and load management? Or is this my opportunity to finally learn blueprinting?

I could envision a blueprint where you specify some entities that you want to switch off (or possibly on) as soon as the transfer switch flips (maybe after a delay to prevent short-cycling a freezer), and the ability to specify other generator parameters like % real load> x% or frequency < xHz that would turn off additional entities, along with push messages for such events.

Has anyone done this already? Thoughts on its usefulness?

Personally I would do your automations in Node-Red. I was reluctant to go down the NR route but finally bit the bullet a few months ago, and do not regret it. I was able to combine 17 different lighting automations in HR into one flow in NR. NR makes it easier to see everything in one place, if you take the time to set it up.

For setting up your automations, it depends on what sensors you have.
The most important, from what I can see, is the ‘transfer switch state’ which would equate to a ‘we have a problem’ state or ‘power outage’ state.

My generator starts 15 seconds after loss of power and switches over to the running generator when it is ready, after power restored and stable for 1 min it transfers back to line and shuts down the generator. I have an input of ‘transfer switch state’ but also of ‘power outage’ which will indicate slightly before the transfer switch.

If any of this integration of yours to your generator utilizes any cloud based data, then it will not always work; if it is local then you should be golden.

When I lose power, I also lose water. Water is from separate power than my house, so can not power from my generator. I have an 1100 gal water tank that I have ‘automated’ to cover these situations. Power goes out, generator starts, 5 mins after power outage my shallow well pump starts for the tank, 30 seconds after the pump starts then a valve opens to supply water to the house (check valves in place to prevent circulation and sending back towards the ‘normal’ supply). After normal power is restored then after a minute the valve shuts and 30 seconds later my pump powers off.

Things of note: you HA instance will need to be on a UPS and so will any WiFi routers or any other device you use to monitor or control your automatons. The actual devices you want to control don’t need to be off a UPS but the backbone absolutely does unless you don’t mind the delay in HA restarting any everything reconnecting (then you need to account for that in any automation).

I also have some lights that turn back on after power outages, and I have an automation to turn them off after a period of time unless there is motion detected in the area where they are.

It is also extremely important to note that if you have ‘smart plugs’ that you are using to monitor equipment that you have there power restore state set to what is appropriate for that device. For example my deep freezer is on a smart plug and on power restoration it returns to an ON state. Fans on the other had stay off until manually reset; I could (and do) automate some restoration after return to ‘normal’ power but there are reasons to wait to manually restore some items (depends on your circumstances).

I also send a notification to phones (mine and wife’s) that power is out and status of water. So if there is just a power problem and we are not home and the internet still works then we get notified. I do have a sensor for internet status but have not made an automation for notification when internet is restored (I did forget about this, so I might work on that tomorrow).

So, I did not actually answer ANY of your questions, BUT I did give you something to ponder.

Blueprints make it easy to share and generalize Home Assistant native automations. I think of them as a wrapper around automations that allow you to parameterize them. I think that most of the value comes from figuring out what you’d want an automation to actually do, and iterate on that. When you’re happy with it, comes the time to wrap it up inside a blueprint to make it easier for others to adopt. Or just publish the YAML for you automation somewhere, which would contain the useful aspects that others can learn from.

I’ve only a few automations to turn on and off various lights (each with “effects” specific to the light entity) as a cue that the generator is (still) running, since I often can’t hear it. I’ve not tried to do anything clever for load shedding and the like. In my case, the generator is sized for the maximum load, though I’d prefer to not needlessly load it higher than required, and… propane is expensive! Mostly this means for us that during a power outage, maybe don’t run the electric clothes dryer or both of the electric wall ovens…

Thanks - some good points. I already have my network stack on a UPS so it can ride out the switchover from grid to generator, and HA will get its own UPS. I expect at some point I’ll add UPS monitoring to HA.

I’m less concerned about the internet - it’s historically more reliable than our power. OnCue is a cloud service, but the app seems to show the generator state in nearly real time, based on a recent test run.

However, the OnCue HA integration is a cloud integration, and unfortunately it seems to poll their cloud API infrequently. My generator had been running its test for a while, and the OnCue app was showing the test data, but the HA integration didn’t show the text until I got impatient and reloaded it. So, my idea of shedding load at cutover may need a re-think, possibly using other events to trigger it.

Good tip also about the power failure recovery. I generally have things restore to last state, but you don’t want that if the power is chattering, especially for pumps and compressors (e.g., a freezer). An automation to do an orderly restart after a wait is probably the way to go.