emma controller code in production board v1

Dependencies:   ADE7758_v1 Crypto DHT11 MQTT MbedJSONValueEmma SDFileSystem TFT_ILI9341 SWSPI SetRTC TFT_fonts Touch W5500Interface mbed-rtos mbed-src SoftSerial

Fork of emma_controller_energy by Emma

Revision:
44:c1d11c491237
Parent:
43:612547648ed1
Child:
45:2406c2b6995a
--- a/emmaCode.cpp	Thu Aug 20 13:16:16 2015 +0000
+++ b/emmaCode.cpp	Wed Aug 26 07:18:33 2015 +0000
@@ -14,7 +14,8 @@
 
 //init eth port
 SPI spi(PB_15, PB_14, PB_13);               //mosi, miso, sck
-MQTTEthernet ipstack(&spi, PB_12, PC_6);    //spi, cs, reset
+EthernetInterface eth(&spi, PB_12, PC_6);   //spi, cs, reset
+//MQTTEthernet ipstack(&spi, PB_12, PC_6);    //spi, cs, reset
 //MQTT::Client<MQTTEthernet, Countdown, MQTT_MAX_PACKET_SIZE> client(ipstack);
 
 //init sd card
@@ -126,20 +127,37 @@
     Matrix matrix;
     Coordinate ScreenSample[3];
     
-    matrix.An = 580;
-    matrix.Bn = 75980;
-    matrix.Cn = -3410580;
-    matrix.Dn = 57855;
-    matrix.En = -2465;
-    matrix.Fn = -3483515;
-    matrix.Divider = 209144;
+    //lcd type 1
+    //matrix.An = 580;
+    //matrix.Bn = 75980;
+    //matrix.Cn = -3410580;
+    //matrix.Dn = 57855;
+    //matrix.En = -2465;
+    //matrix.Fn = -3483515;
+    //matrix.Divider = 209144;
+    
+    //ScreenSample[0].x = 230;
+    //ScreenSample[0].y = 167;
+    //ScreenSample[1].x = 754;
+    //ScreenSample[1].y = 163;
+    //ScreenSample[2].x = 771;
+    //ScreenSample[2].y = 562;
     
-    ScreenSample[0].x = 230;
-    ScreenSample[0].y = 167;
-    ScreenSample[1].x = 754;
-    ScreenSample[1].y = 163;
-    ScreenSample[2].x = 771;
-    ScreenSample[2].y = 562;
+    //lcd type 2
+    matrix.An = 1305;
+    matrix.Bn = -77430;
+    matrix.Cn = 75296670;
+    matrix.Dn = -57275;
+    matrix.En = -1160;
+    matrix.Fn = 55285220;
+    matrix.Divider = 211002;
+    
+    ScreenSample[0].x = 782;
+    ScreenSample[0].y = 863;
+    ScreenSample[1].x = 248;
+    ScreenSample[1].y = 854;
+    ScreenSample[2].x = 256;
+    ScreenSample[2].y = 459;
     
     TP.SetCalibration(&matrix, &ScreenSample[0]);
     
@@ -193,12 +211,12 @@
     menu[MODE_FIRMWARE_DOWNLOAD].name = "fw dwld";
     
     //reserved mode
-    menu[5].xTL = 215;
-    menu[5].yTL = 100;
-    menu[5].xBR = 300;
-    menu[5].yBR = 165;
-    menu[5].text = "6.reserved  ";
-    menu[5].name = "reserved";
+    menu[MODE_RESERVED].xTL = 215;
+    menu[MODE_RESERVED].yTL = 100;
+    menu[MODE_RESERVED].xBR = 300;
+    menu[MODE_RESERVED].yBR = 165;
+    menu[MODE_RESERVED].text = "6.reserved  ";
+    menu[MODE_RESERVED].name = "reserved";
     
     //draw main menu
     for(int i=0; i<6; i++) {
@@ -452,7 +470,8 @@
             serverIsListened = true;    
         }
     
-        DBG.printf("please connect to %s\r\n",ipstack.getEth().getIPAddress());
+        //DBG.printf("please connect to %s\r\n",ipstack.getEth().getIPAddress());
+        DBG.printf("please connect to %s\r\n",eth.getIPAddress());
         
         if(svr.listen(1) < 0) {
             DBG.printf("tcp server listen failed\r\n");
@@ -1001,7 +1020,8 @@
     char p[64];
     char q[32];
     char r[32];
-    char s[4096];
+    //char s[4096];
+    char s[512];
     int connBodyLen;
     int connPort;
     int loop=0;
@@ -1029,46 +1049,37 @@
     TFT.printf(" emmaModeOperation");
     
     TFT.locate(0,20);
+    TFT.printf(" Interface:");
+    
+    TFT.locate(75,20);
     if(ethConnected) {
-        TFT.printf("ETH:Avail");       
+        TFT.printf("ETH");       
+    } else if(wifiConnected) {
+        TFT.printf("WiFi");
+    } else if(gprsConnected) {
+        TFT.printf("GPRS");    
     } else {
-        TFT.printf("ETH:N/A");
+        TFT.printf("N/A");    
     }
     
-    TFT.locate(80,20);
-    if(wifiConnected) {
-        TFT.printf("WiFi:Avail");       
-    } else {
-        TFT.printf("WiFi:N/A");
-    }
-    
-    TFT.locate(160,20);
-    if(gprsConnected) {
-        TFT.printf("GPRS:Avail");       
-    } else {
-        TFT.printf("GPRS:N/A");
-    }
+    //set ade7758 parameter
+    ADE.begin();    
+    ADE.writeRMSOffset(AIRMSOFFSET, BIRMSOFFSET, CIRMSOFFSET, AVRMSOFFSET, BVRMSOFFSET, CVRMSOFFSET);    
+    ADE.write16bits(AWG, 0);
+    ADE.write16bits(BWG, 0);
+    ADE.write16bits(CWG, 0);
+    ADE.write16bits(AVAG, 0);
+    ADE.write16bits(BVAG, 0);
+    ADE.write16bits(CVAG, 0);
     
     if(ethConnected) {
         DBG.printf("emmaModeOperation - eth\r\n");
-        /*
-        //start new log indicator
+        
+        //new log indicator
         seconds = time(NULL);
         strftime(q, 32, "%Y-%m-%d %H:%M:%S",localtime(&seconds));
         DBG.printf("newLog:%d\r\n",writeLog(q,"++++++++++Ethernet++++++++++"));
         
-        //set ade7758 parameter
-        ADE.begin();
-        
-        ADE.writeRMSOffset(AIRMSOFFSET, BIRMSOFFSET, CIRMSOFFSET, AVRMSOFFSET, BVRMSOFFSET, CVRMSOFFSET);
-        
-        ADE.write16bits(AWG, 0);
-        ADE.write16bits(BWG, 0);
-        ADE.write16bits(CWG, 0);
-        ADE.write16bits(AVAG, 0);
-        ADE.write16bits(BVAG, 0);
-        ADE.write16bits(CVAG, 0);
-        
         //check firmware update
         
         //execute last state of switches on board
@@ -1078,10 +1089,10 @@
         
         //sprintf(s,"GET /emma/api/controller/remotes?uid=%s&hmac=%s HTTP/1.0\nHost: %s\r\n\r\n",emmaUID.c_str(),hmac.c_str(),restSERVER.c_str());
         sprintf(s,"POST /emma/api/controller/wifinodes HTTP/1.0\nHost: %s\nContent-Length:%d\n\n%s\r\n\r\n",restSERVER.c_str(),connBodyLen,connBody);
+        sscanf(restPORT.c_str(),"%d",&connPort);
         str.clear();
-        sscanf(restPORT.c_str(),"%d",&connPort);
         str = ethREST(restSERVER,connPort,s);
-        DBG.printf("str:%s\r\n",str.c_str());
+        //DBG.printf("str:%s\r\n",str.c_str());
         if(str.rfind("[{\"type\"") != std::string::npos) {
             DBG.printf("get nodes from server\r\n");
             str.erase(str.begin(),str.begin()+str.rfind("[{\"type\""));
@@ -1110,13 +1121,13 @@
             
             if(validNodes) {
                 for(int i=0; i<jsonValue.size(); i++) {
-                    string typeValue = jsonValue[i][parameter[0]].get<std::string>();
+                    int typeValue = jsonValue[i][parameter[0]].get<int>();
                     string macValue = jsonValue[i][parameter[1]].get<std::string>();
                     string ipValue = jsonValue[i][parameter[2]].get<std::string>();
                     nodes[i].type = typeValue;
                     nodes[i].macAddr = macValue;
                     nodes[i].ipAddr = ipValue;
-                    DBG.printf("nodes[%d]type:%s\r\n",i,nodes[i].type.c_str());
+                    DBG.printf("nodes[%d]type:%d\r\n",i,nodes[i].type);
                     DBG.printf("nodes[%d]mac:%s\r\n",i,nodes[i].macAddr.c_str());
                     DBG.printf("nodes[%d]ip:%s\r\n",i,nodes[i].ipAddr.c_str());
                 }
@@ -1139,6 +1150,7 @@
             //checkVoltagePower();  //need revision to support ethernet
             
             //panelEnergy, panelVoltage, and panelPower
+            /*
             if(tPanelEnergy.read() > 30.0f) {
                 DBG.printf("[%d]WattHR for each phase: %.2f, %.2f, %.2f\r\n", loop, AWattHr, BWattHr, CWattHr);
                 TFT.locate(0,60);
@@ -1181,8 +1193,8 @@
                             strftime(q, 32, "%Y-%m-%d %H:%M:%S",localtime(&seconds));
                         
                             //calculate hmacTime
-                            for(int j=0; j<sizeof(p); j++) {
-                                p[j]=0; }
+                            //for(int j=0; j<sizeof(p); j++) {
+                            //    p[j]=0; }
                             sprintf(p,"emma-%s-%s",emmaUID.c_str(),q);   
                             hmacTime = calculateMD5(p);
                             
@@ -1195,6 +1207,7 @@
                             str.clear();
                             sscanf(restPORT.c_str(),"%d",&connPort);
                             str = ethREST(restSERVER,connPort,r);
+                            DBG.printf("str:%s",str.c_str());
                             if(str.find("\"status\":\"success\"") != std::string::npos) {
                                 //logging purpose
                                 seconds = time(NULL);
@@ -1210,7 +1223,7 @@
                                 wait(1);
                                 TFT.locate(0,120);
                                 TFT.printf("                                        ");
-                                TFT.foreground(White);    
+                                TFT.foreground(White);
                             } else {
                                 //logging purpose
                                 seconds = time(NULL);
@@ -1237,17 +1250,23 @@
                 tPanelEnergy.reset();
                 loop++;    
             }
+            */
             
             //panel environment
             
+            //command
+            connBodyLen = sprintf(connBody,"{\"uid\":\"005e00553533510334313732\",\"hmac\":\"9424c60e708d8e3d3dff6d23fb104339\"}");
+            sprintf(s,"POST /emma/api/controller/command HTTP/1.0\nHost: 36.80.35.8\nContent-Length:%d\n\n%s\r\n\r\n",connBodyLen,connBody);
+            str.clear();
+            str = ethREST("36.80.35.8",8080,s);
+            DBG.printf("str:%s\r\n",str.c_str());
+            
             osDelay(5000);   
         }
-        */
-        
     } else if(wifiConnected) {
         DBG.printf("emmaModeOperation - wifi\r\n");
         
-        //start new log and dbg indicator
+        //new log and dbg indicator
         seconds = time(NULL);
         strftime(q, 32, "%Y-%m-%d %H:%M:%S",localtime(&seconds));
         DBG.printf("newLog:%d\r\n",writeLog(q,"++++++++++WiFi++++++++++"));
@@ -1281,6 +1300,8 @@
         //t.reset();
         
         //set ade7758 parameter
+        //start set beforehand
+        /*
         ADE.begin();
         
         ADE.writeRMSOffset(AIRMSOFFSET, BIRMSOFFSET, CIRMSOFFSET, AVRMSOFFSET, BVRMSOFFSET, CVRMSOFFSET);
@@ -1291,6 +1312,8 @@
         ADE.write16bits(AVAG, 0);
         ADE.write16bits(BVAG, 0);
         ADE.write16bits(CVAG, 0);
+        */
+        //end start beforehand
         
         //init rest to server
         sscanf(restPORT.c_str(),"%d",&connPort);
@@ -1732,7 +1755,7 @@
             //command
             sprintf(r,"/%s/api/controller/command",appNAME.c_str());
             sprintf(s,"{\"uid\":\"%s\",\"hmac\":\"%s\"}",
-            emmaUID.c_str(),hmacTime.c_str());
+            emmaUID.c_str(),hmacTime.c_str());  //INI HARUSNYA HMAC BUKAN?
             //rest.get("/emma/api/controller/command");
             rest.post(r,s);
             
@@ -2314,6 +2337,73 @@
     }
     DBG.printf("download finished\r\n");
 }
+
+void emmaModeReserved(void) {
+    char connBody[128];
+    char s[256];
+    char buf[1024];
+    int connBodyLen;
+    int i=0;
+    int ret=99;
+    string str;
+    Timer t;
+    TCPSocketConnection sock;
+    
+    /*
+    eth.init();
+    while(1) {
+        //command
+        connBodyLen = sprintf(connBody,"{\"uid\":\"005e00553533510334313732\",\"hmac\":\"9424c60e708d8e3d3dff6d23fb104339\"}");
+        sprintf(s,"POST /emma/api/controller/command HTTP/1.0\nHost: 36.80.35.8\nContent-Length:%d\n\n%s\r\n\r\n",connBodyLen,connBody);
+        str.clear();
+        str = ethREST("36.80.35.8",8080,s);
+        DBG.printf("[%d]str:%s\r\n",i,str.c_str());
+        i++;
+        wait(5);
+    }
+    */
+    
+    //start working as expected
+    eth.init();
+    eth.connect();
+    connBodyLen = sprintf(connBody,"{\"uid\":\"005e00553533510334313732\",\"hmac\":\"9424c60e708d8e3d3dff6d23fb104339\"}");
+    sprintf(s,"POST /emma/api/controller/command HTTP/1.0\nHost: 36.80.35.8\nContent-Length:%d\n\n%s\r\n\r\n",connBodyLen,connBody);
+    
+    while(1) {
+        //eth.connect();
+        t.start();
+        while(eth.linkstatus() && t.read() < 5 && ret !=0) {
+            ret = sock.connect("36.80.35.8",8080);
+        }
+        t.stop();
+        t.reset();
+        
+        memset(buf,0,sizeof(buf));
+        if(sock.is_connected()) {
+            DBG.printf("connect\r\n");
+            sock.send_all(s,sizeof(s)-1);
+            wait(2);
+            //receive return
+            t.start();
+            while(1) {
+                ret = sock.receive(buf, sizeof(buf));
+                if(ret<=0 || t.read() > 5) {
+                    t.stop();
+                    t.reset();
+                    break;
+                }    
+            }
+            sock.close();    
+        } else {
+            DBG.printf("not connected\r\n");       
+        }
+        //eth.disconnect();
+        DBG.printf("[%d]BUF:%s\r\n\r\n",i,buf);
+        i++;
+        wait(5);
+    }
+    //end working as expected
+}
 /*end emma mode*/
 
 /*start energy related*/
@@ -2546,207 +2636,6 @@
 }
 /*end wifi rest*/
 
-int publish(MQTT::Client<MQTTEthernet, Countdown, MQTT_MAX_PACKET_SIZE>* client, MQTTEthernet* ipstack)
-{
-    MQTT::Message message;
-    char* topic = new char[strlen(mqttDOMAIN.c_str())+strlen(emmaUID.c_str())+9];
-    *topic = '\0';
-    strcat(topic, mqttDOMAIN.c_str());
-    strcat(topic, "/");
-    strcat(topic, emmaUID.c_str());
-    strcat(topic, "/dummy");
-
-    const char buf[25] = "{\"d\":{\"myName\":\"EMMA\"}}";
-    
-    message.qos = MQTT::QOS2;
-    message.retained = false;
-    message.dup = false;
-    message.payload = (void*)buf;
-    message.payloadlen = strlen(buf);
-
-    DBG.printf("Publishing %s\r\n", buf);
-    return client->publish(topic, &message);
-}
-
-/*start eth mqtt*/
-void ethMQTTMessageArrived(MQTT::MessageData& md) {
-    MQTT::Message &message = md.message;
-    char topic[md.topicName.lenstring.len + 1];
-    string str;
-    sprintf(topic, "%.*s", md.topicName.lenstring.len, md.topicName.lenstring.data);
-    
-    DBG.printf("Message arrived on topic %s: %.*s\r\n",  topic, message.payloadlen, message.payload);
-    char *s = (char*)message.payload;
-    string sp(s);
-    if(sp.find("[") != std::string::npos && sp.find("]") != std::string::npos) {
-        sp.erase(sp.begin(),sp.begin()+sp.find("[")+1);
-        sp.erase(sp.begin()+sp.find("]"),sp.end());
-    }
-    else {
-        DBG.printf("Invalid MQTT command");
-        return;
-    }
-    
-    MbedJSONValue jsonValue;
-    parse(jsonValue, sp.c_str());
-    const char *parameter[5] = {"name","nType","nAddr","dType","cmd"};
-    
-    //check if command is valid
-    bool validCommand = true;
-    for(int i=0; i<5; i++) {
-        validCommand = validCommand && jsonValue.hasMember(parameter[i]);
-    }
-    DBG.printf("command validity:%d\r\n",validCommand);
-    
-    //check for new command
-    if(validCommand) {
-        string commandId = jsonValue[parameter[0]].get<std::string>();
-        string commandNType = jsonValue[parameter[1]].get<std::string>();
-        string commandNAddr = jsonValue[parameter[2]].get<std::string>();
-        string commandDType = jsonValue[parameter[3]].get<std::string>();
-        string commandCmd = jsonValue[parameter[4]].get<std::string>();
-        
-        if(commandNType == "0") {       //switch on panel controller
-            DBG.printf("command for switch\r\n");
-        }
-        else if(commandNType == "1") {  //node with mac address
-            DBG.printf("command for node\r\n");
-            //get node ip address based on node mac address
-            string nodeIP = readNodeIP(commandNAddr);
-            //DBG.printf("nodeIP: %s\r\n",nodeIP.c_str());
-            
-            //get cmd string based on device type and command number
-            string nodeCmd = readNodeCmd(commandDType,commandCmd);
-            //DBG.printf("nodeCmd: %s\r\n",nodeCmd.c_str());                        
-            //execute command
-            int trial=0;
-            trial = 0;
-            bool execStatus=false;
-
-            while( !execStatus ) {
-                sprintf(s,"<?xml version=\"1.0\" encoding=\"utf-8\"?><app_cmd cmd=\"5\" /><app_data code=\"%s\"/>\r\n",nodeCmd.c_str());
-                str.assign(s);
-                DBG.printf("str value:%s\r\n",str.c_str());                            
-                string rcv = ethREST(nodeIP,REMOTE_TCP_PORT,str); // cause mqtt to stop
-                DBG.printf("response:%s\r\n",rcv.c_str());
-                str = rcv;
-                if(str.find("OK") != std::string::npos) {
-                    DBG.printf("CMD executed successfully\r\n");
-                    execStatus = true;
-                    break;
-                }
-                if(trial>5) {   //two times trial
-                    DBG.printf("cmd is not executed\r\n");
-                    execStatus = false;
-                }
-                DBG.printf("Trial++\r\n");
-                trial++;
-                wait(3);
-            }
-            DBG.printf("Send execution status\r\n");
-            //send execution status
-        }
-    }
-    DBG.printf("Finish processing new command\r\n");
-    
-    /*
-    MQTT::Message &message = md.message;
-    DBG.printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n",
-    message.qos, message.retained, message.dup, message.id);
-    DBG.printf("Payload: %.*s\r\n", message.payloadlen, (char*)message.payload);
-    //DBG.printf("Payload %s\r\n",message.payload);
-    
-    
-    //check whether cmd is json
-    //char r[255];
-    char *s = (char*)message.payload;
-    string sp(s);
-    //sprintf(s,"%.*s",message.payloadlen, (char*)message.payload);
-    //sprintf(globCmd,"%s",s);
-    //DBG.printf("Payload: %s\r\n", r);
-    //string cmd = r;
-    //globalCommand = cmd;
-    
-    //globalCommand = sp;
-    
-    //globCmd = (char*)message.payload;
-    //string globCmd((char*)message.payload);
-    //std::string *sp = static_cast<std::char*>(message.payload);
-    //string sp((char*)message.payload);
-    
-    //DBG.printf("String: %s\r\n",sp.c_str());
-    
-    //globCmd = sp;
-    
-    //newCommand = true;
-    if(sp.find("[") != std::string::npos && sp.find("]") != std::string::npos) {
-        sp.erase(sp.begin(),sp.begin()+sp.find("[")+1);
-        sp.erase(sp.begin()+sp.find("]"),sp.end());
-        globalCommand = sp;
-        newCommand = true;
-    }
-    sp.clear();
-    */
-}
-
-int ethMQTTConnect(MQTT::Client<MQTTEthernet, Countdown, MQTT_MAX_PACKET_SIZE>* client, MQTTEthernet* ipstack) {
-    char *pMqttServer = &mqttSERVER[0u];
-    int connPort;
-    sscanf(mqttPORT.c_str(),"%d",&connPort);
-    int rc = ipstack->connect(pMqttServer, connPort);
-    
-    if(rc!=0)
-        return rc;
-        
-    //MQTT Connect
-    char clientId [64];
-    sprintf(clientId,"emma/%s",emmaUID.c_str());
-    //DBG.printf("clientId:%s\r\n",clientId);
-    
-    MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
-    data.MQTTVersion = 3;
-    data.clientID.cstring = clientId;
-    data.username.cstring = "761b233e-a49a-4830-a8ae-87cec3dc1086";
-    data.password.cstring = "ef25cf4567fbc07113252f8d72b7faf2";
-    
-    if((rc = client->connect(&data)) == 0) {
-        DBG.printf("ethMQTT connected\r\n");
-    }
-    
-    //MQTT Subscribe
-    //char s[64];
-    //sprintf(s,"%s/%s/command",mqttDOMAIN.c_str(),emmaUID.c_str());
-    //string topic = s;
-    char* topic = new char[strlen(mqttDOMAIN.c_str())+strlen(emmaUID.c_str())+9];
-    *topic = '\0';
-    strcat(topic, mqttDOMAIN.c_str());
-    strcat(topic, "/");
-    strcat(topic, emmaUID.c_str());
-    strcat(topic, "/command");
-    DBG.printf("topic:%s\r\n",topic);
-    
-    if((rc=client->subscribe(topic,MQTT::QOS0,ethMQTTMessageArrived)) == 0) {
-        DBG.printf("subscribe success!\r\n");    
-    }
-    return rc;
-}
-void ethMQTTAttemptConnect(MQTT::Client<MQTTEthernet, Countdown, MQTT_MAX_PACKET_SIZE>* client, MQTTEthernet* ipstack) {
-    int retryAttempt = 0;
-    
-    while(!ipstack->getEth().linkstatus()) {
-        DBG.printf("Ethernet link not present. Check cable connection\r\n");
-        wait(1);    
-    }
-    
-    while(ethMQTTConnect(client,ipstack) != 0) {
-        int timeout = 3;
-        DBG.printf("Retry attempt number %d waiting %d\r\n", retryAttempt, timeout);
-        wait(timeout);
-        retryAttempt++;
-    }
-}
-/*end eth mqtt*/
-
 /*start emma settings*/
 string getUID(void) {
     char s[32];
@@ -2927,6 +2816,10 @@
     char buf[1024];
     char s[256];
     int ret;
+    
+    //eth.init(); //use DHCP
+    eth.connect();
+    
     TCPSocketConnection sock;
     Timer t;
     
@@ -2945,17 +2838,20 @@
         }    
     }
     sock.close();
+    eth.disconnect();
     return buf;
 }
 /*end emma connection function*/
 
 /*start emma private function*/
 void isEthAvailable(void) {
-    if(ipstack.getEth().linkstatus()) {
+    //if(ipstack.getEth().linkstatus()) {
+    if(eth.linkstatus()) {
         ethAvailable = true;    
     } else {
         ethAvailable = false;    
     }
+    eth.init(); //init ethernet
 }
 
 void isEthConnected(void) {
@@ -2969,22 +2865,21 @@
         if(useProxy) {
             connHost = proxySERVER;
             sscanf(proxyPORT.c_str(),"%d",&connPort);
-            for(int i=0; i<sizeof(s); i++) {
-                s[i]=0; }
+            //for(int i=0; i<sizeof(s); i++) {
+            //    s[i]=0; }
             sprintf(s,"GET http://%s:%s/%s/api/controller/test HTTP/1.0\nHost: %s\r\n\r\n",restSERVER.c_str(),restPORT.c_str(),appNAME.c_str(),restSERVER.c_str());
         } else {
             connHost = restSERVER;
-            //connPort = restPORT;
             sscanf(restPORT.c_str(),"%d",&connPort);
-            for(int i=0; i<sizeof(s); i++) {
-                s[i]=0; }
+            //for(int i=0; i<sizeof(s); i++) {
+            //    s[i]=0; }
             sprintf(s,"GET /%s/api/controller/test HTTP/1.0\nHost: %s\r\n\r\n",appNAME.c_str(),restSERVER.c_str());
         }
         
         t.start();
         while(1) {
             str = ethREST(connHost,connPort,s);
-            if(str.find("OK") != std::string::npos) {
+            if(str.find("\"status\":\"OK\"") != std::string::npos) {
                 t.stop();
                 ethConnected = true;
                 break;    
@@ -3046,15 +2941,14 @@
         if(useProxy) {
             connHost = proxySERVER;
             sscanf(proxyPORT.c_str(),"%d",&connPort);
-            for(int i=0; i<sizeof(s); i++) {
-                s[i]=0; }
+            //for(int i=0; i<sizeof(s); i++) {
+            //    s[i]=0; }
             sprintf(s,"http://%s:%s/%s/api/controller/test HTTP/1.0\nHost: %s\r\n\r\n",restSERVER.c_str(),restPORT.c_str(),appNAME.c_str(),restSERVER.c_str());
         } else {
             connHost = restSERVER;
-            //connPort = restPORT;
             sscanf(restPORT.c_str(),"%d",&connPort);
-            for(int i=0; i<sizeof(s); i++) {
-                s[i]=0; }
+            //for(int i=0; i<sizeof(s); i++) {
+            //    s[i]=0; }
             sprintf(s,"/%s/api/controller/test",appNAME.c_str());
         }
         wait(2);
@@ -3063,15 +2957,15 @@
         t.stop();
         t.reset();
         if(rest.begin(connHost.c_str(),connPort,false)) {
-            DBG.printf("rest begin\r\n");
+            //DBG.printf("rest begin\r\n");
             esp.process();
             rest.get(s);
-            for(int i=0; i<sizeof(s); i++) {
-                s[i]=0; }
+            //for(int i=0; i<sizeof(s); i++) {
+            //    s[i]=0; }
             rest.getResponse(s,sizeof(s));
             str = s;
             DBG.printf("response:%s\r\n",s);
-            if(str.find("OK") != std::string::npos) {
+            if(str.find("\"status\":\"OK\"") != std::string::npos) {
                 wifiConnected = true;
             }
         } else {