Difference between revisions of "M2M Bridge"
From AMTech WikiDocs
(→Edge Configuration) |
(→Cloud Configuration) |
||
Line 50: | Line 50: | ||
*Register a follower (See [[Access control#Actors|Roles]]) | *Register a follower (See [[Access control#Actors|Roles]]) | ||
** Assign to follower actor "m2mBridge" access | ** Assign to follower actor "m2mBridge" access | ||
− | |||
*Activity observation configuration (See [[Activities#Observation production configuration|Observation production configuration]]) | *Activity observation configuration (See [[Activities#Observation production configuration|Observation production configuration]]) | ||
** Add the Things types the bridge will use (See [[Activities#Thing types|Thing types]]) | ** Add the Things types the bridge will use (See [[Activities#Thing types|Thing types]]) | ||
Line 58: | Line 57: | ||
**Using amtech creator experience (See [[Activities#Thing types|Thing types]]) | **Using amtech creator experience (See [[Activities#Thing types|Thing types]]) | ||
**Configuring autoDiscover (See [[M2M Bridge#Edge Configuration|Edge Configuration]]) | **Configuring autoDiscover (See [[M2M Bridge#Edge Configuration|Edge Configuration]]) | ||
− | *** | + | ***The bridge will request the DAP to clone templateId instance with the name convention bridgeIdPrefix:(device mac address) from bridgeConfig.json |
− | ***the things instances | + | ***the things instances linked to the templateId property bridgeInstances will be cloned with the name convention bridgeIdPrefix:(device mac address):thing._name from bridgeConfig.json |
− | ***cloned instance will be giving the access control | + | ***cloned instance will be giving the access control owner to the follower user id of the bridge that requested it. |
*Monitoring M2MBridge status | *Monitoring M2MBridge status | ||
**Create an SNMPDevice instance and give access to your M2MBridge actor (See "/amtech/linkeddata/types/composite/entity/SNMPDevice") | **Create an SNMPDevice instance and give access to your M2MBridge actor (See "/amtech/linkeddata/types/composite/entity/SNMPDevice") |
Revision as of 18:43, 13 April 2016
Contents
Functionality
- Configurable edge intelligence
- Bridges standard and proprietary protocols to AMTech IoT DAP.
- Device-to-device or device-to-cloud communications.
- MQTT, LLRP, CoAP, STOMP, SmartM2M, LWM2M, PLC, Zigbee and others
- Allow remote and centralized control of IoT devices and gateways.
- SNMP/MIB/TRAP, Reader Management and other
- Configurable auto-discover
- Implements common functionality and orchestrates the execution of the protocols
- Network failure detection and recovery
- Get centralized configuration information at startup and real time modifications
- Access control policies to manage observation production and consumption
Edge Configuration
- Edge/Device(s) site configuration bridgeConfig.json
{ //text to label bridge instance "description": "AMTech M2M Bridge", "dap":{ //amtech IoT DAP ur "dapUrl": "https://dap.amtech.mx", //userid for the m2mBridge instance bridgeId "userId": "xxxxxxx@amtech.mx", // tenant where bridge been configured "tenant" : "xxxxxxx", //m2mBridge userId password "password" :"xxxxxxxx" }, //M2MBridge instance id, to clone configuration "templateId":"m2mCreator:m2mBridge", //Prefix to add to the unique M2MBridge identifier, the mac address of the device is use as unique id "bridgeIdPrefix":"tienda1", //wkt location to set m2mBridge location overrides address "location": "{\"wkt\":\"POINT(-99.17125583 19.40501031)\",\"sContext\":\"geo\"}", //Address use to geo locate m2mBridge instance "address" :{ "country" : "usa", "city": "Las Vegas", "road": "Las Vegas Boulevard South", "number":"3960" }, }
Cloud Configuration
- Create an amtechM2mBridge thing type instace (See "/amtech/linkeddata/types/composite/entity/amtechM2mBridge")
- Create an actor with the polices required by the activity(s) (See Actors)
- Add the things type polices the bridge needs access
- Police must have user check; enabling instance access control by m2mBridge instances
- Register a follower (See Roles)
- Assign to follower actor "m2mBridge" access
- Activity observation configuration (See Observation production configuration)
- Add the Things types the bridge will use (See Thing types)
- Add the observations types from selected thing type the bridge will produce or consume (See Observations and observation types CRUD observations)
- Configure the topic that m2mBridge will listen for crud and command observations has to matched with others things' observation production configuration hosted at this m2mBridge configuration (See Observation production configuration Topics)
- Add the Things types the bridge will use (See Thing types)
- Things instance creation
- Using amtech creator experience (See Thing types)
- Configuring autoDiscover (See Edge Configuration)
- The bridge will request the DAP to clone templateId instance with the name convention bridgeIdPrefix:(device mac address) from bridgeConfig.json
- the things instances linked to the templateId property bridgeInstances will be cloned with the name convention bridgeIdPrefix:(device mac address):thing._name from bridgeConfig.json
- cloned instance will be giving the access control owner to the follower user id of the bridge that requested it.
- Monitoring M2MBridge status
- Create an SNMPDevice instance and give access to your M2MBridge actor (See "/amtech/linkeddata/types/composite/entity/SNMPDevice")
- Send observations to /m2mBridge/snmp/read a core activity /amtech/activities/monitorM2MBridgeStatus will analyze the data and notify to the user and guestusers of the M2MBridge instance.
- Create an SNMPDevice instance and give access to your M2MBridge actor (See "/amtech/linkeddata/types/composite/entity/SNMPDevice")
Implementation notes
- M2MBridge is an open source stack developed by the AMTEch team; it discovers, loads nodes modules implementing "M2MBridge plugin interface" and creates thing types instances (See Thing types) tacking into account the observation production configuration (See Observation production configuration) and M2MBridge credentials (See Actors and Edge Configuration).
- It leverages AMTech IoT DAP (See Integration Guideline)
- Gets observation production configuration (See Observation production configuration API)
- Gets thing types instances (See Observation instances API)
- Creates a web socket to receive asynchronous commands and thing instances changes (crud operations) (See CRUD and Commands API)
- Dispatch command observations to plugin instance leveraging thing type instance @id (See Thing types)
- Restart instance when supported properties change by calling stop and star plugin interface
- Creates configuration information for Thing type leveraging configuration information and client side M2MBridge placeholders (See Observation production configuration and Placeholders)
- Load plugin nodes modules required by configuration
- Creates an instance of plugin for each type from observation production configuration leveraging thing type instance @id (See Thing types)
- JavaScript object is extended with the properties values from the thing instance (See plugin example )
- Properties and methods are injected like common logg for m2mBridge plugins, methods to send observations with and without transformation, methods for restarting, observation production configuration and others (See for details)
- If instance does not exist at the server side execute auto discover process from bridgeConfig.json can be configured (See Edge Configuration)
- Creates a centralized observation dispatcher with persistence to ensure:
- Observations delivery.
- The order that observations occurred .
- It leverages AMTech IoT DAP (See Integration Guideline)
How to implement a new plugin
- Clone git repository (https://github.com/AMTechMX/M2MBridge.git)
- at /.../M2MBridge/plugins create a directory that matched with the Thing type name to bridge example SNMPDevice (See Thing types)
- Create a thing type XXXDevice (See Thing types)
- Create the observations type the thing XXXDevice produces or consumes, example XXXDeviceObserv1 (See Observations and observation types)
- Associate the observation XXXDeviceObserv1 type to the XXXDevice
- Implement a nodejs module with the following interface
function XXXDevice() { } XXXDevice.prototype.start = function ( complete) { try { complete(null); } catch (e) { complete(e); } }; XXXDevice.prototype.stop = function (complete) { try { complete(null); } catch (e) { complete(e); } }; XXXDevice.prototype.command = function (observation, complete) { try { complete(null); } catch (e) { complete(e); } }; module.exports.XXXDevice = XXXDevice;
How to install it
- Clone git repository (https://github.com/AMTechMX/M2MBridge.git)
- Install nodejs https://nodejs.org/en/download/package-manager/
- Install npm (http://blog.npmjs.org/post/85484771375/how-to-install-npm)
- Delete at /.../M2MBridge/plugins/xxx unneeded plug-ins
- Install packages for m2mBridge core and plug-ins (https://docs.npmjs.com/cli/install:)
- Execute npm install at:
- M2MBridge directory
- each plug-in directory