Gateway con agregar controles mediante firebase
Dependencies: mbed mbed-http ESP01 Pulse RFDecoder
Revision 3:5dceee1c49fc, committed 2019-06-11
- Comitter:
- Thrillex13
- Date:
- Tue Jun 11 00:24:59 2019 +0000
- Parent:
- 2:bc3973471585
- Child:
- 4:8fed3705384e
- Commit message:
- Se implemento y probo Registro de Controles y Heartbeat
Changed in this revision
--- a/ESP01.lib Sat May 25 18:08:19 2019 +0000 +++ b/ESP01.lib Tue Jun 11 00:24:59 2019 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/users/Wosser1sProductions/code/ESP8266/#54b89962c798 +https://os.mbed.com/users/Wosser1sProductions/code/ESP8266/#8c6f56470ba7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Pulse.lib Tue Jun 11 00:24:59 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/NickRyder/code/Pulse/#fb79a4637a64
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RFDecoder.lib Tue Jun 11 00:24:59 2019 +0000 @@ -0,0 +1,1 @@ +RFDecoder#adf26c4f20cd
--- a/main.cpp Sat May 25 18:08:19 2019 +0000
+++ b/main.cpp Tue Jun 11 00:24:59 2019 +0000
@@ -1,99 +1,252 @@
-#include "mbed.h"
-#include <string>
-#include "ESP01.h"
-#include "https_request.h"
-#include "mbed_trace.h"
-#include "TCPSocket.h"
-#include "ESP8266Interface.h"
-
+#include "main.h"
+
// Objects
Serial pc(USBTX, USBRX);
ESP01 wifi(PTC17, PTC16, 115200); //Con este objeto implementamos los metodos que requieren comandos AT del modulo de WIFI
-//ESP8266Interface net(PTC17, PTC16); //Con este objeto implementamos todas las funciones de red para la creacion de Sockets
-
-DigitalOut led_rojo(LED_RED);
-DigitalOut led_verde(LED_GREEN);
-DigitalOut led_azul(LED_BLUE);
-
-#define ON 0;
-#define OFF 1;
+//ESP8266Interface net(PTC17, PTC16); //Con este objeto implementamos todas las funciones de red para la creacion de Sockets
+RFDecoder decoder = RFDecoder(D2,D3); //tx rx
// Global variables
-char snd[255], rcv[1000]; // Strings for sending and receiving commands / data / replies
+char send[250]; // Strings for sending and receiving commands / data send / data receive / command received / status received
+char recv[250];
+char command[TCPCOMMSBYTESMAX];
+char status[TCPSTATSBYTESMAX];
+char controlcode[8];
+
+int main()
+{
+ //Inicializacion de los Perifericos
+ led_azul = OFF;
+ led_rojo = OFF;
+ led_verde = OFF;
+ pc.baud(115200);
-void wifiInit(void);
-bool isConnectedToWifi(void);
-void wifiConnect(void);
+
+ //Inicializacion y Conexion al WiFi
+ wifiInit();
+ //wifi.Quit();
+ wifiConnect();
-void http_demo(NetworkInterface *net);
+ //ESP8266Interface *net = new ESP8266Interface(); //Con este objeto implementamos todas las funciones de red para la creacion de Sockets para HTTPS
+ //http_demo(net);
+ //delete net; //Necesario destruir el objeto cuando ya no se use para desocupar la interface de wifi.
+
+
+ //Iniciamos el servidor
+ startServer(SERVER_PORT);
+
-/* List of trusted root CA certificates
- * currently two: Amazon, the CA for os.mbed.com and Let's Encrypt, the CA for httpbin.org
- *
- * To add more root certificates, just concatenate them.
- */
-const char SSL_CA_PEM[] =
- "-----BEGIN CERTIFICATE-----\n"
- "MIIFmzCCBIOgAwIBAgIRAJRuZHok8dQjAQAAAAApJGwwDQYJKoZIhvcNAQELBQAw\n"
- "QjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczET\n"
- "MBEGA1UEAxMKR1RTIENBIDFPMTAeFw0xOTAzMTMyMTMwNTdaFw0yMDAzMTEyMTMw\n"
- "NTdaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\n"
- "Ew1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgTExDMRcwFQYDVQQDEw5m\n"
- "aXJlYmFzZWlvLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkd\n"
- "/jeM+PrwIYmM6IE28iN7CjKnBWy+tqNrs5z2AJwM5iLgtgcbc+THuXGElTN7zAWB\n"
- "SKWv+ezAGe5NiTEEUiWgX1z1VFDj85xpz+Cysn/Oi8MtoN6h8yCmYPtXv8YPInw0\n"
- "JLkSM5e2uuWVwc/tR1Fh+awpiYQFqGm6DvMq6yAYB/nuL3Gyc4XFgRrxje+VQ+g3\n"
- "oWE+9NVfqu4smFCutSIGlEdRhGdr/m2u+sc+dnBZNoVOqwSyyFyjpAZvMMvuE5Ip\n"
- "3ovfA1tq57nl9eQw8fcKsdXOeeXYHc1KBUUC7Xb8F/1+upVML8a5GMULpYkClLXt\n"
- "OKRRfCJa53YynILJdPkCAwEAAaOCAmQwggJgMA4GA1UdDwEB/wQEAwIFoDATBgNV\n"
- "HSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS03YhV70g6\n"
- "+7MUxtOiluRi1T2GAzAfBgNVHSMEGDAWgBSY0fhuEOvPm+xgnxiQG6DrfQn9KzBk\n"
- "BggrBgEFBQcBAQRYMFYwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLnBraS5nb29n\n"
- "L2d0czFvMTArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nL2dzcjIvR1RTMU8x\n"
- "LmNydDArBgNVHREEJDAigg5maXJlYmFzZWlvLmNvbYIQKi5maXJlYmFzZWlvLmNv\n"
- "bTAhBgNVHSAEGjAYMAgGBmeBDAECAjAMBgorBgEEAdZ5AgUDMC8GA1UdHwQoMCYw\n"
- "JKAioCCGHmh0dHA6Ly9jcmwucGtpLmdvb2cvR1RTMU8xLmNybDCCAQIGCisGAQQB\n"
- "1nkCBAIEgfMEgfAA7gB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5Be\n"
- "AAABaXkuFzgAAAQDAEYwRAIgVssWhLEYItcpljMfJfkBhnxUrw32ik3C7IyBhkS6\n"
- "jQcCIAHzoq/0QsRXY8RITJ5z6pThPzJhiSeLhWb6v2MDs6+NAHUAXqdz+d9WwOe1\n"
- "Nkh90EngMnqRmgyEoRIShBh1loFxRVgAAAFpeS4XEQAABAMARjBEAiBgwY3jVuyU\n"
- "HTDrfXt7Hhq3AL9kD8hASq/qIXFvHAel1AIgV2DY0UI7PvVl2uHicvaL9BfUPQjP\n"
- "8/7b5W5jd6HEKbowDQYJKoZIhvcNAQELBQADggEBAAFG/f9zTyPTiYjjbPKpIC3T\n"
- "MMD8dWvny1DJpL2fQPMcpAkkduW7sFG8mLRh14mSBsWqAusj99nAKt6NJhxZewhp\n"
- "JKwbcawanW+w2DUzFr0FauVxNIs4xPxcgkCNAGeUj8ZI+cDcSaMOY4WxNrjOgbbI\n"
- "feOxHsCmIWxch6/vNVxh+54BZFCy723DL8Fo/tDRU73b+gxPJusJva4ABuXSqSFT\n"
- "EDaRGzdj8AKkoDmRkWLcEg/6a/2dfw8VV7fIAlqVxNQwZWZLtIsBGazxZ5xflrVz\n"
- "I5AHejNR7guDaWAimhkSOlG11W8BzPtdAo/xJ6JyI4K5kPGIXucniVRmQfmojxc=\n"
- "-----END CERTIFICATE-----\n"
- "-----BEGIN CERTIFICATE-----\n"
- "MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAw\n"
- "HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs\n"
- "U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy\n"
- "MTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg\n"
- "U2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUA\n"
- "A4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnv\n"
- "UA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRr\n"
- "mBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++Ac\n"
- "xGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmK\n"
- "FsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7X\n"
- "rJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNV\n"
- "HQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1Ud\n"
- "EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8G\n"
- "A1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAl\n"
- "BggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzAp\n"
- "MCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0g\n"
- "BDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9y\n"
- "ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7H\n"
- "TgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoN\n"
- "FvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrz\n"
- "mqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wW\n"
- "IRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZ\n"
- "USpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg==\n"
- "-----END CERTIFICATE-----\n";
-
+ while(1) {
+ //Revisamos si hay un dato por TCP disponible
+ if(wifi.TCPDataAvailable(recv)) {
+ pc.printf("%s", recv);
+ int socket = getTCPContent(recv,command,status);
+
+ //Comando para registrar control
+ if(command[0] == NEW_CONTROL_REGISTER) {
+ Timer t;
+ t.start();
+ LEDAMARILLO_ON;
+ while(t.read_ms() < 30000) {
+ if(decoder.available()) {
+ unsigned long numcode = decoder.getCode();
+ pc.printf("Codigo Recibido %x \n\r", numcode);
+
+ convertToCharArray(&controlcode[0],numcode);
+
+ send[0] = CONTROL_REGISTER_INFO;
+ send[1] = controlcode[4];
+ send[2] = controlcode[5];
+ send[3] = controlcode[6];
+ wifi.SendTCPData(socket,TCPCOMMSBYTESMAX,send);
+ wifi.SendTCPData(socket,TCPCOMMSBYTESMAX,send);
+ break;
+ }
+ }
+
+ LEDVERDE_ON;
+ command[0] = 0x00;
+ }
+
+ //Evaluar otros comandos
+ if(command[0] == HEARBEAT_REQUEST) {
+ send[0] = HEARBEAT_RESPONSE;
+ wifi.SendTCPData(socket,TCPCOMMSBYTESMAX,send);
+ wifi.SendTCPData(socket,TCPCOMMSBYTESMAX,send);
+ command[0] = 0x00;
+ }
+
+ }
+
+ }
+}
+
+void wifiInit(void)
+{
+ pc.printf("Gateway Sistema de Control de Cotos\r\n");
+ pc.printf("Resetting WiFi\r\n");
+ wifi.Reset();
+ wait(2);
+ wifi.DisableEcho();
+ pc.printf("Set mode to Station\r\n");
+ wifi.SetMode(STATION);
+ wifi.RcvReply(recv, 1000);
+ pc.printf("%s", recv);
+ wait(2);
+ pc.printf("Configure for multiple sockets\r\n");
+ wifi.SetMultiple();
+ wifi.RcvReply(recv, 1000);
+ pc.printf("%s", recv);
+ wait(2);
+ pc.printf("Enable DHCP\r\n");
+ wifi.EnableDHCP();
+ wifi.RcvReply(recv, 1000);
+ pc.printf("%s", recv);
+ wait(2);
+}
+
+void wifiConnect(void)
+{
+ Timer t;
+ if(isConnectedToWifi()) {
+ pc.printf("Gateway is already connected to wifi with the following IP address\r\n");
+ wifi.GetIP(recv);
+ pc.printf("%s", recv);
+ led_azul = OFF;
+ led_verde = ON;
+ wait(2);
+ } else {
+ pc.printf("Starting Smart Config\r\n");
+ led_azul = ON;
+ wifi.StartSmartConfig();
+ wifi.RcvReply(recv, 15000);
+ pc.printf("%s", recv);
+ wait(5);
+ t.start();
+ while(!isConnectedToWifi()) {
+ //Timeout para hacer la conexion
+ /*
+ if(t.read_ms() > 30000) {
+ led_azul = OFF;
+ led_rojo = ON;
+ pc.printf("No se pudo conectar al Wifi\r\n");
+ while(1);
+ break;
+ }
+ */
+ }
+ }
+}
-void dump_response(HttpResponse* res) {
+bool isConnectedToWifi(void)
+{
+ bool status;
+ wifi.GetConnStatusCode(recv);
+ //pc.printf("%s", recv);
+ if(strcmp(recv,"STATUS:2\r")==0) {
+ led_azul = OFF;
+ led_rojo = OFF;
+ led_verde = ON;
+ status=true;
+ } else {
+ status=false;
+ }
+ return status;
+
+}
+
+void startServer(int port)
+{
+ pc.printf("Iniciando servidor en el puerto %d\r\n",port);
+ wifi.StartServerMode(port);
+ wifi.RcvReply(recv, 1000);
+ pc.printf("%s", recv);
+ //wait(2);
+}
+
+int getTCPContent(char* espdata, char* command, char* status)
+{
+ char i=0;
+ char offset=0;
+ char socket=0;
+
+ if((espdata[2]=='+') && (espdata[3]=='I') && (espdata[4]=='P') && (espdata[5]=='D')) {
+ //Obtenemos en socket de conexion
+ socket = espdata[7]-'0';
+ //Buscamos el caracter : para de ahi iniciar el mensaje
+ for(i=0; i<250; i++) {
+ if(espdata[i]==':') {
+ offset = i+1;
+ break;
+ }
+ }
+
+ for(i=0; (i<TCPCOMMSBYTESMAX); i++) {
+ command[i] = espdata[i+offset];
+ }
+
+ command[TCPCOMMSBYTESMAX] = '\0';
+
+ status[0] = COMMANDREC;
+ }
+
+ return socket;
+}
+
+void convertToCharArray(char *arr, unsigned long number)
+{
+ int i = 0;
+
+ for (i = 0; i < 8; ++i) {
+ arr[i] = (char)((((unsigned long) number) >> (56 - (8*i))) & 0xFFu);
+ }
+}
+
+
+void http_demo(NetworkInterface *network)
+{
+ TLSSocket* socket = new TLSSocket();
+
+ nsapi_error_t r;
+ // make sure to check the return values for the calls below (should return NSAPI_ERROR_OK)
+ r = socket->open(network);
+ r = socket->set_root_ca_cert(SSL_CA_PEM);
+ r = socket->connect("https://cotoceiba.firebaseio.com", 443);
+
+ printf("\n----- HTTPS GET request -----\n");
+
+ HttpsRequest* get_req = new HttpsRequest(socket, HTTP_GET, "https://cotoceiba.firebaseio.com/Condominos/94.json?auth=ZpXLLURU9KWmW5t1kzBYD2IuBE0V7wdv5vXwDgsH");
+
+ HttpResponse* get_res = get_req->send();
+ if (!get_res) {
+ printf("HttpRequest failed (error code %d)\n", get_req->get_error());
+ //return 1;
+ }
+ printf("\n----- HTTPS GET response -----\n");
+ dump_response(get_res);
+ delete get_req;
+
+ printf("\n----- HTTPS POST request -----\n");
+
+ HttpsRequest* post_req = new HttpsRequest(socket, HTTP_POST, "https://cotoceiba.firebaseio.com/Condominos/52.json?auth=ZpXLLURU9KWmW5t1kzBYD2IuBE0V7wdv5vXwDgsH");
+ post_req->set_header("Content-Type", "application/json");
+
+ const char body[] = "{\"nombre\":\"Posteado por Wifi Perros\",\"numcasa\":\"64\"}";
+
+ HttpResponse* post_res = post_req->send(body, strlen(body));
+ if (!post_res) {
+ printf("HttpRequest failed (error code %d)\n", post_req->get_error());
+ //return 1;
+ }
+
+ printf("\n----- HTTPS POST response -----\n");
+ dump_response(post_res);
+ delete post_req;
+}
+
+void dump_response(HttpResponse* res)
+{
printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
printf("Headers:\n");
@@ -101,143 +254,4 @@
printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
}
printf("\nBody (%lu bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-}
-
-int main() {
- led_azul = OFF;
- led_rojo = OFF;
- led_verde = OFF;
-
- pc.baud(115200);
- wifi.Quit();
- wifiInit();
- wifiConnect();
-
-
-
- //NextToDo: Crear un servidor y a la vez hacer get y post
-
- ESP8266Interface net(PTC17, PTC16); //Con este objeto implementamos todas las funciones de red para la creacion de Sockets
-
- http_demo(&net);
-
- wifi.StartServerMode(333);
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s", rcv);
- wait(20);
-
- http_demo(&net);
-
-
-
-
-
- while(1);
-}
-
-void wifiInit(void){
- pc.printf("Gateway Sistema de Control de Cotos\r\n");
- pc.printf("Resetting WiFi\r\n");
- wifi.Reset();
- wait(2);
- wifi.DisableEcho();
- pc.printf("Set mode to Station+AP\r\n");
- wifi.SetMode(BOTH);
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s", rcv);
- wait(2);
- pc.printf("Configure for multiple sockets\r\n");
- wifi.SetMultiple();
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s", rcv);
- wait(2);
- pc.printf("Enable DHCP\r\n");
- wifi.EnableDHCP();
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s", rcv);
- wait(2);
-}
-
-void wifiConnect(void){
- Timer t;
- if(isConnectedToWifi()){
- pc.printf("Gateway is already connected to wifi with the following IP address\r\n");
- wifi.GetIP(rcv);
- pc.printf("%s", rcv);
- led_azul = OFF;
- led_verde = ON;
- wait(2);
- }else{
- t.start();
- pc.printf("Starting Smart Config\r\n");
- led_azul = ON;
- wifi.StartSmartConfig();
- wifi.RcvReply(rcv, 15000);
- pc.printf("%s", rcv);
- wait(5);
- while(!isConnectedToWifi()){
- if(t.read_ms() > 30000) {
- led_azul = OFF;
- led_rojo = ON;
- pc.printf("No se pudo conectar al Wifi");
- break;
- }
- }
- }
-}
-
-bool isConnectedToWifi(void){
- bool status;
- wifi.GetConnStatusCode(rcv);
- //pc.printf("%s", rcv);
- if(strcmp(rcv,"STATUS:2\r")==0){
- led_azul = OFF;
- led_rojo = OFF;
- led_verde = ON;
- status=true;
- }else{
- status=false;
- }
- return status;
-
-}
-
-void http_demo(NetworkInterface *network){
- TLSSocket* socket = new TLSSocket();
-
- nsapi_error_t r;
- // make sure to check the return values for the calls below (should return NSAPI_ERROR_OK)
- r = socket->open(network);
- r = socket->set_root_ca_cert(SSL_CA_PEM);
- r = socket->connect("https://cotoceiba.firebaseio.com", 443);
-
- printf("\n----- HTTPS GET request -----\n");
-
- HttpsRequest* get_req = new HttpsRequest(socket, HTTP_GET, "https://cotoceiba.firebaseio.com/Condominos/94.json?auth=ZpXLLURU9KWmW5t1kzBYD2IuBE0V7wdv5vXwDgsH");
-
- HttpResponse* get_res = get_req->send();
- if (!get_res) {
- printf("HttpRequest failed (error code %d)\n", get_req->get_error());
- //return 1;
- }
- printf("\n----- HTTPS GET response -----\n");
- dump_response(get_res);
- delete get_req;
-
- printf("\n----- HTTPS POST request -----\n");
-
- HttpsRequest* post_req = new HttpsRequest(socket, HTTP_POST, "https://cotoceiba.firebaseio.com/Condominos/52.json?auth=ZpXLLURU9KWmW5t1kzBYD2IuBE0V7wdv5vXwDgsH");
- post_req->set_header("Content-Type", "application/json");
-
- const char body[] = "{\"nombre\":\"Posteado por Wifi Perros\",\"numcasa\":\"64\"}";
-
- HttpResponse* post_res = post_req->send(body, strlen(body));
- if (!post_res) {
- printf("HttpRequest failed (error code %d)\n", post_req->get_error());
- //return 1;
- }
-
- printf("\n----- HTTPS POST response -----\n");
- dump_response(post_res);
- delete post_req;
}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.h Tue Jun 11 00:24:59 2019 +0000 @@ -0,0 +1,120 @@ +#ifndef MAIN_H +#define MAIN_H + +#include "mbed.h" +#include <string> +#include "ESP01.h" +#include "https_request.h" +#include "ESP8266Interface.h" +#include "RFDecoder.h" + +#define ON 0 +#define OFF 1 + +#define LEDAMARILLO_ON led_azul = OFF; led_verde = ON; led_rojo = ON; +#define LEDVERDE_ON led_azul = OFF; led_verde = ON; led_rojo = OFF; + +#define LEDS_OFF led_azul = OFF; led_verde = OFF; led_rojo = OFF; + +#define SERVER_PORT 5558 +#define MAX_NUM_OF_CONNECTIONS 2 +#define TCPCOMMSBYTESMAX 10 +#define TCPSTATSBYTESMAX 5 +#define MAXTIMERXCONTROL 30000 //Tiempo maximo para recibir el codigo del control de 433MHz en milisegundos + +//Codigos de Status de TCP +#define COMMANDREC 0x01 //Se recibio un comando valido por TCP + +//Comandos de TCP +#define NEW_CONTROL_REGISTER 0x10 +#define CONTROL_REGISTER_INFO 0x11 + +//Otros TCP +#define HEARBEAT_REQUEST 0xFA +#define HEARBEAT_RESPONSE 0xFB + + + +/* List of trusted root CA certificates + * currently two: Amazon, the CA for os.mbed.com and Let's Encrypt, the CA for httpbin.org + * + * To add more root certificates, just concatenate them. + */ +const char SSL_CA_PEM[] = + "-----BEGIN CERTIFICATE-----\n" + "MIIFmzCCBIOgAwIBAgIRAJRuZHok8dQjAQAAAAApJGwwDQYJKoZIhvcNAQELBQAw\n" + "QjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczET\n" + "MBEGA1UEAxMKR1RTIENBIDFPMTAeFw0xOTAzMTMyMTMwNTdaFw0yMDAzMTEyMTMw\n" + "NTdaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\n" + "Ew1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgTExDMRcwFQYDVQQDEw5m\n" + "aXJlYmFzZWlvLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALkd\n" + "/jeM+PrwIYmM6IE28iN7CjKnBWy+tqNrs5z2AJwM5iLgtgcbc+THuXGElTN7zAWB\n" + "SKWv+ezAGe5NiTEEUiWgX1z1VFDj85xpz+Cysn/Oi8MtoN6h8yCmYPtXv8YPInw0\n" + "JLkSM5e2uuWVwc/tR1Fh+awpiYQFqGm6DvMq6yAYB/nuL3Gyc4XFgRrxje+VQ+g3\n" + "oWE+9NVfqu4smFCutSIGlEdRhGdr/m2u+sc+dnBZNoVOqwSyyFyjpAZvMMvuE5Ip\n" + "3ovfA1tq57nl9eQw8fcKsdXOeeXYHc1KBUUC7Xb8F/1+upVML8a5GMULpYkClLXt\n" + "OKRRfCJa53YynILJdPkCAwEAAaOCAmQwggJgMA4GA1UdDwEB/wQEAwIFoDATBgNV\n" + "HSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBS03YhV70g6\n" + "+7MUxtOiluRi1T2GAzAfBgNVHSMEGDAWgBSY0fhuEOvPm+xgnxiQG6DrfQn9KzBk\n" + "BggrBgEFBQcBAQRYMFYwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLnBraS5nb29n\n" + "L2d0czFvMTArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nL2dzcjIvR1RTMU8x\n" + "LmNydDArBgNVHREEJDAigg5maXJlYmFzZWlvLmNvbYIQKi5maXJlYmFzZWlvLmNv\n" + "bTAhBgNVHSAEGjAYMAgGBmeBDAECAjAMBgorBgEEAdZ5AgUDMC8GA1UdHwQoMCYw\n" + "JKAioCCGHmh0dHA6Ly9jcmwucGtpLmdvb2cvR1RTMU8xLmNybDCCAQIGCisGAQQB\n" + "1nkCBAIEgfMEgfAA7gB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5Be\n" + "AAABaXkuFzgAAAQDAEYwRAIgVssWhLEYItcpljMfJfkBhnxUrw32ik3C7IyBhkS6\n" + "jQcCIAHzoq/0QsRXY8RITJ5z6pThPzJhiSeLhWb6v2MDs6+NAHUAXqdz+d9WwOe1\n" + "Nkh90EngMnqRmgyEoRIShBh1loFxRVgAAAFpeS4XEQAABAMARjBEAiBgwY3jVuyU\n" + "HTDrfXt7Hhq3AL9kD8hASq/qIXFvHAel1AIgV2DY0UI7PvVl2uHicvaL9BfUPQjP\n" + "8/7b5W5jd6HEKbowDQYJKoZIhvcNAQELBQADggEBAAFG/f9zTyPTiYjjbPKpIC3T\n" + "MMD8dWvny1DJpL2fQPMcpAkkduW7sFG8mLRh14mSBsWqAusj99nAKt6NJhxZewhp\n" + "JKwbcawanW+w2DUzFr0FauVxNIs4xPxcgkCNAGeUj8ZI+cDcSaMOY4WxNrjOgbbI\n" + "feOxHsCmIWxch6/vNVxh+54BZFCy723DL8Fo/tDRU73b+gxPJusJva4ABuXSqSFT\n" + "EDaRGzdj8AKkoDmRkWLcEg/6a/2dfw8VV7fIAlqVxNQwZWZLtIsBGazxZ5xflrVz\n" + "I5AHejNR7guDaWAimhkSOlG11W8BzPtdAo/xJ6JyI4K5kPGIXucniVRmQfmojxc=\n" + "-----END CERTIFICATE-----\n" + "-----BEGIN CERTIFICATE-----\n" + "MIIESjCCAzKgAwIBAgINAeO0mqGNiqmBJWlQuDANBgkqhkiG9w0BAQsFADBMMSAw\n" + "HgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFs\n" + "U2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0xNzA2MTUwMDAwNDJaFw0yMTEy\n" + "MTUwMDAwNDJaMEIxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVHb29nbGUgVHJ1c3Qg\n" + "U2VydmljZXMxEzARBgNVBAMTCkdUUyBDQSAxTzEwggEiMA0GCSqGSIb3DQEBAQUA\n" + "A4IBDwAwggEKAoIBAQDQGM9F1IvN05zkQO9+tN1pIRvJzzyOTHW5DzEZhD2ePCnv\n" + "UA0Qk28FgICfKqC9EksC4T2fWBYk/jCfC3R3VZMdS/dN4ZKCEPZRrAzDsiKUDzRr\n" + "mBBJ5wudgzndIMYcLe/RGGFl5yODIKgjEv/SJH/UL+dEaltN11BmsK+eQmMF++Ac\n" + "xGNhr59qM/9il71I2dN8FGfcddwuaej4bXhp0LcQBbjxMcI7JP0aM3T4I+DsaxmK\n" + "FsbjzaTNC9uzpFlgOIg7rR25xoynUxv8vNmkq7zdPGHXkxWY7oG9j+JkRyBABk7X\n" + "rJfoucBZEqFJJSPk7XA0LKW0Y3z5oz2D0c1tJKwHAgMBAAGjggEzMIIBLzAOBgNV\n" + "HQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1Ud\n" + "EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFJjR+G4Q68+b7GCfGJAboOt9Cf0rMB8G\n" + "A1UdIwQYMBaAFJviB1dnHB7AagbeWbSaLd/cGYYuMDUGCCsGAQUFBwEBBCkwJzAl\n" + "BggrBgEFBQcwAYYZaHR0cDovL29jc3AucGtpLmdvb2cvZ3NyMjAyBgNVHR8EKzAp\n" + "MCegJaAjhiFodHRwOi8vY3JsLnBraS5nb29nL2dzcjIvZ3NyMi5jcmwwPwYDVR0g\n" + "BDgwNjA0BgZngQwBAgIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9wa2kuZ29vZy9y\n" + "ZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAGoA+Nnn78y6pRjd9XlQWNa7H\n" + "TgiZ/r3RNGkmUmYHPQq6Scti9PEajvwRT2iWTHQr02fesqOqBY2ETUwgZQ+lltoN\n" + "FvhsO9tvBCOIazpswWC9aJ9xju4tWDQH8NVU6YZZ/XteDSGU9YzJqPjY8q3MDxrz\n" + "mqepBCf5o8mw/wJ4a2G6xzUr6Fb6T8McDO22PLRL6u3M4Tzs3A2M1j6bykJYi8wW\n" + "IRdAvKLWZu/axBVbzYmqmwkm5zLSDW5nIAJbELCQCZwMH56t2Dvqofxs6BBcCFIZ\n" + "USpxu6x6td0V7SvJCCosirSmIatj/9dSSVDQibet8q/7UK4v4ZUN80atnZz1yg==\n" + "-----END CERTIFICATE-----\n"; + +//Port Definition +DigitalOut led_rojo(LED_RED); +DigitalOut led_verde(LED_GREEN); +DigitalOut led_azul(LED_BLUE); + +//Function Prototypes +void wifiInit(void); +bool isConnectedToWifi(void); +void wifiConnect(void); +void startServer(int port); +int getTCPContent(char *espdata, char *command, char *status); +void convertToCharArray(char *arr, unsigned long number); + +void dump_response(HttpResponse* res); +void http_demo(NetworkInterface *net); + + + +#endif //MAIN_H \ No newline at end of file
--- a/mbed-os.lib Sat May 25 18:08:19 2019 +0000 +++ b/mbed-os.lib Tue Jun 11 00:24:59 2019 +0000 @@ -1,1 +1,1 @@ -https://github.com/ARMmbed/mbed-os/#c966348d3f9ca80843be7cdc9b748f06ea73ced0 +https://github.com/ARMmbed/mbed-os/#88fb9b162d93a10e0d97f151c91bf2faf69e1b9e
--- a/mbed.bld Sat May 25 18:08:19 2019 +0000 +++ b/mbed.bld Tue Jun 11 00:24:59 2019 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/9bcdf88f62b0 \ No newline at end of file +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file