Index: html/images/os/e3meter.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: html/images/os/e3meter.png
===================================================================
--- html/images/os/e3meter.png	(nonexistent)
+++ html/images/os/e3meter.png	(working copy)

Property changes on: html/images/os/e3meter.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: html/includes/graphs/sensor/aenergy.inc.php
===================================================================
--- html/includes/graphs/sensor/aenergy.inc.php	(nonexistent)
+++ html/includes/graphs/sensor/aenergy.inc.php	(working copy)
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage graphs
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
+ *
+ */
+
+$scale_min = "0";
+
+include_once($config['html_dir']."/includes/graphs/common.inc.php");
+
+$rrd_options .= " -A ";
+$rrd_options .= " COMMENT:'                           Last    Max\\n'";
+
+$rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE";
+$rrd_options .= " DEF:sensor_max=$rrd_filename:sensor:MAX";
+$rrd_options .= " DEF:sensor_min=$rrd_filename:sensor:MIN";
+
+$rrd_options .= " AREA:sensor_max#c5c5c5";
+$rrd_options .= " AREA:sensor_min#ffffffff";
+
+#$rrd_options .= " AREA:sensor#FFFF99";
+$rrd_options .= " LINE1.5:sensor#cc0000:'" . rrdtool_escape($sensor['sensor_descr'],22)."'";
+$rrd_options .= " GPRINT:sensor:LAST:%6.2lfV";
+$rrd_options .= " GPRINT:sensor:MAX:%6.2lfV\\l";
+
+$graph_return['descr'] = 'Apparent energy sensor measured in VAh.';
+
+// EOF
Index: html/includes/graphs/sensor/energy.inc.php
===================================================================
--- html/includes/graphs/sensor/energy.inc.php	(nonexistent)
+++ html/includes/graphs/sensor/energy.inc.php	(working copy)
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage graphs
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
+ *
+ */
+
+$scale_min = "0";
+
+include_once($config['html_dir']."/includes/graphs/common.inc.php");
+
+$rrd_options .= " -A ";
+$rrd_options .= " COMMENT:'                           Last    Max\\n'";
+
+$rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE";
+$rrd_options .= " DEF:sensor_max=$rrd_filename:sensor:MAX";
+$rrd_options .= " DEF:sensor_min=$rrd_filename:sensor:MIN";
+
+$rrd_options .= " AREA:sensor_max#c5c5c5";
+$rrd_options .= " AREA:sensor_min#ffffffff";
+
+#$rrd_options .= " AREA:sensor#FFFF99";
+$rrd_options .= " LINE1.5:sensor#cc0000:'" . rrdtool_escape($sensor['sensor_descr'],22)."'";
+$rrd_options .= " GPRINT:sensor:LAST:%6.2lfV";
+$rrd_options .= " GPRINT:sensor:MAX:%6.2lfV\\l";
+
+$graph_return['descr'] = 'Energy sensor measured in Wh.';
+
+// EOF
Index: html/includes/graphs/sensor/renergy.inc.php
===================================================================
--- html/includes/graphs/sensor/renergy.inc.php	(nonexistent)
+++ html/includes/graphs/sensor/renergy.inc.php	(working copy)
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage graphs
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
+ *
+ */
+
+$scale_min = "0";
+
+include_once($config['html_dir']."/includes/graphs/common.inc.php");
+
+$rrd_options .= " -A ";
+$rrd_options .= " COMMENT:'                           Last    Max\\n'";
+
+$rrd_options .= " DEF:sensor=$rrd_filename:sensor:AVERAGE";
+$rrd_options .= " DEF:sensor_max=$rrd_filename:sensor:MAX";
+$rrd_options .= " DEF:sensor_min=$rrd_filename:sensor:MIN";
+
+$rrd_options .= " AREA:sensor_max#c5c5c5";
+$rrd_options .= " AREA:sensor_min#ffffffff";
+
+#$rrd_options .= " AREA:sensor#FFFF99";
+$rrd_options .= " LINE1.5:sensor#cc0000:'" . rrdtool_escape($sensor['sensor_descr'],22)."'";
+$rrd_options .= " GPRINT:sensor:LAST:%6.2lfV";
+$rrd_options .= " GPRINT:sensor:MAX:%6.2lfV\\l";
+
+$graph_return['descr'] = 'Reactive energy sensor measured in VArh.';
+
+// EOF
Index: includes/definitions/entities/sensors.inc.php
===================================================================
--- includes/definitions/entities/sensors.inc.php	(revision 9840)
+++ includes/definitions/entities/sensors.inc.php	(working copy)
@@ -24,8 +24,10 @@
 $config['sensor_types']['voltage']     = array( 'symbol' => 'V',       'text' => 'Volt',                'icon' => $config['icon']['voltage'],       'format' => 'si');
 $config['sensor_types']['current']     = array( 'symbol' => 'A',       'text' => 'Amper',               'icon' => $config['icon']['current'],       'format' => 'si');
 $config['sensor_types']['charge']      = array( 'symbol' => 'Ah',      'text' => 'AmpHour',             'icon' => $config['icon']['current'],       'format' => 'si');
+$config['sensor_types']['energy']      = array( 'symbol' => 'Wh',      'text' => 'WattHour',            'icon' => $config['icon']['power'],         'format' => 'si');
+$config['sensor_types']['aenergy']     = array( 'symbol' => 'VAh',     'text' => 'VoltAmpereHour',      'icon' => $config['icon']['apower'],         'format' => 'si');
+$config['sensor_types']['renergy']     = array( 'symbol' => 'VArh',    'text' => 'VoltAmpere ReactiveHour', 'icon' => $config['icon']['rpower'],         'format' => 'si');
 $config['sensor_types']['power']       = array( 'symbol' => 'W',       'text' => 'Watts',               'icon' => $config['icon']['power'],         'format' => 'si');
-$config['sensor_types']['energy']      = array( 'symbol' => 'Wh',      'text' => 'WattHour',            'icon' => $config['icon']['power'],         'format' => 'si');
 $config['sensor_types']['apower']      = array( 'symbol' => 'VA',      'text' => 'VoltAmpere',          'icon' => $config['icon']['apower'],        'format' => 'si');
 $config['sensor_types']['rpower']      = array( 'symbol' => 'VAr',     'text' => 'VoltAmpere Reactive', 'icon' => $config['icon']['rpower'],        'format' => 'si');
 $config['sensor_types']['crestfactor'] = array( 'symbol' => '',        'text' => 'Crest Factor',        'icon' => $config['icon']['crestfactor']);
Index: includes/definitions/mibs/e3meter.inc.php
===================================================================
--- includes/definitions/mibs/e3meter.inc.php	(nonexistent)
+++ includes/definitions/mibs/e3meter.inc.php	(working copy)
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package        observium
+ * @subpackage     definitions
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
+ *
+ */
+
+
+// E3METER
+
+$mib = 'NETTRACK-E3METER-SNMP-MIB';
+$config['mibs'][$mib]['enable'] = 1;
+$config['mibs'][$mib]['identity_num'] = '.1.3.6.1.4.1.21695.1';
+$config['mibs'][$mib]['mib_dir'] = 'nettrack';
+$config['mibs'][$mib]['descr'] = 'Riedo Networks E3METER';
+$config['mibs'][$mib]['serial'][] = array('oid' => '.1.3.6.1.4.1.21695.1.10.7.1.1');
+# $config['mibs'][$mib]['serial'][] = array('oid' => 'e3IpmInfoSerial'); // should do the same as above, but returns model instead of serial!
+// EOF
+
Index: includes/definitions/os.inc.php
===================================================================
--- includes/definitions/os.inc.php	(revision 9840)
+++ includes/definitions/os.inc.php	(working copy)
@@ -7995,6 +8004,17 @@
 $config['os'][$os]['mib_blacklist'][]       = "HOST-RESOURCES-MIB";
 $config['os'][$os]['mib_blacklist'][]       = "EtherLike-MIB";
 
+// E3Meter
+$os = "e3meter";
+$config['os'][$os]['text']                  = "E3METER";
+$config['os'][$os]['type']                  = "power";
+$config['os'][$os]['vendor']                = "Riedo Networks";
+$config['os'][$os]['sysObjectID'][]         = ".1.3.6.1.4.1.21695.1";
+$config['os'][$os]['mibs'][]                = "NETTRACK-E3METER-SNMP-MIB";
+$config['os'][$os]['mib_blacklist'][]       = "ENTITY-SENSOR-MIB";
+$config['os'][$os]['mib_blacklist'][]       = "HOST-RESOURCES-MIB";
+
+
 foreach ($config['os'] as $this_os => $os_data)
 {
   if (isset($config['os'][$this_os]['group']))
Index: includes/definitions/rewrites.inc.php
===================================================================
--- includes/definitions/rewrites.inc.php	(revision 9840)
+++ includes/definitions/rewrites.inc.php	(working copy)
@@ -114,6 +114,8 @@
   'xdsl' => 'xDSL',
   'charge' => 'Charge (Ah)',
   'energy' => 'Energy (Wh)',
+  'aenergy' => 'Apparent energy (VAh)',
+  'renergy' => 'Reactive energy (VArh)',
   'powerfactor' => 'Power Factor',
 );
 
Index: includes/discovery/sensors/nettrack-e3meter-snmp-mib.inc.php
===================================================================
--- includes/discovery/sensors/nettrack-e3meter-snmp-mib.inc.php	(nonexistent)
+++ includes/discovery/sensors/nettrack-e3meter-snmp-mib.inc.php	(working copy)
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * Observium
+ *
+ *   This file is part of Observium.
+ *
+ * @package    observium
+ * @subpackage discovery
+ * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2019 Observium Limited
+ *
+ */
+
+// Temperature Sensors
+$oids = snmpwalk_cache_multi_oid($device, "e3IpmSensorTable", array(), "NETTRACK-E3METER-SNMP-MIB");
+
+foreach ($oids as $index => $entry)
+{
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.3.1.4.{$index}";
+  $descr = $entry['e3IpmSensorVersion'];
+  $value = $entry['e3IpmSensorTemperatureCelsius'];
+  $scale = 0.1;
+
+  $options = array();
+  $type = 'temperature';
+
+  if (is_numeric($value))
+  {
+    discover_sensor($type, $device, $oid, "e3IpmSensorTemperatureCelsius.$index", 'e3meter', $descr, $scale, $value, $options);
+  }
+}
+
+// Meter Table
+$oids = snmpwalk_cache_multi_oid($device, "e3IpmMeterTable", array(), "NETTRACK-E3METER-SNMP-MIB");
+
+foreach ($oids as $index => $entry)
+{
+  $descr = trim($entry['e3IpmChannelName'] . " " . $entry['e3IpmChannelType']);
+
+  // frequency
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.10.{$index}";
+  $value = $entry['e3IpmFrequency'];
+  $type = 'frequency';
+  $scale = '0.001';
+  $options = array();
+  
+  discover_sensor($type, $device, $oid, "e3IpmFrequency.$index", 'e3meter', $descr, $scale, $value, $options);
+  
+  // voltage
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.8.{$index}";
+  $value = $entry['e3IpmUrms'];
+  $type = 'voltage';
+  $scale = '0.001';
+  $options = array();
+  
+  discover_sensor($type, $device, $oid, "e3IpmUrms.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // power p
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.5.{$index}";
+  $value = $entry['e3IpmPowerP'];
+  $type = 'power';
+  $scale = '1';
+  $options = array();
+  
+  discover_sensor($type, $device, $oid, "e3IpmPowerP.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // power q
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.6.{$index}";
+  $value = $entry['e3IpmPowerQ'];
+  $type = 'rpower';
+  $scale = '1';
+  $options = array();
+  
+  discover_sensor($type, $device, $oid, "e3IpmPowerQ.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // power s
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.7.{$index}";
+  $value = $entry['e3IpmPowerS'];
+  $type = 'apower';
+  $scale = '1';
+  $options = array();
+
+  discover_sensor($type, $device, $oid, "e3IpmPowerS.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // current
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.7.{$index}";
+  $value = $entry['e3IpmIrms'];
+  $type = 'current';
+  $scale = '0.001';
+  $options = array();
+
+  discover_sensor($type, $device, $oid, "e3IpmIrms.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // energy p
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.2.{$index}";
+  $value = $entry['e3IpmEnergyP'];
+  $type = 'energy';
+  $scale = '1';
+  $options = array();
+
+  discover_sensor($type, $device, $oid, "e3IpmEnergyP.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // energy q
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.3.{$index}";
+  $value = $entry['e3IpmEnergyQ'];
+  $type = 'renergy';
+  $scale = '1';
+  $options = array();
+
+  discover_sensor($type, $device, $oid, "e3IpmEnergyQ.$index", 'e3meter', $descr, $scale, $value, $options);
+
+  // energy s
+  $oid   = ".1.3.6.1.4.1.21695.1.10.7.2.1.4.{$index}";
+  $value = $entry['e3IpmEnergyS'];
+  $type = 'aenergy';
+  $scale = '1';
+  $options = array();
+  
+  discover_sensor($type, $device, $oid, "e3IpmEnergyS.$index", 'e3meter', $descr, $scale, $value, $options);
+
+}
+
+
+// EOF
Index: mibs/nettrack/NETTRACK-E3METER-SNMP-MIB
===================================================================
--- mibs/nettrack/NETTRACK-E3METER-SNMP-MIB	(nonexistent)
+++ mibs/nettrack/NETTRACK-E3METER-SNMP-MIB	(working copy)
@@ -0,0 +1,641 @@
+NETTRACK-E3METER-SNMP-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+	MODULE-IDENTITY,
+	OBJECT-TYPE,
+	Integer32,
+	enterprises
+		FROM SNMPv2-SMI
+	TEXTUAL-CONVENTION
+		FROM SNMPv2-TC
+	;
+
+nettrack OBJECT IDENTIFIER
+	::= { enterprises 21695 }
+
+public OBJECT IDENTIFIER
+	::= { nettrack 1 }
+
+e3Mib
+	MODULE-IDENTITY
+	LAST-UPDATED	"201204120000Z"
+	ORGANIZATION	"net-track GmbH"
+	CONTACT-INFO	"net-track GmbH
+			Duensstrasse 1
+			3186 Duedingen
+			Switzerland
+			www.net-track.ch"
+	DESCRIPTION	"Management Information for E3METER IPM products
+	    		www.e3meter.com"
+	REVISION	"201204120000Z"
+	DESCRIPTION	"Added import of TEXTUAL-CONVENTION."
+	REVISION	"201111020000Z"
+	DESCRIPTION	"Added channel type and channel groups."
+	REVISION	"201108190000Z"
+	DESCRIPTION	"Added e3IpmChannelName."
+	REVISION	"201101260000Z"
+	DESCRIPTION	"Corrected some syntax errors for very picky parsers."
+	REVISION	"201012060000Z"
+	DESCRIPTION	"Added sensor data."
+	REVISION	"201010200000Z"
+	DESCRIPTION	"Initial version of this MIB module."
+	::= { public 10 }
+
+e3Ipm OBJECT IDENTIFIER
+	::= { e3Mib 7 }
+
+-- ===========================================================================
+-- Textual conventions
+--
+
+Watts ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Watts"
+	SYNTAX		INTEGER
+
+VoltAmpereReactives ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Volt-ampere reactives"
+	SYNTAX		Integer32
+
+VoltAmperes ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Volt-amperes"
+	SYNTAX		Integer32
+
+WattHours ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Watt hours"
+	SYNTAX		Integer32
+
+VoltAmpereReactiveHours ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Volt-ampere reactive hours"
+	SYNTAX		Integer32
+
+VoltAmpereHours ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Volt-ampere hours"
+	SYNTAX		Integer32
+
+MilliAmperes ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Milli-amperes"
+	SYNTAX		Integer32
+
+MilliVolts ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Milli-volts"
+	SYNTAX		Integer32
+
+MilliHertz ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Milli-hertz"
+	SYNTAX		Integer32
+
+DeciDegreesCelsius ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Deci-degrees celsius"
+        SYNTAX		Integer32
+
+Permil ::= TEXTUAL-CONVENTION
+    	STATUS		current
+	DESCRIPTION
+	    	"Per mil"
+        SYNTAX		INTEGER
+
+-- ===========================================================================
+-- Agent information
+--
+
+e3IpmInfo OBJECT IDENTIFIER
+	::= { e3Ipm 1 }
+
+e3IpmInfoSerial OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Serial number."
+	::= { e3IpmInfo 1 }
+
+e3IpmInfoModel OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Model number."
+	::= { e3IpmInfo 2 }
+
+e3IpmInfoHWVersion OBJECT-TYPE
+	SYNTAX		INTEGER {
+		rev-a (0),
+		rev-b (1)
+	}
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Hardware revision."
+	::= { e3IpmInfo 3 }
+
+e3IpmInfoFWVersion OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Integer representation of the firmware revision
+		(major.minor) represented as a 16 bit integer."
+	::= { e3IpmInfo 4 }
+
+e3IpmInfoMeters OBJECT-TYPE
+	SYNTAX		INTEGER
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Number of power meters in this IPS."
+	::= { e3IpmInfo 5 }
+
+-- ===========================================================================
+-- IPM meters
+--
+
+e3IpmMeterTable OBJECT-TYPE
+	SYNTAX		SEQUENCE OF E3IpmMeterEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"The e3IpmMeterTable holds information related to the
+		powermeters of all IPS nodes."
+	::= { e3Ipm 2 }
+
+e3IpmMeterEntry OBJECT-TYPE
+	SYNTAX		E3IpmMeterEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"Holds the information related to one specific powermeter."
+	INDEX		{ e3IpmMeter }
+	::=		{ e3IpmMeterTable 1 }
+
+E3IpmMeterEntry ::= SEQUENCE {
+		e3IpmMeter	 Integer32,
+		e3IpmEnergyP	 WattHours,
+		e3IpmEnergyQ	 VoltAmpereReactiveHours,
+		e3IpmEnergyS	 VoltAmpereHours,
+		e3IpmPowerP	 Watts,
+		e3IpmPowerQ	 VoltAmpereReactives,
+		e3IpmPowerS	 VoltAmperes,
+		e3IpmUrms        MilliVolts,
+		e3IpmIrms        MilliAmperes,
+		e3IpmFrequency   MilliHertz,
+		e3IpmChannelName OCTET STRING,
+		e3IpmChannelType INTEGER
+	}
+
+e3IpmMeter OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Number of the powermeter of this IPS."
+	::= { e3IpmMeterEntry 1 }
+
+e3IpmEnergyP OBJECT-TYPE
+	SYNTAX		WattHours
+	UNITS		"Wh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Active energy in watt hours."
+	::= { e3IpmMeterEntry 2 }
+
+e3IpmEnergyQ OBJECT-TYPE
+	SYNTAX		VoltAmpereReactiveHours
+	UNITS		"varh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Reactive energy in volt-ampere reactives hours."
+	::= { e3IpmMeterEntry 3 }
+
+e3IpmEnergyS OBJECT-TYPE
+	SYNTAX		VoltAmpereHours
+	UNITS		"VAh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Apparent energy in volt-ampere hours."
+	::= { e3IpmMeterEntry 4 }
+
+e3IpmPowerP OBJECT-TYPE
+	SYNTAX		Watts
+	UNITS		"W"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Active power at a given instant."
+	::= { e3IpmMeterEntry 5 }
+
+e3IpmPowerQ OBJECT-TYPE
+	SYNTAX		VoltAmpereReactives
+	UNITS		"var"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Reactive power at a given instant."
+	::= { e3IpmMeterEntry 6 }
+
+e3IpmPowerS OBJECT-TYPE
+	SYNTAX		VoltAmperes
+	UNITS		"VA"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Apparent power at a given instant."
+	::= { e3IpmMeterEntry 7 }
+
+e3IpmUrms OBJECT-TYPE
+	SYNTAX		MilliVolts
+	UNITS		"mV"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"RMS voltage at a given instant."
+	::= { e3IpmMeterEntry 8 }
+
+e3IpmIrms OBJECT-TYPE
+	SYNTAX		MilliAmperes
+	UNITS		"mA"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"RMS current at a given instant."
+	::= { e3IpmMeterEntry 9 }
+
+e3IpmFrequency OBJECT-TYPE
+	SYNTAX		MilliHertz
+	UNITS		"mHz"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Frequency measured a given instant."
+	::= { e3IpmMeterEntry 10 }
+
+e3IpmChannelName OBJECT-TYPE
+        SYNTAX		OCTET STRING (SIZE(0..15))
+        MAX-ACCESS	read-only
+        STATUS		current
+        DESCRIPTION
+	    	"Channel name."
+        ::= { e3IpmMeterEntry 11 }
+
+e3IpmChannelType OBJECT-TYPE
+        SYNTAX		INTEGER {
+		live-wire (0),
+		neutral-wire (1)
+        }
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel type: For neutral wire channels, only I_rms will
+		contain meaningful values."
+	::= { e3IpmMeterEntry 12 }
+
+-- ===========================================================================
+-- IPM sensors
+--
+
+e3IpmSensorTable OBJECT-TYPE
+	SYNTAX		SEQUENCE OF E3IpmSensorEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"The e3IpmSensorTable holds information related to the
+		sensor of this IPM."
+	::= { e3Ipm 3 }
+
+e3IpmSensorEntry OBJECT-TYPE
+	SYNTAX		E3IpmSensorEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"Holds the information related to one specific sensor."
+	INDEX		{ e3IpmSensor }
+	::=		{ e3IpmSensorTable 1 }
+
+E3IpmSensorEntry ::= SEQUENCE {
+		e3IpmSensor		Integer32,
+		e3IpmSensorType		INTEGER,
+		e3IpmSensorVersion	OCTET STRING,
+		e3IpmSensorTemperatureCelsius	DeciDegreesCelsius,
+		e3IpmSensorHumidity	Permil
+	}
+
+e3IpmSensor OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Sensor port number."
+	::= { e3IpmSensorEntry 1 }
+
+e3IpmSensorType OBJECT-TYPE
+        SYNTAX		INTEGER {
+		none (0),
+		temp (1),
+		temp-humidity (2)
+        }
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Sensor type."
+	::= { e3IpmSensorEntry 2 }
+
+e3IpmSensorVersion OBJECT-TYPE
+        SYNTAX		OCTET STRING (SIZE(0..15))
+        MAX-ACCESS	read-only
+        STATUS		current
+        DESCRIPTION
+	    	"Sensor version."
+        ::= { e3IpmSensorEntry 3 }
+
+e3IpmSensorTemperatureCelsius OBJECT-TYPE
+        SYNTAX          DeciDegreesCelsius
+        UNITS           "deg-C/10"
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "Temperature in tenth degrees."
+        ::= { e3IpmSensorEntry 4 }
+
+e3IpmSensorHumidity OBJECT-TYPE
+        SYNTAX          Permil
+        UNITS           "/1000"
+        MAX-ACCESS      read-only
+        STATUS          current
+        DESCRIPTION
+                "Relative humidity in per mil."
+        ::= { e3IpmSensorEntry 5 }
+
+-- ===========================================================================
+-- IPM predefined channel groups
+--
+
+e3IpmPGroupTable OBJECT-TYPE
+	SYNTAX		SEQUENCE OF E3IpmPGroupEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"The e3IpmPGroupTable holds information related to predefined
+		channel groups."
+	::= { e3Ipm 4 }
+
+e3IpmPGroupEntry OBJECT-TYPE
+	SYNTAX		E3IpmPGroupEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"Holds the information related to one specific group."
+	INDEX		{ e3IpmPGroup }
+	::=		{ e3IpmPGroupTable 1 }
+
+E3IpmPGroupEntry ::= SEQUENCE {
+		e3IpmPGroup	 Integer32,
+		e3IpmPGName	 OCTET STRING,
+		e3IpmPGMembers	 Integer32,
+		e3IpmPGEnergyP	 WattHours,
+		e3IpmPGEnergyQ	 VoltAmpereReactiveHours,
+		e3IpmPGEnergyS	 VoltAmpereHours,
+		e3IpmPGPowerP	 Watts,
+		e3IpmPGPowerQ	 VoltAmpereReactives,
+		e3IpmPGPowerS	 VoltAmperes,
+		e3IpmPGIrms      MilliAmperes
+	}
+
+e3IpmPGroup OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Predefined channel group number."
+	::= { e3IpmPGroupEntry 1 }
+
+e3IpmPGName OBJECT-TYPE
+        SYNTAX		OCTET STRING (SIZE(0..15))
+        MAX-ACCESS	read-only
+        STATUS		current
+        DESCRIPTION
+	    	"Channel group name."
+        ::= { e3IpmPGroupEntry 2 }
+
+e3IpmPGMembers OBJECT-TYPE
+        SYNTAX		Integer32
+        MAX-ACCESS	read-only
+        STATUS		current
+        DESCRIPTION
+	    	"A bit set specifying the channels which are
+		members of this channel group. If bit 0 is set,
+		this means that channel CH1 is member of this
+		group. Bit 1 stands for CH2 and so on."
+        ::= { e3IpmPGroupEntry 3 }
+
+e3IpmPGEnergyP OBJECT-TYPE
+	SYNTAX		WattHours
+	UNITS		"Wh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group active energy in watt hours."
+	::= { e3IpmPGroupEntry 4 }
+
+e3IpmPGEnergyQ OBJECT-TYPE
+	SYNTAX		VoltAmpereReactiveHours
+	UNITS		"varh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group reactive energy in volt-ampere reactives hours."
+	::= { e3IpmPGroupEntry 5 }
+
+e3IpmPGEnergyS OBJECT-TYPE
+	SYNTAX		VoltAmpereHours
+	UNITS		"VAh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group apparent energy in volt-ampere hours."
+	::= { e3IpmPGroupEntry 6 }
+
+e3IpmPGPowerP OBJECT-TYPE
+	SYNTAX		Watts
+	UNITS		"W"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group active power at a given instant."
+	::= { e3IpmPGroupEntry 7 }
+
+e3IpmPGPowerQ OBJECT-TYPE
+	SYNTAX		VoltAmpereReactives
+	UNITS		"var"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group reactive power at a given instant."
+	::= { e3IpmPGroupEntry 8 }
+
+e3IpmPGPowerS OBJECT-TYPE
+	SYNTAX		VoltAmperes
+	UNITS		"VA"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group apparent power at a given instant."
+	::= { e3IpmPGroupEntry 9 }
+
+e3IpmPGIrms OBJECT-TYPE
+	SYNTAX		MilliAmperes
+	UNITS		"mA"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group RMS current at a given instant."
+	::= { e3IpmPGroupEntry 10 }
+
+-- ===========================================================================
+-- IPM user defined channel groups
+--
+
+e3IpmUGroupTable OBJECT-TYPE
+	SYNTAX		SEQUENCE OF E3IpmUGroupEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"The e3IpmUGroupTable holds information related to user
+		defined channel groups."
+	::= { e3Ipm 5 }
+
+e3IpmUGroupEntry OBJECT-TYPE
+	SYNTAX		E3IpmUGroupEntry
+	MAX-ACCESS	not-accessible
+	STATUS		current
+	DESCRIPTION
+		"Holds the information related to one specific group."
+	INDEX		{ e3IpmUGroup }
+	::=		{ e3IpmUGroupTable 1 }
+
+E3IpmUGroupEntry ::= SEQUENCE {
+		e3IpmUGroup	 Integer32,
+		e3IpmUGName	 OCTET STRING,
+		e3IpmUGMembers	 Integer32,
+		e3IpmUGEnergyP	 WattHours,
+		e3IpmUGEnergyQ	 VoltAmpereReactiveHours,
+		e3IpmUGEnergyS	 VoltAmpereHours,
+		e3IpmUGPowerP	 Watts,
+		e3IpmUGPowerQ	 VoltAmpereReactives,
+		e3IpmUGPowerS	 VoltAmperes,
+		e3IpmUGIrms      MilliAmperes
+	}
+
+e3IpmUGroup OBJECT-TYPE
+	SYNTAX		Integer32
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"User defined channel group number."
+	::= { e3IpmUGroupEntry 1 }
+
+e3IpmUGName OBJECT-TYPE
+        SYNTAX		OCTET STRING (SIZE(0..15))
+        MAX-ACCESS	read-only
+        STATUS		current
+        DESCRIPTION
+	    	"Channel group name."
+        ::= { e3IpmUGroupEntry 2 }
+
+e3IpmUGMembers OBJECT-TYPE
+        SYNTAX		Integer32
+        MAX-ACCESS	read-only
+        STATUS		current
+        DESCRIPTION
+	    	"A bit set specifying the channels which are
+		members of this channel group. If bit 0 is set,
+		this means that channel CH1 is member of this
+		group. Bit 1 stands for CH2 and so on. If no
+		members are configured, the group is inactive."
+        ::= { e3IpmUGroupEntry 3 }
+
+e3IpmUGEnergyP OBJECT-TYPE
+	SYNTAX		WattHours
+	UNITS		"Wh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group active energy in watt hours."
+	::= { e3IpmUGroupEntry 4 }
+
+e3IpmUGEnergyQ OBJECT-TYPE
+	SYNTAX		VoltAmpereReactiveHours
+	UNITS		"varh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group reactive energy in volt-ampere reactives hours."
+	::= { e3IpmUGroupEntry 5 }
+
+e3IpmUGEnergyS OBJECT-TYPE
+	SYNTAX		VoltAmpereHours
+	UNITS		"VAh"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group apparent energy in volt-ampere hours."
+	::= { e3IpmUGroupEntry 6 }
+
+e3IpmUGPowerP OBJECT-TYPE
+	SYNTAX		Watts
+	UNITS		"W"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group active power at a given instant."
+	::= { e3IpmUGroupEntry 7 }
+
+e3IpmUGPowerQ OBJECT-TYPE
+	SYNTAX		VoltAmpereReactives
+	UNITS		"var"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group reactive power at a given instant."
+	::= { e3IpmUGroupEntry 8 }
+
+e3IpmUGPowerS OBJECT-TYPE
+	SYNTAX		VoltAmperes
+	UNITS		"VA"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group apparent power at a given instant."
+	::= { e3IpmUGroupEntry 9 }
+
+e3IpmUGIrms OBJECT-TYPE
+	SYNTAX		MilliAmperes
+	UNITS		"mA"
+	MAX-ACCESS	read-only
+	STATUS		current
+	DESCRIPTION
+		"Channel group RMS current at a given instant."
+	::= { e3IpmUGroupEntry 10 }
+
+END
