java - Java中的 "org.eclipse.paho.client.mqttv3-1.2.0"库是否可以一次获取多个MQTT消息?

标签 java mqtt iot esp8266 mosquitto

我是 Stackoverflow 的新人,有一个问题。

我想使用 ESP8266 创建一个物联网气象站,该气象站有两个传感器(湿度、温度),并将数据发送到在 Pi 上运行的代理 (Mosquitto)。除了使用 nodered 获取和可视化数据的简单方法之外,我还想用 Java 编写一个桌面应用程序。

我使用“org.eclipse.paho.client.mqttv3-1.2.0”包来创建客户端并获取消息。通过一个主题(例如“/测试/温度”),可以轻松接收温度值。但是,如果我添加第二个湿度客户端,则不可能同时接收这两个客户端。当实现两个客户端时,只有后面调用的客户端才能获取其值。

我通过稍微时移从 ESP8266 发送值来解决这个问题。但是有没有办法同时获取消息呢?我考虑过线程,但它不起作用。

有人遇到过同样的问题或有想法吗?

提前致谢,如有进一步问题,请随时提出。

干杯。

罗宾

最佳答案

首先,您需要重新考虑您的主题结构。别这么限制。分发诸如房屋在万圣节分发糖果之类的话题。 :)

robin/weather/ESP8266/temperature
robin/weather/ESP8266/humidity

状态机几乎可以是任何东西。即哈希表、数据库等。如果你想保留历史数据,那么我会选择数据库。即SQLite , Derby , H2等等。我使用 Taro L. Saito 中的“sqlite-jdbc”驱动程序。 JDBC 驱动程序工作得非常好,并且他使代码与 SQLite 代码库保持同步。

基本数据库有 2 个表:温度和湿度。让客户端订阅这两个主题,当消息到达时,使用传入值以及当前日期和时间更新相应的表。

如果您愿意,您可以创建第三个表(即“最近”),并且该表中只会有 2 行(一行表示当前温度,一行表示当前湿度),并且会不断替换。

关于java - Java中的 "org.eclipse.paho.client.mqttv3-1.2.0"库是否可以一次获取多个MQTT消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47803450/

相关文章:

主题名称中的 mqtt 时间戳 : anti-pattern?

使用 mqtt 的 Azure Iot Hub 设备配置系统

python - 在 Windows 上使用 Paho MQTT 库时如何指定证书颁发机构证书文件

ios - MQTT-in-iOS - mqttDidDisconnect : Socket closed by remote peer

c# - 如何在 Win10 IoT 中获取 SerialDevice 状态

java - 驾驶员考试多项选择数组while循环提示学生答题方法

java - 使用 JsonSerializers 时具有序列化上下文

java - 在 Android Studio 中制作抽认卡

java - jMock 什么是上下文

raspberry-pi - 是否支持 GpioPinDriveMode.InputPullUp 和 GpioPinDriveMode.InputPullDown?