Available Sensor Readers¶
This document summarizes the Sensor Reader classes that are currently
available for the Mini-Monitor. Each of these classes knows how to read
data from a particular type of device. As described on the main
Software document, a Reader is enabled in the READERS
variable found
in the Mini-Monitor settings file.
Starting with Version 1.7, Mini-Monitor has an additional method to acquire sensor data, separate from the Sensor Reader classes described in the prior paragraph. Scripts or programs can be written to publish data to the Mini-Monitor MQTT broker (for more about the MQTT broker, see the Notes for Developers. That sensor data is then posted directly to a BMON server without the use of a Reader class. This technique is used to read data from Utility Meters, this script is discussed later in this document.
Sensor Reader Classes¶
Each section below describes a Reader and lists the sensor information that is returned by the Reader. For each sensor read by the Reader, the following information is returned:
Sensor ID: This is a string ID that identifies the particular sensor being read.
Value: This is the current numeric sensor reading.
Reading Type: This indicates the type of value being read by the sensor, with the following three possibilities:
- VALUE: An analog value that varies continuously across a range of possible values. For this Reading Type, the Mini-Monitor will average all of the sensor values that are read during a logging period and post that average value to the BMON web database.
- STATE: Discrete values that indicate the sensor is in a particular mode or state. Examples include On/Off switch values, or alarm states for a particular device. During one logging period, the Mini-Monitor will post a reading to BMON every time the sensor state value changes. In addition, the Mini-Monitor will always post the last state value read during the logging period.
- COUNTER: A sensor having a Reading Type of counter is one that accumulates a count of some quantity, e.g. energy used or gallons of flow. For counter sensors, the Mini-Monitor will post the last counter value read during a logging period.
Currently Available Sensor Readers¶
1-Wire Sensor Reader¶
Class Name: ha7s.HA7Sreader
This Reader was named after the Embedded Data Systems HA7S hardware module used to read the 1-Wire sensors and reads Maxim DS18B20 1-Wire Temperature Sensors (Family Code 28) and sensors utilizing the Maxim DS2406 1-Wire chip (Family Code 12) to sense the On/Off state of a device. Analysis North sells an easily-installed motor/pump/zone valve/gas valve sensor utilizing this chip that can interface to the Mini-Monitor through the 1-Wire network.
The Mini-Monitor hardware components associated with this Reader are the CV3 and PS2 components described in the Hardware document. The Reader returns the current sensor readings for all of the compatible 1-Wire sensors on the network. The table below shows the information returned for each compatible type of 1-Wire sensor:
Sensor Type | Sensor ID | Value | Reading Type |
---|---|---|---|
Family Code 28 Temperature Sensors | Unique
1-Wire ID
of the
Sensor,
e.g.
28.EFED4C
050000 |
Temperature in degrees F | VALUE |
Family Code 12 Switch/State Sensors | Unique
1-Wire ID
of the
Sensor,
e.g.
12.FDF4A0
000000 |
The state of Channel A of the Sensor: 1 for High Voltage, 0 for Low Voltage | STATE |
Sage 2.1 Boiler Control (used in Burnham Alpine Boilers)¶
Class Name: sage_boiler.Sage21Reader
This reader reads numerous values present in a Sage 2.1 Boiler Control, which is the boiler control used by Burnham Alpine condensing boilers. The values are read through an RS-485 connection to the boiler, using the MODBUS protocol. The Sage 2.1 control is manufactured by Honeywell and is known as the SOLA control when sold directly by Honeywell. The MODBUS manual for the Honeywell SOLA boiler controller can be found here.
The RS485 connection to the boiler is on the left side of the boiler. There are two RJ45 jacks (8-pin network-type jacks). A standard CAT-5/6 network cable can be used to connect to the boiler, and the top jack, labeled “Boiler-to-Boiler” must be used. Also, you must set the “Boiler Address” to 1 in order to read data from the boiler. This is done on the “Adjust”, “Sequence Slave”, “Boiler Address” menu item available through the touch screen control on the boiler. The Factory default for this setting is “None”, so it must be changed in order for the monitoring system to work.
The table below shows the values that are read from the controller.
Refer to MODBUS manual for more detail on the values. The Sensor ID
values all start with the <LOGGER_ID>
, which is the unique ID value
that is entered into the Mini-Monitor settings file, as described in the
Software document. For example, if the LOGGER_ID
for a particular
Mini-Monitor is Burton152
, the first sensor value in the table below
will have the Sensor ID of Burton152_firing_rate
.
Sensor ID | Value | Reading Type |
---|---|---|
<LOGGER_ID>_alert_code | Boiler alert code, if any; see Table 11 in MODBUS manual | STATE |
<LOGGER_ID>_firing_rate | Boiler firing rate in % of maximum | VALUE |
<LOGGER_ID>_limits | Indicates when a Boiler Limit, such as Outlet High Temperature Limit, is reached | STATE |
<LOGGER_ID>_demand_source | Source of demand that that caused the boiler to fire, either Space Heat or Domestic Hot Water | STATE |
<LOGGER_ID>_outlet_temp | Boiler outlet temperature, degrees F. | VALUE |
<LOGGER_ID>_flame_signal | Flame signal, Volts | VALUE |
<LOGGER_ID>_inlet_temp | Boiler return water temperature, degrees F. | VALUE |
<LOGGER_ID>_stack_temp | Boiler stack temperature, degrees F. | VALUE |
<LOGGER_ID>_ch_setpoint | Space Heating boiler temperature setpoint, degrees F. | VALUE |
<LOGGER_ID>_dhw_setpoint | DHW boiler temperature setpoint, degrees F. | VALUE |
<LOGGER_ID>_active_setpoint | Currently active boiler setpoint, degrees F. | VALUE |
<LOGGER_ID>_lockout_code | Boiler Lockout code, if any; see Table 9 in MODBUS manual | STATE |
<LOGGER_ID>_alarm_reason | Indicates whether the Alarm is a Lockout or an Alert | STATE |
<LOGGER_ID>_ch_demand | Indicates if there is a call for space Heat | STATE |
<LOGGER_ID>_dhw_demand | Indicates if there is a call for DHW heat | STATE |
<LOGGER_ID>_outdoor_temp | Outdoor temperature as read by boiler outdoor temperature sensor, degrees F. | VALUE |
<LOGGER_ID>_alarm_code | Boiler alarm code, if any | STATE |
AERCO BMS II Boiler Manager¶
Class Name: aerco_boiler.BMS2reader
This reader reads values present in an AERCO BMS II Boiler Manager, which controls a bank of AERCO boilers. The AERCO BMS II manual is here, and Appendix H contains documentation of the MODBUS registers. The Reader obtains values from the controller using the MODBUS protocol across an RS232 connection to the boiler.
The table below shows the values that are read from the controller.
Refer to the BMS II manual for more detail on the values. The
Sensor ID
values all start with the <LOGGER_ID>
, which is the
unique ID value that is entered into the Mini-Monitor settings file, as
described in the Software page.
Sensor ID | Value | Reading Type |
---|---|---|
<LOGGER_ID>_firing_rate | Firing rate as a % of maximum. All boilers fired have this same firing rate, as the load is spread evenly across fired boilers | VALUE |
<LOGGER_ID>_boilers_fired | The number of boilers currently fired | STATE |
<LOGGER_ID>_firing_rate_tot | The firing rate times the number of boilers fired, % | VALUE |
<LOGGER_ID>_header_temp | Temperature of the boiler outlet header, degrees F. | VALUE |
<LOGGER_ID>_outdoor_temp | Outdoor temperature as read by the controller outdoor temperature sensor, degrees F. | VALUE |
<LOGGER_ID>_header_setpoint | Target setpoint temperature for the boiler outlet header, degrees F. | VALUE |
<LOGGER_ID>_boilers_online | Number of boilers online and able to be fired | STATE |
<LOGGER_ID>_fault_code ode | Indicates type of fault that has occurred | STATE |
<LOGGER_ID>_lead_boiler | Number of the Lead boiler, 1 - 32 | STATE |
<LOGGER_ID>_boiler1_status | Gives online and firing status of Boiler #1 | STATE |
<LOGGER_ID>_boiler2_status | Gives online and firing status of Boiler #2 | STATE |
<LOGGER_ID>_io_status | Gives status of the boiler relays | STATE |
Sensaphone Reader¶
Class Name: SensaphoneReader
This reader reads values from the Sensaphone Infrastructure Management System host unit (IMS-4000). The reader uses the Simple Network Management Protocol (SNMP) to access the IMS-4000 host, which in turn is connected to up to 32 different remote sites. Each remote site can have up to 8 environmental sensors. The manual for the IMS-4000 can be found here.
The reader will access and return data for each of the sensors attached to each remote site connected to the IMS-4000. There are a variety of sensors that can be connected at each site, including sensors that monitor temperature, relative humidity, flow, presence of water, and more. For details on the values reported by individual sensors, see the IMS-4000 manual. Each of these sensors is named by the user; the sensor IDs reported in the mini-monitor program are named using the following pattern:
<LOGGER_ID>_<Site_Name>_<Sensor_Name>
Note that underscores are used in place of spaces in this naming pattern. Currently, due to the limitations of the SNMP interface, all recorded data is reported as integers of the “VALUES” reading type.
System Information Reader¶
Class Name: sys_info.SysInfo
This Reader reports some basic information about the Mini-Monitor hardware and software. It reads the values directly from the Raspberry Pi without the need for any additional attached hardware. Here are the values reported:
Sensor ID | Value | Reading Type |
---|---|---|
<LOGGER_ID>_uptime | Number of seconds that the Pi has been operating since the last reboot | COUNTER |
<LOGGER_ID>_cpu_temp | CPU temperature of the Pi, degrees C. | VALUE |
<LOGGER_ID>_version | Mini-Monitor software version number. | STATE |
Power Outage Monitor Reader¶
Class Name: outage_monitor.OutageMonitor
This reader was designed to sense the presence or absence of AC Mains Power. A power sensor is used to put a 3.3V signal on the Raspberry Pi pin 16 (BCM numbering) when AC power is present and a 0V signal on the pin when power is absent. This reader will report the state of the pin:
Sensor ID | Value | Reading Type |
---|---|---|
<LOGGER_ID>_state | 1 = Pin 16 in High state, 3.3V; 0 = Pin 16 in Low state 0 V. | STATE |
This reader could be used for any sort of digital input on Pin 16.
Other Sensor Readers¶
There are a number of other sensor readers that have been created for
specific projects and not documented here in detail. Those Readers
include ones for reading thermistors connected to a Labjack U3 data
acquisition board and reading gauge air
pressure measured by an Energy Conservatory DG-700 Pressure
Gauge.
You can find these in the readers
directory of the project
code.
Scripts that Post Data directly to the MQTT Broker¶
Script to Read Utility Meter Radio Transmissions¶
The Mini-Monitor is able to read Utility meters (natural gas, electric, and water) that utilize the Itron ERT radio transmission format to broadcast their readings in the 900 MHz ISM band to meter readers driving through the neighborhood. The hardware required for receiving these transmissions is described in the Hardware document. To enable and configure the Meter Reading script, see the Mini-Monitor section in the Software document.
Utility meters are typically counters that accumulate the total amount of gas, electricity, or water consumed. Instead of reporting a cumulative amount, this script determines the rate of change in the meter reading and reports that value, expressed in change in meter reading per hour. For example, if a natural gas meter reads 10,123 cubic feet at Noon and then reads 10,145 cubic feet at 12:30 pm, the change in reading was 22 cubic feet and it occurred over a half hour period. The script will report a value of 44 cubic feet per hour, since this is the rate of change expressed using an hourly time base. Multipliers are available in the Settings file to translate these values to other units (such as Btu/hour), if desired.
Here is the summary table showing the fields reported by the script. An
example of a Sensor ID for an installation with a LOGGER_ID
of
123main
would be 123main_12_32707556
. The 12
is the Commodity
Type transmitted by the meter and 32707556
is the ID of
the meter. The Commodity Type and the Meter ID are generally found on the
nameplate of the meter.
Sensor ID | Value | Reading Type |
---|---|---|
<LOGGER_ID>_<COMMODITY_TYPE>_<METER_ID> | Meter Reading Change per Hour | VALUE |
Here is a table showing how Commodity Type numbers translate into actual metered commodities:
Commodity | Commodity Type Numbers |
---|---|
Electric | 04, 05, 07, 08 |
Gas | 02, 09, 12 |
Water | 11, 13 |