stella.sensor
Class AverageSensor

java.lang.Object
  extended by util.PropertyContainer
      extended by util.PropertyResources
          extended by util.PropertyBundles
              extended by util.rmi.RmiPropertyContainer
                  extended by util.rmi.AbstractRmiCaster
                      extended by stella.sensor.AbstractSensor
                          extended by stella.sensor.TimerTaskSensor
                              extended by stella.sensor.DataSensor
                                  extended by stella.sensor.CumulativeSensor
                                      extended by stella.sensor.PredictiveSensor
                                          extended by stella.sensor.SmoothingSensor
                                              extended by stella.sensor.DerivativeSensor
                                                  extended by stella.sensor.WeatherSensor
                                                      extended by stella.sensor.AverageSensor
All Implemented Interfaces:
Cloneable, Remote, Caster, DataCaster, RmiDataCaster, RmiErrorCaster, Cumulating, Deriving, Predicting, SensorDepending, Smoothing, Telemetering, WeatherJudging, WeatherCaster, ExitCleaning, Initializable, LocalizedSupplying, PropertySupplying, ResourceSupplying, RmiCaster, RmiPropertyBearing

public class AverageSensor
extends WeatherSensor
implements SensorDepending

A class that takes a list of individual sensors and returns the average of their measurements as its measurement. Whenever this sensor is queried for its reading it takes the most recent reading of its registered (CumulativeSensor.KEY_AVERAGE) sensors and returns the average reading. Depending on KEY_OFFSET all readings that are more than this value relatively off the average are discarded. Additionally, readings below or equal KEY_MINTHRESHOLD and readings above or equal KEY_MAXTHRESHOLD are discarded.


Nested Class Summary
 
Nested classes/interfaces inherited from class stella.sensor.TimerTaskSensor
TimerTaskSensor.SensorRead
 
Nested classes/interfaces inherited from class util.PropertyResources
PropertyResources.URLResource
 
Field Summary
private  Map average
          The list of registered sensors that are used for averaging.
static String KEY_AVERAGEOF
          The list of the sensor names that are used for averaging.
static String KEY_MAXTHRESHOLD
          The maximum value that is considered valid of an individual sensor.
static String KEY_MINTHRESHOLD
          The minimum value that is considered valid of an individual sensor.
static String KEY_OFFSET
          The maximum offset allowed.
private  List names
          The list of names of the sensors that should be averaged.
private  double wasread
          Caches the last valid value.
private  boolean wasvalid
          Gets true after startup and a first successful average calculation.
 
Fields inherited from class stella.sensor.WeatherSensor
KEY_DERIVATIVEINVALID, KEY_DERIVATIVEPARAMETER, KEY_INVERSE, KEY_INVERSEDERIVATIVE, KEY_JUDGEDERIVATIVE, KEY_JUDGEPREDICT, KEY_JUDGERAW, KEY_JUDGESMOOTH, KEY_PREDICTINVALID, KEY_PREDICTPARAMETER, KEY_RAWINVALID, KEY_RAWPARAMETER, KEY_RETARDBADDERIVATIVE, KEY_RETARDBADPREDICT, KEY_RETARDBADRAW, KEY_RETARDBADSMOOTH, KEY_RETARDGOODDERIVATIVE, KEY_RETARDGOODPREDICT, KEY_RETARDGOODRAW, KEY_RETARDGOODSMOOTH, KEY_SMOOTHINVALID, KEY_SMOOTHPARAMETER
 
Fields inherited from class stella.sensor.DerivativeSensor
DEFRAWDERIVATIVE, derive, KEY_DERIVATIVEADVISE, KEY_DERIVE, KEY_PATH, KEY_RAWDERIVATIVE, z
 
Fields inherited from class stella.sensor.SmoothingSensor
f, g, KEY_SMOOTH, KEY_SMOOTHADVISE
 
Fields inherited from class stella.sensor.PredictiveSensor
KEY_BASE, KEY_CHI, KEY_EXTRAPOLATE, KEY_FUTURE, KEY_PREDICTADVISE, predict
 
Fields inherited from class stella.sensor.CumulativeSensor
KEY_AVERAGE, KEY_MEMORY, KEY_PACK
 
Fields inherited from class stella.sensor.DataSensor
DEFRAWFORMAT, DEFREPORT, DEFSIGMAFORMAT, KEY_RAWFORMAT, KEY_REPORT, KEY_SIGMAFORMAT
 
Fields inherited from class stella.sensor.TimerTaskSensor
KEY_RESPAWN
 
Fields inherited from class stella.sensor.AbstractSensor
KEY_BIND, KEY_BINDNAME, KEY_CONVERT, KEY_DESCRIPTION, KEY_SENSORNAME
 
Fields inherited from class util.rmi.AbstractRmiCaster
ALTERNATEHOST, ALTERNATEPORT, KEY_EXPORTPORT, KEY_REGISTRYHOST, KEY_REGISTRYPORT
 
Fields inherited from class util.PropertyBundles
KEY_LOCALECOUNTRY, KEY_LOCALELANGUAGE, KEY_RESOURCEBUNDLES
 
Fields inherited from class util.PropertyResources
KEY_NOINITONCREATE, localurl, locate, POSTFIX_DIR, POSTFIX_EXT, POSTFIX_FILE, POSTFIX_LIST, POSTFIX_URL, urlset
 
Fields inherited from class util.PropertyContainer
KEY_LISTSEPARATOR, KEY_MAPKEYVALUECHAR, KEY_MAPSEPARATOR
 
Fields inherited from interface stella.rmi.RmiDataCaster
NAMING_EXTENSION
 
Fields inherited from interface util.PropertySupplying
CONFIG, KEY_CLASS
 
Fields inherited from interface util.ResourceSupplying
KEY_URLRESOURCES, KEY_URLUSECONFIG, KEY_URLUSECURRENT, KEY_URLUSEHOME
 
Constructor Summary
AverageSensor(Map prop)
          Constructs a new averaging sensor.
 
Method Summary
private  double getAverage()
          Calculates the average of the values mapped in the look-up table in a recursive way.
 String getSensorInitInfo()
          Returns the names of the sensors we use for averaging plus the super information.
protected  double readSensor()
          Reads the averaging sensor.
 void registerSensor(Telemetering add)
          Adds sensor to this averaging sensor.
 boolean validReading()
          Returns true if the reading of this averaging sensor is true.
 
Methods inherited from class stella.sensor.WeatherSensor
addWeatherListener, conductOneMeasure, currentlyClear, currentlyRetarding, generateDataEvent, getMinClearUpTime, goodFromDerivative, goodFromPredict, goodFromRaw, goodFromSmooth, isDerivativeRetard, isPredictRetard, isRawRetard, isSmoothRetard, judgeWeather, notifyWeatherListener, removeWeatherListener, status
 
Methods inherited from class stella.sensor.DerivativeSensor
deriveAt, getDerivativeFormat, getDerivativeToggleInfo, getDerivator, getLastDerivative, isDerivativeAdvise, isDeriving, newData, regetDerive, registerDerivator
 
Methods inherited from class stella.sensor.SmoothingSensor
getLastSmooth, getSmoother, getSmoothToggleInfo, isSmoothAdvise, isSmoothing, regetSmooth, registerSmoother, smoothOne
 
Methods inherited from class stella.sensor.PredictiveSensor
getExtrapolation, getLastPredict, getPredictToggleInfo, isPredictAdvise, isPredicting, isReliable, predictFrom, regetPredict
 
Methods inherited from class stella.sensor.CumulativeSensor
cumulateOne, getLastRaw, getLastTime, getMaxSize, getMemory, getSize
 
Methods inherited from class stella.sensor.DataSensor
addDataListener, addRmiDataListener, exit, getRawFormat, getSigmaFormat, removeDataListener, removeRmiDataListener, report
 
Methods inherited from class stella.sensor.TimerTaskSensor
cancel, equals, getRawToggleInfo, getReading, getRespawn, getTimeOfRead, hashCode, initSensorTimerTask, isReady, regetRaw, setTimeOfRead, validReading
 
Methods inherited from class stella.sensor.AbstractSensor
addRmiErrorListener, createSensor, getBindName, getConvert, getSensorDescription, getSensorName, init, notifyErrorListener, removeRmiErrorListener, setConvert, toString
 
Methods inherited from class util.rmi.AbstractRmiCaster
bindAlternate, bindToRegistry, bindToRegistry, bindToRegistry, casterExit, casterExit, getBindName, isValid, unbindFromRegistry, unbindFromRegistry
 
Methods inherited from class util.rmi.RmiPropertyContainer
containsRemoteProperty, getRemoteProperties, getRemoteProperty, setRemoteProperty
 
Methods inherited from class util.PropertyBundles
clone, getLocalized, getLocalized, getLocalizedString, getLocalizedString, loadResource
 
Methods inherited from class util.PropertyResources
createFrom, createFrom, createFrom, getApplet, getAsResources, getLocalClassLoader, getPropertiesToKey, getPropertiesToKey, getResource, getResourceAsStream, getResourceFromKey, getResources, keyCreate, keyCreate, reload, setApplet
 
Methods inherited from class util.PropertyContainer
augment, augment, augment, defaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsEnums, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, isNew, parseObject, reload, removeProperty, rescanned, setObject, setProperties, setProperty, stringProperties
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface stella.sensor.Cumulating
cumulateOne, getLastRaw, getLastTime, getMaxSize, getSize, getTimeOfRead, regetRaw
 
Methods inherited from interface util.rmi.RmiCaster
bindToRegistry, isValid, unbindFromRegistry
 
Methods inherited from interface util.PropertySupplying
defaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, parseObject, removeProperty, setObject, setProperty, stringProperties
 
Methods inherited from interface util.ResourceSupplying
getResource, getResourceAsStream, getResources
 

Field Detail

KEY_AVERAGEOF

public static final String KEY_AVERAGEOF
The list of the sensor names that are used for averaging.

See Also:
Constant Field Values

KEY_OFFSET

public static final String KEY_OFFSET
The maximum offset allowed.

See Also:
Constant Field Values

KEY_MINTHRESHOLD

public static final String KEY_MINTHRESHOLD
The minimum value that is considered valid of an individual sensor.

See Also:
Constant Field Values

KEY_MAXTHRESHOLD

public static final String KEY_MAXTHRESHOLD
The maximum value that is considered valid of an individual sensor.

See Also:
Constant Field Values

names

private List names
The list of names of the sensors that should be averaged.


average

private Map average
The list of registered sensors that are used for averaging.


wasvalid

private boolean wasvalid
Gets true after startup and a first successful average calculation.


wasread

private double wasread
Caches the last valid value.

Constructor Detail

AverageSensor

public AverageSensor(Map prop)
              throws RemoteException
Constructs a new averaging sensor. No keys are defaulted. If in the map handed over the KEY_OFFSET, the KEY_MINTHRESHOLD, and the KEY_MAXTHRESHOLD are not defined, no exclusion of readings is done.

Throws:
RemoteException
Method Detail

registerSensor

public void registerSensor(Telemetering add)
Adds sensor to this averaging sensor. If the Telemetering instance's name is found in the KEY_AVERAGEOF list, this sensor is added to the sensors average map.

Specified by:
registerSensor in interface SensorDepending

validReading

public boolean validReading()
Returns true if the reading of this averaging sensor is true. In the strict variant, this returns true only if all sensors we average over are valid.

Specified by:
validReading in interface Telemetering

getSensorInitInfo

public String getSensorInitInfo()
Returns the names of the sensors we use for averaging plus the super information.

Specified by:
getSensorInitInfo in interface Telemetering
Overrides:
getSensorInitInfo in class WeatherSensor

readSensor

protected double readSensor()
Reads the averaging sensor. All of the mapped sensors are traversed average, their readings are updated and used for averaging.

Specified by:
readSensor in class TimerTaskSensor
See Also:
ConvertToPhysical

getAverage

private double getAverage()
Calculates the average of the values mapped in the look-up table in a recursive way. First, all mappings to null are ignored. From the remaining values, an average is calculated. If the KEY_OFFSET key is given, all values are then again transversed and all values outside the relative offset are discarded. If at least one value has been discarded, the averaging is started again.