MQTT.fx脚本Scripts使用

13 篇文章 5 订阅
3 篇文章 0 订阅

陈拓 chentuo@ms.xab.ac.cn 2020/02/10-2020/02/10

1. 概述

MQTT.fx官方网站:http://mqttfx.jensd.de/

MQTT.fx的基本用法请看《MQTTfx连接物联网云平台》一文:https://zhuanlan.zhihu.com/p/101104351

本文讲述MQTT.fx的高级用法,通过js脚本发送和接收云端的消息。当你需要连续向云端发送多条消息时,脚本特别好用。

2. MQTT.fx的脚本文件放在哪里

  • 工作目录

MQTT.fx默认的工作目录是C:\Users\Administrator\AppData\Local\MQTT-FX

配置文件mqttfx-config.xml中记录了这个位置:

<workingDir>C:\Users\Administrator\AppData\Local\MQTT-FX</workingDir>

  • 创建脚本文件

脚本文件放在文件夹scripts中,里面已经有一个模板了:

01__Switch_Fountain_Test.js

我们再创建2个js文件:02__Publish_Test.js和03__Subscribe_Test.js

先创建js文件再打开MQTT.fx,MQTT.fx打开后创建的js文件列表中看不到。

  • 选择默认编辑器

MQTT.fx不带编辑器,需要指定一个外部编辑器。

右击一个js文件 > 属性

更改

选择记事本,确定。

3. Script属性上报Publish

下面以阿里云物联网平台为例上报属性,也就是上传数据到云端。

3.1 单个数据上报

  • 选择脚本

打开MQTT.fx > 连接Connect > 选择Scripts > 下拉列表 > 选择脚本

  • 点击Edit打开记事本编辑脚本02__Publish_Test.js

完整js代码如下:

var Thread = Java.type("java.lang.Thread");

function execute(action) {

    out("Test Script: " + action.getName());

    publishTemp(20.8);

    action.setExitCode(0);

    action.setResultText("done.");

    out("Test Script: Done");

    return action;

}

function publishTemp(temp) {

    out("temp value : " + temp);

    var data = '{"id":"1","version":"1.0","params":{"Temperature":' + temp + '},"method":"thing.event.property.post"}';

    mqttManager.publish("/sys/a1KDpQ8yhGW/BedroomTemperature/thing/event/property/post", data);

}

function out(message){

     output.print(message);

}

  • 点击Execute运行脚本

  • 查看云端接收到的数据

  • 查看云端日志

  • 日志详情

3.2 连续数据上报

每隔5分钟上报一次数据,发送10个数据,取10~27之间的整数随机值:

  1. 写js程序

var Thread = Java.type("java.lang.Thread");

function execute(action) {

    out("Test Script: " + action.getName());

    var temp;   

    for (var i = 0; i < 10; i++) {

        temp = random(10, 27);   

        publishTemp(temp);

        Thread.sleep(300000);

    }

    action.setExitCode(0);

    action.setResultText("done.");

    out("Test Script: Done");

    return action;

}

function publishTemp(temp) {

    out("temp value : " + temp);

    var data = '{"id":"1","version":"1.0","params":{"Temperature":' + temp +

'},"method":"thing.event.property.post"}';

    mqttManager.publish

("/sys/a1KDpQ8yhGW/BedroomTemperature/thing/event/property/post", data);

}

function random(lower, upper) {

        return Math.floor(Math.random() * (upper - lower+1)) + lower;

}

function out(message){

     output.print(message);

}

  • 运行js程序

  • 查看云端收到的数据

4. 日志清理

日志文件mqttfx.log不断在增长,占用空间,必要时清理一下。

参考文档:

  1. 使用MQTT.fx接入物联网平台
    如何使用MQTT协议模拟设备快速接入物联网平台_物联网平台(IoT)-阿里云帮助中心
  2. 自己写微信小程序MQTT模拟器自己写微信小程序MQTT模拟器_小程序 多页面 mqtt-CSDN博客
  3. 阿里云物联网平台基本设置-物模型
    阿里云物联网平台基本设置-物模型_阿里云如何在物模型中设置触发条件?-CSDN博客
  4. 微信小程序MQTT模拟器 阿里云物联网平台测试微信小程序MQTT模拟器 阿里云物联网平台测试_mqtt客户端模拟器-CSDN博客
  5. 树莓派连接阿里云物联网平台-属性(nodejs)树莓派连接阿里云物联网平台-属性(nodejs)_树莓派4b与阿里云显示未激活-CSDN博客
  6. 树莓派连接阿里云物联网平台-服务(nodejs)树莓派连接阿里云物联网平台-服务(nodejs)_nodejs mqtt连接阿里云物联网平台-CSDN博客
  7. 树莓派连接阿里云物联网平台-订阅(nodejs)树莓派连接阿里云物联网平台-订阅(nodejs)_树莓派与阿里云显示未激活-CSDN博客
  8. 树莓派连接阿里云物联网平台-事件(nodejs)树莓派连接阿里云物联网平台-事件(nodejs)_changetemp:function(temperature){ device.on('messa-CSDN博客
  9. MQTTfx连接物联网云平台
    https://zhuanlan.zhihu.com/p/101104351
  10. MQTT.fx - HiveMQ MQTT Toolbox MQTT.fx - HiveMQ MQTT Toolbox
  11. Linking the ESP8266 to a Raspberry Pi through MQTT
    https://www.penninkhof.com/2015/05/linking-the-esp8266-a-raspberry-pi-through-mqtt/
  12. mqttfx-manual
    https://github.com/Jerady/mqttfx-manual

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值