Simple IoT demo over Ethernet using the legacy network libraries

Dependencies:   EthernetNetIf mbed DNSResolver

Committer:
emilmont
Date:
Thu Feb 23 11:12:00 2012 +0000
Revision:
0:db53174490c3

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 0:db53174490c3 1 #include "mbed.h"
emilmont 0:db53174490c3 2 #include "Websocket.h"
emilmont 0:db53174490c3 3 #define MEAN_VALUE_MIC 32500
emilmont 0:db53174490c3 4
emilmont 0:db53174490c3 5 Serial pc(USBTX, USBRX);
emilmont 0:db53174490c3 6 Timer tmr;
emilmont 0:db53174490c3 7
emilmont 0:db53174490c3 8 Websocket ws("ws://sockets.mbed.org/ws/sensors/wo");
emilmont 0:db53174490c3 9
emilmont 0:db53174490c3 10 AnalogIn light_pin(p19);
emilmont 0:db53174490c3 11 AnalogIn mic_pin(p18);
emilmont 0:db53174490c3 12
emilmont 0:db53174490c3 13 DigitalOut led1(LED1);
emilmont 0:db53174490c3 14 DigitalOut led2(LED2);
emilmont 0:db53174490c3 15 DigitalOut led3(LED3);
emilmont 0:db53174490c3 16 DigitalOut led4(LED4);
emilmont 0:db53174490c3 17 void notify(int a, int b, int c) {
emilmont 0:db53174490c3 18 led1 = a;
emilmont 0:db53174490c3 19 led2 = b;
emilmont 0:db53174490c3 20 led3 = c;
emilmont 0:db53174490c3 21 }
emilmont 0:db53174490c3 22
emilmont 0:db53174490c3 23 int main() {
emilmont 0:db53174490c3 24 notify(1, 0, 0);
emilmont 0:db53174490c3 25
emilmont 0:db53174490c3 26 //unsigned short light;
emilmont 0:db53174490c3 27 char json_str[100];
emilmont 0:db53174490c3 28 int press;
emilmont 0:db53174490c3 29 double temp;
emilmont 0:db53174490c3 30 int light;
emilmont 0:db53174490c3 31 unsigned short mic_mean;
emilmont 0:db53174490c3 32 unsigned short mic = 0;
emilmont 0:db53174490c3 33
emilmont 0:db53174490c3 34 char recv[128];
emilmont 0:db53174490c3 35 while (1) {
emilmont 0:db53174490c3 36
emilmont 0:db53174490c3 37 while (!ws.connect()) {
emilmont 0:db53174490c3 38 pc.printf("cannot connect websocket, retrying in one second\r\n");
emilmont 0:db53174490c3 39 wait(1.0);
emilmont 0:db53174490c3 40 }
emilmont 0:db53174490c3 41 notify(0, 0, 1);
emilmont 0:db53174490c3 42
emilmont 0:db53174490c3 43 pc.printf("Connected\r\n");
emilmont 0:db53174490c3 44
emilmont 0:db53174490c3 45 tmr.start();
emilmont 0:db53174490c3 46 while (1) {
emilmont 0:db53174490c3 47
emilmont 0:db53174490c3 48 if (tmr.read() > 0.5) {
emilmont 0:db53174490c3 49
emilmont 0:db53174490c3 50 //pressure
emilmont 0:db53174490c3 51 //press = scp1000.readPressure();
emilmont 0:db53174490c3 52 press = 10;
emilmont 0:db53174490c3 53
emilmont 0:db53174490c3 54 //temperature
emilmont 0:db53174490c3 55 //temp = scp1000.readTemperature();
emilmont 0:db53174490c3 56 temp = 10.1;
emilmont 0:db53174490c3 57
emilmont 0:db53174490c3 58 //light
emilmont 0:db53174490c3 59 light = light_pin.read_u16()/480;
emilmont 0:db53174490c3 60
emilmont 0:db53174490c3 61 //microphone
emilmont 0:db53174490c3 62 mic_mean = 0;
emilmont 0:db53174490c3 63 for (double i = 0; i < 200; i++) {
emilmont 0:db53174490c3 64 mic = mic_pin.read_u16();
emilmont 0:db53174490c3 65 mic = (mic > MEAN_VALUE_MIC) ? mic : MEAN_VALUE_MIC + (MEAN_VALUE_MIC - mic);
emilmont 0:db53174490c3 66 mic_mean = (mic_mean*i + mic)/(i+1);
emilmont 0:db53174490c3 67 }
emilmont 0:db53174490c3 68 pc.putc('!');
emilmont 0:db53174490c3 69
emilmont 0:db53174490c3 70 sprintf(json_str, "{\"id\":\"eth_env\",\"p\":\"%d\",\"t\":\"%d\",\"l\":\"%d\",\"m\":\"%d\"}", (int)press, (int)temp, (int)(140 - light), mic_mean);
emilmont 0:db53174490c3 71 ws.send(json_str);
emilmont 0:db53174490c3 72
emilmont 0:db53174490c3 73 led4 = !led4;
emilmont 0:db53174490c3 74
emilmont 0:db53174490c3 75 if (ws.read(recv)) {
emilmont 0:db53174490c3 76 pc.printf(".");
emilmont 0:db53174490c3 77 pc.printf("recv: %s\r\n", recv);
emilmont 0:db53174490c3 78 }
emilmont 0:db53174490c3 79
emilmont 0:db53174490c3 80 tmr.start();
emilmont 0:db53174490c3 81 }
emilmont 0:db53174490c3 82
emilmont 0:db53174490c3 83 Net::poll();
emilmont 0:db53174490c3 84 }
emilmont 0:db53174490c3 85 }
emilmont 0:db53174490c3 86 }