web server load-drive and reading sensors based on LPC1768

Dependencies:   DHT22 EthernetNetIf HTTPServer mbed

SensorHandler.cpp

Committer:
douglasofranco
Date:
2015-12-07
Revision:
0:3125f39d20b4

File content as of revision 0:3125f39d20b4:

#include "mbed.h"
#include "SensorHandler.h"
#include <dbg.h>
#include "DHT22.h"
#include "Leitura.h"
#include "Atuadores.h"
#define DELIMITER   ("&")

extern bool g_bLed1;
int estado;
extern int EstadoCarr;
extern int EstadoAr;


SensorHandler::SensorHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket)

{
    DBG("SensorHandler()\r\n");
}

SensorHandler::~SensorHandler()
{
    DBG("~SensorHandler()\r\n");
}
void SensorHandler::printString( const char* pszString )
{
    writeData( pszString, strlen(pszString) );
}

void SensorHandler::printHtml()
{
    respHeaders()["Connection"] = "close";

    printString( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n" );
    printString( "<html lang=\"ja\">\n" );
    printString( "<head>\n" );
    printString( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" );
    printString( "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n" );
    printString( "<title>Sistema de Monitoramento</title><br />\n" );
    printString( "</head>\n" );
    printString( "<body>\n" );
    //printString("<img src=logo.png alt=Logo style=position:absolute;top:50px;right:10px; />");
    printString("<center><img src=\"http://www.cbm.sc.gov.br/templates/kodadesign/images/topo_site_88anos.jpg\"></ center>");
    printString( "<p style=font-size:40px;font-family:courier><b> Sistema de Monitoramento de Estaçãoes Repetidoras<b></p>");
    
    printString("<table width=\"100%\">");
    printString("<tr>");
    printString( "<td>Temperatura: " );
    sprintf( szTemp2, "%4.1d", szTemp);
    printString(szTemp2);
    printString("°C");
    printString("</td>");
    printString("<td>Corrente ACS01:");
    printString(Corrente);
    printString("A </td>");
    printString("<td>Tensão do Banco de Baterias:");
    printString(TensCC);
    printString("V</td>");
    printString("</tr><tr>");
    printString("<td>Umidade:");
    sprintf( szUmid2, "%4.1d", szUmid);
    printString(szUmid2);
    printString("%</td>");
    printString("<td>Corrente ACS02:");
    printString(Corrente2);
    printString("A</td>");
    printString("<td>Ar Condicionado:");
    if (EstadoAr == 1){printString("Ligado");}
    if (EstadoAr == 0){printString("Desligado");}
    printString("</td><tr>");
    if (AC == 1) {printString("<td><label>Rede Elétrica:"); printString("<FONT COLOR=\" blue\"> Rede Eletrica Ligada</FONT><label></td>");}
    if (AC == 0) {printString("<td><label>Rede Elétrica:"); printString("<FONT COLOR=\" red\"> Falha na Alimentação</FONT><label></td>");}
    printString("<td>Corrente ACS03:");
    printString(Corrente3);
    printString("A</td>");
    printString("<td>Carregador:");
    if (EstadoCarr == 1){printString("Ligado");}
    if (EstadoCarr == 0){printString("Desligado");}
    printString("</td></tr>");
    printString("<br><hr>\n");
     
    
    printString("</table><br><br>");
    
    printString("<form method=\"post\" action=\"\">\n");
    printString("<table width=\"100%\">");
    printString("<tr>");
    printString("<td><label><input type=\"radio\" name=\"led1\" value=\"1\""); if(g_bLed1 == false){ printString(" checked"); } printString(">Lampadas Desligadas</label><br></td>\n");
    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>");
    printString("</tr><tr>");
    printString("<td><label><input type=\"radio\" name=\"led2\" value=\"1\""); if(g_bLed1 == true){ printString(" checked"); } printString(">Lampadas Ligadas</label><br></td>\n");
    printString("</tr><tr>");
    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");}
    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");}
    printString("</tr></table><br><br>");  
    printString("</form>\n");
    printString("</body>\n");
    printString("</html>");
}
void SensorHandler::doGet()
{
    DBG("doGet()\n");
    printHtml();
 }
// botoes acionadores copia: https://developer.mbed.org/users/star297/code/ESP8266-WEB-Mbed-Controller/file/f7febfa77784/main.cpp
// https://developer.mbed.org/users/star297/code/ESP8266-WEB-Mbed-Controller/
static void analyzePostData( char* pszLine, bool& rbLed1)
{
    rbLed1 = false;
     char* pszToken = strtok(pszLine, DELIMITER);
    while(pszToken)
    {
        if( 6 == strlen(pszToken)
         && 0 == strncmp(pszToken, "led", 3) )
        {   // led?=1
            if(      '1' == pszToken[3] ){ rbLed1 = true; }
            else if( '2' == pszToken[3] ){ rbLed1 = false; }
             }
          //   else{ rbLed1 = false;}
             //else if  (    '1' != pszToken[3] ){ rbLed1 = false; }
             
        pszToken = strtok(NULL, DELIMITER);
    }
}
void SensorHandler::doPost()
{
    DBG("doPost()\r\n");
    int iCountData = dataLen(); //add posterior
    if( 0 == iCountData )
    { 
    printHtml();       
    return; 
    }
  char* pszData = (char*) malloc( sizeof(char) * (iCountData + 1) );
  readData( pszData, iCountData );
  pszData[iCountData] = '\0';
    
    DBG( pszData );
    
    bool bLed1;
    analyzePostData( pszData, bLed1);
    g_bLed1 = bLed1;
    printHtml();
}

void SensorHandler::doHead()
{
    DBG("doHead()\r\n");
}

void SensorHandler::onReadable() //Data has been read
{
    DBG("onReadable()\r\n");
}

void SensorHandler::onWriteable() //Data has been written & buf is free
{
    DBG("onWriteable()\r\n");
    close(); //Data written, we can close the connection
}

void SensorHandler::onClose() //Connection is closing
{
    DBG("onClose()\r\n");
}