web server load-drive and reading sensors based on LPC1768
Dependencies: DHT22 EthernetNetIf HTTPServer mbed
SensorHandler.cpp@0:3125f39d20b4, 2015-12-07 (annotated)
- 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?
User | Revision | Line number | New 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 | } |