天猫精灵指令

作者:1983king | 更新时间:2019-12-25 | 浏览量:1305

这段是从串口接收到的

{"M":"say","ID":"U123","S":"D999","C":"{\"n\":\"SetBrightness\",\"a\":\"brightness\",\"v\":\"50\"}","SIGN":"Aligenie","T":"1577109735"}

可以从 C 提取出 v 的值吗?

重要代码如下

void serialEvent() 
{
   if (Serial.available()>0) 
   {
     String inputString = Serial.readStringUntil('\n');
     inputString.trim();
     Serial.println(inputString);
     int len = inputString.length()+1;
     if(inputString.startsWith("{") && inputString.endsWith("}"))
     {
       char jsonString[len];
       inputString.toCharArray(jsonString,len);
       aJsonObject *msg = aJson.parse(jsonString);
       processMessage(msg);
       aJson.deleteItem(msg);
     }          
   }

- --- -- -  ----- ------------------------------------------

void processMessage(aJsonObject *msg){
   aJsonObject* method = aJson.getObjectItem(msg, "M");
   aJsonObject* content = aJson.getObjectItem(msg, "C");
   aJsonObject* contentV = aJson.getObjectItem(content, "v");

   
     if (!method) 
     {
       return;
     } 
     String M=method->valuestring;
     String C=content->valuestring;
     String V=contentV->valuestring;

if(M=="say")
     {
       if(V == "50" )
        {
          Serial.println(V);                                      
        }

      }

}


评论:共5条

贝壳物联 评论于:2019-12-26 09:21:12
可以把C值当做JSON字符串再次解析,就跟处理收到的的msg一样。
1983king 回复于:2019-12-26 21:44:32
回复 @贝壳物联:明白,谢谢
SPOPULAY 评论于:2020-01-04 22:49:37
if (C == "play") Serial.println("play");
else if (C == "stop")Serial.println("stop");
else
{
aJsonObject *A = bigiot.getJsonObj(C);
aJsonObject* contentV = aJson.getObjectItem(A, "v");
String V = contentV->valuestring;
Serial.println(V);
}

Arm 回复于:2020-02-22 21:28:29
回复 @SPOPULAY:读取S 也一样吗,如果使用子设备需要读取S 的值吧
yangjie 评论于:2020-02-25 22:52:33
按照上面回复的,这样就可以取到S值了
void processMessage(aJsonObject *msg){
aJsonObject* method = aJson.getObjectItem(msg, "M");
aJsonObject* content = aJson.getObjectItem(msg, "C");
aJsonObject* contentV = aJson.getObjectItem(content, "v");
aJsonObject* contentS = aJson.getObjectItem(content, "S");


if (!method)
{
return;
}
String M=method->valuestring;
String C=content->valuestring;
String V=contentV->valuestring;
String S=contentS->valuestring;
返回顶部