OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

obix-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: OBIX v1.0 Comments


Re spaceTemp as a point: Good point (pun intended).
This is a standard contract defined by oBIX for representing point information.

I am still struggling with the standard contract defined by oBIX for representing
alarm information.
Reference the definition of "alarm" in paragraph 15:
"an alarm indicates a condition which requires notification of either a user or
another application". 

My confusion starts with the third paragraph of 15.1 and includes 3 parts:
1. "An alarm which implements neither StatefulAlarm nor the AckAlarm contracts is
completely stateless - these alarms merely represent events" implies that an event
is a subset of alarm. Back to the definition of "alarm" in paragraph 15 and
changing "condition" to "event" yields "an alarm indicates an event which requires
notification of either a user or another application". This implies that alarm is
a subset of event.
2. "An alarm which implements StatefulAlarm but not AckAlarm will have an in-alarm
state, but not acknowledgement state" is ok but I am having difficulty coming up
with an application wherein recording that someone acknowledged the alarm and the
time of the acknowledgement would not be required,
3. "Conversely an alarm which implements AckAlarm but not StatefulAlarm will have
an acknowledgement state, but not in-alarm state."
I do not understand how there can be an acknowledgement state if there has been no
in-alarm state. Without the in-alarm state, there is no need for notification and
thus no need to acknowledge the notification. Actually, I do not understand how an
alarm can not implement StatefulAlarm. If an event does not have an in-alarm state,
it is not an alarm.
All this is only a point of confusion for me. More important is the fact that the
standard contract defined by oBIX for representing alarm information includes
contracts for StatefulAlarm and AckAlarm. 

Then, in 4.16.8, the status facet includes one of 3 alarm values:
1. unackedAlarm: in alarm but not acknowledged
2. alarm: in alarm
3. unacked: a past alarm condition which remains unacknowledged.
I believe there are additional alarm values which should be defined in the standard
contract, namely:
4. ackedAlarm: in alarm and acknowledged.
5. pastAlarmAcked: past alarm which has returned to normal and was acknowledged.
6. noAlarmNoAck: the normal state. 

I'll try to plug these values into an example.

The thermostat object described in the Quick Start example had three child objects:
	a current space temperature value represented by the spaceTemp element,
	a desired temperature value represented by the setpoint element, and
	a control output value represented by the furnaceOn element.
If the application called for a temperature alarm function,
six children or grandchildren objects could be added:
	a high temperature alarm value represented by an alarmSetpoint element
	a high alarm state value represented by an alarm element
	a high alarm time stamp value represented by an alarmTimestamp element
	a return to normal time stamp value represented by a normalTimestamp element
	a high alarm acknowledge state value represented by an ack element
	a high alarm acknowledge time stamp value represented by an ackTimestamp
		element. 
Assume the initial current space temperature value is below the high temperature
alarm value; the initial high alarm state value would be reset.
Since there is no high temperature alarm state to acknowledge,
the initial high alarm acknowledge state value would be reset.
The status facet alarm value would be "noAlarmNoAck".
If the current space temperature value increases to the high temperature
alarm value,
	the high alarm state value would be set
	the high alarm time stamp value would record the time of the high
		temperature alarm.
	the status facet alarm value could be "alarm".
Since an alarm condition requires notification, the transition of the high alarm
state value from reset to set triggers a horn and flashing lights to wake a user
or an interrupt to wake an application. If the application requires the user to 
acknowledge the alarm, the status facet alarm value would be "unackedAlarm". 
In order to acknowledge that the user or application is awake and aware of the
alarm condition, the user/application sets the high alarm acknowledge state value.
The status facet alarm value would be "ackedAlarm".
Normally, the transition from reset to set of the high alarm acknowledge state
value will stop the horn and flashing lights so that they are available to any
other alarm event.
The high alarm acknowledge time stamp value would record the time of the
acknowledgement.
When the current space temperature value decreases below the high temperature
alarm value
	the high alarm state value would be reset
	the return to normal time stamp value would record the time of the return
		to a normal temperature.
If the alarm state has not been acknowledged when the high alarm state transitions
to normal, the status facet alarm value would be "unacked". Then, when the user 
finally acknowledges the past alarm, the status facet alarm value would be
"pastAlarmAcked".
If the alarm state had been acknowledged before the high alarm state transitions
to normal, the status facet alarm value would be "noAlarmNoAck".	

Finally, something has to reset the acknowleded state in order for the system to
see the transition from reset to set.
Actions such as turning on a horn are triggered by an event.
Events are identified by an event state transition.
I guess the event state could be represented by a flip-flop.
But, then some other mechanism would have to keep track of what the flip-flop
state means. Assigning a meaning to each state is simpler,
i.e. reset means normal and set means alarm or
reset means unacknowledged and set means acknowledged.
Therefore, for the event to be identified the next time it occurs, the event state
must be returned to its normal state. Specifically, if we want to recognize the next
transition to the acknowledged (set) state, the high alarm acknowledge state
value must be returned to its unacknowledged state at some point.

This specification was very well done. My comments are self serving in that they
help me work through some points of confusion. Hopefully, they will be helpful
to others.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]