Git Product home page Git Product logo

constellation-nodejs's Introduction

constellation-nodejs

Constellation hub access from a Nodejs context

Introduction

[Constellation] is a platform to orchestrate and interconnect your programs and devices. With constellation, you can easily manage all of your devices / sensors / switch and more, interconnect its and create intelligence between them. You can read more on [Constellation] here : http://www.myconstellation.io/

This package was created, at the beginning on my needs to access Constellation Hub from my NodeJS home context. The lack of reverse engineering on the Signal R javascript library is backed up with a DOM parallel context created with [JsDOM].

Any performances problem are noticed when I perftest it.

Don't hesitate to ask for an add, or just contribute.

CHANGELOG : New version 2.0.0

  • 2.0.0 now manage virtual entities (Sentinel and packages).
  • Now you can push state object and emulate Sentinel from a Javascript Context.
  • You can use the old initialization style 1.2.x with this 2.0.0

Quick start

Install in your app directory

$ npm install constellation-nodejs

Create configuration file in config directory from the sample attached

Create a default.json file in /config directory. Configuration file isn't necessary. You can instanciate the Hub from parameters.

{
  /**
  * Constellation Configuration
  **/
  "constellation": {
    //// Constellation url
    "url" : "",
    //// Constellation Hub Access key
    "accessKey" : "",
    //// Your application name
    "applicationName" : "Test Node JS",
    ///// Sdk Version
    "sdkVersion" : "1.8.2"
  }
}

Config file is automaticaly checked before any initialization, if you don't provide parameters to init() method. The config process is managed by the fantastic library [node-config]. You can manage your multiples environments with it.

Access to the Constellation Hub context

    var ConstellationHub = require('constellation-nodejs');

	//// With config file
	var c = new ConstellationHub();

	//// Without configuration file 
	var c = new ConstellationHub(rootUrl, token, "AmbientSensor", "1.8.2"); //// AmbientSensor represents the name of the application (package)

	//// Create a Controller Hub
	c.Controller()
		.then((ctx) => {
			ctx.on('connected', () => { 
				console.log("CONNECTED"); 
				//ctx.hub.server.writelog("SentinelPI", "{ 'test' : 'ok' } "); 
			});
			return ctx.connect();
		});

	//// Create a Consumer Hub
	c.Consumer()
		.then((ctx) => {
			ctx.on('connected', () => { 
				console.log("CONNECTED"); 
				//// subscribe
				ctx.hub.client.registerStateObjectLink("R2D2", "Vera", "Flood Sensor (temperature)", "*", function (so) {
					console.log(so.Value.Temperature);
				});
			});
			return ctx.connect();
		});

	//// Create a Sentinel Hub
	c.Sentinel("Corulag")
		.then((ctx) => {
			ctx.on('connected', () => { 
				console.log("CONNECTED"); 
				ctx.hub.server.writelog("SentinelPI", "{ 'test' : 'ok' } "); 
			});
			return ctx.connect();
		});

Contributions

Now it's on https://github.com/myconstellation/constellation-nodejs

constellation-nodejs's People

Contributors

gclem avatar j0nathan33 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

constellation-nodejs's Issues

Error "TypeError: $.hubConnection[("createConstellation" + type)] is not a function" with example

J'essaye de faire fonctionné un script nodejs avec constellation mais ça me donne l'erreur suivants :

TypeError: $.hubConnection[("createConstellation" + type)] is not a function
    at ConstellationContext.createHub (/tmp/test/node_modules/constellation-nodejs/lib/constellation.js:126:77)
    at ConstellationContext.getControllerHub (/tmp/test/node_modules/constellation-nodejs/lib/constellation.js:140:21)
    at ctx.init.then (/tmp/test/node_modules/constellation-nodejs/index.js:24:28)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)

Mon script (Exemple dans le readMe) :

 var ConstellationHub = require('constellation-nodejs');

  //// Without configuration file 
  var c = new ConstellationHub("test", "test", "AmbientSensor", "1.8.2"); //// AmbientSensor represents the name of the application (package)

  //// Create a Controller Hub
  c.Controller()
    .then((ctx) => {
      ctx.on('connected', () => { 
        console.log("CONNECTED"); 
        //ctx.hub.server.writelog("SentinelPI", "{ 'test' : 'ok' } "); 
      });
      return ctx.connect();
    });

  //// Create a Consumer Hub
  c.Consumer()
    .then((ctx) => {
      ctx.on('connected', () => { 
        console.log("CONNECTED"); 
        //// subscribe
        ctx.hub.client.registerStateObjectLink("R2D2", "Vera", "Flood Sensor (temperature)", "*", function (so) {
          console.log(so.Value.Temperature);
        });
      });
      return ctx.connect();
    });

  //// Create a Sentinel Hub
  c.Sentinel("Corulag")
    .then((ctx) => {
      ctx.on('connected', () => { 
        console.log("CONNECTED"); 
        ctx.hub.server.writelog("SentinelPI", "{ 'test' : 'ok' } "); 
      });
      return ctx.connect();
    });

J'utilise la version 8.2.1 de node et 5.3.0 de npm. De plus, j'ai essayé avec une anciens version de node(6.11.1) et j'ai toujours la même erreur. Pour l'éxécution, je fait "node test.js"

SendMessage don't working

J'essayé d'envoyé un message au package Vera et le message n'est jamais envoyé, Voici les lignes de code que je fait pour le call.

const ConstellationHub2 = require('constellation-nodejs');
          var constellationConnection = new ConstellationHub2("http://192.168.1.31:8088/", "qwe123457", "Test", "1.8.2");
          constellationConnection.Consumer().then((ctx) => {
            ctx.on('connected', () => { 
              console.info("connected");
              ctx.hub.server.sendMessage({ Scope: 'Package', Args: ['Vera'] }, 'SetSwitchState', 5, true, 100);
            });
            return ctx.connect();
          });

Selon la docs, il devra fonctionné le call. J'ai même essayé le code généré par la page des "Message Callbacks" dans le Control center et ça n'a pas plus fonctionné. Est-ce que le call devra fonctionné avec nodejs ?

variable accesskey et applicationName sont inversé

Après investigation sur un problème de connection avec la constellation. J'ai trouvé un autre problème. Les parameter accesskey et applicationName a été inversé. Le fichier default.json que j'ai fait :

{
  /**
  * Constellation Configuration
  **/
  "constellation": {
    //// Constellation url
    "url" : "http://192.168.1.23:8088",
    //// Constellation Hub Access key
    "accessKey" : "asd123543254tfdsgfadfdsafsd",
    //// Your application name
    "applicationName" : "test Node JS",
    ///// Sdk Version
    "sdkVersion" : "1.8.2"
  }
}

J'ai rajoute la ligne suivants "console.log(that.hub.connection);" dans la fonction this.connect pour qui me donne les ligne suivants :

url: 'http://192.168.1.23:8088/signalr',
  qs:
   { SentinelName: 'Consumer',
     PackageName: 'asd123543254tfdsgfadfdsafsd',
     AccessKey: 'Test Node JS' },

J'ai inversé les ligne accessKey et applicationName et maintant, les call fonctionne sur windows

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.