foederiertes geraete- und dienstmanagement mit web-technologien
DESCRIPTION
Introduction to federated device and service management using Web technologies. The talk introduces into an research approach how to design and develop complex service infrastructures including real world devices towards an internet of things.TRANSCRIPT
Forschungsgruppe IT-Management und Web EngineeringInstitut für TelematikUniversität Karlsruhe (TH)
Andreas Heil
Karlsruhe, 31. Januar 2005
Föderiertes Geräte- und Dienstmanagement mit Web-Technologien
Andreas Heil | 31. Januar 2006 <2>
ÜberblickÜberblickEinleitung & Problemstellung
Stand der Technik
Lösungskonzept
RealisierungSTAIVEFDXInfrastruktur
Zusammenfassung & Ausblick
Einleitung & Problemstellung
Stand der Technik
Lösungskonzept
RealisierungSTAIVEFDXInfrastruktur
Zusammenfassung & Ausblick
Andreas Heil | 31. Januar 2006 <3>
Einleitung und ProblemstellungEinleitung und Problemstellung
Lokales NetzwerkExterne Dienste
Digitales Ökosystem Haus-Automation
Andreas Heil | 31. Januar 2006 <4>
Hardware-basierteLösungen
Stand der TechnikStand der Technik
Software-basierteLösungen
Forschungsansätze
Andreas Heil | 31. Januar 2006 <5>
Lösungskonzept – WAMLösungskonzept – WAM
Andreas Heil | 31. Januar 2006 <6>
LösungskonzeptLösungskonzept
WAMService
DeviceCardRegistry
Event/InvokePipe
i2Map
Service(STAIVE)
Device
Device Specific Communication
FDX
WMCE
WSLS
Home Center
Eventing
Find DeviceRegisterDevice
Get Device Information
Set Device Configurations
UserInteraction
Add Device
Andreas Heil | 31. Januar 2006 <7>
STAtusInVokeEventing
STAtusInVokeEventing
STAIVE (1)STAIVE (1)
[System.Web.Services.WebMethod(Description = "...")]System.Xml.XmlElement GetStatusVariable(System.Xml.XmlElement varContext);
[System.Web.Services.WebMethod(Description = "...")]System.Xml.XmlElement InvokeFDX(System.Xml.XmlElement invokeContext);
[System.Web.Services.WebMethod(Description = "…")]WSLS.Services.GTS.CRUDS200403.Status Subscribe(System.Xml.XmlElement subscribeContext);
[System.Web.Services.WebMethod(Description = "...")]WSLS.Services.GTS.CRUDS200403.Status Unsubscribe(System.Xml.XmlElement unsubscribeContext);
[System.Web.Services.WebMethod(Description = "...")]System.Xml.XmlElement GetDeviceCard(System.Xml.XmlElement deviceContext);
[System.Web.Services.WebMethod(Description = "...")]System.Xml.XmlElement GetStatusVariable(System.Xml.XmlElement varContext);
[System.Web.Services.WebMethod(Description = "...")]System.Xml.XmlElement InvokeFDX(System.Xml.XmlElement invokeContext);
[System.Web.Services.WebMethod(Description = "…")]WSLS.Services.GTS.CRUDS200403.Status Subscribe(System.Xml.XmlElement subscribeContext);
[System.Web.Services.WebMethod(Description = "...")]WSLS.Services.GTS.CRUDS200403.Status Unsubscribe(System.Xml.XmlElement unsubscribeContext);
[System.Web.Services.WebMethod(Description = "...")]System.Xml.XmlElement GetDeviceCard(System.Xml.XmlElement deviceContext);
Andreas Heil | 31. Januar 2006 <8>
STAIVE (2)STAIVE (2)
<xs:element name ="VarContext" type ="fdx:VarContext"/><xs:complexType name="VarContext"> <xs:sequence> <xs:element ref="dc:Identifier" minOccurs="1" maxOccurs="1" /> </xs:sequence></xs:complexType>
<xs:element name ="VarContext" type ="fdx:VarContext"/><xs:complexType name="VarContext"> <xs:sequence> <xs:element ref="dc:Identifier" minOccurs="1" maxOccurs="1" /> </xs:sequence></xs:complexType>
Andreas Heil | 31. Januar 2006 <9>
STAIVE (3)STAIVE (3)
<xs:element name="InvokeContext" type="fdx:InvokeContext"/><xs:complexType name="InvokeContext"> <xs:sequence> <xs:element ref="dc:Identifier" minOccurs="1" maxOccurs="1" /> <xs:element name="InvokeParamter" type="fdx:InvokeParameter" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence></xs:complexType>
<xs:complexType name="InvokeParameter"> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="Value" type="xs:string" minOccurs="1" maxOccurs="1"/> </xs:sequence></xs:complexType>
<xs:element name="InvokeContext" type="fdx:InvokeContext"/><xs:complexType name="InvokeContext"> <xs:sequence> <xs:element ref="dc:Identifier" minOccurs="1" maxOccurs="1" /> <xs:element name="InvokeParamter" type="fdx:InvokeParameter" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence></xs:complexType>
<xs:complexType name="InvokeParameter"> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="Value" type="xs:string" minOccurs="1" maxOccurs="1"/> </xs:sequence></xs:complexType>
Andreas Heil | 31. Januar 2006 <10>
STAIVE (4)STAIVE (4)
<xs:element name="SubscribeContext" type="fdx:SubscribeContext"/><xs:complexType name="SubscribeContext"> <xs:sequence> <xs:element name="Event" type="fdx:SubscriptionIdentifier"/> <xs:element name="Callback" type="fdx:Callback"/> </xs:sequence></xs:complexType>
<xs:complexType name ="Callback"> <xs:sequence> <xs:element name="Location" type="xs:anyURI"/> <xs:element ref ="fdx:InvokeContext"/> </xs:sequence></xs:complexType>
<xs:element name="SubscribeContext" type="fdx:SubscribeContext"/><xs:complexType name="SubscribeContext"> <xs:sequence> <xs:element name="Event" type="fdx:SubscriptionIdentifier"/> <xs:element name="Callback" type="fdx:Callback"/> </xs:sequence></xs:complexType>
<xs:complexType name ="Callback"> <xs:sequence> <xs:element name="Location" type="xs:anyURI"/> <xs:element ref ="fdx:InvokeContext"/> </xs:sequence></xs:complexType>
Andreas Heil | 31. Januar 2006 <11>
STAIVE (5)STAIVE (5)
<xs:element name="UnsubscribeContext" type="fdx:UnsubscribeContext"/><xs:complexType name="UnsubscribeContext"> <xs:sequence> <xs:element name="Event" type="fdx:SubscriptionIdentifier"/> <xs:element name="Callback" type="fdx:SubscriptionIdentifier"/> </xs:sequence></xs:complexType>
<xs:element name="UnsubscribeContext" type="fdx:UnsubscribeContext"/><xs:complexType name="UnsubscribeContext"> <xs:sequence> <xs:element name="Event" type="fdx:SubscriptionIdentifier"/> <xs:element name="Callback" type="fdx:SubscriptionIdentifier"/> </xs:sequence></xs:complexType>
Andreas Heil | 31. Januar 2006 <12>
STAIVE (6)STAIVE (6)
<xs:element name="DeviceContext" type="fdx:DeviceContext" /><xs:complexType name="DeviceContext" > <xs:sequence> <xs:element ref="dc:Identifier" minOccurs="1" maxOccurs="1"/> </xs:sequence></xs:complexType>
<xs:element name="DeviceContext" type="fdx:DeviceContext" /><xs:complexType name="DeviceContext" > <xs:sequence> <xs:element ref="dc:Identifier" minOccurs="1" maxOccurs="1"/> </xs:sequence></xs:complexType>
Andreas Heil | 31. Januar 2006 <13>
FDX (1)FDX (1)
Web service
STAIVE
DeviceData
Invoke
PhidgetListener
(Un-)Subscribe
Notify
.NET Wrapper
Phidgets.dll
Template
sSubscriptionList
Andreas Heil | 31. Januar 2006 <14>
FDX (2)FDX (2)
<xs:element name="Device" type="fdx:Device"/><xs:complexType name="Device"> <xs:complexContent> <xs:extension base="core:Entity"> <xs:sequence> <xs:element name="Location" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> <xs:element name="Metadata" type="fdx:Metadata" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="SubDevice" type="fdx:Device" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="Function" type="fdx:Function" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="StatusVariable" type="fdx:StatusVariable" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Event" type="fdx:Event" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent></xs:complexType>
<xs:element name="Device" type="fdx:Device"/><xs:complexType name="Device"> <xs:complexContent> <xs:extension base="core:Entity"> <xs:sequence> <xs:element name="Location" type="xs:anyURI" minOccurs="1" maxOccurs="1"/> <xs:element name="Metadata" type="fdx:Metadata" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="SubDevice" type="fdx:Device" minOccurs="0" maxOccurs="unbounded" /> <xs:element name="Function" type="fdx:Function" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="StatusVariable" type="fdx:StatusVariable" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Event" type="fdx:Event" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent></xs:complexType>
Andreas Heil | 31. Januar 2006 <15>
FDX (3)FDX (3)
Andreas Heil | 31. Januar 2006 <16>
Infrastruktur (1)Infrastruktur (1)WAM Service
CRUDS
DeviceCard RegistryCRUDS
Event/Invoke PipeCRUDS + STAIVE
WAM ServiceCRUDS
DeviceCard RegistryCRUDS
Event/Invoke PipeCRUDS + STAIVE
Andreas Heil | 31. Januar 2006 <17>
Infrastruktur (2)Infrastruktur (2)
Andreas Heil | 31. Januar 2006 <18>
Infrastruktur (3)Infrastruktur (3)<DeviceCardRegistry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ... <Device> <Identifier xmlns="http://purl.org/dc/elements/1.1/">urn:sdfid:8e3f2956-5d0c-4fb2-bbc4 ... <Title xmlns="http://purl.org/dc/elements/1.1/">PhidgetTextLCD S/N:14916</Title> <Location>http://localhost:6118/Phidgets/Service.asmx</Location> <Function> <Identifier /> <Name>SetText</Name> <Parameter> <Type>String</Type> <Name>TextLine1</Name> <Direction>In</Direction> </Parameter> ... <StatusVariable> <Identifier /> <Type>String</Type> <Name>SerialNumber</Name> </StatusVariable> </Device> <Device> <Identifier xmlns="http://purl.org/dc/elements/1.1/">urn:sdfid:b354ee94-fd8d-4c11-b49d ... <Title xmlns="http://purl.org/dc/elements/1.1/">PhidgetInterfaceKit S/N:13358</Title> <Location>http://localhost:6118/Phidgets/Service.asmx</Location> <Event> <Identifier /> <Name>OnSensorChange</Name> <Parameter> <Type>Integer</Type> <Name>Index</Name> <Direction>Out</Direction> </Parameter> ... </Event> </Device></DeviceCardRegistry>
<DeviceCardRegistry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ... <Device> <Identifier xmlns="http://purl.org/dc/elements/1.1/">urn:sdfid:8e3f2956-5d0c-4fb2-bbc4 ... <Title xmlns="http://purl.org/dc/elements/1.1/">PhidgetTextLCD S/N:14916</Title> <Location>http://localhost:6118/Phidgets/Service.asmx</Location> <Function> <Identifier /> <Name>SetText</Name> <Parameter> <Type>String</Type> <Name>TextLine1</Name> <Direction>In</Direction> </Parameter> ... <StatusVariable> <Identifier /> <Type>String</Type> <Name>SerialNumber</Name> </StatusVariable> </Device> <Device> <Identifier xmlns="http://purl.org/dc/elements/1.1/">urn:sdfid:b354ee94-fd8d-4c11-b49d ... <Title xmlns="http://purl.org/dc/elements/1.1/">PhidgetInterfaceKit S/N:13358</Title> <Location>http://localhost:6118/Phidgets/Service.asmx</Location> <Event> <Identifier /> <Name>OnSensorChange</Name> <Parameter> <Type>Integer</Type> <Name>Index</Name> <Direction>Out</Direction> </Parameter> ... </Event> </Device></DeviceCardRegistry>
Andreas Heil | 31. Januar 2006 <19>
Infrastruktur (4)Infrastruktur (4)WAM Service
CRUDS
DeviceCard RegistryCRUDS
Event/Invoke PipeCRUDS + STAIVE
WAM ServiceCRUDS
DeviceCard RegistryCRUDS
Event/Invoke PipeCRUDS + STAIVE
Andreas Heil | 31. Januar 2006 <20>
Infrastruktur (5)Infrastruktur (5)
B
F GL
H
C
Abos Event 2 bei FDX-1
J
A
E
D
K
I
M
Abos Event 1 bei FDX-1
Abarbeitung bei Event 1 Abarbeitung bei Event 2
Geordnete Abarbeitung durch Event/Invoke Pipe
Andreas Heil | 31. Januar 2006 <21>
Home Center (1)Home Center (1)
Andreas Heil | 31. Januar 2006 <22>
Home Center (2)Home Center (2)
Andreas Heil | 31. Januar 2006 <23>
Home Center (3)Home Center (3)
Andreas Heil | 31. Januar 2006 <24>
Home Center (4)Home Center (4)
Andreas Heil | 31. Januar 2006 <25>
ZusammenfassungZusammenfassungSTAIVE
Generische Schnittstelle à la CRUDS
FDXWeb-basierte Management Komponenten
Infrastruktur DiensteWAM Service, DeviceCard Registry, Event/Invoke Pipe
STAIVEGenerische Schnittstelle à la CRUDS
FDXWeb-basierte Management Komponenten
Infrastruktur DiensteWAM Service, DeviceCard Registry, Event/Invoke Pipe
Andreas Heil | 31. Januar 2006 <26>
AusblickAusblickWeitere FDX
UPnP FDX
WMCE ErweiterungWSLS Integration (IFrames)
Weitere FDXUPnP FDX
WMCE ErweiterungWSLS Integration (IFrames)
Forschungsgruppe IT-Management und Web EngineeringInstitut für TelematikUniversität Karlsruhe (TH)
Vielen Dank für Ihre Aufmerksamkeit!
Fragen, Anmerkungen, …?