-

Dependencies:   EthernetInterfaceWithHostname HygroClip2-LPC mbed-rtos mbed

Fork of TCPSocket_HelloWorld by mbed official

Committer:
wolfsberger
Date:
Mon May 02 14:09:38 2016 +0000
Revision:
17:85a4dfbe02cb
Parent:
11:59dcefdda506
Child:
19:d49dacbf64de
-

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
wolfsberger 17:85a4dfbe02cb 2 #include "rtos.h"
donatien 0:bb128f0e952f 3 #include "EthernetInterface.h"
wolfsberger 17:85a4dfbe02cb 4 #include "HygroClip2.h"
wolfsberger 17:85a4dfbe02cb 5
wolfsberger 17:85a4dfbe02cb 6 EthernetInterface eth;
wolfsberger 17:85a4dfbe02cb 7 DigitalOut led1(LED1);
wolfsberger 17:85a4dfbe02cb 8 DigitalOut led2(LED2);
wolfsberger 17:85a4dfbe02cb 9 DigitalOut led3(LED3);
wolfsberger 17:85a4dfbe02cb 10 DigitalOut led4(LED4);
wolfsberger 17:85a4dfbe02cb 11
wolfsberger 17:85a4dfbe02cb 12 typedef struct {
wolfsberger 17:85a4dfbe02cb 13 float temperature;
wolfsberger 17:85a4dfbe02cb 14 float humidity;
wolfsberger 17:85a4dfbe02cb 15 float dewpoint;
wolfsberger 17:85a4dfbe02cb 16 } SensorData;
wolfsberger 17:85a4dfbe02cb 17
wolfsberger 17:85a4dfbe02cb 18 Mail<SensorData, 32> sensorMailBox;
wolfsberger 17:85a4dfbe02cb 19
wolfsberger 17:85a4dfbe02cb 20 void network(void const * arg)
wolfsberger 17:85a4dfbe02cb 21 {
wolfsberger 17:85a4dfbe02cb 22 while(true)
wolfsberger 17:85a4dfbe02cb 23 {
wolfsberger 17:85a4dfbe02cb 24 osEvent event = sensorMailBox.get();
wolfsberger 17:85a4dfbe02cb 25 if (event.status == osEventMail)
wolfsberger 17:85a4dfbe02cb 26 {
wolfsberger 17:85a4dfbe02cb 27 led3 = 1;
wolfsberger 17:85a4dfbe02cb 28 SensorData * data = static_cast<SensorData*>(event.value.p);
wolfsberger 17:85a4dfbe02cb 29
wolfsberger 17:85a4dfbe02cb 30 TCPSocketConnection sock;
wolfsberger 17:85a4dfbe02cb 31 int connected = sock.connect("192.168.100.100", 1337);
wolfsberger 17:85a4dfbe02cb 32 if (connected == 0)
wolfsberger 17:85a4dfbe02cb 33 {
wolfsberger 17:85a4dfbe02cb 34 char transmissionBuffer[300];
wolfsberger 17:85a4dfbe02cb 35 int lenght = snprintf(transmissionBuffer, 200, "GET /relay?temperature=%.2f&humidity=%.2f&dewpoint=%.2f&id=1 HTTP/1.0\n\n", data->temperature, data->humidity,data->dewpoint);
wolfsberger 17:85a4dfbe02cb 36 printf(transmissionBuffer);
wolfsberger 17:85a4dfbe02cb 37 sock.send_all(transmissionBuffer, lenght);
wolfsberger 17:85a4dfbe02cb 38 }
wolfsberger 17:85a4dfbe02cb 39 sock.close();
wolfsberger 17:85a4dfbe02cb 40
wolfsberger 17:85a4dfbe02cb 41 sensorMailBox.free(data);
wolfsberger 17:85a4dfbe02cb 42 led3 = 0;
wolfsberger 17:85a4dfbe02cb 43 }
wolfsberger 17:85a4dfbe02cb 44 }
wolfsberger 17:85a4dfbe02cb 45 }
donatien 0:bb128f0e952f 46
emilmont 7:65188f4a8c25 47 int main() {
wolfsberger 17:85a4dfbe02cb 48 // Start ethernet module
wolfsberger 17:85a4dfbe02cb 49 int initOK = eth.init();
wolfsberger 17:85a4dfbe02cb 50 if (initOK != 0)
wolfsberger 17:85a4dfbe02cb 51 {
wolfsberger 17:85a4dfbe02cb 52 while(true);
wolfsberger 17:85a4dfbe02cb 53 }
wolfsberger 17:85a4dfbe02cb 54
donatien 0:bb128f0e952f 55
wolfsberger 17:85a4dfbe02cb 56 // Connect to network
wolfsberger 17:85a4dfbe02cb 57 int connectOK = eth.connect();
wolfsberger 17:85a4dfbe02cb 58 if (connectOK != 0)
wolfsberger 17:85a4dfbe02cb 59 {
wolfsberger 17:85a4dfbe02cb 60 while(true);
wolfsberger 17:85a4dfbe02cb 61 }
wolfsberger 17:85a4dfbe02cb 62 led1 = 1;
donatien 0:bb128f0e952f 63
wolfsberger 17:85a4dfbe02cb 64 // Create and start ethernet task
wolfsberger 17:85a4dfbe02cb 65 Thread transmissionTask(network);
wolfsberger 17:85a4dfbe02cb 66 HygroClip2 sensor(p9,p10);
emilmont 7:65188f4a8c25 67
wolfsberger 17:85a4dfbe02cb 68 while(!sensor.isDataValid())
wolfsberger 17:85a4dfbe02cb 69 {
wolfsberger 17:85a4dfbe02cb 70 sensor.update();
wolfsberger 17:85a4dfbe02cb 71 Thread::wait(500);
emilmont 7:65188f4a8c25 72 }
wolfsberger 17:85a4dfbe02cb 73 led2 = 1;
donatien 0:bb128f0e952f 74
wolfsberger 17:85a4dfbe02cb 75 while(true)
wolfsberger 17:85a4dfbe02cb 76 {
wolfsberger 17:85a4dfbe02cb 77 led4 = 1;
wolfsberger 17:85a4dfbe02cb 78 if (sensor.isDataValid())
wolfsberger 17:85a4dfbe02cb 79 {
wolfsberger 17:85a4dfbe02cb 80 SensorData * data = sensorMailBox.alloc();
wolfsberger 17:85a4dfbe02cb 81 data->temperature = sensor.getTemperature();
wolfsberger 17:85a4dfbe02cb 82 data->humidity = sensor.getHumidity();
wolfsberger 17:85a4dfbe02cb 83 data->dewpoint = sensor.getDewPoint();
wolfsberger 17:85a4dfbe02cb 84 sensorMailBox.put(data);
wolfsberger 17:85a4dfbe02cb 85 }
wolfsberger 17:85a4dfbe02cb 86 sensor.update();
wolfsberger 17:85a4dfbe02cb 87 Thread::wait(50);
wolfsberger 17:85a4dfbe02cb 88 led4 = 0;
wolfsberger 17:85a4dfbe02cb 89 Thread::wait(9950);
wolfsberger 17:85a4dfbe02cb 90 }
donatien 0:bb128f0e952f 91 }