Monitor your Generac generator with Home Assistant

Is there a way from Home Assistant that I can turn on the generator remotely?

Anyone ever tried to hook the smartgen controllers? I have a Champion 12kW gasoline generator with manual start. I want to hook a smartgen controller to be able to make it auto-start. There is a LINK port on the smatgen controller, so I wondered if anyone tried to use it in genmon?

Could we just use GenMon’s “rest” status to get the data into HA?

Eg if I use this web address:

192.168.xxx.xxx/cmd/status_json

I get back

{"Status": [{"Engine": [{"Switch State": "Auto"}, {"Engine State": "Off - Ready"}, {"Battery Voltage": "13.70 V"}, {"RPM": "0 "}, {"Frequency": "0.00 Hz"}, {"Output Voltage": "0 V"}, {"Output Current": "0.00 A"}, {"Output Power (Single Phase)": "0.00 kW"}, {"Active Rotor Poles (Calculated)": "0 "}]}, {"Line": [{"Utility Voltage": "242 V"}, {"Utility Max Voltage": "250 V"}, {"Utility Min Voltage": "216 V"}, {"Utility Threshold Voltage": "132 V"}]}, {"Last Log Entries": {"Logs": {"Alarm Log": "10/08/23 12:39:18 Charger Missing AC : Alarm Code: 0000", "Service Log": "11/07/23 10:39:46 Schedule A Serviced ", "Run Log": "18/01/24 14:50:13 Stopped - Auto "}}}, {"Time": [{"Monitor Time": "Sunday January 28, 2024 07:32:56"}, {"Generator Time": "Sunday January 28, 2024 07:32"}]}]}

I’m not sure of the correct synax in configuration.yaml however, but something like?


- platform: rest
  - authentication: basic
    username: "XXXX"
    password: "XXXX"
    scan_interval: 60
    resource: http://192.168.XXX.XXX/cmd/status_json
    sensor:
      - name: "Engine"
        json_attributes_path: "$.response.system"
        value_template: "OK"
        json_attributes:
          - "Switch State"
          - "Engine State"
etc

I originally did something like this; however, went after it a slightly different way with the rest sensor. See Need help storing URL for use in generic IP camera (over 255 chars) - #2 by lmamakos for a reference to that. That’s been more than a couple years ago; perhaps the rest sensor thing has changed somewhat since then to allow multiple sensors to be evaluated for each JSON response? I don’t know if that was a thing at the time, or I just missed it.

Yeah, Someone more knowledgable than me on YAML would need to advise on the syntax and what is possible.

I do see in my configuration.yaml file that I have multiple rest sensors being used for my solar system (enphase).

Is anyone running Genmon on a Liquid Cooled Generac? I have a 2023 model with Mitsubishi engine…trying to sort out the connections on the rear of the controller.

I’m having the entities show as unavailable constantly using the 0.6 version of the script. It works initially, and then overtime they should unavailable. Genmon seems to only be making some of the entries persistent in mosquito even though I have it set to save data.

(but they’re still available in mqtt explorer)

Anyone have any ideas as to how to get these to stay available in home assistant and not freak out?

Circling back to this topic. Has anyone experienced the Custom-Template-Card yaml posted for the gorgeous genmon card breaking home assistant add card function? On recent updates I’ve had to remove this because I’ve lost the function to use the add card gui. The Custom-Template-Card was breaking as of Core 2024.10.4.

type: custom:config-template-card
variables:
  - states['sensor.genmon_version'].state
entities:
  - null
card:
  type: entities
  show_header_toggle: "off"
  style: |
    .card-header {
      padding: 0px 0px 0px 0px !important;
    }
  entities:
    - type: section
      label: ${ 'Generac Evolution - Pi 3 - Raspian - Genmon ' + vars[0] }
    - type: custom:hui-element
      card_type: vertical-stack
      cards:
        - type: horizontal-stack
          cards:
            - type: picture
              style: |
                ha-card { 
                    --paper-card-background-color: 'rgba(0, 0, 0, 0.0)';
                    --ha-card-background: "rgba(0, 0, 0, 0.0)";
                    --ha-card-box-shadow: 'none';
                }
              image: >-
                https://genstarservice.com/wp-content/uploads/2024/01/generac-generator-transparent.png
            - type: vertical-stack
              cards:
                - type: custom:button-card
                  layout: icon_name_state2nd
                  show_icon: true
                  show_state: true
                  styles:
                    grid:
                      - grid-template-columns: 50px auto
                    icon:
                      - padding: 0px 0px
                      - height: 20px
                      - width: 30px
                    card:
                      - "--ha-card-background": rgba(0, 0, 0, 0.0)
                      - "--ha-card-box-shadow": none
                    state:
                      - padding: 0px 10px
                      - justify-self: start
                      - font-family: Roboto, sans-serif
                      - font-size: 15px
                    name:
                      - padding: 0px 10px
                      - font-size: 15px
                      - justify-self: start
                      - color: var(--secondary-text-color)
                  entity: sensor.genmon_mon_uptime
                  name: Uptime
                  icon: mdi:clock-outline
                - type: horizontal-stack
                  cards:
                    - type: custom:button-card
                      layout: icon_name_state2nd
                      show_icon: true
                      show_state: true
                      styles:
                        grid:
                          - grid-template-columns: 25px auto
                        icon:
                          - padding: 0px 0px
                          - height: 30px
                          - width: 30px
                        card:
                          - "--ha-card-background": rgba(0, 0, 0, 0.0)
                          - "--ha-card-box-shadow": none
                        state:
                          - padding: 0px 10px
                          - justify-self: start
                          - font-family: Roboto, sans-serif
                          - font-size: 15px
                        name:
                          - padding: 0px 10px
                          - justify-self: start
                          - color: var(--secondary-text-color)
                      entity: sensor.genmon_mon_cpu_temperature_raw
                      name: Temp
                      icon: mdi:thermometer
                    - type: custom:button-card
                      layout: icon_name_state2nd
                      show_icon: true
                      show_state: true
                      styles:
                        grid:
                          - grid-template-columns: 25px auto
                        icon:
                          - padding: 0px 0px
                          - height: 30px
                          - width: 30px
                        card:
                          - "--ha-card-background": rgba(0, 0, 0, 0.0)
                          - "--ha-card-box-shadow": none
                        state:
                          - padding: 0px 10px
                          - justify-self: start
                          - font-family: Roboto, sans-serif
                          - font-size: 15px
                        name:
                          - padding: 0px 10px
                          - justify-self: start
                          - color: var(--secondary-text-color)
                          - font-size: 13px
                      entity: sensor.genmon_mon_load
                      name: Pi CPU
                      icon: mdi:cpu-64-bit
                - type: horizontal-stack
                  cards:
                    - type: custom:button-card
                      layout: icon_name_state2nd
                      show_icon: true
                      show_state: true
                      styles:
                        grid:
                          - grid-template-columns: 25px auto
                        icon:
                          - padding: 0px 0px
                          - height: 30px
                          - width: 30px
                        card:
                          - "--ha-card-background": rgba(0, 0, 0, 0.0)
                          - "--ha-card-box-shadow": none
                        state:
                          - padding: 0px 10px
                          - justify-self: start
                          - font-family: Roboto, sans-serif
                          - font-size: 15px
                        name:
                          - padding: 0px 10px
                          - justify-self: start
                          - color: var(--secondary-text-color)
                          - font-size: 13px
                      entity: sensor.genmon_wlan_signal_level
                      name: WiFi
                      icon: mdi:gauge
                    - type: custom:button-card
                      layout: icon_name_state2nd
                      show_icon: true
                      show_state: true
                      styles:
                        grid:
                          - grid-template-columns: 25px auto
                        icon:
                          - padding: 0px 0px
                          - height: 30px
                          - width: 30px
                        card:
                          - "--ha-card-background": rgba(0, 0, 0, 0.0)
                          - "--ha-card-box-shadow": none
                        state:
                          - padding: 0px 10px
                          - justify-self: start
                          - font-family: Roboto, sans-serif
                          - font-size: 15px
                        name:
                          - padding: 0px 10px
                          - justify-self: start
                          - color: var(--secondary-text-color)
                      entity: sensor.genmon_generator_battery_raw
                      name: Battery
                      icon: mdi:battery
        - type: horizontal-stack
          cards:
            - type: custom:canvas-gauge-card
              card_height: 100
              entity: sensor.genmon_outage_utility_voltage
              name: ""
              gauge:
                type: radial-gauge
                title: Pepco
                width: 100
                height: 100
                minValue: 0
                maxValue: 280
                startAngle: 40
                ticksAngle: 280
                valueBox: true
                units: Vac
                majorTicks:
                  - 0
                  - 28
                  - 56
                  - 84
                  - 112
                  - 140
                  - 168
                  - 196
                  - 224
                  - 252
                  - 280
                minorTicks: 10
                strokeTicks: true
                highlights:
                  - from: 0
                    to: 218
                    color: rgba(234, 51, 36, .75)
                  - from: 218
                    to: 228
                    color: rgba(255, 255, 85, .75)
                  - from: 228
                    to: 252
                    color: rgba(104, 225, 67, .75)
                  - from: 252
                    to: 262
                    color: rgba(255, 255, 85, .75)
                  - from: 262
                    to: 280
                    color: rgba(234, 51, 36, .75)
                borders: "no"
                needleType: arrow
                needleWidth: 4
                needleCircleSize: 7
                needleCircleOuter: true
                needleCircleInner: false
                animationDuration: 1500
                animationRule: linear
                valueBoxBorderRadius: 10
                colorValueBoxRect: "#222"
                colorValueBoxRectEnd: "#333"
                valueDec: 0
                valueInt: 0
            - type: custom:canvas-gauge-card
              card_height: 100
              entity: sensor.genmon_generator_frequency
              name: ""
              gauge:
                type: radial-gauge
                title: Generator
                width: 100
                height: 100
                minValue: 0
                maxValue: 70
                startAngle: 40
                ticksAngle: 280
                valueBox: true
                units: Hz
                majorTicks:
                  - 0
                  - 10
                  - 20
                  - 30
                  - 40
                  - 50
                  - 60
                  - 70
                minorTicks: 10
                strokeTicks: true
                highlights:
                  - from: 0
                    to: 57
                    color: rgba(234, 51, 36, .75)
                  - from: 57
                    to: 58.5
                    color: rgba(255, 255, 85, .75)
                  - from: 58.5
                    to: 61.5
                    color: rgba(104, 225, 67, .75)
                  - from: 61.5
                    to: 63
                    color: rgba(255, 255, 85, .75)
                  - from: 63
                    to: 70
                    color: rgba(234, 51, 36, .75)
                borders: "no"
                needleType: arrow
                needleWidth: 4
                needleCircleSize: 7
                needleCircleOuter: true
                needleCircleInner: false
                animationDuration: 1500
                animationRule: linear
                valueBoxBorderRadius: 10
                colorValueBoxRect: "#222"
                colorValueBoxRectEnd: "#333"
                valueDec: 0
                valueInt: 0
            - type: custom:canvas-gauge-card
              card_height: 100
              entity: sensor.genmon_generator_output_voltage
              name: ""
              gauge:
                type: radial-gauge
                title: Generator
                width: 100
                height: 100
                minValue: 0
                maxValue: 280
                startAngle: 40
                ticksAngle: 280
                valueBox: true
                units: Vac
                majorTicks:
                  - 0
                  - 28
                  - 56
                  - 84
                  - 112
                  - 140
                  - 168
                  - 196
                  - 224
                  - 252
                  - 280
                minorTicks: 10
                strokeTicks: true
                highlights:
                  - from: 0
                    to: 218
                    color: rgba(234, 51, 36, .75)
                  - from: 218
                    to: 228
                    color: rgba(255, 255, 85, .75)
                  - from: 228
                    to: 252
                    color: rgba(104, 225, 67, .75)
                  - from: 252
                    to: 262
                    color: rgba(255, 255, 85, .75)
                  - from: 262
                    to: 280
                    color: rgba(234, 51, 36, .75)
                borders: "no"
                needleType: arrow
                needleWidth: 4
                needleCircleSize: 7
                needleCircleOuter: true
                needleCircleInner: false
                animationDuration: 1500
                animationRule: linear
                valueBoxBorderRadius: 10
                colorValueBoxRect: "#222"
                colorValueBoxRectEnd: "#333"
                valueDec: 0
                valueInt: 0
        - type: horizontal-stack
          cards:
            - type: custom:canvas-gauge-card
              card_height: 100
              entity: sensor.genmon_generator_output_power
              name: ""
              gauge:
                type: radial-gauge
                title: Generator
                width: 100
                height: 100
                minValue: 0
                maxValue: 23000
                startAngle: 40
                ticksAngle: 280
                valueBox: true
                units: kW
                majorTicks:
                  - 0
                  - 3
                  - 6
                  - 9
                  - 12
                  - 15
                  - 18
                  - 20
                  - 23
                minorTicks: 10
                strokeTicks: true
                highlights:
                  - from: 0
                    to: 15000
                    color: rgba(104, 225, 67, .75)
                  - from: 15000
                    to: 18500
                    color: rgba(255, 255, 85, .75)
                  - from: 18500
                    to: 23000
                    color: rgba(234, 51, 36, .75)
                borders: "no"
                needleType: arrow
                needleWidth: 4
                needleCircleSize: 7
                needleCircleOuter: true
                needleCircleInner: false
                animationDuration: 1500
                animationRule: linear
                valueBoxBorderRadius: 10
                colorValueBoxRect: "#222"
                colorValueBoxRectEnd: "#333"
                valueDec: 0
                valueInt: 0
            - type: custom:canvas-gauge-card
              card_height: 100
              entity: sensor.genmon_generator_rpm
              name: ""
              gauge:
                type: radial-gauge
                title: Generator
                width: 100
                height: 100
                minValue: 0
                maxValue: 4000
                startAngle: 40
                ticksAngle: 280
                valueBox: true
                units: RPM
                majorTicks:
                  - 0
                  - ""
                  - ""
                  - ""
                  - ""
                  - 2000
                  - ""
                  - ""
                  - ""
                  - 3600
                  - 4000
                minorTicks: 3
                strokeTicks: true
                highlights:
                  - from: 0
                    to: 3500
                    color: rgba(234, 51, 36, .75)
                  - from: 3500
                    to: 3550
                    color: rgba(255, 255, 85, .75)
                  - from: 3550
                    to: 3650
                    color: rgba(104, 225, 67, .75)
                  - from: 3650
                    to: 3750
                    color: rgba(255, 255, 85, .75)
                  - from: 3750
                    to: 4000
                    color: rgba(234, 51, 36, .75)
                borders: "no"
                needleType: arrow
                needleWidth: 4
                needleCircleSize: 7
                needleCircleOuter: true
                needleCircleInner: false
                animationDuration: 1500
                animationRule: linear
                valueBoxBorderRadius: 10
                colorValueBoxRect: "#222"
                colorValueBoxRectEnd: "#333"
                valueDec: 0
                valueInt: 0
            - type: custom:canvas-gauge-card
              card_height: 100
              entity: sensor.genmon_generator_battery_raw
              name: ""
              gauge:
                type: radial-gauge
                title: Generator
                width: 100
                height: 100
                minValue: 0
                maxValue: 16
                startAngle: 40
                ticksAngle: 280
                valueBox: true
                units: Volts
                majorTicks:
                  - 1
                  - 2
                  - 3
                  - 4
                  - 5
                  - 8
                  - 10
                  - 11
                  - 13
                  - 14.2
                  - 16
                minorTicks: 5
                strokeTicks: true
                highlights:
                  - from: 0
                    to: 11.6
                    color: rgba(234, 51, 36, .75)
                  - from: 11.6
                    to: 12.6
                    color: rgba(255, 255, 85, .75)
                  - from: 12.6
                    to: 14.5
                    color: rgba(104, 225, 67, .75)
                  - from: 14.5
                    to: 14.9
                    color: rgba(255, 255, 85, .75)
                  - from: 15
                    to: 16
                    color: rgba(234, 51, 36, .75)
                borders: "no"
                needleType: arrow
                needleWidth: 4
                needleCircleSize: 7
                needleCircleOuter: true
                needleCircleInner: false
                animationDuration: 1500
                animationRule: linear
                valueBoxBorderRadius: 10
                colorValueBoxRect: "#222"
                colorValueBoxRectEnd: "#333"
                valueDec: 0
                valueInt: 0
        - type: entities
          entities:
            - entity: sensor.genmon_generator_exercise_time
              name: Exercise
              icon: mdi:clock
            - entity: sensor.genmon_generator_last_action
              name: Last Action
              icon: mdi:clipboard-edit-outline
            - entity: sensor.genmon_generator_last_alarm_log
              name: Last Alarm
              icon: mdi:alarm-bell
            - entity: sensor.genmon_outage_status
              name: Last Outage
              icon: mdi:power-plug-off
          style: |
            ha-card { 
                --paper-card-background-color: 'rgba(0, 0, 0, 0.0)';
                --ha-card-background: "rgba(0, 0, 0, 0.0)";
                --paper-item-icon-color: 'var(--text-primary-color)';
                --ha-card-box-shadow: 'none';
            }

type or paste code here

Which looked like this:

BUT it has resulted in being unable to add cards like this:

image

Browser console logs confirmed the Config-Template-Card was breaking HA.

Been looking through this thread and found some questions about using the REST API in Genmon. This is working in my system connected to Genmon on a Generac Guardian 22kw with Evolution 1 controller. I’ve attempted to keep the same unique_id variables from the original scripts so hopefully it doesn’t create new entities in your system.

Simply copy this into your configuration.yaml and restart Home Assistant to create the entities.

Note: I have not tested this while the generator is running so there may be some bugs. I’ll wait for that day to happen to troubleshoot :slight_smile:

Installation Instructions:

  • Add the contents to your configuration.yaml (place at the root node, do not place it under home_assistant:.
  • For each URL, change the check time to your liking. By default it is set at 5 seconds but may need to be increased or shortened depending on your controller, HA horsepower, Genmon server, etc.
  • Change the URL to match your Genmon server. If you have altered the default port, you may need to change that, too.
  • Save and restart Home Assistant (do not do a quick reload, you must fully restart Home Assistant to create the entities).
rest:
  - scan_interval: 5
    resource: http://your.genmon.server:8000/cmd/status_json
    sensor:
      - name: "Engine State"
        unique_id: "63f6e276-be1d-44ad-8a8a-fe4af30bcff8"
        value_template: "{{ value_json.Status[0].Engine[1]['Engine State'] }}"
        icon: mdi:engine
      - name: "Switch State"
        unique_id: "83fd4b02-1b5b-4f0c-8a90-fc7cd102a190"
        value_template: "{{ value_json.Status[0].Engine[0]['Switch State'] }}"
        icon: mdi:electric-switch
      - name: "Battery Voltage"
        unique_id: "713eb4b9-feec-4425-8c83-84a9f486aae7"
        value_template: "{{ value_json.Status[0].Engine[2]['Battery Voltage'] | regex_replace(' V','') }}"
        icon: mdi:car-battery
        device_class: voltage
        unit_of_measurement: "V"
      - name: "Engine RPM"
        unique_id: "f3a8aedd-206b-4e5f-baa9-677496ee8d3c"
        value_template: "{{ value_json.Status[0].Engine[3]['RPM'] }}"
        icon: mdi:gauge
        unit_of_measurement: "RPM"
      - name: "Output Frequency"
        unique_id: "cbdc9c28-5748-4aef-91bc-5b5ec95ed545"
        value_template: "{{ value_json.Status[0].Engine[4]['Frequency'] | regex_replace(' Hz','') }}"
        device_class: frequency
        unit_of_measurement: "Hz"
      - name: "Output Voltage"
        unique_id: "f5f462db-e16d-4596-9bd3-232b70fa5038"
        value_template: "{{ value_json.Status[0].Engine[5]['Output Voltage'] | regex_replace(' V','') }}"
        device_class: voltage
        unit_of_measurement: "VAC"
      - name: "Output Current"
        unique_id: "10e1def6-35fd-4922-932a-90f25abb7f29"
        value_template: "{{ value_json.Status[0].Engine[6]['Output Current'] | regex_replace(' A','') }}"
        device_class: current
        unit_of_measurement: "A"
        icon: mdi:sine-wave
      - name: "Output Current L1"
        unique_id: "a5035e8c-c22b-40d3-8bda-82623a5fc485"
        value_template: "{{ value_json.Status[0].Engine[7]['Current L1'] | regex_replace(' A','') }}"
        device_class: current
        unit_of_measurement: "A"
        icon: mdi:sine-wave
      - name: "Output Current L2"
        unique_id: "a6ab1d65-db44-4b42-b9d8-c64af47fe63b"
        value_template: "{{ value_json.Status[0].Engine[8]['Current L2'] | regex_replace(' A','') }}"
        device_class: current
        unit_of_measurement: "A"
        icon: mdi:sine-wave
      - name: "Output Power (Single Phase)"
        unique_id: "914a4e97-54a0-41e7-bbeb-a256134e5e35"
        value_template: "{{ value_json.Status[0].Engine[9]['Output Power (Single Phase)'] | regex_replace(' kW','') }}"
        device_class: power
        unit_of_measurement: "W"
      - name: "Active Rotor Poles (Calculated)"
        unique_id: "18fb63ce-d3dd-4a7e-ab9b-7d55e66b5f36"
        value_template: "{{ value_json.Status[0].Engine[10]['Active Rotor Poles (Calculated)'] }}"
        icon: mdi:magnet
      - name: "Utility Voltage"
        unique_id: "f565fed6-8a19-49d4-8066-4015c5ca91b1"
        value_template: "{{ value_json.Status[1].Line[0]['Utility Voltage'] | regex_replace(' V','') }}"
        device_class: voltage
        unit_of_measurement: "VAC"
      - name: "Utility Max Voltage"
        unique_id: "84d4759d-8965-48f2-aab3-8dc5b32335ac"
        value_template: "{{ value_json.Status[1].Line[1]['Utility Max Voltage'] | regex_replace(' V','') }}"
        device_class: voltage
        unit_of_measurement: "VAC"
      - name: "Utility Min Voltage"
        unique_id: "0e64fc49-559b-4b12-843e-de85e8413233"
        value_template: "{{ value_json.Status[1].Line[2]['Utility Min Voltage'] | regex_replace(' V','') }}"
        device_class: voltage
        unit_of_measurement: "VAC"
      - name: "Utility Threshold Voltage"
        unique_id: "39fe7155-525e-4f1f-aee8-81faca345897"
        value_template: "{{ value_json.Status[1].Line[3]['Utility Threshold Voltage'] | regex_replace(' V','') }}"
        device_class: voltage
        unit_of_measurement: "VAC"
      - name: "Last Alarm Log"
        unique_id: "8cb64471-9123-48f6-b9be-15c01595981e"
        value_template: "{{ value_json.Status[2]['Last Log Entries'].Logs['Alarm Log'] }}"
      - name: "Last Service Log"
        unique_id: "bce3182a-a525-47dc-937c-8be4e5afc619"
        value_template: "{{ value_json.Status[2]['Last Log Entries'].Logs['Service Log'] }}"
        icon: mdi:history
      - name: "Last Run Log"
        unique_id: "faa2f487-fc30-4e9c-8733-5b27270b3e17"
        value_template: "{{ value_json.Status[2]['Last Log Entries'].Logs['Run Log'] }}"
        icon: mdi:history
  - scan_interval: 5
    resource: http://your.genmon.server:8000/cmd/outage_json
    sensor:
      - name: "Last Outage"
        unique_id: "77f9d298-79ec-493a-b224-4b510769031f"
        value_template: "{{ value_json.Outage[0].Status }}"
        icon: mdi:history
      - name: "System In Outage"
        unique_id: "c052e174-f0a2-4bf0-8351-10cf43099023"
        value_template: "{{ value_json.Outage[1]['System In Outage'] }}"
        icon: mdi:exclamation-thick
      - name: "Startup Delay"
        unique_id: "5d9d09b8-6914-4ceb-b5b9-c3726ab06e10"
        value_template: "{{ value_json.Outage[6]['Startup Delay'] | regex_replace(' s','') }}"
        unit_of_measurement: "seconds"
        icon: mdi:timer
      - name: "Last Outage Log"
        unique_id: "072b8848-ed04-45ea-9467-02753c69b3d6"
        value_template: "{{ value_json.Outage[7]['Outage Log'][0] }}"
        icon: mdi:history
  - scan_interval: 5
    resource: http://your.genmon.server:8000/cmd/maint_json
    sensor:
      - name: "Model"
        unique_id: "33c5f79c-d77a-4dcd-b266-3cf369ced48e"
        value_template: "{{ value_json.Maintenance[0].Model }}"
        icon: mdi:alphabetical-variant
      - name: "Serial Number"
        unique_id: "c110fe7c-a727-4e40-b993-7b7188da51d3"
        value_template: "{{ value_json.Maintenance[1]['Generator Serial Number'] }}"
        icon: mdi:numeric
      - name: "Controller"
        unique_id: "48cb29a2-b307-42a4-9df9-2cb932f6121b"
        value_template: "{{ value_json.Maintenance[2]['Controller Detected'] }}"
        icon: mdi:chip
      - name: "Nominal RPM"
        unique_id: "6c300f58-1d61-48cc-92c9-5fa961f32204"
        value_template: "{{ value_json.Maintenance[3]['Nominal RPM'] }}"
        unit_of_measurement: "RPM"
        icon: mdi:gauge
      - name: "Rated kW"
        unique_id: "bf7cbe92-2b1e-48ca-addd-df963697626c"
        value_template: "{{ value_json.Maintenance[4]['Rated kW'] | regex_replace(' *[Kk]W','') }} "
        device_class: power
        unit_of_measurement: "kW"
      - name: "Nominal Frequency"
        unique_id: "ea8cdbb9-f319-41a4-b432-7deba1e82461"
        value_template: "{{ value_json.Maintenance[5]['Nominal Frequency'] | regex_replace(' Hz','') }}"
        device_class: frequency
        unit_of_measurement: "Hz"
      - name: "Fuel Type"
        unique_id: "a3d35e8b-e1c3-4f18-91b1-ee79b3a326fb"
        value_template: "{{ value_json.Maintenance[6]['Fuel Type'] }}"
        icon: mdi:gas-station
      - name: "Generator Phase Count"
        unique_id: "f2858cac-13ba-4708-9580-0b1b40126bcd"
        value_template: "{{ value_json.Maintenance[7]['Generator Phase'] }}"
        icon: mdi:flash
      - name: "Engine Displacement"
        unique_id: "ab47fb87-007e-489e-93e4-0f2605859cf0"
        value_template: "{{ value_json.Maintenance[8]['Engine Displacement'] | regex_replace(' cc','') }}"
        unit_of_measurement: "cc"
        icon: mdi:engine
      - name: "kW Hours Generated (30 days)"
        unique_id: "9738185a-f27a-453e-9453-946888a24d0c"
        value_template: "{{ value_json.Maintenance[9]['kW Hours in last 30 days'] | regex_replace(' *[Kk]W[Hh]','') }}"
        unit_of_measurement: 'kWh'
        icon: mdi:flash
      - name: "Fuel Used (30 days)"
        unique_id: "65b53337-f347-4266-82da-31fc27965978"
        value_template: "{{ value_json.Maintenance[10]['Fuel Consumption in last 30 days'] | regex_replace(' cubic feet','') }}"
        unit_of_measurement: "cubic feet"
        icon: mdi:gas-station
      - name: "Total Fuel Used"
        unique_id: "8be75305-1874-4fdf-bd17-539bf1d579ee"
        value_template: "{{ value_json.Maintenance[11]['Total Power Log Fuel Consumption'] | regex_replace(' cubic feet','') }}"
        unit_of_measurement: "cubic feet"
        icon: mdi:gas-station
      - name: "Run Hours (30 days)"
        unique_id: "c03930bd-1678-4f22-9822-0748a9151f73"
        value_template: "{{ value_json.Maintenance[12]['Run Hours in last 30 days'] | regex_replace(' [Hh]','') }}"
        device_class: duration
        unit_of_measurement: 'hours'
      - name: "Run Hours (1 year)"
        unique_id: "04285a48-1a96-4ace-86c2-a356c9b888c7"
        value_template: "{{ value_json.Maintenance[13]['Run Hours in the last year'] | regex_replace(' [Hh]','') }}"
        device_class: duration
        unit_of_measurement: "hours"
      - name: "Exercise Time"
        unique_id: "4388bb25-f17d-428f-87f7-f963eef026b2"
        value_template: "{{ value_json.Maintenance[15].Exercise[0]['Exercise Time'] }}"
        icon: mdi:run
      - name: "Service A Due"
        unique_id: "8f9caada-2e90-4cb9-9571-597a27b97a9e"
        value_template: "{{ value_json.Maintenance[16].Service[0]['Service A Due'] }}"
        icon: mdi:calendar-alert
      - name: "Service B Due"
        unique_id: "6ec00786-1eaf-4a58-b97a-57052cc0641c"
        value_template: "{{ value_json.Maintenance[16].Service[1]['Service B Due'] }}"
        icon: mdi:calendar-alert
      - name: "Battery Check Due"
        unique_id: "7f37ec3c-e1c5-4e10-ba9d-f8f15d27a019"
        value_template: "{{ value_json.Maintenance[16].Service[2]['Battery Check Due'] }}"
        icon: mdi:calendar-alert
      - name: "Total Run Hours"
        unique_id: "41c981db-5979-4ee6-b9fb-d1ca44f83b3f"
        value_template: "{{ value_json.Maintenance[16].Service[3]['Total Run Hours'] | regex_replace(' [Hh]','') }}"
        device_class: duration
        unit_of_measurement: "hours"
      - name: "Hardware Version"
        unique_id: "927b24b7-772d-434a-8fa1-4f1c5549c90d"
        value_template: "{{ value_json.Maintenance[16].Service[4]['Hardware Version'] }}"
        icon: mdi:numeric
      - name: "Firmware Version"
        unique_id: "4cf182de-c37b-48c9-8727-75e1f5053d0d"
        value_template: "{{ value_json.Maintenance[16].Service[5]['Firmware Version'] }}"
        icon: mdi:numeric

Feel free to modify this to fit your needs. If there is an option you don’t want, simply remove it from the config and restart.