0

MQTT メッセージを送信するコードがあります。

メッセージは同じで、唯一の変更点は「オン」と「オフ」の間でアクションを変更することです。好きなだけ終了できますが、「on」を送信するとロックされます(最初のメッセージであっても)

ここにコードがあります

void update_thing(int pin, String thing, String action) {  

  Serial.println(thing + " State Requested to " + action);
  Serial.println(action.c_str());
    if (action == "On") {
      digitalWrite(pin, HIGH);                    // Pin  = 5 V, LED Turns On
    } else {
      digitalWrite(pin, LOW);                     // Pin  = 5 V, LED Turns Off     
    }

  // Generate a new message 
  sprintf(msg, "{\"state\":{\"reported\":{\"%s\": \"%s\"}}}", thing.c_str(), action.c_str());
  if((rc = myClient.publish("$aws/things/myYunLight/shadow/update", msg, strlen(msg), 1, false)) != 0) {
    Serial.println("Publish failed!");
    Serial.println(rc);
  }
}

問題は、次のように宣言された msg 変数にあるようです。

char msg[100]; // read-write buffer

特に、アクションに供給される値 (または、それを削除してテキスト「on」または「off」を使用しても。「on」(スペースを含む) を使用すると、正常に動作します)

4

0 に答える 0