簡體   English   中英

回調以檢查特定的 MQTT 主題(不僅僅是檢查有效負載)

[英]callback to check specific MQTT topic (not just check the payload)

我目前使用下面的回調來檢查傳入 MQTT 消息的 PAYLOAD,但有誰知道我如何繼續這樣做,但還能找到來自特定主題的消息?

void callback(char * topic, byte * payload, unsigned int length) {
    char p[length + 1];
    memcpy(p, payload, length);
    p[length] = NULL;

    if (!strcmp(p, "home")) {
        Particle.publish(DEVICE_NAME, HOME_MSSG, 60, PRIVATE);
    } else if (!strcmp(p, "chome")) {
        Particle.publish(DEVICE_NAME, CHOME_MSSG, 60, PRIVATE);
    } 
}

主題的處理方式與有效載荷幾乎相同; 例如

if (!strcmp(topic, "thisIsATopic")) {
        // do something
}

請注意,復制有效負載有兩個原因:

  • 一旦回調返回, 緩沖區就會被重用(因此,如果您存儲該指針並稍后引用它,它可能不包含您期望的內容)。
  • 該消息是二進制的,因此如果使用strcmp之類的函數(以避免溢出),請務必確保將\0添加到末尾。

看起來您正在使用的庫復制了該主題,因此您應該可以按原樣使用該庫(與其他一些庫不同)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM