0
0

More than 1 year has passed since last update.

Node.js: MQTT クライアントのサンプル

Last updated at Posted at 2021-10-05

こちらで定めた仕様を満たすクライアントです。
IOT: MQTT クライアントのサンプル

Raspberry Pi で確認しました。

GPIO16 に接続した LED を ON/OFF します。

プログラム

subscribe.js
#! /usr/local/bin/node
// ---------------------------------------------------------------
//  subscribe.js
//
//                  Oct/05/2021
//
// ---------------------------------------------------------------
'use strict'

console.error ("*** 開始 ***")
var mqtt = require('mqtt')
const client  = mqtt.connect('mqtt://example.com')
const topic = 'example/test01'

var Gpio = require('onoff').Gpio
var led = new Gpio(16, 'out')

// ---------------------------------------------------------------
client.on('connect', function () {
    client.subscribe(topic)
})

// ---------------------------------------------------------------
client.on('message', function (topic, message) {
    const json_str = message.toString()
    const dict_aa = JSON.parse (json_str)

    if ('desired' in dict_aa['state'])
        {
        const desired = dict_aa['state']['desired']
        led_proc(desired)
        }
})

// ---------------------------------------------------------------
function led_proc(desired)
{
    console.log(desired)
    console.log(desired['led'])
    const on_off = desired['led']

    if (on_off == "on")
        {
        led.writeSync(1)
        }
    else if (on_off == "off")
        {
        led.writeSync(0)
        }

    report_proc(on_off)
}

// ---------------------------------------------------------------
function report_proc(on_off)
{
    var dict_aa = new Object ()
    dict_aa["state"] = new Object ()
    dict_aa["state"]["reported"] = new Object()
    dict_aa["state"]["reported"]["led"] = on_off
    const json_str = JSON.stringify(dict_aa) 
    console.log(json_str)
    console.log()
    client.publish(topic, json_str)
}

// ---------------------------------------------------------------

実行スクリプト

export NODE_PATH=/usr/local/lib/node_modules
./subscribe.js

次のパージョンで確認しました。

$ node -v
v14.17.6
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0