Libery to interface thingspeak

Dependents:   Skanderborg1

Fork of ThingCloud by Skovbrynet

Committer:
gert_lauritsen
Date:
Wed Jun 22 15:58:19 2016 +0000
Revision:
0:ac8067fb9cee
Child:
1:6f2f82b98d1f
Working version of a thingspeak interface

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gert_lauritsen 0:ac8067fb9cee 1 #include "mbed.h"
gert_lauritsen 0:ac8067fb9cee 2 #include "thingspeak.h"
gert_lauritsen 0:ac8067fb9cee 3 #include "TCPSocketConnection.h"
gert_lauritsen 0:ac8067fb9cee 4
gert_lauritsen 0:ac8067fb9cee 5 /****************************************************************************************
gert_lauritsen 0:ac8067fb9cee 6 * --- Global Parameters --- *
gert_lauritsen 0:ac8067fb9cee 7 ***************************************************************************************/
gert_lauritsen 0:ac8067fb9cee 8
gert_lauritsen 0:ac8067fb9cee 9 int i;
gert_lauritsen 0:ac8067fb9cee 10 bool flagTCP=0;
gert_lauritsen 0:ac8067fb9cee 11 bool flagTCPisCON=0;
gert_lauritsen 0:ac8067fb9cee 12 int z = 0;
gert_lauritsen 0:ac8067fb9cee 13 int Error = 0;
gert_lauritsen 0:ac8067fb9cee 14
gert_lauritsen 0:ac8067fb9cee 15 THINGSPEAK::THINGSPEAK() {
gert_lauritsen 0:ac8067fb9cee 16 FieldNumber=1;
gert_lauritsen 0:ac8067fb9cee 17 p=&thingStr[0];
gert_lauritsen 0:ac8067fb9cee 18 }
gert_lauritsen 0:ac8067fb9cee 19
gert_lauritsen 0:ac8067fb9cee 20 void THINGSPEAK::AddFloat(float Value) {
gert_lauritsen 0:ac8067fb9cee 21 if (FieldNumber>1)
gert_lauritsen 0:ac8067fb9cee 22 p+=sprintf(p,"&field%d=%f",FieldNumber,Value);
gert_lauritsen 0:ac8067fb9cee 23 else
gert_lauritsen 0:ac8067fb9cee 24 p+=sprintf(p,"field1=%f",Value);
gert_lauritsen 0:ac8067fb9cee 25 FieldNumber++;
gert_lauritsen 0:ac8067fb9cee 26 }
gert_lauritsen 0:ac8067fb9cee 27
gert_lauritsen 0:ac8067fb9cee 28 void THINGSPEAK::AddInt(int Value) {
gert_lauritsen 0:ac8067fb9cee 29 if (FieldNumber>1)
gert_lauritsen 0:ac8067fb9cee 30 p+=sprintf(p,"&field%d=%f",FieldNumber,Value);
gert_lauritsen 0:ac8067fb9cee 31 else
gert_lauritsen 0:ac8067fb9cee 32 p+=sprintf(p,"field1=%f",Value);
gert_lauritsen 0:ac8067fb9cee 33 FieldNumber++;
gert_lauritsen 0:ac8067fb9cee 34 }
gert_lauritsen 0:ac8067fb9cee 35
gert_lauritsen 0:ac8067fb9cee 36 void THINGSPEAK::SendData(char* apikey) {
gert_lauritsen 0:ac8067fb9cee 37 ThingString(apikey,thingStr,strlen(thingStr));
gert_lauritsen 0:ac8067fb9cee 38 }
gert_lauritsen 0:ac8067fb9cee 39
gert_lauritsen 0:ac8067fb9cee 40 int THINGSPEAK::ThingString(char* apikey, char* data, int MessSize)
gert_lauritsen 0:ac8067fb9cee 41 {
gert_lauritsen 0:ac8067fb9cee 42 Error = 0;
gert_lauritsen 0:ac8067fb9cee 43 TCPSocketConnection ThingSock;
gert_lauritsen 0:ac8067fb9cee 44 flagTCP=0;
gert_lauritsen 0:ac8067fb9cee 45
gert_lauritsen 0:ac8067fb9cee 46 char strPOST[195+MessSize];
gert_lauritsen 0:ac8067fb9cee 47 sprintf( strPOST, "POST /update HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\nX-THINGSPEAKAPIKEY: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s", apikey, MessSize, data);
gert_lauritsen 0:ac8067fb9cee 48 //printf("%s\r\n",strPOST);
gert_lauritsen 0:ac8067fb9cee 49 while(flagTCP==FALSE)
gert_lauritsen 0:ac8067fb9cee 50 {
gert_lauritsen 0:ac8067fb9cee 51 if(z==5)
gert_lauritsen 0:ac8067fb9cee 52 {
gert_lauritsen 0:ac8067fb9cee 53 z=0;
gert_lauritsen 0:ac8067fb9cee 54 flagTCP=TRUE;
gert_lauritsen 0:ac8067fb9cee 55 Error=1;
gert_lauritsen 0:ac8067fb9cee 56 }
gert_lauritsen 0:ac8067fb9cee 57 else
gert_lauritsen 0:ac8067fb9cee 58 {
gert_lauritsen 0:ac8067fb9cee 59 ThingSock.connect(IPThingSpeak, 80);
gert_lauritsen 0:ac8067fb9cee 60 flagTCP=ThingSock.is_connected();
gert_lauritsen 0:ac8067fb9cee 61 flagTCPisCON=flagTCP;
gert_lauritsen 0:ac8067fb9cee 62 z++;
gert_lauritsen 0:ac8067fb9cee 63 }
gert_lauritsen 0:ac8067fb9cee 64 }
gert_lauritsen 0:ac8067fb9cee 65
gert_lauritsen 0:ac8067fb9cee 66 if(flagTCPisCON==TRUE)
gert_lauritsen 0:ac8067fb9cee 67 {
gert_lauritsen 0:ac8067fb9cee 68 ThingSock.send_all(strPOST, (int)strlen(strPOST));
gert_lauritsen 0:ac8067fb9cee 69 // Receive message from server
gert_lauritsen 0:ac8067fb9cee 70 char buf[256];
gert_lauritsen 0:ac8067fb9cee 71 int n = ThingSock.receive(buf, 256);
gert_lauritsen 0:ac8067fb9cee 72 buf[n] = '\0';
gert_lauritsen 0:ac8067fb9cee 73 // printf("Received message from server: '%s'\n", buf);
gert_lauritsen 0:ac8067fb9cee 74 ThingSock.close();
gert_lauritsen 0:ac8067fb9cee 75 flagTCPisCON=FALSE;
gert_lauritsen 0:ac8067fb9cee 76 }
gert_lauritsen 0:ac8067fb9cee 77 FieldNumber=1; //Ready for next time
gert_lauritsen 0:ac8067fb9cee 78 p=&thingStr[0];
gert_lauritsen 0:ac8067fb9cee 79
gert_lauritsen 0:ac8067fb9cee 80 return Error;
gert_lauritsen 0:ac8067fb9cee 81 }