180 likes | 297 Views
Outline. Recap – What is my project about? The purpose of this project What I set out to do. What I actually did. Summary Questions. What is my project about?. Well the extended title says it all, really.. “Remote, web-based, real time control of scattered media stations”
E N D
Outline... • Recap – What is my project about? • The purpose of this project • What I set out to do. • What I actually did. • Summary • Questions
What is my project about? • Well the extended title says it all, really.. • “Remote, web-based, real time control of scattered media stations” • Remote – controlling something from a different physical location • Web-based – control over a network (www or LAN, MAN, WAN etc) • Real-time – the effects of your actions can be seen instantaneously • Control – directing the behavior of • Scattered – located in amany different areas • Media Station– a device used for the dissemination of visual or audio media
What is my project about? ... • More about media stations: • The media station being controlled in this project is essentially a compact PC with a large plasma TV for its display. • Dom's project was all about how to control the screen layout of such a device
The purpose of this project. • “A need exists for real time control of scattered media delivery stations, especially in the advertising industry, where up to the minute information and fresh content is very important.” • “Our hypothesis is that a system can be developed that will provide real time control of one or more media delivery stations, using inexpensive and freely available tools.”
What I set out to do. • Investigate some of the issues surrounding • a)the control of media stations • b)the development of a system for their control • Develop a working system as a “proof of concept” • a)using freely available and inexpensive tools • b)in as short a time as possible • c)with a focus on later adaption of the system to other uses (in other industries)
What I actually did ;) • Investigation: • General remote control of media stations • Should have very strong security restrictions in place due to the public nature of such a system. • Control should be done by as few authorised people as possible. • All control should be directed through a central authority. • Changes should be logged and should include a reference to the user. • Changes should be easily reversable
What I actually did ;) ... • Investigation: • General remote control of media stations... • All changes should be atomic and should obey good RDBMS behavior... • Any node is a distributed system can go down at any time, even halfway through a change • Changes must therefore happen atomically, or be reversed. • The entire system state should be a reflection of a single data source. • A database of all system information should be maintained. • Changes to any part of the system should only occur in response to a change in the content of this database • This way, one can be guaranteed that the information in the database reflects the true state of the system.
What I actually did ;) ... • Investigation: • Developing a system for control • Use good OO design principles! • Separate presentation and logic • Keep it as modular and generalised as possible • Facilitates later modification, easy understanding and easy expansion • Use widely available technologies • Control should not involve complex software installation • Be as hardware and OS 'agnostic' as possible. • Control should be quick, easy and available to any authorised user on any platform.
What I actually did ;) ... • Investigation: • Developing a system for control... • Use a '3 tier' model • 1. Control interface • 2. Server/Databse combination • 3. One or more media systems • The control interface should do little on its own, apart from talk to the Server.
What I actually did ;) ... • Investigation: • Developing a system for control... • The Server should be the 'brain' and 'braun' of the system • It should listen to the control interface • It should change the database according to the control's communications • It should send control data to the affected media stations if the database changes sate. • Use a common communication protocol between tiers and a common language for data storage
What I actually did ;) ... • Developed a 'semi' working system • Tried to stick as closely to my design suggestions as possible. • Used a 3 tier approach, but only managed to implement the control interface.
The control interface • Decided to use an ebbedded application in a web browser • Chose to use a Java Applet. • Why Java? • Large set of functionality through the standard libraries • Widespread technology – many people have the Java Plugin installed already. • No installation required – navigate to the page and go. • Strong networking support
The control Interface • Follows the structure of the data as closely as possible (heirarchical) • Reads and writes XML, using the fairly new Java API for XML Binding (JAXB) • How JAXB works
<xsd:complexType name="Partition"> <xsd:sequence> <xsd:choice> <xsd:group ref="SplitGroup"/> <xsd:element name="mediaSpace" type="MediaSpace"/> </xsd:choice> </xsd:sequence> </xsd:complexType> <xsd:group name="SplitGroup"> <xsd:sequence> <xsd:element name="isVertical" type="xsd:boolean"/> <xsd:element name="splitPosition" type="xsd:int"/> <xsd:element name="leftOrTop" type="LeftOrTop"/> <xsd:element name="rightOrBottom" type="RightOrBottom"/> </xsd:sequence> </xsd:group> <xsd:complexType name="MediaSpace"> <xsd:sequence> <xsd:element name="width" type="xsd:int"/> <xsd:element name="relativeWidth" type="xsd:boolean"/> <xsd:element name="height" type="xsd:int"/> <xsd:element name="relativeHeight" type="xsd:boolean"/> <xsd:element name="x" type="xsd:int"/> <xsd:element name="relativeX" type="xsd:boolean"/> <xsd:element name="y" type="xsd:int"/> <xsd:element name="relativeY" type="xsd:boolean"/> <xsd:element name="content" type="Content" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="number" type="xsd:int" use="required"/> </xsd:complexType> <xsd:complexType name="Content"> <xsd:sequence> <xsd:element name="repeat" type="xsd:int"/> <xsd:element name="start" type="xsd:string"/> <xsd:element name="stop" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="mediaName" type="xsd:int" use="required"/> </xsd:complexType> <xsd:complexType name="LeftOrTop"> <xsd:sequence> <xsd:element name="partition" type="Partition"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="RightOrBottom"> <xsd:sequence> <xsd:element name="partition" type="Partition"/> </xsd:sequence> </xsd:complexType> </xsd:schema> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> Media System Schema for the project 'Remote Control of Scattered Media Stations' Created 22-10-2003 by Roger Gordon </xsd:documentation> </xsd:annotation> <xsd:element name="mediaSystem" type="MediaSystemType"/> <xsd:complexType name="MediaSystemType"> <xsd:sequence> <xsd:element name="owner" type="xsd:string"/> <xsd:element name="contactNumber" type="xsd:string"/> <xsd:element name="contactEmail" type="xsd:string"/> <xsd:element name="localSystem" type="LocalSystem" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="LocalSystem"> <xsd:sequence> <xsd:element name="location" type="xsd:string"/> <xsd:element name="iPAddress" type="xsd:string"/> <xsd:element name="lANBandwidth" type="xsd:int"/> <xsd:element name="contact" type="xsd:string"/> <xsd:element name="contactNumber" type="xsd:string"/> <xsd:element name="mediaSource" type="MediaSource" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="mediaStation" type="MediaStation" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="MediaSource"> <xsd:sequence> <xsd:element name="mediaURL" type="xsd:anyURI"/> <xsd:element name="mediaType" type="xsd:string"/> <xsd:element name="stream" type="xsd:boolean"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="MediaStation"> <xsd:sequence> <xsd:element name="location" type="xsd:string"/> <xsd:element name="screenHeight" type="xsd:int"/> <xsd:element name="screenWidth" type="xsd:int"/> <xsd:element name="contact" type="xsd:string"/> <xsd:element name="contactNumber" type="xsd:string"/> <xsd:element name="partition" type="Partition" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"/> </xsd:complexType>
Summary • Freely available tools can be used to develop a system for the real time control of scattered media stations • I developed a partly working implementation of such a system