MQTT публикует два значения в теме

В настоящее время мой скетч публикует одно значение датчика для каждой темы. Я хочу опубликовать два сообщения в одной теме, например это

ардуино

void loop()
{
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

 int chk = DHT.read11(DHT11_PIN);
  int t = DHT.temperature;
  int h = DHT.humidity;

  char buffer[10];
  dtostrf(t,0, 0, buffer);
  client.publish("Sensor/Temperature", buffer);
  Serial.println(buffer);
  dtostrf(h,0, 0, buffer);
  client.publish("Sensor/Humidity",buffer);
  delay(1000);
}

Я хочу, чтобы этот скетч хранился в моей MongoDB. В настоящее время я принимаю только одну тему и одно сообщение.

сервер.JS

client.on('message', function (topic, message) {
        var messageObject = {
            topic: topic,
            message: message.toString(),
            Time:  new Date()
        };

        collection.insert(messageObject, function(error, result) {
            if(error != null) {
                console.log("ERROR: " + error);
            }
        });
    });

Как я могу передать значения двух датчиков в одну тему из моего Arduino?

Спасибо за ваши ожидаемые усилия.


person Ekom    schedule 15.01.2017    source источник
comment
Здесь не может быть вопроса или описания проблемы.   -  person hardillb    schedule 15.01.2017
comment
@hardillb Обновленный пост   -  person Ekom    schedule 16.01.2017
comment
Что не так с приведенным вами примером кода?   -  person hardillb    schedule 16.01.2017
comment
Я хотел бы достичь этого. Теперь моя Arduino публикует только данные одного датчика в каждой теме. Хочу опубликовать температуру и влажность в одной теме. Нравится {topic: sensor, temperature: 20, humidity:23}   -  person Ekom    schedule 16.01.2017
comment
Вы пытались использовать ArduinoJson для генерации JSON на Arduino? Затем опубликовать это через MQTT? github.com/bblanchon/ArduinoJson   -  person njh    schedule 16.01.2017


Ответы (1)


Я нашел очень подходящее решение для этого. Надеюсь, это поможет кому-то.

void loop()
{
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

 int chk = DHT.read11(DHT11_PIN);
  int t = DHT.temperature;
  int h = DHT.humidity;
  snprintf (msg, 75, "temperature %d humidity  %d ledStatus %s", t,h,ledStatus);
    Serial.print("Publish message: ");
    Serial.println(msg);
    client.publish("outTopic", msg);
    delay(6000);
}
person Ekom    schedule 20.01.2017