嗨,我想在选中特定复选框时将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);
}
};
我不知道,我认为这里的代码没有用,但是我必须在这里放一个
答案 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);
希望这会有所帮助。