GithubHelp home page GithubHelp logo

ismb / jemma Goto Github PK

View Code? Open in Web Editor NEW
40.0 25.0 37.0 46.26 MB

Java-based Energy Monitoring and Management Application

License: GNU Lesser General Public License v3.0

Shell 88.59% Python 11.31% Batchfile 0.10%

jemma's Introduction

JEMMA - Java Energy ManageMent Application framework

JEMMA is a open-source (LGPL) framework which implements the Energy@home specifications for energy monitoring and management application. JEMMA currently supports the ZigBee Home Automation 1.2 and the ZigBee Gateway Device standards resulting from of a collaboration between the Energy@home Association and the ZigBee Alliance.

More information are available on the JEMMA Website and the JEMMA GitHub page.

Full component list

JEMMA is a modular framework. To better handle development of each module, bundle developments are spread in a number of separate GitHub projects. The following table summarizes the current official JEMMA bundles.

Project Description Version
ismb/jemma The core set of JEMMA components 1.0.0-rc1
ismb/jemma.osgi.dal.adapter JEMMA Dal Adapter 1.1.2
ismb/jemma.drafts.org.osgi.osgi.service.dal Dal Base Classes (draft) 1.0.2
ismb/jemma.drafts.org.osgi.osgi.service.dal.functions Dal Base Functions (draft) 1.0.2
ismb/jemma.osgi.dal.functions.eh DAL Classes Functions for Energy@home devicess 1.0.2
ismb/jemma.osgi.dal.web-apis JEMMA REST and WebSocket API to access Devices, Functions and Events available in OSGi Device Abstraction Layer 2.0.2
ismb/jemma.osgi.ah.adapter.http JEMMA HTTP AH Adapter 2.0.5
ismb/jemma.osgi.ah.app This bundle is just a placeholder for the whole framework version 3.3.2
ismb/jemma.osgi.ah.configurator jemma.osgi.ah.configurator 1.0.9
ismb/jemma.osgi.ah.demo.fakevalues Fake devices for JEMMA testing/tutorials 0.1.3
ismb/jemma.osgi.ah.energyathome Energy@Home Home Automation bundle 2.2.32
ismb/jemma.osgi.ah.felix.console.web Apache web console plugin for Jemma 1.0.11
ismb/jemma.osgi.ah.greenathome Greenathome Appliance 2.1.22
ismb/jemma.osgi.ah.hac JEMMA Home Automation Core services 3.1.5
ismb/jemma.osgi.ah.hac.lib JEMMA Home Automation Core libraries 3.1.6
ismb/jemma.osgi.ah.hap.client A service adding a reliable layer to transfer data from the platform to the provisioning server 1.2.17
ismb/jemma.osgi.ah.io This bundles implements a state machine to properly handle FlexGateway's leds 1.0.18
ismb/jemma.osgi.ah.m2m.device Exposes stateless XML Rest API to send data and to perform queries. 1.2.17
ismb/jemma.osgi.ah.upnp.energyathome This bundle allows UPnP discovery. 1.0.3
ismb/jemma.osgi.ah.webui.base This bundles base common utilities to the web interfaces. 2.0.14
ismb/jemma.osgi.ah.webui.energyathome This bundle provides a web interface to configure appliances and the entire system. 1.0.62
ismb/jemma.osgi.ah.webui.energyathome.demo This bundle provides a web interface to configure appliances and the entire system. 1.0.47
ismb/jemma.osgi.ah.zigbee ZigBee Network Manager 2.1.28
ismb/jemma.osgi.ah.zigbee.appliances This bundle is a generic driver for ZigBee Home Automation devices used by the driver locator when a device is discovered to support all its clusters. 1.0.4
ismb/jemma.osgi.ah.zigbee.appliances.generic This bundle is a generic driver for ZigBee Home Automation devices used by the driver locator when a device is discovered to support all its clusters. 1.0.4
ismb/jemma.osgi.javagal Java-based ZigBee Gateway Abstraction Layer Implementation 2.0.10
ismb/jemma.osgi.javagal.gui JavaGAL Web GUI 1.0.7
ismb/jemma.osgi.javagal.json JavaGAL JSON interfaces 1.0.3
ismb/jemma.osgi.javagal.rest JavaGAL REST interfaces 1.0.2
ismb/jemma.osgi.utils JEMMA utils for OSGi environemnt 1.0.8
ismb/jemma-maven-repository Support project used to store binary dependencies for JEMMA. 1.0.0-rc1

Get Started

Tutorials, how-tos and other resources are available on the project wiki-based documentation.

JEMMA can also be controlled through REST/WebSocket APIs relying on OSGi Device Abstraction Layer. To start interacting with it you need also these bundles:

Take a look at this wiki page to discover functionalities that can be exposed by JEMMA devices

License

The JEMMA code-base has been developed since 2010 by Telecom Italia which holds the Copyright on the original code base.

The full JEMMA source code, unless specified otherwise in specific files, have been released under the GNU Lesser General Public License (LGPL) version 3. LGPL conditions can be found on the GNU website.

Contribute

Willing to contribute ? Check our project tracker. Information on how to contribute can be found here

Linked projects

jemma's People

Contributors

andrearanalli avatar consoftenergyathome avatar diegorugg avatar ivangrimaldi avatar marconieddu avatar riccardo avatar tinwor avatar tophans avatar uraimo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jemma's Issues

Review of documentation of all bundles and key APIs

in order to evolve the platform further, we might need a clean-up and refactoring of all bundles. A first step for this would be to better document available bundles (high-level documentation on the wiki) + good javadocs for the main classes/interfaces/services/components

Review the current ProfileID control

The current version of JEMMA does some internal check when an incoming message is received: it is not clear yet, but somewhere there is a check to verify that the ProfileId match the declared one by the node itself (or the supported one from the GAL).
However this check should be avoided, giving the responsability to the application to receive and handle this message (at the moment the message could be dropped and the application is not even aware that a message has arrived).

JEMMA-Core as a separate distribution

The core of Jemma is composed of a very limited set of bundles (5-6 in total) which provide the only functionality of discovery and communication with Energy@home devices including parsing/unparsing ZigBee clusters. All the other bundles deal with the application layers and the communication with the server.
I propose that developers shall have a simple way to download and use the JEMMA-core where the application bundles shall be considered an optional add-on

Fix Eclipse warnings

JEMMA release 0.0.1 has more than 2049 Warnings. We should solve them in order to have a more "manageable" set of checks.

Unnecessary compression of json messages

At the moment, the library used to manage json RPCs between the osgi application and the web ui, Jabsorb, tries to compress every json response that needs to be sent to the web ui.

Jabsorb has a GZip threshold that represents the minimum number of bytes gained from compression that makes acceptable to send a compressed json to the client. When the result of the compression falls below that threshold, the compressed message is discarded by the library and the original uncompressed message is sent instead.
Jemma's compressed json messages are usually so small that the compressed message is actually bigger than the original one or that the compression gain is often smaller than the threshold, so ATM compressing them seems useless.

What i've described above can be noticed looking at Jemma logs:

WARN org.jabsorb.JSONRPCServlet - gzipping resulted in a larger output size! aborting (sending non-gzipped response)... 
you may want to increase the gzip threshold if this happens a lot! original size = 1598 gzipped size = 1621

Is this issue actually relevant? It depends on where the Jemma is deployed.
While i don't have actual numbers, i suspect that when deployed on gateways with a slow CPU, the cpu time lost trying endlessly to compress json messages is not negligible (and could be used to perform other tasks).

I'm going to send in open a pull request for this (since i've already made this modification and tested it), that completely disables gzip compression. Feel free to keep it on hold until actual stats on performance will be measured.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.