DragonFly On-Line Manual Pages
X10OREGON(5) DragonFly File Formats Manual X10OREGON(5)
NAME
x10oregon - Oregon sensor support for HEYU
DESCRIPTION
Heyu is an X10 Automation program for Linux, Unix, and Mac OS X. See
man page heyu(1) for usage information.
Oregon sensors transmit encoded RF signals for Temperature, Relative
Humidity, Barometric Pressure, Wind speed, Rainfall, and other
variables. When equipped with a compatible RF receiver, Heyu can
receive and decode this information. Also included in the same
category are two miscellaneous sensors, the Electrisave CM113 and the
OWL CM119, which transmit encoded data from AC current probes in the
breaker box.
SYSTEM REQUIREMENTS
To use Oregon sensors with Heyu requires a 433.92 MHz RFXCOM X10 RF
receiver and Heyu version 2.3 or greater. Support for the Electrisave
CM113 was added in Heyu version 2.7. Support for the OWL CM119 was
added in Heyu version 2.8 but also requires the special CM119 option in
the RFXCOM receiver.
COMPILER OPTION
Support for Oregon sensors is compiled into Heyu by default. A
compiler option can be used to omit this support. See the file INSTALL
included in the Heyu distribution source directory for details.
CONFIGURATION
It is assumed that a working installation of Heyu version 2.3 or
greater exists on the computer, and that the user has a basic
familiarity with Heyu.
Include the following directive in the Heyu configuration file:
TTY_AUX <serial_port or network_address:port> RFXCOM
where <serial_port> is the port where the RFXCOM receiver is connected,
or <network_address:port> is where the RFXLAN receiver is listening.
The RFXCOM receiver connects to a USB port but includes a USB->Serial
converter chip, while the RFXLAN connects over a network.
Start Heyu with 'heyu start', then open another xterm window and run
'heyu monitor' in it to start the Heyu Monitor. Wait for the sensor to
make a transmission, usually about every 40 seconds, and in the Heyu
monitor window you should then see something like this (ignoring the
date and time):
rcva func RFdata : Type ORE_TH1 Ch 1 ID 0x1F Data
0x1a2d101f6027908344
The example is for an Oregon Remote Temperature and Humidity sensor,
which is in the group of Oregon sensors using the protocol identified
by the mnemonic ORE_TH1.
Map the Oregon ID to an otherwise unused housecode and unitcode address
with an ALIAS directive in your Heyu configuration file using the
module type ORE_xxx corresponding to your sensor group. (A list of
Oregon sensor module types appears farther down in this page.)
Syntax:
ALIAS <label> <Housecode/Unit> <module_type> <ID>
Example:
ALIAS Attic D5 ORE_TH1 0x1F
Run 'heyu restart' to incorporate this change into the running Heyu
daemons. Then the next time the sensor makes a transmission you should
see (with the above example) something like this:
rcva func oreTemp : hu D5 Ch 1 Temp 27.7C (Attic)
rcva func oreRH : hu D5 Ch 1 RH 39% (Attic)
STORED OREGON DATA
If the Heyu Engine daemon is running, current Oregon data is stored in
the Heyu state tables and displayed in the Heyu log file (if thus
configured).
Stored data can be retrieved with the (lower case) Heyu state commands
corresponding to the displayed function labels. In the following, "Hu"
is the Housecode|Unit address to which the sensor has been mapped in
the ALIAS directive, or the alias label itself.
Examples:
heyu oretemp Hu - Temperature
heyu orerh Hu - Relative Humidity
heyu orebp Hu - Barometric Pressure
The command 'heyu show oregon' will display stored data from all
configured Oregon units in tabular form.
UNIT SCALING
The native units for output of Oregon sensors are Celsius for
temperature, hPa (hectoPascals) for Barometric Pressure, and kilograms
for Weight. (See the sections WIND SENSORS and RAIN SENSORS for
information about those sensors.) These may be scaled by Heyu to
different units with the following configuration file directives:
Directive ORE_TSCALE <temp_scale>
where <temp_scale> is F[ahrenheit], C[elsius], K[elvin], or R[ankine].
Example:
ORE_TSCALE F
Directive ORE_BPSCALE <BP_unit> <scale_factor> [<offset>]
where <BP_unit> is the name of the new unit, e.g. mmHg, and
<scale_factor> is the number by which the BP in hPa is multiplied to
get its value in the new unit.
Directive ORE_WGTSCALE <Weight_unit> <scale_factor>
where <Weight_unit> is the name of the new unit, e.g., Lbs, and
<scale_factor> is the number by which the Weight in kilograms is
multiplied to get its value in the new unit.
Some examples:
ORE_BPSCALE mmHg 0.75006158
ORE_BPSCALE inHg 0.029529983 1.06
ORE_BPSCALE millibars 1.0
ORE_WGTSCALE Lbs 2.200
The optional <offset> parameter is added to the BP after scaling.
In the USA at least, barometric pressures reported by the National
Weather Service are adjusted to the BP at sea level. The offset can be
used to approximate this adjustment for altitude. Typical values for
BP versus altitude can be found on the Internet.
SUPPORTED OREGON MODEL NUMBERS
The following chart shows the Oregon model numbers known to be
supported by the Heyu ORE_xxx module types.
Temperature sensors:
ORE_T1 : THR128 THR138 THC138
ORE_T1 : (THR128) Brookstone Projection Weather/Clock
ORE_T2 : THC238 THN132N THWR288A THRN122N THN122N AW129 AW131
ORE_T2 : Radio Shack P/N 63-1091 Projection Weather/Clock
ORE_T3 : THWR800 (Alpha)
Temperature / Humidity sensors:
ORE_TH1 : THGN122N THGN123N THGR122NX THGR228N THGR238 THGR268
THGR238N
ORE_TH2 : THGR810 THGR800 THGN800
ORE_TH3 : RTGR328N RTGN318
ORE_TH4 : THGR328N
ORE_TH5 : WTGR800
ORE_TH6 : THGR918 THGR918N THGRN228NX
Temperature / Humidity / Barometric Pressure sensors:
ORE_THB1 : BTHR918 (Alpha)
ORE_THB2 : BTHR918N BTHR968
Weight sensors
ORE_WGT1 : BWR101 BWR102
Wind sensors
ORE_WIND1 : WTGR800
ORE_WIND2 : WGR800 (In Oregin model WMR80A Weather Station bundle)
ORE_WIND3 : WGR918N (In Oregin model WMR928N Weather Station bundle)
Rain sensors
ORE_RAIN1 : PCR918N (In Oregon model WMR928N Weather Station bundle)
ORE_RAIN2 : PCR800 (In Oregon model WMR80A Weather Station bundle)
ORE_RAIN3 : (Alpha)
UV sensors
ORE_UV1 : UVR138 (Alpha)
ORE_UV2 : UVN800 (Alpha)
Current sensors
ELS_ELEC1 : Electrisave CM113 (See note below.)
OWL_ELEC2 : OWL CM119
Module types designated "Alpha" have not yet been tested with actual
data.
Module type ORE_IGNORE can be used to ignore signals from Oregon
sensors which may not be under your control, e.g., signals from a
nearby neighbor's sensor. An unused Housecode/Unit address must be
sacrificed. Specify the Oregon IDs for one or more sensors to be
ignored.
Example:
ALIAS Neighbor_Sensors P6 ORE_IGNORE 3C 4E 2A
Note: Use of this module type does not prevent RF intereference with
signals from your own sensors. See section MULTIPLE OREGON SENSORS
below.
Note: It's possible for the signal transmitted from an ELS_ELEC1 sensor
when the "Check" button is pressed to be confused with that from an
Oregon temperature sensor type ORE_T2. Pressing the Check button a
second time will generally clear up the confusion.
The following module types are Oregon emulation (dummy) modules. See
section "OREGON SENSOR EMULATION" below for usage. These modules do
not take an ID parameter.
ORE_TEMU - Temperature
ORE_THEMU - Temperature and Relative Humidity
ORE_THBEMU - Temperature and Relative Humidity and Barometric
Pressure.
TEMPERATURE, HUMIDITY, and BAROMETRIC PRESSURE SETPOINTS
Temperature, Relative Humidity, and Barometric Pressure Min and/or Max
setpoints can be defined for any Oregon sensor by appending parameters
"TMIN <setpoint>" and/or "TMAX <setpoint>" and/or "RHMIN <setpoint>"
and/or "RHMAX <setpoint>" and/or "BPMIN|BPMINL <setpoint>" and/or
"BPMAX|BPMAXL <setpoint>" to the ALIAS directive line for that sensor
in the configuration file. When the data value reported by the sensor
falls below or above the respective setpoint, corresponding local flags
TMIN, TMAX, RHMIN, RHMAX, BPMIN, and BPMAX are raised which can be
tested in the launch conditions for a Heyu script.
Examples:
ALIAS CrawlSpace B7 ORE_TH2 0x14 TMIN 32F RHMAX 90%
ALIAS Attic D5 ORE_T1 0x1F TMAX 90F TMIN 60F
Then if the B7 sensor reports a crawl-space temperature lower than 32
Fahrenheit, the TMIN flag will be raised. If the crawl-space humidity
exceeds 90%, the RHMAX flag will be raised. And if the D5 sensor
reports an attic temperature outside the range 60F - 90F, then the
appropriate TMIN or TMAX flag will be raised.
If the temperature scale suffix (C, F, K, or R) is omitted from the
setpoint, the config directive "ORE_DATA_ENTRY NATIVE|SCALED"
determines whether the scale is the native Celsius scale or that
defined by directive ORE_TSCALE.
The only scale for relative humidity is %, which may optionally be
omitted.
The barometric pressure scale defined by the ORE_BPSCALE directive may
optionally include an offset to adjust for altitude. If the specified
Min or Max setpoint includes the offset, use BPMIN or BPMAX, otherwise
use BPMINL or BPMAXL to specify that this is the unadjusted local
pressure. In other words, a setpoint specified by BPMIN corresponds to
the adjusted value displayed by Heyu, whereas a setpoint specified by
BPMINL corresponds to the local value displayed on the sensor's LCD
screen.
A BP setpoint may include the suffix for the units defined in the
ORE_BPSCALE directive or the native units "hPa". If the setpoint is
specified without a units suffix, the config directive "ORE_DATA_ENTRY
NATIVE|SCALED" determines whether the scale is the native "hPa" or that
defined by directive ORE_BPSCALE.
HEYU SCRIPTS
Heyu scripts can be launched by the functions "oretemp", "orerh", and
"orebp" the same as any other Heyu function. Similarly the "elscurr",
"owlpower", and "owlenergy" functions from the current sensors
The launch conditions in the SCRIPT directive must include the source
keyword "RCVA" and may optionally include the keyword "changed", any of
the 16 common flags, and the global security flags. They may also
optionally include the local flags.
Examples:
SCRIPT L9 oretemp rcva armed away tmin :: my_oretemp.sh
SCRIPT L9 orerh changed rcva :: my_orerh.sh
Local flags for the Oregon functions are "lobat" for those sensors
which transmit a low battery indicator, "tmin"/"tmax" for the "oretemp"
function, "rhmin"/"rhmax" for the orerh function, and "bpmin"/"bpmax"
for the orebp function.
Example:
SCRIPT CrawlSpace oretemp tmin :: echo "Freezing pipes" | mail
SCRIPT ENVIRONMENT
Any Heyu script has access to the stored Oregon data values through
environment variables linked to the housecode|unit (Hu) and its alias
(note lower case x10_) mapped to each Oregon unit.
X10_Hu_oreTemp x10_<Hu_alias>_oreTemp
X10_Hu_oreBP x10_<Hu_alias>_oreBP
X10_Hu_oreRH x10_<Hu_alias>_oreRH
X10_Hu_oreLoBat x10_<Hu_alias>_oreLoBat (1 = Low, 0 = OK);
X10_Hu_oreWgt x10_<Hu_alias>_oreWgt
X10_Hu_oreWindSp x10_<Hu_alias>_oreWindSp
X10_Hu_oreWindAvSp x10_<Hu_alias>_oreWindAvSp
X10_Hu_oreWindDir x10_<Hu_alias>_oreWindDir
X10_Hu_oreRainRate x10_<Hu_alias>_oreRainRate
X10_Hu_oreRainTot x10_<Hu_alias>_oreRainTot
X10_Hu_elsCurr x10_<Hu_alias>_elsCurr
X10_Hu_owlPower x10_<Hu_alias>_owlPower
X10_Hu_owlEnergy x10_<Hu_alias>_owlEnergy
For sensor models which transmit this information:
X10_Hu_oreCh x10_<Hu_alias>_oreCh (Channel number)
X10_Hu_oreBatLvl x10_<Hu_alias>_oreBatLvl
X10_Hu_oreForecast x10_<Hu_alias>_oreForecast
If a Heyu script is launched by one of the functions "oretemp",
"orerh", "orebp", "orewgt", "orewindsp", "orewindavsp", "orewinddir",
"orerainrate", "oreraintot", "elscurr", "owlpower", or "owlenergy", the
environment will additionally include variables for values and flags
without the "Hu" identification, e.g., X10_oreTemp, X10_oreWgt,
X10_elsCurr.
No variable is created for data which is invalid or "not ready".
CONFIGURATION DIRECTIVES
In addition to the ALIAS and scaling directives mentioned above, the
following will also affect Oregon data. See man page x10config(5).
Directive ORE_LOWBATTERY <percent> - Defines for those sensors which
transmit a battery level the percentage at or below which Heyu will
raise the "LoBat" flag. The default is 20%.
Directive HIDE_UNCHANGED YES - Display transmission in the Monitor and
Logfile only when there's a change from the previous transmission.
Directives ORE_CHGBITS_xx define the amount of change in the data
required for it to be identified as "changed". The parameter for these
directives is the number of least significant bits for the data in
question, which correspond to:
ORE_CHGBITS_T Temperature 0.1C
ORE_CHGBITS_RH Relative Humidity 1%
ORE_CHGBITS_BP Barometric Pressure 1hPa
ORE_CHGBITS_WGT Weight 0.1kg
ORE_CHGBITS_WINDSP Wind Speed 0.1meters/second
ORE_CHGBITS_WINDAVSP Wind Average Speed 0.1meters/second
ORE_CHGBITS_WINDDIR Wind Direction (varies with sensor model)
ORE_CHGBITS_RAINRATE Rainfall Rate (varies with sensor model)
ORE_CHGBITS_RAINTOT Total Rain (varies with sensor model)
ORE_CHGBITS_UV UV Factor 1
(See the sections WIND SENSORS and RAIN SENSORS for details about
change bits for those sensor types.)
Example:
ORE_CHGBITS_T 2
instructs Heyu to report a temperature as "changed" only when there's a
difference of 0.2C or more from the previous value. This avoids the
situation where even in a relatively constant temperature environment
the reported temperature may flip-flop back and forth by 0.1C in
successive transmissions.
The actual value of the data is stored in the Heyu state tables even
though it's not identified as changed or displayed in the Monitor/Log
file.
The default for each of the above directives is 1.
Directive ORE_DATA_ENTRY NATIVE|SCALED
Defines whether Oregon emulation data values (see below) are entered in
Oregon native units (Celsius for Temperature, percent for RH, or
hectoPascals for BP) or in the scaled units defined by directives
ORE_TSCALE and ORE_BPSCALE. This also applies to TMIN and TMAX
setpoint temperatures when the entered temperature does not have a
temperature scale suffix.
CURRENT SENSORS
Heyu supports decoding of signals from the Electrisave CM113 and the
newer OWL CM119 current sensors when received by an RFXCOM receiver in
variable length packet mode.
When Heyu receives a signal from these sensors, you will see displayed
in the monitor/logfile something similar to:
rcva func RFdata : Type ELS_ELEC1 Ch 1 ID 0xF5 Data 0x....
or
rcva func RFdata : Type OWL_ELEC2 Ch 1 ID 0x24 Data 0x....
Map the signal to a Housecode|init (Hu) with an ALIAS directive:
ALIAS <label> <Hu> ELS_ELEC1 <ID>
or
ALIAS <label> <Hu> OWL_ELEC2 <ID>
Example:
ALIAS MyElectric B6 OWL_ELEC2 0x24
Directive ELS_VOLTAGE <voltage>
Defines a nominal AC voltage which is multiplied by the current reading
of an Electrisave sensor to display a nominal power. The default (or
the value 0.0) omits displaying this power. Example:
ELS_VOLTAGE 240.0
Since the time relationship between current and voltage is unknown, the
units of the displayed power are just "VA" (Volt-Amperes). However
this is probably not too different from Wattage for the typical
residence which doesn't have large motors running.
Directive ELS_CHGBITS_CURR
Defines the amount of change in the Electrisave current required for it
to be identified as "changed". The parameter is the number of least
bits, each corresponding to 0.1 Amperes. The default is 1.
The Electrisave CM113 sensor reports measured current (as func
"elsCurr"), whereas the OWL CM119 sensor directly reports Power and
total Energy usage computed internally in the sensor as functions
"owlPower" and "owlEnergy".
Directive OWL_VOLTAGE <voltage>
Defines a nominal AC voltage which corrects the computation of Power
and Energy by an OWL CM119 sensor for nominal voltage other than the
default 230.0 Volts
Directive OWL_CHGBITS_POWER <nbits>
Directive OWL_CHGBITS_ENERGY <nbits>
Define the amount of change in the reported Power or Energy required
for it to be identified as "changed". The parameter is the number of
least bits, corresponding to 0.001 kW or 0.0001 KWh respectively.
Directive OWL_CALIB_POWER <factor>
Directive OWL_CALIB_ENERGY <factor>
Define decimal factors by which the Power and Energy values from an OWL
sensor are multiplied by Heyu to get a better approximation of the
actual Power and Energy. Since the OWL sensor measures only current
and the actual AC voltage will usually vary from the nominal depending
on time of day and day of the week, it can be useful to choose
calibration factors to make the values reported by Heyu agree with the
utility company electric meter when compared over a 24 hour or longer
interval. The default factors are 1.0 for both directives.
Directive OWL_DISPLAY_COUNT YES|NO
Determines whether the raw data count is displayed in the
monitor/logfile for Owl CM119 sensors. The default is NO.
HEYU COMMANDS:
The most recent values of current, power, or energy are stored in the
state table and can be recovered with the commands:
heyu elscurr <Hu>
heyu owlpower <Hu>
heyu owlenergy <Hu>
HEYU ENVIRONMENT:
Any Heyu script can retrieve the Electrisave or Owl data via the
following environment variables, where Hu is the Housecode|unit to
which the sensor is mapped.
X10_Hu_elsCurr x10_<Hu-alias>_elsCurr
X10_Hu_owlPower x10_<Hu-alias>_owlPower
X10_Hu_owlEnergy x10_<Hu-alias>_owlEnergy
Scripts launched by one of the sensor functions elscurr, owlpower, or
owlenergy will also have the corresponding environmental variable name
without the _Hu_, e.g., X10_owlPower. Additionally available are the
signal counters which are decremented and cycled 9-0 (or 15-0 if
transmitted by pressing the check/test button).
X10_elsSigCount
X10_owlSigCount
WIND SENSORS
There are currently three different protocols extant for Oregon Wind
Sensors data: Wind1, Wind2, and Wind3. These are identified by
"RFdata:Type" and decoded by the Heyu module types:
ORE_WIND1
ORE_WIND2
ORE_WIND3
Having identified the protocol and ID byte from the RFdata:Type
displayed in the monitor/logfile, map the sensor to a housecode|unit
address with an ALIAS directive, e.g.,
ALIAS MyWind D3 ORE_WIND2 0x48
Transmissions from wind sensors are single RF bursts and will be
ignored if the <min_count> in directive AUX_REPCOUNTS is set greater
than 1.
The main difference between protocols insofar as the data is concerned
is the wind direction. The Wind1 and Wind2 sensors report the
direction as one of 16 compass points 22.5 degrees apart, whereas Wind3
sensors report the direction as degrees 0-359 with a precision of 1
degree. Therefore each bit specified with directive ORE_CHGBITS_WDIR
will correspond to 22.5 degrees for Wind1 and Wind2 or 1 degree for
Wind3.
Directive ORE_WINDDIR_MODE DEGREES|POINTS|BOTH
Instructs Heyu whether to display wind direction as degrees (0-359.9)
or compass points (e.g., N, NE, NNE, etc.) or both. The default is
BOTH.
Directive ORE_WINDSCALE <units_label> <scale_factor>
Converts the wind sensor native units m/s (meters/second) into
different units. Some common examples (courtesy of the Unix 'units'
program):
ORE_WINDSCALE mph 2.2369363
ORE_WINDSCALE kph 3.6
ORE_WINDSCALE furlongs/fortnight 6012.8848
Directive ORE_WINDSENSOR_DIR <degrees>
Oregon's setup instructions call for the wind sensor to be mounted
pointing due North. If this is not possible, use this directive to
define the direction (+/- 0-359 degrees from due North) your sensor is
actually pointing. This will correct the wind direction displayed by
Heyu (although not that displayed in a Oregon Weather Base Station).
For Wind1 and Wind2 sensors, best results will be obtained if the
sensor can be mounted pointing towards one of the 16 compass points.
Directive ORE_DISPLAY_BEAUFORT YES|NO
In addition to the scaled wind speeds, the speeds on the (nonlinear)
Beaufort scale (0-12) will be displayed in the monitor/logfile. The
default is NO.
Directive ORE_DISPLAY_COUNT YES|NO
With the parameter YES, the actual sensor data readings for wind speed
and average speed are displayed in square brackets in the
monitor/logfile. The default is NO.
Directive ORE_CHGBITS_WINDSP <nbits>
Directive ORE_CHGBITS_WINDAVSP <nbits>
Directive ORE_CHGBITS_WINDDIR <nbits>
These directives define the amount of change in the variable required
for it to be marked as "changed", expressed as the number of least
significant bits in the difference between successive values.
For ORE_CHGBITS_WINDSP and ORE_CHGBITS_WINDAVSP, each bit corresponds
to 0.1 meters/sec. For ORE_CHGBITS_WINDDIR and Wind1 or Wind2 sensors,
each bit corresponds to 1 compass point (22.5 deg), while for Wind3
sensors, each bit corresponds to 1 degree.
HEYU COMMANDS:
The lowercase functions orewindavsp, orewindsp, orewinddir can be
executed as Heyu commands to recover the most recent data stored in the
Heyu state tables. Example:
heyu orewindsp E2
The command 'heyu show oregon' displays the stored data for all Oregon
sensors in tabular form.
The command 'heyu show sensors' displays the Active/Inactive state and
battery state of all sensors along with the timestamp of the last
received signal.
HEYU SCRIPTS:
The lowercase functions orewindavsp, orewindsp, and orewinddir can be
used in a SCRIPT directive the same as any other Heyu function to
launch a Heyu script.
Example:
SCRIPT E2 orewindsp rcva :: <my command line>
Global flags and local flags "lobat" and "changed" can be included in
the launch conditions as required. The source "rcva" must be included
(unless it has been configured as a default source).
HEYU ENVIRONMENT:
Any Heyu script can retrieve the Wind data via the following
environment variables, where Hu is the Housecode|unit to which the
sensor is mapped.
X10_Hu_oreWindAvSp x10_<Hu-alias>_oreWindAvSp
X10_Hu_oreWindSp x10_<Hu-alias>_oreWindSp
X10_Hu_oreWindDir x10_<Hu-alias>_oreWindDir
Scripts launched by one of the sensor functions orewindavsp, orewindsp,
or orewinddir will also have the corresponding environmental variable
name without the _Hu_, e.g., X10_oreWindSp
RAIN SENSORS
There are currently three different protocols extant for Oregon Rain
Sensors data: Rain1, Rain2, and Rain3. These are identified by
"RFdata:Type" and decoded by the Heyu module types:
ORE_RAIN1
ORE_RAIN2
ORE_RAIN3
Having identified the protocol and ID byte from the RFdata:Type
displayed in the monitor/logfile, map the sensor to a housecode|unit
address with an ALIAS directive, e.g.,
ALIAS MyRain D3 ORE_RAIN2 0x4E
Transmissions from rain sensors are single RF bursts and will be
ignored if the <min_count> in directive AUX_REPCOUNTS is set greater
than 1.
Mechanically, all the sensors work with a bucket arrangement. When a
bucket is filled with a certain amount of rain water, it tips and dumps
its contents and the tip is counted.
The main difference between the protocols insofar as data is concerned
is in the native units. For Rain1, the units are millimeters/hr and
millimeters with a precision of 1 millimeter(/hr). For Rain2 and Rain3,
the units are inches/hr and inches with a precision of 0.001 inch(/hr).
What somewhat confuses things is that for Rain2 at least, the total
rain count is not incremented by the exact same amount for each tip of
the bucket. The increments 39, 40, 43, 44 (i.e., 0.039, 0.040, 0.043,
0.044 inches) appear in what seems to be a complex pattern which is yet
to be comprehended.
Directive ORE_RAINRATESCALE <units_label> <scale_factor>
Directive ORE_RAINTOTSCALE <units_label> <scale_factor>
By default the rainfall rate and total rainfall are displayed in the
native units, which for the Rain1 protocol is mm(/hr) while for the
others it is inches(/hr). This directives allow display in any
arbitrary units by providing the name for the units and the scale
factor by which the native units are multiplied to convert to the new
units. Some common units and scale factors (courtesy of the Unix
"units" program):
For Rain1:
ORE_RAINRATESCALE inches/hr 0.039370079
ORE_RAINTOTSCALE inches 0.039370079
For Rain2 or Rain3:
ORE_RAINRATESCALE mm/hr 25.4
ORE_RAINTOTSCALE mm 25.4
Directive ORE_DISPLAY_COUNT YES|NO
With the parameter YES, the actual sensor data readings for rain rate
and total rain are displayed in square brackets in the monitor/logfile.
The default is NO.
Directive ORE_CHGBITS_RAINRATE <nbits>
Directive ORE_CHGBITS_RAINTOT <nbits>
These directives define the difference between the current and previous
raw data reading required for the data to be marked as "changed". The
default is 1 for both.
For Rain1:
ORE_CHGBITS_RAINRATE <nbits> (Each bit is 1 mm/hr)
ORE_CHGBITS_RAINTOT <nbits> (Each bit is 1 bucket tip = 1 mm)
For Rain2 or Rain3:
ORE_CHGBITS_RAINRATE <nbits> (Each bit is 0.01 inch/hr)
ORE_CHGBITS_RAINTOT <nbits> (Each bit is 1 bucket tip = 0.04 inch)
FLAGS:
Each sensor has a battery monitor. For Rain2 and Rain3, a low-battery
indicator is transmitted and Heyu will display the LoBat flag with the
data when it is received.
For Rain1, the battery level 0-100% is transmitted (and by default is
displayed with the data). The configuration directive ORE_LOWBATTERY
defines the level (default 20%) at or below which the LoBat flag is
raised and displayed.
When the total rain counter rolls over to zero, the Heyu "rollover"
flag is raised and displayed. For Rain2, rollover has been determined
to occur after an accumulation of 393.70 inches, which appears to be a
strange number until the realization that it's equivalent to 10000
millimeters. The Rain1 and Rain3 rollover points are assumed to be the
same as for Rain2, but this has not been verified.
HEYU COMMANDS:
The lowercase functions orerainrate and oreraintot can be executed as
Heyu commands to recover the most recent data stored in the Heyu state
tables. Example:
heyu oreraintot E2
The command 'heyu show oregon' displays the stored data for all Oregon
sensors in tabular form.
The command 'heyu show sensors' displays the Active/Inactive state and
battery state of all sensors along with the timestamp of the last
received signal.
HEYU SCRIPTS:
The lowercase functions orerainrate and oreraintot can be used in a
SCRIPT directive the same as any other Heyu function to launch a Heyu
script.
Example:
SCRIPT E2 oreraintot rcva :: <my command line>
Global flags and local flags "lobat" and "changed" can be included in
the launch conditions as required. The source "rcva" must be included
(unless it has been configured as a default source).
HEYU ENVIRONMENT:
Any Heyu script can retrieve the Wind data via the following
environment variables, where Hu is the Housecode|unit to which the
sensor is mapped.
X10_Hu_oreRainRate x10_<Hu-alias>_oreRainRate
X10_Hu_oreRainTot x10_<Hu-alias>_oreRainTot
Scripts launched by one of the sensor functions orerainrate oreraintot
will also have the corresponding environmental variable name without
the _Hu_, e.g., X10_oreRainRate
APPLICABLE OLDER DIRECTIVES for WIND and RAIN sensors.
Directive HIDE_UNCHANGED YES|NO
Determines whether unchanged data signals are displayed in the Heyu
monitor/logfile.
Directive INACTIVE_TIMEOUT <hh:mm:ss>
Any sensor with a heartbeat will be reported as Inactive if no signals
have been received from it within the specified timeout (default is 4
hours).
Directive ORE_DISPLAY_BATLVL YES|NO
Determines whether the battery level 0-100% is displayed in the
monitor/logfile for those sensor models which report a battery level as
opposed to just a low-battery flag. The default is YES. The LoBat
flag is unaffected by this directive. (The battery level defined with
directive ORE_LOWBATTERY defines the level at or below which the LoBat
flag will be raised.)
Directive ORE_DISPLAY_CHAN YES|NO
Determines whether the Oregon channel number is displayed in the
monitor/logfile. (The Wind and Rain sensors have no channel and are
assigned by Heyu to be Channel 1.) The default is YES.
Directive DISPLAY_SENSOR_INTV YES|NO
Determines whether the time elapsed between the current and previous
signals is displayed in the monitor/logfile. The default is NO.
OREGON SENSOR EMULATION
An external program can store Temp/RH/BP data in the state table for an
emulation (dummy) Oregon module for processing by Heyu, just as if the
data were received from an actual Oregon sensor. The available
emulation modules (described previously) are ORE_TEMU, ORE_THEMU, and
ORE_THBEMU which are mapped to a housecode|unit address with an ALIAS
directive, similar to an actual Oregon sensor.
To store data, use the command:
heyu ore_emu Hu <func> <value>
where:
Hu is the address to which one of the following emulation modules has
been mapped with an ALIAS configuration directive, or its alias label.
<func> is 'oretemp', 'orerh', or 'orebp'.
<value> is the numerical value of the Temperature, RH, or BP data.
(Temperature may optionally have an appended scale suffix C, F, K, or
R.)
The configuration directive ORE_DATA_ENTRY determines the units in
which Heyu expects the data values to be entered, unless for
Temperature it has been overridden by a scale suffix.
With the default "ORE_DATA_ENTRY NATIVE", the data is entered in the
native units for Oregon sensors, i.e., Celsius for Temperature, percent
for RH, and hectoPascals (hPa) for BP.
With "ORE_DATA_ENTRY SCALED", data is entered in the units defined by
configuration directives ORE_TSCALE and ORE_BPSCALE. Note that with
unit conversion and rounding between scaled and native units, the
displayed value of the scaled data may be slightly different than what
is entered.
Entered BP data is expected to be the local value, without the offset
(typically for adjustment to sea level) which is optionally specified
with ORE_BPSCALE. (The offset is applied to the value displayed in the
monitor or log file and to the Heyu environment variables when a script
is launched.)
Example:
In the Heyu config file:
ALIAS basement D4 ORE_THEMU
ORE_DATA_ENTRY SCALED
ORE_TSCALE F
At the command prompt:
heyu ore_emu basement oretemp 65.0
heyu ore_emu basement orerh 50
The signal will appear in the logfile and monitor with source SNDC.
Remember to include this in the launch conditions if the signal is
expected to launch a Heyu script.
MULTIPLE OREGON SENSORS
If multiple Oregon sensors are to be used, they should be different
models and/or set to different channel numbers so each has a different
transmission interval (and not an interval which is an integer multiple
of another interval). Not doing so risks having "blackout" periods
during which the RF signals from two or more sensors with the same
transmission interval interfere with each other over an extended period
of time.
The transmission interval for Oregon sensors is typically 30, 40 or 60
seconds offset by an interval depending on the channel number. E.g.,
here are the nominal intervals in seconds for several Oregon models.
(Users owning other models are encouraged to submit the information for
those models so we can expand this table.)
Model ORE_ Ch 1 Ch 2 Ch 3 Ch 4 Ch 5 Ch 6 Ch 7 Ch 8 Ch 9 Ch 10
----- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
THR138 T1 30 29 31
THRN122N T2 78
THN122N T2 39 41 43
THN132N T2 39 41 43
THGR122NX TH1 39 41 43
THGN123N TH1 39 41 43
THGR228N TH1 39 41 43
THGR238 TH1 ?? ?? ??
THGR238N TH1 39 41 43
THGR810 TH2 53 59 61 67 71 79 83 87 91 93
THGR800 TH2 53 59 61
THGN800 TH2 53 59 61 (WMR80A Weather Station)
RTGN318 TH3 53 59 61 67 71 (BAR800 Weather Station)
RTGR328N TH3 53 59 61 67 71
THGR328N TH4 53 59 61 67 71
THGR918N TH6 37 (WMR968N Weather Station)
BTHR968 THB2 38
BTHR918N THB2 38
Rebranded Units:
GEONAUTE T2 78 (Geonaute WS-300 Weather Station)
63-1091 T2 39 41 43 (Radio Shack Proj Weather/Clock)
n/a T1 30 29 31 (Brookstone Proj Weather/Clock)
Weather sensors:
PCR800 RAIN2 47 (WMR80A Weather Station)
WGR800 WIND2 14 (WMR80A Weather Station)
PCR918N RAIN1 47 (WMR968N Weather Station)
WGR918N WIND3 14 (WMR968N Weather Station)
Current sensors:
CM113 ELS_ELEC1 6 (Electrisave cent-a-meter)
The STR928N Solar Panel houses the transmitters for both PCR918N
(ORE_RAIN1) and THGR918N (ORE_TH6) sensors within the panel housing.
The STR938 Solar Panel housing houses the transmitter for the WGR918N
(WIND3) anemometer.
The length of an Oregon RF transmission depends on the type, but is
somewhere around 150-400 milliseconds.
With two THR138 sensors set to channels 1 and 2 respectively, one might
expect that the two sensors would transmit at the same time _at most_
once every (30 * 29) = 870 seconds. The most likely result of an
overlap of the RF transmissions is that the RFXCOM receiver will not
recognize the signal as a valid Oregon signal and remain silent, but
losing one out of every 30 transmissions is normally not that serious a
problem.
However consider the case of two sensors with the same nominal
transmission interval. Each Oregon sensor has an independent timebase
and the transmission intervals will be slightly different. The two
sensors may run for a long time without the transmissions overlapping,
but one will eventually catch up with the other. Suppose the intervals
of two sensors differ by 10 milliseconds. Then when the catchup
occurs, the RF signal overlap will last for approximately (3 * 150) =
450 milliseconds divided by 10 milliseconds, or 45 intervals of 30
seconds - a blackout period of about 22 minutes when no signal will be
reported. The smaller the difference between sensor intervals, the
longer the blackout period will last.
If you are forced to run more than one sensor with the same nominal
transmission interval, a more precise measurement of the each interval
can be obtained from the Heyu monitor by putting the directive
"LOGDATE_UNIX YES" in the configuration file.
An extended blackout longer than the time set by configuration
directive INACTIVE_TIMEOUT (default 4 hours) will generate an Inactive
message in the monitor/logfile.
Although Heyu can be instructed to ignore signals from a neighbor's
sensors by using the ORE_IGNORE module type, those signals can still
interfere with signals from your own sensors and result in a blackout
if the transmission intervals are the same.
SPECIAL BWR102 SETUP
The Oregon BWR102 scale has a switch on the scale for units kg, lbs, or
stone-lbs, but this controls only the display on the scale's LCD. The
transmitted data is always in kg. Use the config directive
ORE_WGTSCALE to define the units for Heyu's display.
Oregon appears to use the scale factor 2.200 for conversion from kg to
lbs rather than the official value 2.2046226. However neither of these
produces an exact match to the BWR102 LCD display for weights below
about 50 lbs.
The BWR102 transmits data as follows: After stepping on the scale and
displaying the measurement, the scale retransmits the data up to seven
times at approximately 10 or 11 second intervals (for use by the remote
display unit provided with the scale). Heyu sets the 'changed' flag
for the first of these regardless of whether the weight in this
measurement is the same or different as the previous measurement, i.e.,
if you step on the scale twice in a row and get the exact same reading
(which is unusual), Heyu will still record the weight as changed.
Note: Transmissions from the BWR102 are single RF bursts and will be
ignored if the <min_count> in directive AUX_REPCOUNTS is set greater
than 1.
EXPERIMENTAL STUFF
Directive "ORE_ID_16 YES" expands the ID of Oregon sensors to 16-bit
by using the channel code as the upper byte of a 16-bit ID word and the
normal sensor-assigned ID as the lower byte. This may be useful if you
have some of the Oregon sensor models which can only generate a very
limited number of different IDs.
Heyu recognizes protocols for Oregon signals beyond those listed as
supported, but by default ignores them.
Directive DISPLAY_ORE_ALL YES - Instructs Heyu to display "RFdata"
signals with all recognized Oregon protocols even though the support
may not yet exist for them in Heyu. Recognized but unsupported
protocols are:
ORE_DT1 - Real time clock/calendar.
ORE_WGT2 - Weight
AUTHORS
Oregon support was added to Heyu by Charles W. Sullivan using the
protocols gratefully provided by RFXCOM.
SEE ALSO
http://www.heyu.org
heyu(1), x10config(5), x10sched(5), x10scripts(5), x10aux(5),
x10cm17a(5), x10rfxsensors(5), x10rfxmeters(5), x10digimax(5)
local X10OREGON(5)