     len = (uint16_t)(((uint8_t)buf[1] << 8) | (uint8_t)buf[2]);
     if (len == strlen((char *)(buf + 3))) {
       Serial.println((char *)(&buf[3]));
-      JsonObject& root = g_json_buf.parseObject((char *)&buf[3]);
+      StaticJsonBuffer<JSON_BUF_SIZE> json_buf;
+      JsonObject& root = json_buf.parseObject((char *)&buf[3]);
       if (!root.success()) {
         Serial.println("parseObject() failed");
         net_client.stop();

  Serial.println("get_ip_port");
  get_ip_port(url, ip, &port);
  Serial.println("mqtt begin");
  g_mqtt_client.begin("182.92.180.87", 1883, g_net_client);

  Serial.println("mqtt connect");
  while (!g_mqtt_client.connect(g_client_id, g_username, g_password)) {
    Serial.println(".");
    LGPRS.attachGPRS(g_gprs_apn, g_gprs_username, g_gprs_password);
  }

  Serial.println("yunba ok");

      init_yunba();
      break;
    case STATUS_IDLE:
      g_mqtt_client.loop();
      update_gps();
      handle_report();
      break;
    default:
      Serial.println("unknown status: " + g_status);
      break;
  }
  delay(10);
}


