GreenEye Monitor (GEM)


The GreenEye Monitor (GEM) integration for Home Assistant allows you to create sensors for the various data channels of the GEM. Each current transformer (CT) channel, pulse counter, and temperature sensor appears in Home Assistant as a sensor, and can be used in automations.

Configure your GEM(s) to produce binary-format packets (for example, “Bin32 NET” for a 32-channel GEM with some channels configured for net metering) and send them to an unused port on your Home Assistant machine. (These settings are in the “Packet Send” and “Network” pages of the GEM UI.) Then specify that port and information about your monitor(s) and the data channels you wish to monitor in your configuration.yaml:

# Example configuration.yaml entry
greeneye_monitor:
  port: 8000
  monitors:
    - serial_number: "YOUR_SERIAL_NUMBER"
      channels:
        - number: 1
          name: total_power
        - number: 2
          name: solar_panels_power
          net_metering: true
      pulse_counters:
        - number: 1
          name: sprinklers_water_usage
          counted_quantity: "gal"
          counted_quantity_per_pulse: 1
          time_unit: "min"
      temperature_sensors:
        temperature_unit: "C"
        sensors:
          - number: 1
            name: back_porch_temperature
      voltage:
        - number: 1
          name: house_volts

By default, GEM will send updates every 5 seconds. That’s a lot of data, and the databases used by the recorder integration for history don’t do well with that much data, so it is recommended to configure the influxdb integration and exclude the GEM sensors from recorder.

Configuration Variables

port string Required

The port on which Home Assistant should listen for packets from your GEM. Must match the port set in the “Network” tab of the GEM setup UI.

monitors list (Optional)

The list of monitors that should appear in Home Assistant. Data from other monitors will be ignored.

serial_number string Required

Your 8-digit GEM serial number, as it appears in the UI.

channels list (Optional)

The list of channels that should appear in Home Assistant for this monitor. Data from other channels will be ignored.

number integer Required

The channel number as it appears in the GEM UI.

name string Required

The name that should be used for this channel’s sensor in Home Assistant.

net_metering boolean (Optional, default: false)

Set to true if the channel is configured for net metering in the GEM, otherwise false.

voltage (Optional)

Configuration for voltage sensor

number integer Required

A channel number that exists in the GEM. There is only one voltage sensor on current models of the GEM.

name string Required

The name that should be used for the voltage sensor in Home Assistant.

temperature_sensors (Optional)

Configuration for temperature sensors

temperature_unit string Required

The unit of measure to use for the temperature (F or C)

sensors list Required

The list of temperature sensors that should appear in Home Assistant for this monitor. Data from other sensors will be ignored.

number integer Required

The sensor number as it appears in the GEM UI.

name string Required

The name that should be used for this sensor in Home Assistant.

pulse_counters list (Optional)

The list of pulse counters that should appear in Home Assistant for this monitor. Data from other pulse counters will be ignored.

number integer Required

The pulse counter’s number as it appears in the GEM UI.

name string Required

The name that should be used for this pulse counter in Home Assistant.

counted_quantity string Required

The unit being counted by this pulse counter (e.g., gal, L)

counted_quantity_per_pulse float (Optional, default: 1.0)

The number of the counted quantity represented by each pulse.

time_unit string (Optional, default: s)

The time unit to use when computing rates (s, min, or h)