test

Dependencies:   BH1750 DHT DS1820 W5500Interface MQ135 NTPClient SENSOR WebSocketClient mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SENSOR.h"
00003 
00004 #include "HTTPClient.h"
00005 #include "ESP8266Interface.h"
00006 #include "TCPSocketConnection.h"
00007 #include "Websocket.h"
00008 //#include "NTPClient.h"
00009 
00010 #define SENSOR_ARRAY_SIZE 6
00011 
00012 SENSOR *sensor_array[SENSOR_ARRAY_SIZE];
00013 Serial pc(USBTX, USBRX); // tx, rx
00014 ESP8266Interface wifi(PA_11,PA_12,PB_12,"EE-mehrg7","MFPHOME0708",115200); // TX,RX,Reset,SSID,Password,Baud
00015 //NTPClient ntp;
00016 
00017 
00018 int main() {
00019     pc.baud(921600);
00020 
00021 #if defined(TARGET_NUCLEO_F401RE)
00022     SPI spi(PB_15, PB_14, PB_13); // mosi, miso, sclk
00023     EthernetInterface eth(&spi, PB_1, PB_2); // spi, cs, reset
00024     #warning "setup for F401RE"
00025 #endif
00026 
00027     //Create sensors
00028 //    pc.printf("Creating sensor 0\n\r");
00029     sensor_array[0] = new SENSOR( PB_9, PB_8,  NC, NC, PA_0, PA_9);  //I2C1,A0
00030 //    pc.printf("Creating sensor 1\n\r");
00031     sensor_array[1] = new SENSOR( PB_3, PB_10, NC, NC, PA_1, PC_7); //I2C2,A1
00032 //    pc.printf("Creating sensor 2\n\r");
00033     sensor_array[2] = new SENSOR( PB_4, PA_8, NC, NC, PA_4, PB_6);  //I2C3,A2
00034 //    pc.printf("Creating sensor 3\n\r");
00035     sensor_array[3] = new SENSOR( PA_3, NC, NC, NC, PB_0, PA_7);    //GPIO,A3
00036 //    pc.printf("Creating sensor 4\n\r");
00037     sensor_array[4] = new SENSOR( PA_2, NC, NC, NC, PC_1, PA_6);    //GPIO,A4
00038 //    pc.printf("Creating sensor 5\n\r");
00039     sensor_array[5] = new SENSOR( PA_10, NC, NC, NC, PC_0, PA_5);   //GPIO,A5
00040 
00041     //Statically connect sensors
00042 //    pc.printf("Connecting sensor 0\n\r");
00043 //    sensor_array[0]->detectSensor(BH1750_SENSOR);
00044     sensor_array[0]->detectSensor(NO_SENSOR);
00045 //    pc.printf("Connecting sensor 1\n\r");
00046     sensor_array[1]->detectSensor(NO_SENSOR);
00047 //    sensor_array[1]->detectSensor(NO_SENSOR);
00048 //    pc.printf("Connecting sensor 2\n\r");
00049     sensor_array[2]->detectSensor(NO_SENSOR);
00050 //    sensor_array[2]->detectSensor(NO_SENSOR);
00051 //    pc.printf("Connecting sensor 3\n\r");
00052 //    sensor_array[3]->detectSensor(MQ135_SENSOR);
00053     sensor_array[3]->detectSensor(NO_SENSOR);
00054 //    pc.printf("Connecting sensor 4\n\r");
00055     sensor_array[4]->detectSensor(NO_SENSOR);
00056 //    sensor_array[4]->detectSensor(ML8511_SENSOR);
00057 //    pc.printf("Connecting sensor 5\n\r");
00058 //    sensor_array[5]->detectSensor(DHT11_SENSOR);
00059     sensor_array[5]->detectSensor(NO_SENSOR);
00060 
00061     string sensor_reading;
00062     string sensor_logentry;
00063     sensorStatus sensor_status;
00064     sensorType sensor_type;
00065         
00066     pc.printf("pre init eth\r\n", eth.getMACAddress());
00067     eth.init("192.168.1.202", "255.255.255.0", "192.168.1.254"); //Use DHCP
00068     pc.printf("Initialized, MAC: %s\r\n", eth.getMACAddress());
00069     eth.connect();
00070     pc.printf("Connected, IP: %s, MASK: %s, GW: %s\r\n",eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway());
00071 
00072 /*
00073     if (ntp.setTime("0.uk.pool.ntp.org") == 0)
00074     {
00075         time_t ctTime;
00076         ctTime = time(NULL);
00077         printf("Time is set to : %s \r\n", ctime(&ctTime));
00078     }
00079     else
00080     {
00081         printf("Error getting time \r\n");
00082     }
00083     wait(2);
00084 */    
00085     
00086     pc.printf("trying to connect to ws://192.168.1.84:8000/\n\r");
00087     Websocket ws("ws://192.168.1.84:8000/");
00088 
00089     if(!ws.connect()) {
00090         pc.printf("Failed to connect to ws://192.168.1.84:8000/\n\r");
00091     } else {
00092         pc.printf("Starting reading sensor array\n\r");
00093 
00094         while(1) {
00095             for(int sensor_index = 0; sensor_index < SENSOR_ARRAY_SIZE; sensor_index++) {
00096                 pc.printf("Reading sensor %d\n\r", sensor_index);
00097                 sensor_type = sensor_array[sensor_index]->getSensorType();
00098                 pc.printf("Sensor type:   %d\n\r", sensor_type);
00099                 sensor_status = sensor_array[sensor_index]->readSensor(sensor_reading);
00100                 pc.printf("Sensor status: %d\n\r", sensor_status);
00101                 switch (sensor_status) {
00102                     case SENSOR_SUCCESS:
00103                         pc.printf("Reading sensor(%d) of type(%d), status(%d): %s\n\r", sensor_index, (int)sensor_type, (int)sensor_status, sensor_reading.c_str());
00104                         break;
00105                     case SENSOR_UNCONNECTED:
00106                         break;
00107                     default:
00108                         pc.printf("Problem reading (%d) of type(%d), status(%d): %s\n\r", sensor_index, (int)sensor_type, (int)sensor_status, sensor_reading.c_str());
00109                         break;
00110                         break;
00111                 }
00112             }
00113             pc.printf("send: %s\n\r", sensor_reading.c_str());
00114             char msg[1000];
00115             strcpy(msg, sensor_reading.c_str());
00116             ws.send(msg);    
00117             pc.printf("\n\r\n\r");
00118             wait(1);
00119         }
00120     }
00121 
00122     
00123     ws.close();
00124     
00125     while(true) {}
00126 
00127 }