Libery to interface thingspeak

Dependents:   Skanderborg1

Fork of ThingCloud by Skovbrynet

Revision:
0:ac8067fb9cee
Child:
1:6f2f82b98d1f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thingspeak.cpp	Wed Jun 22 15:58:19 2016 +0000
@@ -0,0 +1,81 @@
+#include "mbed.h"
+#include "thingspeak.h" 
+#include "TCPSocketConnection.h"
+
+/****************************************************************************************
+ *                              --- Global Parameters ---                               *
+ ***************************************************************************************/   
+
+int i;
+bool flagTCP=0;
+bool flagTCPisCON=0;
+int z = 0;
+int Error = 0;
+
+THINGSPEAK::THINGSPEAK() {
+  FieldNumber=1;
+  p=&thingStr[0];  
+}    
+
+void THINGSPEAK::AddFloat(float Value) {
+  if (FieldNumber>1)
+   p+=sprintf(p,"&field%d=%f",FieldNumber,Value); 
+  else  
+   p+=sprintf(p,"field1=%f",Value); 
+  FieldNumber++; 
+}
+
+void THINGSPEAK::AddInt(int Value) {
+  if (FieldNumber>1)
+   p+=sprintf(p,"&field%d=%f",FieldNumber,Value); 
+  else  
+   p+=sprintf(p,"field1=%f",Value); 
+  FieldNumber++; 
+}
+
+void THINGSPEAK::SendData(char* apikey) {
+ ThingString(apikey,thingStr,strlen(thingStr));   
+}    
+
+int THINGSPEAK::ThingString(char* apikey, char* data, int MessSize)
+{       
+    Error = 0;
+    TCPSocketConnection ThingSock;
+    flagTCP=0;
+
+    char strPOST[195+MessSize];
+    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);
+    //printf("%s\r\n",strPOST);
+    while(flagTCP==FALSE)
+    {
+        if(z==5)
+        {   
+            z=0;
+            flagTCP=TRUE;
+            Error=1;
+        }
+        else
+        {   
+            ThingSock.connect(IPThingSpeak, 80); 
+            flagTCP=ThingSock.is_connected();
+            flagTCPisCON=flagTCP;
+            z++;
+        }
+    }
+    
+    if(flagTCPisCON==TRUE)
+    {
+        ThingSock.send_all(strPOST, (int)strlen(strPOST)); 
+        // Receive message from server
+        char buf[256];
+        int n = ThingSock.receive(buf, 256);
+        buf[n] = '\0';
+//        printf("Received message from server: '%s'\n", buf);   
+        ThingSock.close(); 
+        flagTCPisCON=FALSE;
+    }
+    FieldNumber=1; //Ready for next time
+    p=&thingStr[0];  
+    
+    return Error;
+}