【问题标题】:MQTT topic name design to handle multiple "same" thingsMQTT 主题名称设计以处理多个“相同”的事情
【发布时间】:2021-11-27 04:25:07
【问题描述】:

在我目前的 IOT 项目中。我将使用多个 ESP8266 (3) 来发送数据和接收操作。每个 MCU 将负责监控房子周围的不同水族馆。我曾想过将我的主题组织如下:

“数据”主题将遵循相同的结构,例如检索温度数据:

esp8266/aquarium/aquarium_id/temperature/dht11

“动作主题”,MCU订阅接收命令的主题,例如:

aquariumcontroller/aquarium_id/action/water

水族馆订阅的主题以更新MCU的参数:

aquariumcontroller/aquarium/aquarium_id/params

水族馆控制器是用 Python 编写的 MQTT 客户端。这是将发送操作和处理接收到的消息的实体。我有两个问题,我的主题是否正确命名和结构以处理多个水族馆?另外,因为我将有一个控制器,所以还有一个数据库会更好吗?

谢谢

【问题讨论】:

    标签: mqtt broker hivemq


    【解决方案1】:

    你提到的将起作用。 也可以有大家订阅的共同话题,使用 JSON 格式发送数据。在 JSON 格式中,您可以提及必要的标识符和操作。

    {
        "aquarium_id": "xxx",
        "operation": "temperature_read",
        "value": "24.5"
    }
    

    对于每个 aquarium_id,您可以有一个单独的主题。这种方案的优点是水族馆控制器只会接收与其相关联的消息,但是它们会增加复杂性,您必须在服务器中预先填充 aquarium_id。

    {
        "operation": "temperature_read",
        "value": "24.5"
    }
    

    理想情况下,您应该有一个数据库来存储 aquarium_id 及其相关属性(类似于主记录)。使用数据库,您还可以存储读数和操作以获取数据的历史视图。您可以将 postgres 用作 DBMS。

    【讨论】:

    • 谢谢。我想用 influxDB 来存储物联网“传感器”数据并使用另一个数据库来存储更多“主”数据,这样可以吗?
    • 我对 influxDB 的接触/经验为零。我会推荐使用相同的 DBMS 来存储主数据和读取数据。建议让事情尽可能简单,避免不必要的复杂化。
    • 忘记接受您的问题。再次感谢您
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2016-03-06
    • 2018-06-22
    • 2016-05-17
    • 2021-01-10
    相关资源
    最近更新 更多