GithubHelp home page GithubHelp logo

lintangwisesa / mosca_mqttjs_mysql_mongodb Goto Github PK

View Code? Open in Web Editor NEW
18.0 3.0 13.0 115 KB

JavaScript-based MQTT: Mosca, MQTT.js, MySQL & MongoDB

JavaScript 100.00%
mqtt mosca mqttjs mysql mongodb iot

mosca_mqttjs_mysql_mongodb's Introduction

simplinnovation

Mosca ๐Ÿ’› MQTTjs ๐Ÿ’š MySQL + MongoDB

1. Mosca & MQTT.js

  • Click & watch video tutorial below! ๐Ÿ‘‡

    Mosca MQTT.js

  • Initiate a Node.js project then install Mosca & MQTT.js:

    $ npm init
    $ npm i mosca mqtt
  • Create an MQTT broker (broker.js):

    // Mosca MQTT broker
    var mosca = require('mosca')
    var settings = {port: 1234}
    var broker = new mosca.Server(settings)
    
    broker.on('ready', ()=>{
        console.log('Broker is ready!')
    })
    
    broker.on('published', (packet)=>{
        message = packet.payload.toString()
        console.log(message)
    })
  • Create an MQTT subscriber (sub.js):

    // MQTT subscriber
    var mqtt = require('mqtt')
    var client = mqtt.connect('mqtt://localhost:1234')
    var topic = 'LINTANGtest123'
    
    client.on('message', (topic, message)=>{
        message = message.toString()
        console.log(message)
    })
    
    client.on('connect', ()=>{
        client.subscribe(topic)
    })
  • Create an MQTT publisher (pub.js):

    // MQTT publisher
    var mqtt = require('mqtt')
    var client = mqtt.connect('mqtt://localhost:1234')
    var topic = 'LINTANGtest123'
    var message = 'Hello World!'
    
    client.on('connect', ()=>{
        setInterval(()=>{
            client.publish(topic, message)
            console.log('Message sent!', message)
        }, 5000)
    })

2. Mosca, MQTT.js & MySQL

  • Click & watch video tutorial below! ๐Ÿ‘‡

    Video

  • Create a database & table on MySQL:

    $ create database mqttJS;
    $ use mqttJS
    $ create table(
        id int not null auto_increment,
        message varchar(255),
        time timestamp default current_timestamp,
        primary key (id)
    );
    $ describe mqttJS
  • Install MySQL.js:

    $ npm i mysql
  • Create an MQTT broker (brokerMySQL.js):

    // MQTT broker
    var mosca = require('mosca')
    var settings = {port: 1234}
    var broker = new mosca.Server(settings)
    
    // MySQL 
    var mysql = require('mysql')
    var db = mysql.createConnection({
        host: 'localhost',
        user: 'lintang',
        password: '12345',
        database: 'mqttJS'
    })
    db.connect(()=>{
        console.log('Database connected!')
    })
    
    broker.on('ready', ()=>{
        console.log('Broker is ready!')
    })
    
    broker.on('published', (packet)=>{
        message = packet.payload.toString()
        console.log(message)
        if(message.slice(0,1) != '{' && message.slice(0,4) != 'mqtt'){
            var dbStat = 'insert into mqttJS set ?'
            var data = {
                message: message
            }
            db.query(dbStat, data, (error, output)=>{
                if(error){
                    console.log(error)
                } else {
                    console.log('Data saved to database!')
                }
            })
        }
    })

3. Mosca, MQTT.js & MongoDB

  • Click & watch video tutorial below! ๐Ÿ‘‡

    Video

  • Create a database & collection on MongoDB:

    $ use mqttJS
    $ db.createUser({
        'user': 'lintang',
        'pwd': '12345',
        'roles': ['readWrite', 'dbAdmin']
    })
    $ db.createCollection('mqttJS')
  • Install MongoDB.js:

    $ npm i mongodb
  • Create an MQTT broker (brokerMongoDB.js):

    // MQTT broker
    var mosca = require('mosca')
    var settings = {port: 1234}
    var broker = new mosca.Server(settings)
    
    // MongoDB
    var mongo = require('mongodb')
    var mongc = mongo.MongoClient
    var url = 'mongodb://lintang:12345@localhost:27017/mqttJS'
    
    broker.on('ready', ()=>{
        console.log('Broker is ready!')
    })
    
    broker.on('published', (packet)=>{
        message = packet.payload.toString()
        console.log(message)
        if(message.slice(0,1) != '{' && message.slice(0,4) != 'mqtt'){
            mongc.connect(url, (error, client)=>{
                var myCol = client.db('mqttJS').collection('mqttJS')
                myCol.insertOne({
                    message: message
                }, ()=>{
                    console.log('Data is saved to MongoDB')
                    client.close()
                })
            })
        }
    })

Lintang Wisesa ๐Ÿ’Œ [email protected]

Facebook | Twitter | LinkedIn | Youtube | :octocat: GitHub | Hackster

mosca_mqttjs_mysql_mongodb's People

Contributors

lintangwisesa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

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.