web server load-drive and reading sensors based on LPC1768

Dependencies:   DHT22 EthernetNetIf HTTPServer mbed

Committer:
douglasofranco
Date:
Mon Dec 07 14:06:24 2015 +0000
Revision:
0:3125f39d20b4
Web server load-drive and reading sensors based on LPC1768

Who changed what in which revision?

UserRevisionLine numberNew contents of line
douglasofranco 0:3125f39d20b4 1 #include "mbed.h"
douglasofranco 0:3125f39d20b4 2 #include "SensorHandler.h"
douglasofranco 0:3125f39d20b4 3 #include <dbg.h>
douglasofranco 0:3125f39d20b4 4 #include "DHT22.h"
douglasofranco 0:3125f39d20b4 5 #include "Leitura.h"
douglasofranco 0:3125f39d20b4 6 #include "Atuadores.h"
douglasofranco 0:3125f39d20b4 7 #define DELIMITER ("&")
douglasofranco 0:3125f39d20b4 8
douglasofranco 0:3125f39d20b4 9 extern bool g_bLed1;
douglasofranco 0:3125f39d20b4 10 int estado;
douglasofranco 0:3125f39d20b4 11 extern int EstadoCarr;
douglasofranco 0:3125f39d20b4 12 extern int EstadoAr;
douglasofranco 0:3125f39d20b4 13
douglasofranco 0:3125f39d20b4 14
douglasofranco 0:3125f39d20b4 15 SensorHandler::SensorHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket)
douglasofranco 0:3125f39d20b4 16
douglasofranco 0:3125f39d20b4 17 {
douglasofranco 0:3125f39d20b4 18 DBG("SensorHandler()\r\n");
douglasofranco 0:3125f39d20b4 19 }
douglasofranco 0:3125f39d20b4 20
douglasofranco 0:3125f39d20b4 21 SensorHandler::~SensorHandler()
douglasofranco 0:3125f39d20b4 22 {
douglasofranco 0:3125f39d20b4 23 DBG("~SensorHandler()\r\n");
douglasofranco 0:3125f39d20b4 24 }
douglasofranco 0:3125f39d20b4 25 void SensorHandler::printString( const char* pszString )
douglasofranco 0:3125f39d20b4 26 {
douglasofranco 0:3125f39d20b4 27 writeData( pszString, strlen(pszString) );
douglasofranco 0:3125f39d20b4 28 }
douglasofranco 0:3125f39d20b4 29
douglasofranco 0:3125f39d20b4 30 void SensorHandler::printHtml()
douglasofranco 0:3125f39d20b4 31 {
douglasofranco 0:3125f39d20b4 32 respHeaders()["Connection"] = "close";
douglasofranco 0:3125f39d20b4 33
douglasofranco 0:3125f39d20b4 34 printString( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n" );
douglasofranco 0:3125f39d20b4 35 printString( "<html lang=\"ja\">\n" );
douglasofranco 0:3125f39d20b4 36 printString( "<head>\n" );
douglasofranco 0:3125f39d20b4 37 printString( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" );
douglasofranco 0:3125f39d20b4 38 printString( "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n" );
douglasofranco 0:3125f39d20b4 39 printString( "<title>Sistema de Monitoramento</title><br />\n" );
douglasofranco 0:3125f39d20b4 40 printString( "</head>\n" );
douglasofranco 0:3125f39d20b4 41 printString( "<body>\n" );
douglasofranco 0:3125f39d20b4 42 //printString("<img src=logo.png alt=Logo style=position:absolute;top:50px;right:10px; />");
douglasofranco 0:3125f39d20b4 43 printString("<center><img src=\"http://www.cbm.sc.gov.br/templates/kodadesign/images/topo_site_88anos.jpg\"></ center>");
douglasofranco 0:3125f39d20b4 44 printString( "<p style=font-size:40px;font-family:courier><b> Sistema de Monitoramento de Estaçãoes Repetidoras<b></p>");
douglasofranco 0:3125f39d20b4 45
douglasofranco 0:3125f39d20b4 46 printString("<table width=\"100%\">");
douglasofranco 0:3125f39d20b4 47 printString("<tr>");
douglasofranco 0:3125f39d20b4 48 printString( "<td>Temperatura: " );
douglasofranco 0:3125f39d20b4 49 sprintf( szTemp2, "%4.1d", szTemp);
douglasofranco 0:3125f39d20b4 50 printString(szTemp2);
douglasofranco 0:3125f39d20b4 51 printString("°C");
douglasofranco 0:3125f39d20b4 52 printString("</td>");
douglasofranco 0:3125f39d20b4 53 printString("<td>Corrente ACS01:");
douglasofranco 0:3125f39d20b4 54 printString(Corrente);
douglasofranco 0:3125f39d20b4 55 printString("A </td>");
douglasofranco 0:3125f39d20b4 56 printString("<td>Tensão do Banco de Baterias:");
douglasofranco 0:3125f39d20b4 57 printString(TensCC);
douglasofranco 0:3125f39d20b4 58 printString("V</td>");
douglasofranco 0:3125f39d20b4 59 printString("</tr><tr>");
douglasofranco 0:3125f39d20b4 60 printString("<td>Umidade:");
douglasofranco 0:3125f39d20b4 61 sprintf( szUmid2, "%4.1d", szUmid);
douglasofranco 0:3125f39d20b4 62 printString(szUmid2);
douglasofranco 0:3125f39d20b4 63 printString("%</td>");
douglasofranco 0:3125f39d20b4 64 printString("<td>Corrente ACS02:");
douglasofranco 0:3125f39d20b4 65 printString(Corrente2);
douglasofranco 0:3125f39d20b4 66 printString("A</td>");
douglasofranco 0:3125f39d20b4 67 printString("<td>Ar Condicionado:");
douglasofranco 0:3125f39d20b4 68 if (EstadoAr == 1){printString("Ligado");}
douglasofranco 0:3125f39d20b4 69 if (EstadoAr == 0){printString("Desligado");}
douglasofranco 0:3125f39d20b4 70 printString("</td><tr>");
douglasofranco 0:3125f39d20b4 71 if (AC == 1) {printString("<td><label>Rede Elétrica:"); printString("<FONT COLOR=\" blue\"> Rede Eletrica Ligada</FONT><label></td>");}
douglasofranco 0:3125f39d20b4 72 if (AC == 0) {printString("<td><label>Rede Elétrica:"); printString("<FONT COLOR=\" red\"> Falha na Alimentação</FONT><label></td>");}
douglasofranco 0:3125f39d20b4 73 printString("<td>Corrente ACS03:");
douglasofranco 0:3125f39d20b4 74 printString(Corrente3);
douglasofranco 0:3125f39d20b4 75 printString("A</td>");
douglasofranco 0:3125f39d20b4 76 printString("<td>Carregador:");
douglasofranco 0:3125f39d20b4 77 if (EstadoCarr == 1){printString("Ligado");}
douglasofranco 0:3125f39d20b4 78 if (EstadoCarr == 0){printString("Desligado");}
douglasofranco 0:3125f39d20b4 79 printString("</td></tr>");
douglasofranco 0:3125f39d20b4 80 printString("<br><hr>\n");
douglasofranco 0:3125f39d20b4 81
douglasofranco 0:3125f39d20b4 82
douglasofranco 0:3125f39d20b4 83 printString("</table><br><br>");
douglasofranco 0:3125f39d20b4 84
douglasofranco 0:3125f39d20b4 85 printString("<form method=\"post\" action=\"\">\n");
douglasofranco 0:3125f39d20b4 86 printString("<table width=\"100%\">");
douglasofranco 0:3125f39d20b4 87 printString("<tr>");
douglasofranco 0:3125f39d20b4 88 printString("<td><label><input type=\"radio\" name=\"led1\" value=\"1\""); if(g_bLed1 == false){ printString(" checked"); } printString(">Lampadas Desligadas</label><br></td>\n");
douglasofranco 0:3125f39d20b4 89 printString("<td rowspan=\"3\"><a href=\"http://10.193.240.157/main.cgi?next_file=video2.htm\" target=\"_blank\"><img src=\"http://10.193.240.157/img/video.mjpeg\" width=\"'342' height= '23'\"></a></td>");
douglasofranco 0:3125f39d20b4 90 printString("</tr><tr>");
douglasofranco 0:3125f39d20b4 91 printString("<td><label><input type=\"radio\" name=\"led2\" value=\"1\""); if(g_bLed1 == true){ printString(" checked"); } printString(">Lampadas Ligadas</label><br></td>\n");
douglasofranco 0:3125f39d20b4 92 printString("</tr><tr>");
douglasofranco 0:3125f39d20b4 93 if(g_bLed1 == false){ printString("<td><input type=\"submit\"style=\"font-weight:30px; color: blue\" value=\"Ligar Lampadas\" style=\"width: 200px; height: 80px\"></td>\n");}
douglasofranco 0:3125f39d20b4 94 if(g_bLed1 == true){ printString("<td><input type=\"submit\" style=\"font-weight:30px; color: red\" value=\"Desl. Lampadas\"style=\"width: 200px; height: 80px\"></td>\n");}
douglasofranco 0:3125f39d20b4 95 printString("</tr></table><br><br>");
douglasofranco 0:3125f39d20b4 96 printString("</form>\n");
douglasofranco 0:3125f39d20b4 97 printString("</body>\n");
douglasofranco 0:3125f39d20b4 98 printString("</html>");
douglasofranco 0:3125f39d20b4 99 }
douglasofranco 0:3125f39d20b4 100 void SensorHandler::doGet()
douglasofranco 0:3125f39d20b4 101 {
douglasofranco 0:3125f39d20b4 102 DBG("doGet()\n");
douglasofranco 0:3125f39d20b4 103 printHtml();
douglasofranco 0:3125f39d20b4 104 }
douglasofranco 0:3125f39d20b4 105 // botoes acionadores copia: https://developer.mbed.org/users/star297/code/ESP8266-WEB-Mbed-Controller/file/f7febfa77784/main.cpp
douglasofranco 0:3125f39d20b4 106 // https://developer.mbed.org/users/star297/code/ESP8266-WEB-Mbed-Controller/
douglasofranco 0:3125f39d20b4 107 static void analyzePostData( char* pszLine, bool& rbLed1)
douglasofranco 0:3125f39d20b4 108 {
douglasofranco 0:3125f39d20b4 109 rbLed1 = false;
douglasofranco 0:3125f39d20b4 110 char* pszToken = strtok(pszLine, DELIMITER);
douglasofranco 0:3125f39d20b4 111 while(pszToken)
douglasofranco 0:3125f39d20b4 112 {
douglasofranco 0:3125f39d20b4 113 if( 6 == strlen(pszToken)
douglasofranco 0:3125f39d20b4 114 && 0 == strncmp(pszToken, "led", 3) )
douglasofranco 0:3125f39d20b4 115 { // led?=1
douglasofranco 0:3125f39d20b4 116 if( '1' == pszToken[3] ){ rbLed1 = true; }
douglasofranco 0:3125f39d20b4 117 else if( '2' == pszToken[3] ){ rbLed1 = false; }
douglasofranco 0:3125f39d20b4 118 }
douglasofranco 0:3125f39d20b4 119 // else{ rbLed1 = false;}
douglasofranco 0:3125f39d20b4 120 //else if ( '1' != pszToken[3] ){ rbLed1 = false; }
douglasofranco 0:3125f39d20b4 121
douglasofranco 0:3125f39d20b4 122 pszToken = strtok(NULL, DELIMITER);
douglasofranco 0:3125f39d20b4 123 }
douglasofranco 0:3125f39d20b4 124 }
douglasofranco 0:3125f39d20b4 125 void SensorHandler::doPost()
douglasofranco 0:3125f39d20b4 126 {
douglasofranco 0:3125f39d20b4 127 DBG("doPost()\r\n");
douglasofranco 0:3125f39d20b4 128 int iCountData = dataLen(); //add posterior
douglasofranco 0:3125f39d20b4 129 if( 0 == iCountData )
douglasofranco 0:3125f39d20b4 130 {
douglasofranco 0:3125f39d20b4 131 printHtml();
douglasofranco 0:3125f39d20b4 132 return;
douglasofranco 0:3125f39d20b4 133 }
douglasofranco 0:3125f39d20b4 134 char* pszData = (char*) malloc( sizeof(char) * (iCountData + 1) );
douglasofranco 0:3125f39d20b4 135 readData( pszData, iCountData );
douglasofranco 0:3125f39d20b4 136 pszData[iCountData] = '\0';
douglasofranco 0:3125f39d20b4 137
douglasofranco 0:3125f39d20b4 138 DBG( pszData );
douglasofranco 0:3125f39d20b4 139
douglasofranco 0:3125f39d20b4 140 bool bLed1;
douglasofranco 0:3125f39d20b4 141 analyzePostData( pszData, bLed1);
douglasofranco 0:3125f39d20b4 142 g_bLed1 = bLed1;
douglasofranco 0:3125f39d20b4 143 printHtml();
douglasofranco 0:3125f39d20b4 144 }
douglasofranco 0:3125f39d20b4 145
douglasofranco 0:3125f39d20b4 146 void SensorHandler::doHead()
douglasofranco 0:3125f39d20b4 147 {
douglasofranco 0:3125f39d20b4 148 DBG("doHead()\r\n");
douglasofranco 0:3125f39d20b4 149 }
douglasofranco 0:3125f39d20b4 150
douglasofranco 0:3125f39d20b4 151 void SensorHandler::onReadable() //Data has been read
douglasofranco 0:3125f39d20b4 152 {
douglasofranco 0:3125f39d20b4 153 DBG("onReadable()\r\n");
douglasofranco 0:3125f39d20b4 154 }
douglasofranco 0:3125f39d20b4 155
douglasofranco 0:3125f39d20b4 156 void SensorHandler::onWriteable() //Data has been written & buf is free
douglasofranco 0:3125f39d20b4 157 {
douglasofranco 0:3125f39d20b4 158 DBG("onWriteable()\r\n");
douglasofranco 0:3125f39d20b4 159 close(); //Data written, we can close the connection
douglasofranco 0:3125f39d20b4 160 }
douglasofranco 0:3125f39d20b4 161
douglasofranco 0:3125f39d20b4 162 void SensorHandler::onClose() //Connection is closing
douglasofranco 0:3125f39d20b4 163 {
douglasofranco 0:3125f39d20b4 164 DBG("onClose()\r\n");
douglasofranco 0:3125f39d20b4 165 }