======================= How to create a package ======================= First, what type of package do you want to create ? =================================================== There are several types of packages : * Plugins * External members Plugins ------- Plugin is the main package type in Domogik. It allows you to use some devices (x10 gateway, Zwave stick, ...) or some software (web service, ...) in Domogik. A plugin is made of : * A json file which describes the plugin, the features, ... * Some python files. External members ---------------- An external member is a xPL client not linked to Domogik. It can be a product like : * The RFXCOM xPL. * A sqeezebox. * An diy or arduino board with an ethernet shield and a sketch which communicate xPL. * A xPL program made outside of Domogik (xpl-perl for example). To interact with Domogik, some files must be created for an external member : * A json file which describes the member and the features of the external member. .. warning :: Currently, for each external member you have to create some json and xml files. We will create a generic external member with some common features in order to handle some external members with classic features (temperature, ...). So, people won't have to create a package for each external client. Then, how to create a package ? =============================== Before creating the package --------------------------- * Check if there is not already an existing (or in development) package for what you want to do. * Look into :doc:`the packages life cycle `. Create the package ------------------ .. image:: packages_lifecycle.png Download :download:`SVG source file `. #. :doc:`Make specification ` for your package on the wiki. You can create a page wiki.domogik.org/_. Example : http://wiki.domogik.org/plugin_ipx800 for the *ipx800* plugin. #. :doc:`Start developing the package `. #. Write the :doc:`package documentation ` at the same time. #. Write some :doc:`test cases ` for the package. #. :doc:`Test your package `. #. :doc:`Generate the package ` and send a request to upload it on a repository. #. :doc:`The package will be reviewed ` by a Domogik core team member.