*** There is now an Add-On for the Kohler Generator. ***
I have been playing around with Home Assistant (HA). Briefly, it is a management system for IoT and other devices that is hosted internally (on a Raspberry Pi in my ham shack). With Home Assistant, it is natural to look for all the things that are already programmed to connect with and check their status. I already have the following items in Home Assistant:
- Lutron Caseta Switches
- Wemo Switches
- Rain Machine Sprinkler Controller
- Honeywell WiFI Thermostats
- Pi-Hole
- SensorPush temperature and humidity monitors
- Insteon Plugs
- Samsung TVs
- HP LASERJet printer
- Ring Doorbell
- Synology DSM
- UniFi UDM Pro
One device I was curious if I could connect is our Kohler 24KW generator. The Kohler generator has an Ethernet jack on it which is connected into one of my isolated VLANs (lest someone open the generator and try to get into my network–same idea for the wired Ring doorbell). Kohler uses its own cloud service called OnCue Plus to collect state on the generator and control it. In researching this, I found a page that described the authentication call followed but the call to get the state of the generator. This was posted by Russell Salerno in March of 2018. It seems easy enough to write some code for HA to periodically poll this API. Of course, getting into the details of this to control the generator will require some reverse engineering as I do not believe Kohler publishes an API.
The site I found the info was here: https://community.openhab.org/t/looking-for-an-easy-binding-template-to-write-a-binding-for-kohler-generator/42120/2
I am recreating the data here in case it disappears:
The protocol is straightforward:
Step 1: Get session key if none is available.
https://api.kohler.com/krm/v1/users/connect?username=YOUR_USERNAME&password=YOUR_PASSWORD&dateformat=m-d%20g:i%20A
This returns some json elements, one of which is a session key. Use the session key to get current status of the generator.
Step 2: Get generator status using session key
https://api.kohler.com/krm/v1/devices/listdevices?sessionkey=SESSIONKEY_FROM_STEP_ONE¶meters=[4,11,60,69,102,91,114,115,549]&events=active&showperipheraldetails=true
The numbers are data elements that correspond to items of interest. A complete table of these items is here (again from Russell’s post).
I will update this post as I make some progress and learn how to code up my own Home Assistant integration.
Be First to Comment