如果复选框为true,则为paho-mqtt-client设置变量/主题

时间:2019-04-11 10:06:39

标签: javascript html forms

嗨,我想在选中特定复选框时将mqtt-topic设置为特定值。在此处查看我的代码:my code我想我需要一个提交按钮才能将值发送到HTML文档。但是,我不知道。我必须在执行脚本之前设置主题。主题存储在变量选项(js-part)中。

form-part

    <form>  
    <div id="measurement" style="float:left">
    <label for="measurement"><b>Measurement-Type:</b><br />
        <input type="checkbox" id="temperature" name="temperature">temperature<br />
        <input type="checkbox" id="moisture" name="moisture">moisture<br />
        <input type="checkbox" id="conductivity" name="conductivity">conductivity<br />
        <input type="checkbox" id="light_intensity" name="light_intensity">light_intensity<br />
        <input type="checkbox" id="pressure" name="pressure">pressure<br />
        <input type="checkbox" id="ppm" name="ppm">ppm<br />
        <input type="checkbox" id="intensity" name="intensity">intensity<br />
        <input type="checkbox" id="um" name="um">um<br />
    </label>
    </div>
    <div id="set" style="float:left">
        <input type="submit" onclick="topic();" />
    </div>
</form> 

脚本部分

var topic = '';

function topic() {
    //if id="temperature" set var topic to "//////temperature"
    if (document.getElementById("temperature").checked == true) {
      document.getElementById("temperature").checked;
      topic = "//////temperature"
    }

var options = {
    timeout: 3,
    userName: "user",
    password: "pw",
    onSuccess: function () {
        console.log("mqtt broker connected");

        //here is the topic variable
        client.subscribe(topic, {qos: 0});
        },
        onFailure: function (message) {
            console.log("Connection failed: " + message.errorMessage);
    }
};

我不知道,我认为这里的代码没有用,但是我必须在这里放一个

1 个答案:

答案 0 :(得分:0)

1)首先,您缺少花括号来结束函数topic()。我假设您不想在topic函数中使用options变量。

function topic() {
    //if id="temperature" set var topic to "//////temperature"
    if (document.getElementById("temperature").checked == true) {
      document.getElementById("temperature").checked;
      topic = "//////temperature"
    }
}  // <<- ADD THIS HERE

2)您未显示的是连接到MQTT服务器以及创建 client 对象的语句。您嵌入在options变量中的函数是这些语句的回调。由于事件的顺序很重要。根据您连接的时间,可能会或可能不会定义主题。从您的代码尚不清楚。例如,在哪里:

client = new Paho.MQTT.Client(MQTT_ADDRESS, MQTT_PORT, MQTT_CLIENT_ID);
client.connect(options);

3)您可能还想在订阅之前检查topic的值,以防其为空:

if (topic !== '') client.subscribe(topic);

希望这会有所帮助。