使用 MQTT 在项目中实现数据收发

console.log("onConnect");

client.subscribe("ny-power/computed/co2");

client.subscribe("ny-power/archive/co2/24h");

client.subscribe("ny-power/upstream/fuel-mix/#");

}

// called when a message arrives

function onMessageArrived(message) {

console.log("onMessageArrived:"+message.destinationName + message.payloadString);

if (message.destinationName == "ny-power/computed/co2") {

var data = JSON.parse(message.payloadString);

$("#co2-per-kwh").html(Math.round(data.value));

$("#co2-units").html(data.units);

$("#co2-updated").html(data.ts);

}

if (message.destinationName.startsWith("ny-power/upstream/fuel-mix")) {

fuel_mix_graph(message);

}

if (message.destinationName == "ny-power/archive/co2/24h") {

var data = JSON.parse(message.payloadString);

var plot = [

{

x: data.ts,

y: data.values,

type: 'scatter'

}

];

var layout = {

yaxis: {

title: "g CO2 / kWh",

}

};

Plotly.newPlot('co2_graph', plot, layout);

}

上述应用订阅了不少主题,因为我们将要呈现若干种不同类型的数据;其中 ny-power/computed/co2 主题为我们提供当前二氧化碳排放的参考值。一旦收到该主题的新消息,网站上的相应内容会被相应替换。

使用 MQTT 在项目中实现数据收发

ny-power.org 网站提供的 NYISO 二氧化碳排放图。

ny-power/archive/co2/24h 主题提供了时间序列数据,用于为 Plotly 线表提供数据。ny-power/upstream/fuel-mix 主题提供当前燃料组成情况,为漂亮的柱状图提供数据。

使用 MQTT 在项目中实现数据收发

ny-power.org 网站提供的燃料组成情况。

这是一个动态网站,数据不从服务器拉取,而是结合 MQTT 消息总线,监听对外开放的 WebSocket。就像数据泵和打包器程序那样,网站页面也是一个发布订阅客户端,只不过是在你的浏览器中执行,而不是在公有云的微服务上。

你可以在 http://ny-power.org 站点点看到动态变更,包括图像和可以看到消息到达的实时 MQTT 终端。

继续深入

ny-power.org 应用的完整内容开源在 GitHub 中。你也可以查阅 架构简介 ,学习如何使用 Helm 部署一系列 Kubernetes 微服务构建应用。另一个有趣的 MQTT 示例使用 MQTT 和 OpenWhisk 进行实时文本消息翻译, 代码模式(code pattern)参考 链接 。

MQTT 被广泛应用于物联网领域,更多关于 MQTT 用途的例子可以在 Home Assistant 项目中找到。

如果你希望深入了解协议内容,可以从 mqtt.org 获得该公开标准的全部细节。

想了解更多,可以参加 Sean Dague 在 OSCON 上的演讲,主题为 将 MQTT 加入到你的工具箱 ,会议将于 7 月 16-19 日在奥尔良州波特兰举办。


via: https://opensource.com/article/18/6/mqtt

作者: Sean Dague 选题: lujun9972 译者: pinewall 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出


分享到:


相關文章: