MQTT.fx脚本Scripts使用

时间:2024-03-25 21:21:29

陈拓 [email protected] 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

MQTT.fx脚本Scripts使用

配置文件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

MQTT.fx脚本Scripts使用

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

  • 选择默认编辑器

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

右击一个js文件 > 属性

MQTT.fx脚本Scripts使用

更改

MQTT.fx脚本Scripts使用

选择记事本,确定。

3. Script属性上报Publish

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

3.1 单个数据上报

  • 选择脚本

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

MQTT.fx脚本Scripts使用

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

MQTT.fx脚本Scripts使用

完整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运行脚本

MQTT.fx脚本Scripts使用

  • 查看云端接收到的数据

MQTT.fx脚本Scripts使用

  • 查看云端日志

MQTT.fx脚本Scripts使用

  • 日志详情

MQTT.fx脚本Scripts使用

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程序

MQTT.fx脚本Scripts使用

  • 查看云端收到的数据

MQTT.fx脚本Scripts使用

4. 日志清理

MQTT.fx脚本Scripts使用

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

 

参考文档:

  1. 使用MQTT.fx接入物联网平台
    https://help.aliyun.com/document_detail/86706.html
  2. 自己写微信小程序MQTT模拟器https://blog.csdn.net/chentuo2000/article/details/102507560
  3. 阿里云物联网平台基本设置-物模型
    https://blog.csdn.net/chentuo2000/article/details/103559553
  4. 微信小程序MQTT模拟器 阿里云物联网平台测试https://blog.csdn.net/chentuo2000/article/details/102216865
  5. 树莓派连接阿里云物联网平台-属性(nodejs)https://blog.csdn.net/chentuo2000/article/details/103705694
  6. 树莓派连接阿里云物联网平台-服务(nodejs)https://blog.csdn.net/chentuo2000/article/details/103754860
  7. 树莓派连接阿里云物联网平台-订阅(nodejs)https://blog.csdn.net/chentuo2000/article/details/103769449
  8. 树莓派连接阿里云物联网平台-事件(nodejs)https://blog.csdn.net/chentuo2000/article/details/103805559
  9. MQTTfx连接物联网云平台
    https://zhuanlan.zhihu.com/p/101104351
  10. MQTT.fx - HiveMQ MQTT Toolbox https://www.hivemq.com/blog/mqtt-toolbox-mqtt-fx/
  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