Difference between revisions of "How to implement a new plugin"

From AMTech WikiDocs
Jump to: navigation, search
(Verify smoothing criteria)
Line 71: Line 71:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
If the observation does satisfy any of the smoothing criteria, then an object is returned with every field that satisfied its smoothing criteria  
+
If the observation does satisfy any of the smoothing criteria, then an object is returned with every field that satisfied its corresponding smoothing criteria. If no field hold its conditions then the function returns '''undefined'''
 +
 
 
=== Smoothing configuration ===
 
=== Smoothing configuration ===

Revision as of 12:49, 2 February 2018

  • Create a thing type XXXThing (See Thing types)
  • Create the observations type the thing XXXThing produces or consumes, example XXXThingObserv1 (See Observations and observation types)
  • Associate the observation XXXThingObserv1 type to the XXXThing
  • Implement a nodejs module with the following interface
    function XXXThing() {
    }

    XXXThing.prototype.start = function ( complete) {
        try {
            complete(null);
        } catch (e) {
            complete(e);
        }
    };

    XXXThing.prototype.stop = function (complete) {
        try {
            complete(null);
        } catch (e) {
            complete(e);
        }
    };

    XXXThing.prototype.command = function (observation, complete) {
        try {
            complete(null);
        } catch (e) {
            complete(e);
        }
    };

    module.exports.XXXThing = XXXThing;

Implementing smoothing

In order to include the smoothing tool we propose, the nodejs code should :

Import smoothing handler

To import the smoothing handler class include the code belo at the beginning of the nodejs file

const SmoothingHandler = require("../../common/smoothingHandler.js");

Initialize smoothing handler

The smoothing handlers should be initialized on the start function of the plugin with the smoothing configuration to use (see below).

this.smoothingHandler = new SmoothingHandler(smoothingConfig, this.logger, smoothingId);

where smoothingId is used only for logging purpose and smoothingConfig contains the smoothing configuration.

Free memory

To avoid issues upon restart of plugins and bridges, the smoothing memory should be freed on plugin stop function

this.smoothingHandler.destroy();
this.smoothingHandler=undefined;

Verify smoothing criteria

To verify if an observation satisfies or not the smoothing criteria use the smooth function of the smoothing handler, for instance:

if (this.smoothingHandler.smooth(deviceId, observation)){
   this.sendObservation(...);
}

If the observation does satisfy any of the smoothing criteria, then an object is returned with every field that satisfied its corresponding smoothing criteria. If no field hold its conditions then the function returns undefined

Smoothing configuration