если флажок true, установить переменную / тему для paho-mqtt-client - PullRequest
0 голосов
/ 11 апреля 2019

Привет, я хочу установить для mqtt-topic определенное значение, когда установлен определенный флажок. Посмотрите мой код здесь: мой код Я думаю, что мне нужна кнопка отправки для отправки значения в мой HTML-документ. Тем не менее, я понятия не имею. Я должен установить тему, прежде чем сценарий будет выполнен. Тема хранится в переменной options (js-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 голосов
/ 11 апреля 2019

1) Во-первых, вам не хватает фигурной скобки для завершения темы функции (). Я предполагаю, что вам не нужна переменная 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) Вы также можете проверить значение темы перед подпиской, если она пуста:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...