0.8.0 • Published 10 years ago

cylon-mqtt v0.8.0

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
10 years ago

Cylon.js For MQTT

Cylon.js (http://cylonjs.com) is a JavaScript framework for robotics, physical computing, and the Internet of Things (IoT).

This repository contains the Cylon.js adaptor/driver for the MQTT messaging protocol. It uses the MQTT.js node module (https://github.com/adamvr/MQTT.js) created by @adamvr and @mcollina, thank you!

Want to use Ruby on robots? Check out our sister project Artoo (http://artoo.io)

Want to use the Go programming language to power your robots? Check out our sister project Gobot (http://gobot.io).

Build Status Code Climate Test Coverage

How to Install

Install cylon-mqtt through NPM:

$ npm install cylon cylon-mqtt

Before using cylon-mqtt, you'll need to have a MQTT broker running in order to connect/publish/subscribe to messages.

A good, simple broker is mosca. The developers have a tutorial on using Mosca as a standalone service.

How to Use

There's two different ways to use the cylon-mqtt module.

You can use the connection object only, in which case you have pub/sub access to all available MQTT channels:

Cylon.robot({
  connections: {
    server: { adaptor: 'mqtt', host: 'mqtt://localhost:1883' }
  },

  work: function(my) {
    my.server.subscribe('hello');

    my.server.on('message', function (topic, data) {
      console.log(topic + ": " + data);
    });

    every((1).seconds(), function() {
      my.server.publish('hello', 'hi there');
    });
  }
});

Or, you can use the device object, which restricts your interaction to a single MQTT channel. This can make it easier to keep track of different channels.

Cylon.robot({
  connections: {
    server: { adaptor: 'mqtt', host: 'mqtt://localhost:1883' }
  },

  devices: {
    hello: { driver: 'mqtt', topic: 'hello' }
  },

  work: function(my) {
    my.hello.on('message', function (data) {
      console.log("hello: " + data);
    });

    every((1).seconds(), function() {
      my.hello.publish('hi there');
    });
  }
})

Simple

var Cylon = require('cylon');

Cylon.robot({
  connections: {
    server: { adaptor: 'mqtt', host: 'mqtt://localhost:1883' }
  },

  devices: {
    hello: { driver: 'mqtt', topic: 'greetings' }
  },

  work: function(my) {
    my.hello.on('message', function (data) {
      console.log(data);
    });

    every((1).seconds(), function() {
      console.log("Saying hello...");
      my.hello.publish('hi there');
    });
  }
}).start();

Arduino Blink

var Cylon = require('cylon');

Cylon.robot({
  connections: {
    mqtt: { adaptor: 'mqtt', host: 'mqtt://localhost:1883' },
    firmata: { adaptor: 'firmata', port: '/dev/ttyACM0' }
  },

  devices: {
    toggle: { driver: 'mqtt', topic: 'toggle', adaptor: 'mqtt' },
    led: { driver: 'led', pin: '13', adaptor: 'firmata' },
  },

  work: function(my) {
    my.toggle.on('message', function(data) {
      console.log("Message on 'toggle': " + data);
      my.led.toggle();
    });

    every((1).second(), function() {
      console.log("Toggling LED.");
      my.toggle.publish('toggle');
    });
  }
}).start();

For more examples, please see the examples folder.

How to Connect

var Cylon = require('cylon');

Cylon.robot({
  connections: {
    server: { adaptor: 'mqtt', host: 'mqtt://localhost:1883' }
  },

  work: function(my) {
    my.server.subscribe('hello');

    my.server.on('message', function (topic, data) {
      console.log(topic + ": " + data);
    });

    every((1).seconds(), function() {
      console.log("Saying hello...");
      my.server.publish('hello', 'hi there');
    });
  }
}).start();

Authentication

    mqtt: { adaptor: "mqtt", host: "mqtt://localhost:1883",
            username: "iamuser", password: "sosecure" },

Documentation

We're busy adding documentation to cylonjs.com. Please check there as we continue to work on Cylon.js.

Thank you!

Contributing

For our contribution guidelines, please go to https://github.com/hybridgroup/cylon/blob/master/CONTRIBUTING.md .

Release History

For the release history, please go to https://github.com/hybridgroup/cylon-mqtt/blob/master/RELEASES.md .

License

Copyright (c) 2014-2016 The Hybrid Group. Licensed under the Apache 2.0 license.

0.8.0

10 years ago

0.7.0

10 years ago

0.6.0

10 years ago

0.5.0

10 years ago

0.4.0

10 years ago

0.3.0

11 years ago

0.2.0

11 years ago

0.1.0

11 years ago