Gateway con agregar controles mediante firebase migracion a OS5

Dependencies:   mbed-http ESP01 Pulse RFDecoder

main.cpp

Committer:
Thrillex13
Date:
2019-05-12
Revision:
0:f4f503a32dca
Child:
1:cf6a75de25ce

File content as of revision 0:f4f503a32dca:

#include "mbed.h"
#include <string>
#include "ESP8266.h"
 
// Objects
Serial pc(USBTX, USBRX);
ESP8266 wifi(PTC17, PTC16, 115200);

DigitalOut led_rojo(LED_RED);
DigitalOut led_verde(LED_GREEN);
DigitalOut led_azul(LED_BLUE);

#define ON  0;
#define OFF  1;

// Global variables
char snd[255], rcv[1000]; // Strings for sending and receiving commands / data / replies

void wifiInit(void);
bool isConnectedToWifi(void);
void wifiConnect(void);
 
int main() {
    led_azul = OFF;
    led_rojo = OFF;
    led_verde = OFF;
    
    pc.baud(115200);
    wifi.Quit();
    wifiInit();
    wifiConnect();
    
    

    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\r\n");
    wifi.SetMode(1);
    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, 5000);
        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.GetConnStatus(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;
    
}