Gateway con agregar controles mediante firebase migracion a OS5

Dependencies:   mbed-http ESP01 Pulse RFDecoder

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.h Source File

main.h

00001 #ifndef MAIN_H
00002 #define MAIN_H
00003 
00004 #include "mbed.h"
00005 #include <string>
00006 #include "ESP01.h"
00007 #include "https_request.h"
00008 #include "ESP8266Interface.h"
00009 #include "RFDecoder.h"
00010 #include "mbed_memory_status.h"
00011 
00012 #define ON  0
00013 #define OFF  1
00014 
00015 #define LEDAMARILLO_ON          led_azul = OFF; led_verde = ON; led_rojo = ON;
00016 #define LEDVERDE_ON             led_azul = OFF; led_verde = ON; led_rojo = OFF;
00017 
00018 #define LEDS_OFF                led_azul = OFF; led_verde = OFF; led_rojo = OFF;
00019 
00020 //Configuraciones del Sistema
00021 #define SERVER_PORT             5558
00022 #define TCPCOMMSBYTESMAX        10
00023 #define TCPSTATSBYTESMAX        5
00024 #define MAXTIMERXCONTROL        40000       //Tiempo maximo para recibir el codigo del control de 433MHz en milisegundos
00025 #define INTERVALFIREBASECHECK   15.0
00026 #define MAXWIFICONNCHECKS       3
00027 
00028 //Comandos de Firebase
00029 //Los comandos provenientes de la app al Gateway son de tipo String.
00030 #define NINGUNCOMANDO           "02"
00031 #define AGREGARCONTROL          "10"    //La funcion .compare solo acepta String
00032 
00033 // Las respuestas del Gateway a la App debe ser tipo CHAR
00034 #define WAITING_RF_CODE         10
00035 #define NEW_CONTROL_RESPONSE    11
00036 
00037 
00038 
00039 //Codigos de Status de TCP
00040 #define COMMANDREC              0x01        //Se recibio un comando valido por TCP
00041 
00042 //Comandos de TCP
00043 #define NEW_CONTROL_REGISTER    0x10
00044 #define CONTROL_REGISTER_INFO   0x11
00045 
00046 //Otros TCP
00047 #define HEARBEAT_REQUEST        0xFA
00048 #define HEARBEAT_RESPONSE       0xFB
00049 
00050 
00051 
00052 /* List of trusted root CA certificates
00053  * currently two: Amazon, the CA for os.mbed.com and Let's Encrypt, the CA for httpbin.org
00054  *
00055  * To add more root certificates, just concatenate them.
00056  */
00057 const char SSL_CA_PEM[] =  
00058     "-----BEGIN CERTIFICATE-----\n"
00059     "MIIFmzCCBIOgAwIBAgIRAJRuZHok8dQjAQAAAAApJGwwDQYJKoZIhvcNAQELBQAw\n"
00060     "QjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczET\n"
00061     "MBEGA1UEAxMKR1RTIENBIDFPMTAeFw0xOTAzMTMyMTMwNTdaFw0yMDAzMTEyMTMw\n"
00062     "NTdaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\n"
00063     "Ew1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgTExDMRcwFQYDVQQDEw5m\n"
00064     "aXJlYmFzZWlvLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkd\n"
00065     "/jeM+PrwIYmM6IE28iN7CjKnBWy+tqNrs5z2AJwM5iLgtgcbc+THuXGElTN7zAWB\n"
00066     "SKWv+ezAGe5NiTEEUiWgX1z1VFDj85xpz+Cysn/Oi8MtoN6h8yCmYPtXv8YPInw0\n"
00067     "JLkSM5e2uuWVwc/tR1Fh+awpiYQFqGm6DvMq6yAYB/nuL3Gyc4XFgRrxje+VQ+g3\n"
00068     "oWE+9NVfqu4smFCutSIGlEdRhGdr/m2u+sc+dnBZNoVOqwSyyFyjpAZvMMvuE5Ip\n"
00069     "3ovfA1tq57nl9eQw8fcKsdXOeeXYHc1KBUUC7Xb8F/1+upVML8a5GMULpYkClLXt\n"
00070     "OKRRfCJa53YynILJdPkCAwEAAaOCAmQwggJgMA4GA1UdDwEB/wQEAwIFoDATBgNV\n"
00071     "HSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS03YhV70g6\n"
00072     "+7MUxtOiluRi1T2GAzAfBgNVHSMEGDAWgBSY0fhuEOvPm+xgnxiQG6DrfQn9KzBk\n"
00073     "BggrBgEFBQcBAQRYMFYwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLnBraS5nb29n\n"
00074     "L2d0czFvMTArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nL2dzcjIvR1RTMU8x\n"
00075     "LmNydDArBgNVHREEJDAigg5maXJlYmFzZWlvLmNvbYIQKi5maXJlYmFzZWlvLmNv\n"
00076     "bTAhBgNVHSAEGjAYMAgGBmeBDAECAjAMBgorBgEEAdZ5AgUDMC8GA1UdHwQoMCYw\n"
00077     "JKAioCCGHmh0dHA6Ly9jcmwucGtpLmdvb2cvR1RTMU8xLmNybDCCAQIGCisGAQQB\n"
00078     "1nkCBAIEgfMEgfAA7gB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5Be\n"
00079     "AAABaXkuFzgAAAQDAEYwRAIgVssWhLEYItcpljMfJfkBhnxUrw32ik3C7IyBhkS6\n"
00080     "jQcCIAHzoq/0QsRXY8RITJ5z6pThPzJhiSeLhWb6v2MDs6+NAHUAXqdz+d9WwOe1\n"
00081     "Nkh90EngMnqRmgyEoRIShBh1loFxRVgAAAFpeS4XEQAABAMARjBEAiBgwY3jVuyU\n"
00082     "HTDrfXt7Hhq3AL9kD8hASq/qIXFvHAel1AIgV2DY0UI7PvVl2uHicvaL9BfUPQjP\n"
00083     "8/7b5W5jd6HEKbowDQYJKoZIhvcNAQELBQADggEBAAFG/f9zTyPTiYjjbPKpIC3T\n"
00084     "MMD8dWvny1DJpL2fQPMcpAkkduW7sFG8mLRh14mSBsWqAusj99nAKt6NJhxZewhp\n"
00085     "JKwbcawanW+w2DUzFr0FauVxNIs4xPxcgkCNAGeUj8ZI+cDcSaMOY4WxNrjOgbbI\n"
00086     "feOxHsCmIWxch6/vNVxh+54BZFCy723DL8Fo/tDRU73b+gxPJusJva4ABuXSqSFT\n"
00087     "EDaRGzdj8AKkoDmRkWLcEg/6a/2dfw8VV7fIAlqVxNQwZWZLtIsBGazxZ5xflrVz\n"
00088     "I5AHejNR7guDaWAimhkSOlG11W8BzPtdAo/xJ6JyI4K5kPGIXucniVRmQfmojxc=\n"
00089     "-----END CERTIFICATE-----\n"
00090     "-----BEGIN CERTIFICATE-----\n"
00091     "MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAw\n"
00092     "HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs\n"
00093     "U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy\n"
00094     "MTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg\n"
00095     "U2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUA\n"
00096     "A4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnv\n"
00097     "UA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRr\n"
00098     "mBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++Ac\n"
00099     "xGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmK\n"
00100     "FsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7X\n"
00101     "rJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNV\n"
00102     "HQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1Ud\n"
00103     "EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8G\n"
00104     "A1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAl\n"
00105     "BggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzAp\n"
00106     "MCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0g\n"
00107     "BDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9y\n"
00108     "ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7H\n"
00109     "TgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoN\n"
00110     "FvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrz\n"
00111     "mqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wW\n"
00112     "IRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZ\n"
00113     "USpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg==\n"
00114     "-----END CERTIFICATE-----\n";
00115     
00116 //Port Definition
00117 DigitalOut led_rojo(LED_RED);
00118 DigitalOut led_verde(LED_GREEN);
00119 DigitalOut led_azul(LED_BLUE);
00120 
00121 DigitalIn esp01_en(D4);
00122 DigitalIn esp01_rst(D5);
00123 
00124 //Function Prototypes
00125 void wifiInit(void);
00126 bool isConnectedToWifi(void);
00127 void wifiConnect(void);
00128 void startServer(int port);
00129 int getTCPContent(char *espdata, char *command, char *status);
00130 void convertToCharArray(char *arr, unsigned long number);
00131 
00132 void dump_response(HttpResponse* res);
00133 void http_demo(NetworkInterface *net);
00134 string getFirebaseCommand(NetworkInterface *network);
00135 void putFirebaseCommand(NetworkInterface *network, char comando, unsigned long numcode);
00136 void firebaseCheckTimeout(void);
00137 
00138 
00139 
00140 #endif //MAIN_H