Skip to content
atalla edited this page Feb 21, 2014 · 1 revision

High Level Software Architecture


Software Architecture

The Figure illustrates the overall software architecture of the Jemma framework. Jemma is an OSGi based implementation which composites of several bundles and the interaction among these bundles are performed through providing and consuming services. Thus, the Jemma architecture is highly modular with clearly defined interfaces. The key bundles (include JavaGAL , ah.zigbee (Zigbee Network Manager), ah.hac (Home Automation Core), and Greenathome Appliance Broker) work together to implement the Energy@home specifications for energy monitoring and management application. In addition, the privacy protection is considered an important aspect of the Jemma which is managed through UserAdmin OSGi Standard service.

1. [jemma.osgi.zgd]

- Declarative Service (OSGI-INF)
   	1. EquinoxZgdCommandProvider 
	     Used to extend the command lines for OSGi (ZigBee Gateway commands)
	2. GatewayActivator
	     Manage and Register The  GatewayInterface.			
- Activator Services  (registerService)
	1. GatewayInterface 
	     Endpoint for Interacting with the GAL device like Events, Nodes, Discovery.			
- Referenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	1. Gateway Interface
	2. iGAL
3. Configuration Parameters
	1. PROP_ZGD_BIND_DEVICE_NAME = "it.telecomitalia.zgd.bind-device"
	2. jgal.debug
	3. zgd.port
	4. GATEWAY_ROOT_URI
	5. osgi.command.scope					
	6. GATEWAY_NAMESPACE = "it.telecomitalia.zgd.gateway-namespace"
	7. REST_NAMESPACE = "it.telecomitalia.zgd.rest-namespace"
	8. GATEWAY_NAMESPACE_PREFIX = "it.telecomitalia.zgd.gateway-prefix"
	9. REST_NAMESPACE_PREFIX = "it.telecomitalia.zgd.rest-prefix"
	10. GATEWAY_ROOT_URI = "it.telecomitalia.zgd.gateway-root"
	11. NETWORK_RESOURCES_URI = "it.telecomitalia.zgd.network-resources"
	12. LOCAL_PORT = "it.telecomitalia.zgd.local-port"
	13. LOCAL_ADDRESS = "it.telecomitalia.zgd.local-address"
	14. PUBLIC_ADDRESS_RESOLUTION = "it.telecomitalia.zgd.public-address-resolution"
	15. USE_PUBLIC_ADDRESS_RESOLUTION = "it.telecomitalia.zgd.use-public-address-resolution"
	16. FACTORY_IMPLEMENTATION_CLASS = "it.telecomitalia.zgd.factory-implementation-class"
	17. ENABLE_RESTLET_CONSOLE = "it.telecomitalia.zgd.enable-restlet-console"
	18. CONNECTION_TIMEOUT = "it.telecomitalia.zgd.connection-timeout"

2. [jemma.osgi.utils]

- Declarative Service (OSGI-INF)
    	None
- Activator
	 1. ExecutorObject
	     is used to manage scheduled future Tasks
	 2. DateTimeObject
	     Is used to manage the system clock.	
- Referenced Services (ServiceTracker, getServiceReference or OSGI_INF)
     None
- Configuration Parameters
     None

3. [jemma.osgi.javagal]

- Declarative Service (OSGI-INF)
	None
- Activator
	1. GatewayInterface
		Endpoint for Interacting with the GAL device like Events, Nodes, Discovery.
	2. GalExtenderProxyFactory
     	Is used to manage the system clock.

- Referenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	None
- Configuration Parameters
      1. GatewayProperties.ZGD_DONGLE_URI_PROP_NAME
      2. GatewayProperties.ZGD_DONGLE_SPEED_PROP_NAME
      3. GatewayProperties.ZGD_DONGLE_TYPE_PROP_NAME
      4. GATEWAY_NAMESPACE = "it.telecomitalia.zgd.gateway-namespace"
      5. REST_NAMESPACE = "it.telecomitalia.zgd.rest-namespace"
      6. GATEWAY_NAMESPACE_PREFIX = "it.telecomitalia.zgd.gateway-prefix"
      7. REST_NAMESPACE_PREFIX = "it.telecomitalia.zgd.rest-prefix"
      8. GATEWAY_ROOT_URI = "it.telecomitalia.zgd.gateway-root"
      9. NETWORK_RESOURCES_URI = "it.telecomitalia.zgd.network-resources"
      10. LOCAL_PORT = "it.telecomitalia.zgd.local-port"
      11. LOCAL_ADDRESS = "it.telecomitalia.zgd.local-address"
      12. PUBLIC_ADDRESS_RESOLUTION = "it.telecomitalia.zgd.public-address-resolution"
      13. USE_PUBLIC_ADDRESS_RESOLUTION = "it.telecomitalia.zgd.use-public-address-resolution"
      14. FACTORY_IMPLEMENTATION_CLASS = "it.telecomitalia.zgd.factory-implementation-class"
      15. ENABLE_RESTLET_CONSOLE = "it.telecomitalia.zgd.enable-restlet-console"
      16. CONNECTION_TIMEOUT = "it.telecomitalia.zgd.connection-timeout"
      17. ZGD_DONGLE_URI_PROP_NAME = "zgd.dongle.uri"
      18. ZGD_DONGLE_TYPE_PROP_NAME = "zgd.dongle.type"
      19. ZGD_DONGLE_SPEED_PROP_NAME = "zgd.dongle.speed"
      20. ZGD_DEBUG_PROP_NAME = "zgd.log.debug"

4. [jemma.osgi.javagal.rest]

- Declarative Service (OSGI-INF)
     None
- Activator
     None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
     - GatewayInterfaceFactoryTracker [ServiceTracker]
- Configuration Parameters
      None

5. [jemma.osgi.device.zgd]

- Declarative Service (OSGI-INF)
	- GalProcess  
		Spawn the gal process and control it
- Activator
	- IGal
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- None
- Configuration Parameters
	1. os.name
	2. os.arch
	3. ZGD_WSNC_URL_PROP_NAME = "zgd.wsnc.uri"
	4. DEFAULT_ZGD_WSNC_URL_PROP = "http://163.162.180.176:8080";
	5. ZGD_DONGLE_URI_PROP_NAME = "zgd.dongle.uri"
	6. ZGD_DONGLE_TYPE_PROP_NAME = "zgd.dongle.type"
	7. ZGD_DONGLE_SPEED_PROP_NAME = "zgd.dongle.speed"
	8. ZGD_DEBUG_PROP_NAME = "zgd.log.debug"
	9. ZGD_SECURITY_PROP_NAME = "zgd.security"
	10. ZGD_SECURITY_WATCHDOG_TIME_NAME = "zgd.watchdog"
	11. ZGD_WSNC_ID_PROP_NAME = "zgd.wsnc.id"
	12. PROP_ZGD_PORT = "zgd.port"
	13. PROP_ZGD_CHANNEL = "zgd.channel"
	14. String PROP_ZGD_AUTODISCOVERY = "zgd.autodiscovery"
	15. FRAGMENT_BUNDLES_PREFIX = "org.energy_home.jemma.osgi.zgd"
	16. DEFAULT_ZGD_DONGLE_TYPE_PROP = "ezsp"
	17. DEFAULT_ZGD_DONGLE_SPEED_PROP = 115200
	18. DEFAULT_ZGD_SECURITY = true
	19. DEFAULT_ZGD_AUTODISCOVERY = true

6. - #Bundle [jemma.osgi.ah.zigbee]

- Declarative Service (OSGI-INF)
	- ZigBeeCommandProvider
		The command lines for ZigBee Network Manager Service 
	- ZigBeeManagerImpl
		The network manager for the Zigbee network and interacts with the GA
- Activator
	- ZigBeeDevice
	exposing APIs to interact with the device
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- setNetworkManager [OSGI_INF]
	- org.eclipse.equinox.internal.util.timer.Timer [OSGI_INF]
	- rg.energy_home.jemma.zgd.GatewayInterface
- Configuration Parameters
	1. osgi.command.scope
	2. GATEWAY_NAMESPACE = "usenvm"
	3. network.type = ZigBee
	4. it.telecomitalia.ah.zigbee.properties
	5. osgi.instance.area
	6. org.osgi.service.device.Constants.DEVICE_CATEGORY,
	7. org.osgi.service.device.Constants.DEVICE_CATEGORY= "ZigBee"
	8. org.osgi.service.device.Constants.DEVICE_SERIAL = ieeeAddr
	9. org.osgi.framework.Constants.SERVICE_PID = ieeeAddr
	10. "zigbee.device.ep.id"
	11. "zigbee.device.profile.id"
	12. "zigbee.device.device.id"
	13. "zigbee.device.eps"
	14. "zigbee.device.eps.number"
	15. igbee.device.manufacturer.id"

7. - #Bundle [jemma.osgi.ah.zigbee.appliances.generic]

- Declarative Service (OSGI-INF)
	- None
- Activator
	 - None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	None
- Configuration Parameters
	None

8. - #Bundle [jemma.osgi.ah.webui.energyathome]

- Declarative Service (OSGI-INF)
	- EnergyAtHome
	a web interface to configure appliances and the entire system
- Activator
	 - None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- HttpService
	- UserAdmin
- Configuration Parameters
	- service.exported.configs
	- it.telecomitalia.ah.energyathome.auth
	- it.telecomitalia.ah.energyathome.https

9. - #Bundle [jemma.osgi.ah.m2m.device]

- Declarative Service (OSGI-INF)
	- None
- Activator
	 - M2MDeviceConfigurator
	 - M2MCommandProvider 
		Command line for M2M Device Service
	 - M2MNetworkScl
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	None
- Configuration Parameters
	None

10. - #Bundle [jemma.osgi.ah.io]

- Declarative Service (OSGI-INF)
	- FlexGatewayButtons
	 state machine to properly handle FlexGateway's leds
	- CedacIO
	- CedacIOConsole
- Activator
	None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- EventAdmin [OSGI_INF]
	- EventHandler [OSGI_INF]
- Configuration Parameters
	- osgi.command.scope

11. - #Bundle [jemma.osgi.ah.hap.client]

- Declarative Service (OSGI-INF)
	- HapServiceComponent
	- HapProxy
- Activator
	None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- DateTimeService [OSGI_INF]
	- IHapCoreService [OSGI_INF]
	- HttpService [OSGI_INF]
	- M2MNetworkScl [OSGI_INF]
	- IAppliancesProxy [OSGI_INF]
	- IM2MHapService [OSGI_INF]
	- INetworkManager [OSGI_INF]
- Configuration Parameters
	- 

12. - #Bundle [jemma.osgi.ah.hac]

- Declarative Service (OSGI-INF)
	- CmaCommandProvider
	 Commection Manager Admin Service , Home Automation Core Commands
	- CedacIO
	- CedacIOConsole
- Activator
	None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- IConnectionAdminService [OSGI_INF]
	- EventHandler [OSGI_INF]
- Configuration Parameters
	- osgi.command.scope
	- osgi.command.descriptio

13. - #Bundle [jemma.osgi.ah.greenathome]

- Declarative Service (OSGI-INF)
	- ESPApplication
	- ESPCommandProvide
	- ESPService
	- ESPEventsDispatcher
	- ESPServlet
- Activator
	None
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- ExecutorService [OSGI_INF]
	- HapService [OSGI_INF]
	- IESPEventsDispatcher[OSGI_INF]
	- EventAdmin
	- HttpService
	- ESPService (in the same Bundle)
- Configuration Parameters
	- it.telecomitalia.ah.test.hap.client.startTime
	- OSGI_INSTANCE_AREA = "osgi.instance.area"
	- OSGI_CONFIGURATION_AREA = "osgi.configuration.area"
	- ESP_CONFIG_FILENAME = "org.energy_home.jemma.ah.eh.esp.properties"
	- SP_SYSTEM_PROPERTY_PREFIX = "org.energy_home.jemma.ah.eh.esp."		
	- CHECK_SUBSCRIPTIONS_ENABLED = "checkSubscriptionsEnabled"
	- POWER_PROFILE_CLUSTER_ENABLED = "powerProfileClusterEnabled"
	- REMOTE_HOST_ADDR = "remoteHostAddr"
	- REMOTE_HOST_PORT = "remoteHostPort"
	- INITIAL_TIME_PROPERTY_NAME = "initialTime"
	- USE_LOCAL_CACHE_PROPERTY_NAME = "useLocalCache"
	- CONTRACTUAL_POWER_THRESHOLD_PROPERTY_NAME = "contractualPowerThreshold"
	- PEAK_PRODUCED_POWER_PROPERTY_NAME = "peakProducedPower"
	- SMART_INFO_PID_PROPERTY_NAME = "smartInfoPid"

14. - #Bundle [ jemma.osgi.ah.felix.console.web]

- Declarative Service (OSGI-INF)
	- HacWebCommandProvider
- Activator
	- Servlet
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- IAppliancesProxy [OSGI_INF]
	- INetworkManager [OSGI_INF]
- Configuration Parameters
	- felix.webconsole.label
	- felix.webconsole.title

15. - #Bundle [jemma.osgi.ah.energyathome]

- Declarative Service (OSGI-INF)
	- ESPApplication
	- ESPCommandProvider
	- ESPEventsDispatcher
	- ESPServlet
- Activator
	- 
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- ExecutorService [OSGI_INF]
	- HapService [OSGI_INF]
	- IESPEventsDispatcher [OSGI_INF]
	- ESPService [OSGI_INF]
	- EventAdmin [OSGI_INF]
	- HttpService [OSGI_INF]
	- ESPService [OSGI_INF]
- Configuration Parameters
	- 

16. - #Bundle [jemma.osgi.ah.configurator]

- Declarative Service (OSGI-INF)
	- Configuratore

- Activator
	- 
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- IHacService [OSGI_INF]
	- UserAdmin [OSGI_INF]
	- DocumentBuilderFactory [OSGI_INF]
	- ConnectionAdminService [OSGI_INF]
- Configuration Parameters
	- org.energy_home.jemma.username
	- org.energy_home.jemma.password

17. - #Bundle [jemma.osgi.ah.app]

- Declarative Service (OSGI-INF)
	- None

- Activator
	-  EnergyAtHomeApp
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- 
- Configuration Parameters

18. - #Bundle [jemma.osgi.ah.adapter.http]

- Declarative Service (OSGI-INF)
	- None

- Activator
	-  EnergyAtHomeApp
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- 
- Configuration Parameters		- 

19. - #Bundle [jemma.osgi.ah.upnp.energyathome]

- Declarative Service (OSGI-INF)
	- HacUPnPDevice

- Activator
	-  UPnPDevice
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- 
- Configuration Parameters
	- DEVICE_CATEGORY
	- UPnP.export
	- PRESENTATION_URLS
	- UPnPDevice.UDN
	- UPnPDevice.TYPE
	- UPnPDevice.FRIENDLY_NAME
	- UPnPDevice.MANUFACTURER
	- UPnPDevice.MANUFACTURER_URL
	- UPnPDevice.MODEL_DESCRIPTION
	- UPnPDevice.MODEL_NAME
	- UPnPDevice.MODEL_NUMBER
	- UPnPDevice.MODEL_URL
	- UPnPDevice.UPC
	- UPnPDevice.SERIAL_NUMBER
	- org.osgi.service.device.Constants.DEVICE_CATEGORY
	- UPnPDevice.UPNP_EXPORT

20. - #Bundle [jemma.osgi.ah.webui.base]

- Declarative Service (OSGI-INF)
	- WebUIComponent

- Activator
	-  
- Refrenced Services (ServiceTracker, getServiceReference or OSGI_INF)
	- HttpService [OSGI_INF]
- Configuration Parameters		 
Clone this wiki locally