     delay(300);
   }
   
+  WiFi.macAddress(mac);
+  for(int i=0;i<sizeof(mac);i++) {
+    mac_string += String(mac[sizeof(mac)-1-i],HEX);
+    if(i<(sizeof(mac)-1))
+      mac_string += ":";
+  }
+  
   printWifiStatus();
+
   server.begin();
   Udp.begin(DEFAULT_UDP_PORT);
   
   //device profile
   if(announce) {
-    aJson.addStringToObject(announce, "devicename", "TI_cc3200_1");
-    aJson.addStringToObject(announce, "componentname", "cc3200button");
+    aJson.addStringToObject(announce, "devicename", "TI-CC3200");
+    aJson.addStringToObject(announce, "uuid", uuid);
+    aJson.addStringToObject(announce, "mac", mac_string.c_str());
+    aJson.addStringToObject(announce, "manufacturer", "Texas Instrument");
+    aJson.addStringToObject(announce, "author", "cossb");
+    aJson.addStringToObject(announce, "component", "cc3200button");
     aJson.addStringToObject(announce, "protocol", "tcp");
     aJson.addNumberToObject(announce, "port", 8000);
     aJson.addStringToObject(announce, "command","auth");
   }
   
   if(frame) {
-    aJson.addStringToObject(frame, "devicename", "TI_cc3200_1");
-    aJson.addStringToObject(frame, "componentname", "cc3200button");
+    aJson.addStringToObject(frame, "devicename", "TI-CC3200");
+    aJson.addStringToObject(frame, "uuid", uuid);
+    aJson.addStringToObject(frame, "mac", mac_string.c_str());
+    aJson.addStringToObject(frame, "component", "cc3200button");
     aJson.addStringToObject(frame, "command","buttonread");
     aJson.addBooleanToObject(frame, "button1", false);
     aJson.addBooleanToObject(frame, "button2", false);

volatile int green_state = LOW;

//access point should only work for b and g
char ssid[] = "hellfire";
char password[] = "elec6887";
WiFiServer server(8000);
WiFiUDP Udp;

int push1_state = LOW;
int prev_push1_state = LOW;



void printWifiStatus() {
#ifdef USE_UART
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
