Skip to content

Simplistic client talking The Open Group Internet of Things standards O-MI/O-DF

License

Notifications You must be signed in to change notification settings

ControlThings/omi-odf-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Omi Client

This is a very simplistic WebSocket based client for communicating with a O-MI Node, using O-DF formatted messages.

Getting started

Start a O-MI Node

Download the reference server implementation from:

https://github.com/AaltoAsia/O-MI/releases

We used this one: https://github.com/AaltoAsia/O-MI/releases/download/0.8.2/o-mi-node-0.8.2-warp10.tgz

Extract it to an appropriate location.

Edit the conf/application.conf. Ensure the localhost is not commented out in the IP whitelist section.

input-whitelist-ips=[	
        "127.0.0.1"
]

Ensure you have java 8 or later.

In a console/command line type java -version, response should be something like this:

greg@desktop ~/o-mi-node-0.8.2-warp10 $ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Run the server.

greg@desktop ~/o-mi-node-0.8.2-warp10 $ ./bin/o-mi-node

The first startup will take some few minutes to start, be patient.

Run the example

Create a working directory for your project and install this package there.

npm install omi-odf

Create a app.js with the following sample code:

var OmiClient = require('omi-odf').OmiClient;
var inspect = require('util').inspect;

var host = 'ws://localhost:8080';
var omiClient = new OmiClient(host);

omiClient.once('ready', function() {
    console.log("OmiClient connected to "+ host +'.');
    
    var name = 'MyDevice';
    var path = 'Your/Path/Things/'+name;
    var ep = 'relay';

    // ensure the instance in the O-MI node by issuing a write command
    omiClient.write(path, ep, false);

    // subscribe to changes from "MyDevice"
    omiClient.subscribe(path, null, {}, function(ep, data, opts) {
        console.log("Subscribe:", ep, data, opts);
    });

    // write ep to true, which should trigger subscription callback
    setTimeout(() => { omiClient.write(path, ep, true); }, 500);
    
    setTimeout(() => {
        omiClient.read(path, ep, function(ep, value, opts) {
            console.log('Read:', ep, value, opts);
        });
    }, 600);
});

omiClient.once('close', function() {
    console.log("OmiClient websocket connection was lost.");
    process.exit(1);
});

Run the program:

node app.js

Develop

This code is available at GitHub:

git clone https://github.com/ControlThings/omi-odf-nodejs.git

Acknowledgements

Part of this work has been carried out in the scope of the project bIoTope which is co-funded by the European Commission under Horizon 2020 program, contract number H2020-ICT-2015/688203.

About

Simplistic client talking The Open Group Internet of Things standards O-MI/O-DF

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published