Gateway con agregar controles mediante firebase migracion a OS5

Dependencies:   mbed-http ESP01 Pulse RFDecoder

Committer:
Thrillex13
Date:
Sun Sep 15 20:56:21 2019 +0000
Revision:
4:8fed3705384e
Parent:
3:5dceee1c49fc
- Se cambio la implementacion de registro de controles para hacerlo mediante Firebase y peticiones HTTPS GET y PATCH; - Se optimizo la conexion de la funcion wificonnect

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Thrillex13 3:5dceee1c49fc 1 #ifndef MAIN_H
Thrillex13 3:5dceee1c49fc 2 #define MAIN_H
Thrillex13 3:5dceee1c49fc 3
Thrillex13 3:5dceee1c49fc 4 #include "mbed.h"
Thrillex13 3:5dceee1c49fc 5 #include <string>
Thrillex13 3:5dceee1c49fc 6 #include "ESP01.h"
Thrillex13 3:5dceee1c49fc 7 #include "https_request.h"
Thrillex13 3:5dceee1c49fc 8 #include "ESP8266Interface.h"
Thrillex13 3:5dceee1c49fc 9 #include "RFDecoder.h"
Thrillex13 4:8fed3705384e 10 #include "mbed_memory_status.h"
Thrillex13 3:5dceee1c49fc 11
Thrillex13 3:5dceee1c49fc 12 #define ON 0
Thrillex13 3:5dceee1c49fc 13 #define OFF 1
Thrillex13 3:5dceee1c49fc 14
Thrillex13 3:5dceee1c49fc 15 #define LEDAMARILLO_ON led_azul = OFF; led_verde = ON; led_rojo = ON;
Thrillex13 3:5dceee1c49fc 16 #define LEDVERDE_ON led_azul = OFF; led_verde = ON; led_rojo = OFF;
Thrillex13 3:5dceee1c49fc 17
Thrillex13 3:5dceee1c49fc 18 #define LEDS_OFF led_azul = OFF; led_verde = OFF; led_rojo = OFF;
Thrillex13 3:5dceee1c49fc 19
Thrillex13 4:8fed3705384e 20 //Configuraciones del Sistema
Thrillex13 3:5dceee1c49fc 21 #define SERVER_PORT 5558
Thrillex13 3:5dceee1c49fc 22 #define TCPCOMMSBYTESMAX 10
Thrillex13 3:5dceee1c49fc 23 #define TCPSTATSBYTESMAX 5
Thrillex13 4:8fed3705384e 24 #define MAXTIMERXCONTROL 40000 //Tiempo maximo para recibir el codigo del control de 433MHz en milisegundos
Thrillex13 4:8fed3705384e 25 #define INTERVALFIREBASECHECK 15.0
Thrillex13 4:8fed3705384e 26 #define MAXWIFICONNCHECKS 3
Thrillex13 4:8fed3705384e 27
Thrillex13 4:8fed3705384e 28 //Comandos de Firebase
Thrillex13 4:8fed3705384e 29 //Los comandos provenientes de la app al Gateway son de tipo String.
Thrillex13 4:8fed3705384e 30 #define NINGUNCOMANDO "02"
Thrillex13 4:8fed3705384e 31 #define AGREGARCONTROL "10" //La funcion .compare solo acepta String
Thrillex13 4:8fed3705384e 32
Thrillex13 4:8fed3705384e 33 // Las respuestas del Gateway a la App debe ser tipo CHAR
Thrillex13 4:8fed3705384e 34 #define WAITING_RF_CODE 10
Thrillex13 4:8fed3705384e 35 #define NEW_CONTROL_RESPONSE 11
Thrillex13 4:8fed3705384e 36
Thrillex13 4:8fed3705384e 37
Thrillex13 3:5dceee1c49fc 38
Thrillex13 3:5dceee1c49fc 39 //Codigos de Status de TCP
Thrillex13 3:5dceee1c49fc 40 #define COMMANDREC 0x01 //Se recibio un comando valido por TCP
Thrillex13 3:5dceee1c49fc 41
Thrillex13 3:5dceee1c49fc 42 //Comandos de TCP
Thrillex13 3:5dceee1c49fc 43 #define NEW_CONTROL_REGISTER 0x10
Thrillex13 3:5dceee1c49fc 44 #define CONTROL_REGISTER_INFO 0x11
Thrillex13 3:5dceee1c49fc 45
Thrillex13 3:5dceee1c49fc 46 //Otros TCP
Thrillex13 3:5dceee1c49fc 47 #define HEARBEAT_REQUEST 0xFA
Thrillex13 3:5dceee1c49fc 48 #define HEARBEAT_RESPONSE 0xFB
Thrillex13 3:5dceee1c49fc 49
Thrillex13 3:5dceee1c49fc 50
Thrillex13 3:5dceee1c49fc 51
Thrillex13 3:5dceee1c49fc 52 /* List of trusted root CA certificates
Thrillex13 3:5dceee1c49fc 53 * currently two: Amazon, the CA for os.mbed.com and Let's Encrypt, the CA for httpbin.org
Thrillex13 3:5dceee1c49fc 54 *
Thrillex13 3:5dceee1c49fc 55 * To add more root certificates, just concatenate them.
Thrillex13 3:5dceee1c49fc 56 */
Thrillex13 3:5dceee1c49fc 57 const char SSL_CA_PEM[] =
Thrillex13 3:5dceee1c49fc 58 "-----BEGIN CERTIFICATE-----\n"
Thrillex13 3:5dceee1c49fc 59 "MIIFmzCCBIOgAwIBAgIRAJRuZHok8dQjAQAAAAApJGwwDQYJKoZIhvcNAQELBQAw\n"
Thrillex13 3:5dceee1c49fc 60 "QjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczET\n"
Thrillex13 3:5dceee1c49fc 61 "MBEGA1UEAxMKR1RTIENBIDFPMTAeFw0xOTAzMTMyMTMwNTdaFw0yMDAzMTEyMTMw\n"
Thrillex13 3:5dceee1c49fc 62 "NTdaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\n"
Thrillex13 3:5dceee1c49fc 63 "Ew1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgTExDMRcwFQYDVQQDEw5m\n"
Thrillex13 3:5dceee1c49fc 64 "aXJlYmFzZWlvLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkd\n"
Thrillex13 3:5dceee1c49fc 65 "/jeM+PrwIYmM6IE28iN7CjKnBWy+tqNrs5z2AJwM5iLgtgcbc+THuXGElTN7zAWB\n"
Thrillex13 3:5dceee1c49fc 66 "SKWv+ezAGe5NiTEEUiWgX1z1VFDj85xpz+Cysn/Oi8MtoN6h8yCmYPtXv8YPInw0\n"
Thrillex13 3:5dceee1c49fc 67 "JLkSM5e2uuWVwc/tR1Fh+awpiYQFqGm6DvMq6yAYB/nuL3Gyc4XFgRrxje+VQ+g3\n"
Thrillex13 3:5dceee1c49fc 68 "oWE+9NVfqu4smFCutSIGlEdRhGdr/m2u+sc+dnBZNoVOqwSyyFyjpAZvMMvuE5Ip\n"
Thrillex13 3:5dceee1c49fc 69 "3ovfA1tq57nl9eQw8fcKsdXOeeXYHc1KBUUC7Xb8F/1+upVML8a5GMULpYkClLXt\n"
Thrillex13 3:5dceee1c49fc 70 "OKRRfCJa53YynILJdPkCAwEAAaOCAmQwggJgMA4GA1UdDwEB/wQEAwIFoDATBgNV\n"
Thrillex13 3:5dceee1c49fc 71 "HSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS03YhV70g6\n"
Thrillex13 3:5dceee1c49fc 72 "+7MUxtOiluRi1T2GAzAfBgNVHSMEGDAWgBSY0fhuEOvPm+xgnxiQG6DrfQn9KzBk\n"
Thrillex13 3:5dceee1c49fc 73 "BggrBgEFBQcBAQRYMFYwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLnBraS5nb29n\n"
Thrillex13 3:5dceee1c49fc 74 "L2d0czFvMTArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nL2dzcjIvR1RTMU8x\n"
Thrillex13 3:5dceee1c49fc 75 "LmNydDArBgNVHREEJDAigg5maXJlYmFzZWlvLmNvbYIQKi5maXJlYmFzZWlvLmNv\n"
Thrillex13 3:5dceee1c49fc 76 "bTAhBgNVHSAEGjAYMAgGBmeBDAECAjAMBgorBgEEAdZ5AgUDMC8GA1UdHwQoMCYw\n"
Thrillex13 3:5dceee1c49fc 77 "JKAioCCGHmh0dHA6Ly9jcmwucGtpLmdvb2cvR1RTMU8xLmNybDCCAQIGCisGAQQB\n"
Thrillex13 3:5dceee1c49fc 78 "1nkCBAIEgfMEgfAA7gB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5Be\n"
Thrillex13 3:5dceee1c49fc 79 "AAABaXkuFzgAAAQDAEYwRAIgVssWhLEYItcpljMfJfkBhnxUrw32ik3C7IyBhkS6\n"
Thrillex13 3:5dceee1c49fc 80 "jQcCIAHzoq/0QsRXY8RITJ5z6pThPzJhiSeLhWb6v2MDs6+NAHUAXqdz+d9WwOe1\n"
Thrillex13 3:5dceee1c49fc 81 "Nkh90EngMnqRmgyEoRIShBh1loFxRVgAAAFpeS4XEQAABAMARjBEAiBgwY3jVuyU\n"
Thrillex13 3:5dceee1c49fc 82 "HTDrfXt7Hhq3AL9kD8hASq/qIXFvHAel1AIgV2DY0UI7PvVl2uHicvaL9BfUPQjP\n"
Thrillex13 3:5dceee1c49fc 83 "8/7b5W5jd6HEKbowDQYJKoZIhvcNAQELBQADggEBAAFG/f9zTyPTiYjjbPKpIC3T\n"
Thrillex13 3:5dceee1c49fc 84 "MMD8dWvny1DJpL2fQPMcpAkkduW7sFG8mLRh14mSBsWqAusj99nAKt6NJhxZewhp\n"
Thrillex13 3:5dceee1c49fc 85 "JKwbcawanW+w2DUzFr0FauVxNIs4xPxcgkCNAGeUj8ZI+cDcSaMOY4WxNrjOgbbI\n"
Thrillex13 3:5dceee1c49fc 86 "feOxHsCmIWxch6/vNVxh+54BZFCy723DL8Fo/tDRU73b+gxPJusJva4ABuXSqSFT\n"
Thrillex13 3:5dceee1c49fc 87 "EDaRGzdj8AKkoDmRkWLcEg/6a/2dfw8VV7fIAlqVxNQwZWZLtIsBGazxZ5xflrVz\n"
Thrillex13 3:5dceee1c49fc 88 "I5AHejNR7guDaWAimhkSOlG11W8BzPtdAo/xJ6JyI4K5kPGIXucniVRmQfmojxc=\n"
Thrillex13 3:5dceee1c49fc 89 "-----END CERTIFICATE-----\n"
Thrillex13 3:5dceee1c49fc 90 "-----BEGIN CERTIFICATE-----\n"
Thrillex13 3:5dceee1c49fc 91 "MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAw\n"
Thrillex13 3:5dceee1c49fc 92 "HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs\n"
Thrillex13 3:5dceee1c49fc 93 "U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy\n"
Thrillex13 3:5dceee1c49fc 94 "MTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg\n"
Thrillex13 3:5dceee1c49fc 95 "U2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUA\n"
Thrillex13 3:5dceee1c49fc 96 "A4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnv\n"
Thrillex13 3:5dceee1c49fc 97 "UA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRr\n"
Thrillex13 3:5dceee1c49fc 98 "mBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++Ac\n"
Thrillex13 3:5dceee1c49fc 99 "xGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmK\n"
Thrillex13 3:5dceee1c49fc 100 "FsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7X\n"
Thrillex13 3:5dceee1c49fc 101 "rJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNV\n"
Thrillex13 3:5dceee1c49fc 102 "HQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1Ud\n"
Thrillex13 3:5dceee1c49fc 103 "EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8G\n"
Thrillex13 3:5dceee1c49fc 104 "A1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAl\n"
Thrillex13 3:5dceee1c49fc 105 "BggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzAp\n"
Thrillex13 3:5dceee1c49fc 106 "MCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0g\n"
Thrillex13 3:5dceee1c49fc 107 "BDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9y\n"
Thrillex13 3:5dceee1c49fc 108 "ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7H\n"
Thrillex13 3:5dceee1c49fc 109 "TgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoN\n"
Thrillex13 3:5dceee1c49fc 110 "FvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrz\n"
Thrillex13 3:5dceee1c49fc 111 "mqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wW\n"
Thrillex13 3:5dceee1c49fc 112 "IRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZ\n"
Thrillex13 3:5dceee1c49fc 113 "USpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg==\n"
Thrillex13 3:5dceee1c49fc 114 "-----END CERTIFICATE-----\n";
Thrillex13 3:5dceee1c49fc 115
Thrillex13 3:5dceee1c49fc 116 //Port Definition
Thrillex13 3:5dceee1c49fc 117 DigitalOut led_rojo(LED_RED);
Thrillex13 3:5dceee1c49fc 118 DigitalOut led_verde(LED_GREEN);
Thrillex13 4:8fed3705384e 119 DigitalOut led_azul(LED_BLUE);
Thrillex13 4:8fed3705384e 120
Thrillex13 4:8fed3705384e 121 DigitalIn esp01_en(D4);
Thrillex13 4:8fed3705384e 122 DigitalIn esp01_rst(D5);
Thrillex13 3:5dceee1c49fc 123
Thrillex13 3:5dceee1c49fc 124 //Function Prototypes
Thrillex13 3:5dceee1c49fc 125 void wifiInit(void);
Thrillex13 3:5dceee1c49fc 126 bool isConnectedToWifi(void);
Thrillex13 3:5dceee1c49fc 127 void wifiConnect(void);
Thrillex13 3:5dceee1c49fc 128 void startServer(int port);
Thrillex13 3:5dceee1c49fc 129 int getTCPContent(char *espdata, char *command, char *status);
Thrillex13 3:5dceee1c49fc 130 void convertToCharArray(char *arr, unsigned long number);
Thrillex13 3:5dceee1c49fc 131
Thrillex13 3:5dceee1c49fc 132 void dump_response(HttpResponse* res);
Thrillex13 3:5dceee1c49fc 133 void http_demo(NetworkInterface *net);
Thrillex13 4:8fed3705384e 134 string getFirebaseCommand(NetworkInterface *network);
Thrillex13 4:8fed3705384e 135 void putFirebaseCommand(NetworkInterface *network, char comando, unsigned long numcode);
Thrillex13 4:8fed3705384e 136 void firebaseCheckTimeout(void);
Thrillex13 3:5dceee1c49fc 137
Thrillex13 3:5dceee1c49fc 138
Thrillex13 3:5dceee1c49fc 139
Thrillex13 3:5dceee1c49fc 140 #endif //MAIN_H