200 likes | 388 Views
Why oBIX?. XML standard Enterprise friendly protocol High fidelity. Architecture. Object Model: modeling XML Syntax: serialization URLs: naming REST: fits into web architecture Contracts: semantics Extendibility: philosophy Protocol Bindings: networking.
E N D
Why oBIX? • XML standard • Enterprise friendly protocol • High fidelity
Architecture • Object Model: modeling • XML Syntax: serialization • URLs: naming • REST: fits into web architecture • Contracts: semantics • Extendibility: philosophy • Protocol Bindings: networking
Architecture – XML Syntax <obj href="http://myhome/thermostat/"> <objname="spaceTemp"is="obix:RealPoint …"> <real name="value"val="73.1"/> </obj> <obj name="setpoint"is="obix:RealPoint …"> <real name="value"val="74"/> </obj> <str name="description"val="In Living Room"/> </obj>
Architecture - URIs • Uniform/Universal Resource Identifier • AKA: URLs • Naming for WWW • Relative URLs • Assigning everything with a URL
Architecture - REST • REpresentational State Transfer • Identify resources with URIs • Access with limited set of verbs: • Read - GET • Write - PUT • Invoke - POST • Transfer resources as XML documents • Stateless
Architecture - Contracts • Typing/Semantics • Contract = list of URIs to template objects (is attribute) • Prototype "inheritance" • Mixins - multiple "inheritance" • Tagging – Semantic Web • Taxonomy: standard contracts • Folksonomy: vendor/user contracts
Architecture - Extendibility • Embrace vendor specific extensions! • Easy to mix together standard and vendor contracts • Philosophically like Java/C#: • Small fixed grammar (obj model/XML) • Standard libraries (spec) • Vendor libraries (everything else)
Architecture – Protocol Bindings • HTTP • Read - GET • Write - PUT • Invoke – POST • SOAP • Wrap read, write, invoke inside SOAP envelope • XML Schema • WSDL • Security • More… • Email (SMTP, POP3) • Messaging (MQ, JMS)
Human Web (WWW) • Assign every document a URL • Wire documents together with URLs • Standard document formats: HTML, GIF, JPEG, SVG • Semantics: work in progress • Search: Google
M2M Web • Assign every device an IP address and URL • Assign every piece of data and service in a device a URL • Wire data together via URLs • Standard format: oBIX documents • Semantics: oBIX contracts • Search: Google?
Standard Contracts • Normalization • Watches • Points • Histories • Alarming
Watches • Subscription • Client makes watch via WatchService • Add/Remove URIs to watch • Client polls server for changes • Leased
Points – Point • Normalized Points: • obix:BoolPoint • obix:RealPoint • obix:EnumPoint • obix:StrPoint <obj href="obix:Point"> <obj name="value"/> <obj name="status"is="obix:Status"/> <abstime name="timestamp"null="true"/> </obj>
Points - Status <obj href="obix:Status"> <bool name="overridden"val="false" /> <bool name="disabled"val="false" /> <bool name="fault"val="false" /> <bool name="down"val="false" /> <bool name="inAlarm"val="false" /> <bool name="unackedAlarm"val="false" /> <bool name="historyStart"val="false" /> <bool name="historyEnd"val="false" /> </obj>
History • obix:History • History.query • History.rollup
Alarming • obix:Alarm • obix:StatefulAlarm • obix:AckAlarm • obix:AlarmSubject
Java oBIX Toolkit • Open source – Public Domain • Obj API • XML Encoder/Decoder • ObixSession • Obixc • Swing Tool • http://sourceforge.net/projects/obix
More Information • http://obix.org/ • http://sourceforge.net/projects/obix