Dog2.3 Architecture

2,195 views

Published on

An introduction to the Dog2.3 inner architecture. Stating from an high-level description of Intelligent Domotic Environment, this presentation provides deeper insights on the Dog architecture together with development guidelines for open source contributors.

Published in: Technology, Lifestyle, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,195
On SlideShare
0
From Embeds
0
Number of Embeds
1,303
Actions
Shares
0
Downloads
49
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Dog2.3 Architecture

  1. 1. Dog2.3 Domotic OSGi GatewayArchitecture Insights and development guidelines
  2. 2. Summary Intelligent Domotic Environments System Architecture Dog 2.3  Overview  Core  Drivers  Add-ons  Run-time operation Dog Development Guidelines 2 Dario Bonino - Dog 2.3 6/18/2012
  3. 3. General Picture System Architecture
  4. 4. Intelligent Domotic Environments4 Dario Bonino - Dog 2.3 6/18/2012
  5. 5. System Architecture Mobile, Web, Home Display, User User Multi Touch, Accessibility, Interface User Natural language, … Interface Interface ERP, Web services, Stream Data processors, Datawarehouse analysis Device abstraction, Event Dog abstraction, State Bundles abstraction, Rules engine, … Ethernet, Wi-Fi, USB Bus-to-IP gateway GW GW Bus-to-serial gateway Domotic bus (wired, wireless) Smart Domotic devices (switches,Applianc D D D D D D D D buttons, relays, sensors, e meters, …) 5 Dario Bonino - Dog 2.3 6/18/2012
  6. 6. In Ontology We Trust Devices and networks exposed by means of a formal, unique, representation  DogOnt (Ontology) Applications only see DogOnt-based device descriptions  Functionalities  Notifications  Commands  States  State values Internal representations and drivers must be ontology-aware, at different degrees 6 Dario Bonino - Dog 2.3 6/18/2012
  7. 7. Dog 2.3Architecture
  8. 8. High-Level Architecture OSGi - based 2 main layers 3 main bundle groups  Core  Drivers  Add-ons 8 Dario Bonino - Dog 2.3 6/18/2012
  9. 9. Core9 Dario Bonino - Dog 2.3 6/18/2012
  10. 10. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 10 Dario Bonino - Dog 2.3 6/18/2012
  11. 11. Dog REST EndPoint DogXMLEndPoint DogRESTEndPoint Dog REST EndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r Provides REST access to Dog  r r er rDogAutoStart  Based on JSON or XML messages DogDeviceFactory DogSimpleHouseMode l DogSemanticHouseModel  Under development DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 11 Dario Bonino - Dog 2.3 6/18/2012
  12. 12. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 12 Dario Bonino - Dog 2.3 6/18/2012
  13. 13. Dog XML EndPoint DogXMLEndPoint DogRESTEndPoint Dog XML EndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er r  Provides XML-RPC access to DogDogAutoStart DogSimpleHouseMode DogDeviceFactory  Based on XML messages l DogSemanticHouseModel DogOntLibrary Two Way Connection  DogDeviceModel  Client  to send notifications DogConfigurator DogLogger  Server  to listen application requests Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 13 Dario Bonino - Dog 2.3 6/18/2012
  14. 14. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 14 Dario Bonino - Dog 2.3 6/18/2012
  15. 15. DogStateMonitor DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage DogStateMonitor r r r er rDogAutoStart DogSimpleHouseMode Keeps a snapshot  DogDeviceFactory of the state of all devices l DogSemanticHouseModel  Allows for state change listener registration DogOntLibrary DogDeviceModel  Supports state querying DogConfigurator DogLogger  Typically asynchronous  Synchronous through DogSemanticLibrar Dog2Library a different interface (API) DogJaxBLibrary MeasureLibrary org.rxtx y 15 Dario Bonino - Dog 2.3 6/18/2012
  16. 16. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 16 Dario Bonino - Dog 2.3 6/18/2012
  17. 17. DogScheduler DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage DogScheduler r r r er rDogAutoStart DogSimpleHouseMode Allows to schedule  DogDeviceFactory recurring tasks involving l DogSemanticHouseModel  Command execution (done through the DogOntLibrary DogDeviceModel command handling bundles)  State requests (done by reading the current DogConfigurator DogLogger device state in dog – not on the network) Dog2Library DogSemanticLibrar  Notification…?(for what?) y DogJaxBLibrary MeasureLibrary org.rxtx 17 Dario Bonino - Dog 2.3 6/18/2012
  18. 18. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 18 Dario Bonino - Dog 2.3 6/18/2012
  19. 19. DogExecutor DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage DogExecutor r r r er rDogAutoStart DogSimpleHouseMode Dispatches  DogDeviceFactory a command to relative device l DogSemanticHouseModel object DogOntLibrary DogDeviceModel  Performs command validation  Supports message priority DogConfigurator DogLogger  No Dog2Library pre-defined priority levels DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y  Higher priority  Higher Priority Value in the corresponding DogMessage 19 Dario Bonino - Dog 2.3 6/18/2012
  20. 20. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 20 Dario Bonino - Dog 2.3 6/18/2012
  21. 21. DogDeviceManager DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage DogDeviceManager r r r er rDogAutoStart DogSimpleHouseMode Implements  DogDeviceFactorythe OSGi device manager l DogSemanticHouseModel (device access specification) DogOntLibrary DogDeviceModel  Manages device/driver attachment in Dog  When device/driver are added/modified/removed DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 21 Dario Bonino - Dog 2.3 6/18/2012
  22. 22. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 22 Dario Bonino - Dog 2.3 6/18/2012
  23. 23. DogNotificationManager DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage DogNotificationManager r r r er rDogAutoStart DogSimpleHouseMode Implements  DogDeviceFactory the Event Admin Service l Specification Version 1.2 DogSemanticHouseModel DogOntLibrary DogDeviceModel  It is based on a event publish and subscribe model DogConfigurator DogLogger  Filters inner state change notifications from outer Dog2Library (visible to applications) ones DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y  Dispatches Notification and State Change Notifications only 23 Dario Bonino - Dog 2.3 6/18/2012
  24. 24. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 24 Dario Bonino - Dog 2.3 6/18/2012
  25. 25. DogDeviceFactory DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory DogDeviceFactory DogSemanticHouseModel l  Creates device istances according to the runtime DogOntLibraryDogDeviceModel home configuration DogConfigurator DogLogger  Either provided by the SimpleHouseModel or by the Semantic House Model Dog2Library DogJaxBLibrary DogSemanticLibrar MeasureLibrary org.rxtx y 25 Dario Bonino - Dog 2.3 6/18/2012
  26. 26. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 26 Dario Bonino - Dog 2.3 6/18/2012
  27. 27. DogOntLibrary DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogOntLibrary  State classes DogConfigurator  State value classes DogLogger  All possible  Programmatically  Devices (interfaces) Dog2Library DogSemanticLibrar DogJaxBLibrary y generated from org.rxtx MeasureLibrary  Functionalities DogOnt classes 27 Dario Bonino - Dog 2.3 6/18/2012
  28. 28. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 28 Dario Bonino - Dog 2.3 6/18/2012
  29. 29. DogDeviceModel DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogDeviceModel DogConfigurator DogLogger  All possible  DeviceDogJaxBLibrary Dog2Library implementations DogSemanticLibrar MeasureLibrary org.rxtx y 29 Dario Bonino - Dog 2.3 6/18/2012
  30. 30. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 30 Dario Bonino - Dog 2.3 6/18/2012
  31. 31. DogSemanticHouseModel DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory DogSemanticHouseModel l DogSemanticHouseModel  Manages the home description in form of DogOnt instances DogOntLibrary DogDeviceModel  Supports configuration requests  Supports model merging DogConfigurator  Implements classification and basic reasoning DogLogger  Supports interoperation rules extraction Dog2Library  Potentially provides access to DogSemanticLibrar all properties/features defined in DogOnt DogJaxBLibrary MeasureLibrary org.rxtx y  Can generate XML home configuration to be used by the SimpleHouseModel 31 Dario Bonino - Dog 2.3 6/18/2012
  32. 32. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 32 Dario Bonino - Dog 2.3 6/18/2012
  33. 33. DogSimpleHouseModel DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory DogSimpleHouseModel l DogSemanticHouseModel  Manages the home description in XML DogOntLibrary DogDeviceModel  Used for Dog instances running on devices with low computational power DogConfigurator  No model-merge capabilities DogLogger  No reasoning support Dog2Library DogSemanticLibrar  If a SemanticHouseModel is present, this bundle automatically org.rxtx DogJaxBLibrary y MeasureLibrary shuts down 33 Dario Bonino - Dog 2.3 6/18/2012
  34. 34. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 34 Dario Bonino - Dog 2.3 6/18/2012
  35. 35. DogConfigurator DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogConfigurator DogSemanticHouseModel  Manages bundle-specific DogOntLibrary DogDeviceModel configurations Property files DogConfigurator DogLogger  XML files  Additional files (ontology, images, etc.) Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y  Provides configurations to all bundles implementing the ManagedService interface 35 Dario Bonino - Dog 2.3 6/18/2012
  36. 36. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 36 Dario Bonino - Dog 2.3 6/18/2012
  37. 37. DogLogger DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogLogger DogSemanticHouseModel DogOntLibrary DogDeviceModel  Provides logging facilities to all Core bundles  Can log on console or file DogConfigurator DogLogger Dog2Library apply different handlers (file, console) to  Can DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx different logging levels y 37 Dario Bonino - Dog 2.3 6/18/2012
  38. 38. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 38 Dario Bonino - Dog 2.3 6/18/2012
  39. 39. Dog2Library DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l Dog2Library DogSemanticHouseModel DogOntLibrary DogDeviceModel  Defines all the Message Types used for inter-bundle communication DogConfigurator DogLogger  Defines all the bundle service interfaces Dog2Library DogSemanticLibrar  Defines core-level notifications (not defined in DogOnt) DogJaxBLibrary y MeasureLibrary org.rxtx  Provides utility classes to other bundles 39 Dario Bonino - Dog 2.3 6/18/2012
  40. 40. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 40 Dario Bonino - Dog 2.3 6/18/2012
  41. 41. DogJaxBLibrary DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogJaxBLibrary DogSemanticHouseModel DogOntLibrary DogDeviceModel  Provides XML serialization / de-serialiazion for Inner messages DogConfigurator DogLogger  Outer messages Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx  Configurations y  Etc. 41 Dario Bonino - Dog 2.3 6/18/2012
  42. 42. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 42 Dario Bonino - Dog 2.3 6/18/2012
  43. 43. DogSemanticLibrary DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticLibraryDogSemanticHouseModel DogOntLibrary DogDeviceModel  Encapsulates and makes available all semantics- related libraries DogConfigurator DogLogger Jena Dog2Library DogSemanticLibrar  Pellet DogJaxBLibrary MeasureLibrary org.rxtx y  SPARQL query facilitator 43 Dario Bonino - Dog 2.3 6/18/2012
  44. 44. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 44 Dario Bonino - Dog 2.3 6/18/2012
  45. 45. MeasureLibrary DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l MeasureLibrary DogSemanticHouseModel DogOntLibrary DogDeviceModel  Exports the JScience library to all Dog bundles  WillDogConfigurator define un-supported JScience unit of DogLogger measures Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 45 Dario Bonino - Dog 2.3 6/18/2012
  46. 46. Core DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 46 Dario Bonino - Dog 2.3 6/18/2012
  47. 47. Org.rxtx DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l Org.rxtx DogSemanticHouseModel DogOntLibrary DogDeviceModel  Exports the serial port API library (rxtx) to all Dog bundles DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y 47 Dario Bonino - Dog 2.3 6/18/2012
  48. 48. Drivers48 Dario Bonino - Dog 2.3 6/18/2012
  49. 49. Drivers KNXNetIP Elite EIBLibIP TexasOpenWebNe Instruments t ZWave Modbus Echelon49 Dario Bonino - Dog 2.3 6/18/2012
  50. 50. Driver structure Network Driver Driver Driver Device Driver Gateway Driver50 Dario Bonino - Dog 2.3 6/18/2012
  51. 51. Network Driver Network Driver  Handles network-level communication  Protocol  Connection Driver  Polling (when needed) Driver Device Driver  Defines the network access APIs for all driver Gateway the same technology bundles, for Driver51 Dario Bonino - Dog 2.3 6/18/2012
  52. 52. Driver structure Network Driver Driver Driver Device Driver Gateway Driver52 Dario Bonino - Dog 2.3 6/18/2012
  53. 53. Gateway driver Gateway Driver  Supports multi-gateway operation for a given network technology  Handles the association betweenDriver devices and gateways Driver  Device Driver Permits to install device driver bundles only if the Gatewaycorresponding network gateway is present (in the configuration) Driver53 Dario Bonino - Dog 2.3 6/18/2012
  54. 54. Driver structure Network Driver Driver Driver Device Driver Gateway Driver54 Dario Bonino - Dog 2.3 6/18/2012
  55. 55. Device Driver Device Driver  Implements the DogOnt device features for a given class of devices Driver  Translates ontology-defined commands, Driver functionalities and states into network level messages Device Driver Gateway  One device driver per each DogOnt device Driver class  Sometimes the same driver can serve multiple device classes but this should be avoided55 Dario Bonino - Dog 2.3 6/18/2012
  56. 56. Add-ons56 Dario Bonino - Dog 2.3 6/18/2012
  57. 57. Add-on DogRulesBundl e DogPowerModelBun dle DogPowerBundl e57 Dario Bonino - Dog 2.3 6/18/2012
  58. 58. DogRulesBundle DogRulesBundle  Provides a rule-engine runtime for  Defining automation scenarios  Interoperation  DogPowerModelBun Complex device behaviors  Programmable through dedicated dle DogMessages DogPowerBundl  XML-based rule definitions e  Uses notifications as triggers, states as constraints and commands as rule consequent  Supports time-driven triggers58 Dario Bonino - Dog 2.3 6/18/2012
  59. 59. Add-on DogRulesBundl e DogPowerModelBun dle DogPowerBundl e59 Dario Bonino - Dog 2.3 6/18/2012
  60. 60. Add-on DogPowerModelBundle DogRulesBundl extension of DogOnt Handles the power e  Plug in the main Semantic House Model  Provides power-specific query functionalities on the model DogPowerModelBun dle DogPowerBundl e60 Dario Bonino - Dog 2.3 6/18/2012
  61. 61. Add-on DogRulesBundl e DogPowerModelBun dle DogPowerBundl e61 Dario Bonino - Dog 2.3 6/18/2012
  62. 62. Add-on DogPowerBundle DogRulesBundl  Exploits the DogPowerModelBundle  e Provides power consumption estimation based on  Actual measures  Typical/Nominal values defined in the DogOnt power extension DogPowerModelBun  Disaggregates actual measures when needed dle  Keeps an updated snapshot of the current home DogPowerBundl power consumption e62 Dario Bonino - Dog 2.3 6/18/2012
  63. 63. Runtime Operation63 Dario Bonino - Dog 2.3 6/18/2012
  64. 64. Start-up Development  Configured in Eclipse (Helios)  Bundles are automatically started  No pre-defined start-up order Production  Bundles are started by the DogAutoStart bundle  No pre-defined start-up order for most bundles  If both Semantic and Simple House Model are present, the Simple House Model is shut down 64 Dario Bonino - Dog 2.3 6/18/2012
  65. 65. Start-up order? No explicit order, except for the DogAutoStart bundle Each bundle waits for the availability of required services before registering to the OSGi framework When off-line and run-time dependencies are satisfied, bundles register their own services, possibly enabling the registration of other bundles Library bundles start without waiting  No dependencies 65 Dario Bonino - Dog 2.3 6/18/2012
  66. 66. Start-up example Bundles are installed Bundles start their lifecycle and become resolved Bundles with no dependencies start (active)  All library bundles The other bundles start as soon as their dependencies are satisfied (service being available) When an House Model provider (either the Simple or the Semantic House Model) becomes available  The device factory creates all devices defined in the house model  The device manager takes care of device/driver attachment  All devices for which a driver cannot be found become 66 idle Dario Bonino - Dog 2.3 6/18/2012
  67. 67. Start-up example On the driver side  Network drivers start as soon as the DogConfigurator is started (if they need configuration)  Gateway drivers start when their associated network driver becomes active (exposing the network service)  Device drivers become active if both the network driver and the gateway driver for their associated technologies are active When a device (gateway) driver becomes active  All idle devices are matched against the driver  Matching devices attach the driver and become active  Non-Matching devices remain idle 67 Dario Bonino - Dog 2.3 6/18/2012
  68. 68. Device access (OSGi) DogDeviceModel DeviceDriver DogDeviceCategory DogDeviceManager68 Dario Bonino - Dog 2.3 6/18/2012
  69. 69. Command handling (1) Application Command Dog69 Dario Bonino - Dog 2.3 6/18/2012
  70. 70. Command handling (2) Command DogXMLEndPoint DogRESTEndPoint DogStateMonito DogSchedule DogExecuto DogDeviceManag DogNotificationManage r r r er rDogAutoStart DogSimpleHouseMode DogDeviceFactory l DogSemanticHouseModel DogOntLibrary DogDeviceModel DogConfigurator DogLogger Dog2Library DogSemanticLibrar DogJaxBLibrary MeasureLibrary org.rxtx y KNX Modbus Echelon OpenWebNet ZWave Network Message 70 Dario Bonino - Dog 2.3 6/18/2012
  71. 71. Notification handling (1) Application Notification Dog71 Dario Bonino - Dog 2.3 6/18/2012
  72. 72. Notification handling DogXMLEndPoint DogRESTEndPoint Rules DogState Dog Dog DogDevice DogNotification Monitor Scheduler Executor Manager ManagerDogAutoStart DogSimpleHouseMod PowerBundl DogDeviceFactory e el DogSemanticHouseModel DogOnt DogDevice PowerModel Library Model Bundle DogConfigurator DogLogger Dog2Library DogJaxBLibrar DogSemantic MeasureLibrary org.rxtx y Library KNX Modbus Echelon OpenWebNet ZWave 72 Dario Bonino - Dog 2.3 6/18/2012
  73. 73. Dog Development GuideA quick reference to Dog development patterns
  74. 74. The Dog Mantra 1. In DogOnt we trust 2. Never stop auto-generation 3. Configuration first74 Dario Bonino - Dog 2.3 6/18/2012
  75. 75. In DogOnt we trust Internal representations and drivers must be ontology-aware, at different degrees Therefore:  All device-related bundles / modules / libraries must be compliant with the DogOnt model  Functionalities  States  Behaviors  Whenever a new device must be represented  First check the corresponding ontology  If missing, amend the ontology (by coordinating your action with the coordinator of the ontology development “group”)  If present, conform to the device model when developing the corresponding driver / module / library 75 Dario Bonino - Dog 2.3 6/18/2012
  76. 76. In DogOnt we trust (2) DogOnt is not only for description!  At runtime it is used for  Answering model queries  Configuration  Interoperation rules  Provide model handling capabilities  Model update  Model merging  Model querying (see above)  Offline it is used for  Describing specific environments (related to runtime)  Ensure DogDevice / DogOnt device coherency  By means of AutoGeneration 76 Dario Bonino - Dog 2.3 6/18/2012
  77. 77. In DogOnt we trust (4) Even when we do not use it!  Installations with reduced computational power  Simple Home  XML configuration  Auto-generation from the full ontology instantiation  Using the same process adopted for runtime configuration querying using the Semantic House Model  I.e., it.polito.elite.domotics.ontologies.dogont.DogOnt2XMLDog 77 Dario Bonino - Dog 2.3 6/18/2012
  78. 78. In DogOnt we trust (3) Thing Configuration Lamp1 DogOnt Building thing Controls Instances Controllable UnControllablle Button1Appliance HousePlants Lamp2s Controls Auto White Brown Electrica HVAC Generation Good Good l Syste Security s s System m Power Consumption Device Semantic Representations House Applications Model Eletric Power Consumption Configuration Power Lamp1Pw = 18W Model 78 Dario Bonino - Dog 2.3 6/18/2012
  79. 79. Never Stop Auto-generation (2) Ensure DogDevice / DogOnt device coherency  Autogenerate all possible components starting from the ontology  Device category  Device model  DogCommands  DogStates  DogStateValues  > 400 Java classes in one time (< 1 min) Advantages  Only two points of failure  The autogeneration process  The class templates used in the generation process 79 Dario Bonino - Dog 2.3 6/18/2012
  80. 80. Never Stop Auto-generation (3) Advantages  Less burden on writing very similar classes  Less errors as writing device-related classes is error prone  Quick generation time  Robust enough to tackle typical ontology changes  Class creation / modification / deletion Shortcomings  Needs changes if the ontology structure changes heavily  Relation / Property changes  Especially if existing, core properties are modified  However change effect is confined to the auto-generation process 80 Dario Bonino - Dog 2.3 6/18/2012
  81. 81. Never Stop Auto-generation (4) Available through  Dog Utilities  i.e., it.polito.elite.domotics.ontologies.dogont.DogOnt2Dog. In conclusion…  Never stop auto-generation,  i.e., auto-generate all the Dog modules that can be written by only exploiting DogOnt and Code templates 81 Dario Bonino - Dog 2.3 6/18/2012
  82. 82. Configuration First Bundle-specific information  E.g., network addresses, ports, sampling times, configuration files, etc.  Must be exposed through the DogConfigurator service  i.e., must be accessed through the ManagedService interface  Avoid hard-coding  Never, never, never  Hardcode information in bundle code  Soft-hardcode information in the bundle archive  Avoid using configuration parameters for properties defined in DogOnt  E.g., gateway IP address, gateway port, etc. 82 Dario Bonino - Dog 2.3 6/18/2012
  83. 83. Beware of Dog! 1. Think first! 2. Comment, comment and comment! 3. Check spelling 4. Do not hardcode, use configuration 5. Design & implement for the future 6. Do housekeeping 7. Document your choices83 Dario Bonino - Dog 2.3 6/18/2012
  84. 84. Beware of Dog!/** * A class implementing the functionalities of a generic Modbus gateway, as modeled in DogOnt. It offers ways to trace the number of currentlymanaged * gateways and to access the corresponding slaves and registers, this permits multiple-gateway operation in Dog. Currently no gateway-specific functions * are available, however in future releases functionalities offered by the real devices will be modeled and implemented here. * * @author xxxxxxx * */public class ModbusGatewayDriver implements Driver, ServiceTrackerCustomizer{ // The OSGi framework context protected BundleContext context; // System logger LogService logger; // the log identifier, unique for the class public static String logId = "[ModbusGatewayDriver]: "; // a reference to the network driver (currently not used by this driver // version, in the future it will be used to implement gateway-specific // functionalities). private ModbusNetwork network; // the registration object needed to handle the life span of this bundle in // the OSGi framework (it is a ServiceRegistration object for use by the // bundle registering the service to update the services properties or to // unregister the service). private ServiceRegistration regDriver; // the set of currently connected gateways... indexed by their ids private Map<String, ModbusGatewayDriverInstance> connectedGateways;… 84 Dario Bonino - Dog 2.3 6/18/2012
  85. 85. Beware of Dog!public void run(){ Spelling errors! // get the service pid No comments! String serivicePid = (String) serviceRef.getProperty(Constants.SERVICE_PID); Object managedServiceObj = configurationAdmin.context.getService(serviceRef); if (managedServiceObj instanceof ManagedService) { ManagedService managedService = (ManagedService) managedServiceObj; if (serivicePid != null && managedService != null) { this.configAdminLogger.log(LogService.LOG_INFO, this.logId + String.format("%s search for configuration", serivicePid)); if (configurationAdmin.configFileList.containsKey(servicePid)) { Properties propConfig =configurationAdmin.getConfigurationFromPid(servicePid); try { managedService.updated(propConfig); } catch (ConfigurationException e) { this.configAdminLogger.log(LogService.LOG_ERROR, this.logId + e); } this.configAdminLogger.log(LogService.LOG_WARNING, this.logId + String.format("%s configuration updated", serivicePid)); } } Questionable use of logging level }… 85 Dario Bonino - Dog 2.3 6/18/2012
  86. 86. Dog Development Guidelines1. Check DogOnt2. Respect OSGi specifications 1. Document yourself 2. Ask more-experienced Dog developers 3. Do not re-invent the wheel 4. If something can be done using an OSGi specification, then the specification is the only correct choice!3. Respect the DogArchitecture 1. Do not insert strict bundle dependencies, use services! 2. Do not duplicate functions in Dog 3. Do not mix different architectural levels 86 Dario Bonino - Dog 2.3 6/18/2012
  87. 87. Dog Development Guidelines4. Develop a self-contained contribution 1. Clearly identify the contribution boundaries 2. Ask the development team for changes/improvements involving other, possibly shared, Dog bundles5. Work in team 1. Never commit not-working solutions 1. Unless you are the only one working on it and it still is a “work-in-progress” 2. The solution does not impact on the other’s work 2. Always do complete commits 1. Check all dependencies, libraries, resources, etc. 87 Dario Bonino - Dog 2.3 6/18/2012
  88. 88. Dog Development Guidelines5. Work in team 3. Always update before committing 1. To detect possible conflicts and get the latest updates 4. Respect the dead / wrong code policy 1. Remove dead code or not working code 2. Be aware that not working / un-complete components are deleted after one month of grace time 3. Today we’ll delete the Effect bundles since they are in an Error State since 3 months and 1e-mail alert! 5. Each bundle should have its own trunk (branches and tags), on the SVN server 88 Dario Bonino - Dog 2.3 6/18/2012
  89. 89. Dog Development Guidelines6. Be collaborative 1. Amend wrong / deprecated code in Dog as soon as you find it 2. Ask for opinions on your design choices 3. Express your opinions on future works / versions7. Develop for the future 1. Sound code 2. Polished code 3. Commented code 4. Document your code using Javadoc 5. Write documentation manuals when Javadoc is not sufficient8. Think first! 89 Dario Bonino - Dog 2.3 6/18/2012
  90. 90. Thanks!90 Dario Bonino - Dog 2.3 6/18/2012
  91. 91. License This work is licensed under the Creative Commons “Attribution- NonCommercial-ShareAlike Unported (CC BY-NC-SA 3,0)” License. You are free:  to Share - to copy, distribute and transmit the work  to Remix - to adapt the work Under the following conditions:  Attribution - You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).  Noncommercial - You may not use this work for commercial purposes.  Share Alike - If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ 91 Dario Bonino - Dog 2.3 6/18/2012

×