Architecture sketch in plantUML =============================== @startuml component [WoT Servient] package "The classic Web" { [Web Browser] -> [WoT Servient] [Web Server] <- [WoT Servient] } [other \n WoT Servient] <-up-> [WoT Servient] package "Mapping to Physical Device" { [WoT Servient] <-down-> [WoT Servient \n for physical device] [WoT Servient \n for physical device] - [Sensor/Actor Device] } note right of [WoT Servient] WoT Servients run applications that expose or consume "Things" through an API and Protocol bindings end note @enduml Real Things accessible via Servients in the Web … ================================================= @startuml package "Virtual Instance" { Servient -down- [Event Sources] Servient -down- [Recources] Servient -down- [Actions] } package "Real Thing" { Mech_El_IF -down- [Sensors] Mech_El_IF -down- [State] Mech_El_IF -down- [Actors] } Sensors -up..> [Event Sources] : sensing [Actions] ..> Actors @enduml @startuml package "Virtual Lock Instance BT" { LockServientBT - [Locking Event BT] LockServientBT - [Lock Position, Lock Usage BT] LockServientBT - [Lock Control BT] } package "BT GW" { BT_V -up- [BT Adapter] } package "BTLock" { LockIFM - [Lock Position Sensor BT] LockIFM - [Lock State BT] LockIFM - [Locking Motor BT] BT_L - [LockController] LockController - [Locking Motor BT] LockController - [Lock Position Sensor BT] } BT_L -up..> BT_V [Lock Control BT] ..> [BT Adapter] [BT Adapter] ..> [Locking Event BT] @enduml How are things accessible from todays web … ========================================== @startuml package "Web Server" { [Server Engine] -down- HTTPEndpoint } package "Virtual Instance" { Servient -down- [Event Sources] Servient -down- [Resources] Servient -down- [Actions] Servient -right- () ScriptAPI [Servient Side Script] -left- () ScriptAPI } HTTPEndpoint -down.. Servient package "Real Thing" { Mech_El_IF -down- [Sensors] Mech_El_IF -down- [State] Mech_El_IF -down- [Actors] } Sensors -up..> [Event Sources] : sensing [Actions] ..> Actors : actuation @enduml @startuml package "Browser \n Web Client" { [Browser Engine] -down- Client [Browser Engine] -right- () ScriptAPI [Client Side Script] -left- () ScriptAPI } package "Virtual Instance" { Servient -down- [Event Sources] Servient -down- [Resources] Servient -down- [Actions] } Client -down.. Servient package "Real Thing" { Mech_El_IF -down- [Sensors] Mech_El_IF -down- [State] Mech_El_IF -down- [Actors] } Sensors -up..> [Event Sources] : sensing [Actions] ..> Actors : actuation @enduml Real Things interacting via the Web … ===================================== @startuml box "Virtual Instance A" #LightBlue entity EventSourceA1 entity ResourcesA entity ActionA1 boundary ServientA end box box "Virtual Instance B" #LightGreen boundary ServientB entity EventSourceB1 entity ResourcesB entity ActionB1 end box ServientB --> ServientA : Subscribe_EventA EventSourceA1 --> ServientA : EventA EventSourceA1 --> ResourcesA : EventA ServientA --> ServientB : EventA ServientB --> ActionB1 : TriggerB1 EventSourceB1 --> ResourcesB : SensedActionB1 @enduml @startuml box "Virtual Instance A" #LightBlue entity EventSourceA1 entity ResourcesA entity ActionA1 boundary ServientA end box box "Virtual Instance B" #LightGreen boundary ServientB entity EventSourceB1 entity ResourcesB entity ActionB1 end box EventSourceA1 --> ServientA : EventA EventSourceA1 --> ResourcesA : EventA ServientA --> ServientB : EventA ServientB --> ActionB1 : EventA @enduml