The Module SDK is for experienced developers who want to develop modules for Ignition; it is not geared towards beginner users. Proficiency with Java is required and familiarity with Eclipse and Ant are recommended, though you are free to use the IDE and build tools of your choice.
Still on-board? Continue reading...
Downloading the SDK
The Module SDK is available with the rest of the Ignition downloads at https://inductiveautomation.com/downloads.
The Ignition Module System
An Ignition module is just a collection of JAR files that can be dynamically loaded and unloaded and an XML descriptor that lets the gateway know how to do so. These files are zipped and given a .modl extension. Vision, SQLBridge and the OPC-UA server that come with Ignition are all simply modules developed using the same APIs that are available in the Module SDK.
There are three different module “scopes”: gateway, client, and designer. These effectively indicate what areas of Ignition your module will be adding to. A module can be more than one scope. The descriptor contains a list of JAR files as well as an indicator into which scope they should be loaded. A JAR file can be loaded into more than one scope as well.
The descriptor also indicates your “hook” classes – the entry point(s) into your module. This is the class that will be loaded by the Ignition module system and will manage the life-cycle of your module.
Modules can and commonly will have dependencies on other modules. For example, if you are writing a module that provides a driver then you must indicate that you depend on the OPC-UA module being present. If you are adding a Vision component then you rely on the Vision module.
An example of the XML descriptor is available in the sample project.
The contents of the Module SDK are as follows:
|Core||API and classes exposed by the Ignition platform|
|client-api.jar||Needed for “client” scope|
|designer-api.jar||Needed for “designer” scope|
|gateway-api.jar||Needed for “gateway” scope|
|Vision||API and classes exposed by the Vision module|
|Drivers||API and classes exposed by the OPC-UA module|
|driver-api.jar||The API exposed by the OPC-UA module for creating additional drivers.|
Setting Up Eclipse
The sample project shows a common way to set up your workspace for module development – a build project, and an additional project for each scope the module will add to, as well as a driver project if the module will add a driver.
To run the sample project you need to:
• Install Eclipse and choose your workspace.
• Unzip the sample projects into your workspace.
• Import the projects via File > Import in Eclipse.
You can open the build.xml file, right-click “BuildAndInstallModule” Ant target, and choose “Run as Ant Build”. This will build the sample module and install it into a running Ignition with a development license installed.
How Licenses Work
Developer licenses can be obtained by filling out the developer license request form at https://inductiveautomation.com/developers. Ignition requires that modules be cryptographically signed (by Inductive Automation) before running. During development of a module the presence of a “Developer” license will allow unsigned modules to run.
How To Install And Test Your Module
Developer modules can be installed through the Ignition gateway the same as any other module or they can be be installed using a special developer module-loading servlet that is only running when a developer license is present.
The example project contains a simple AntTask (in ant-post-module.jar) that will let you automate the installation of your module during your build process.
Getting Your Module Signed
Getting your module signed is a manual process. All third-party modules must be reviewed approved prior to being signed by Inductive automation. When your module is ready for distribution you can contact email@example.com to start the review process.
This part of the program is still under development. We will be working closely with module developers to ensure the the program is mutually beneficial for everyone involved.
The Ignition Module SDK is in beta right now. The API may change. Documentation is being worked on constantly. Right now the best way to get help starting development is to join the forums at https://inductiveautomation.com/forum.
There is a special module developers sub-forum that you can use to get help. If you provided your forum user name when you signed up for the developer license you should have access, if not email firstname.lastname@example.org and provided your user name to request access.