first versione of ThingSpeak IOT library (not tested)

Committer:
mbedakhela
Date:
Fri Apr 04 13:44:43 2014 +0000
Revision:
0:92f5363c7790
first version of thingspeak IOT library; not tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbedakhela 0:92f5363c7790 1 /* **************************************************************************
mbedakhela 0:92f5363c7790 2 *
mbedakhela 0:92f5363c7790 3 *
mbedakhela 0:92f5363c7790 4 *
mbedakhela 0:92f5363c7790 5 *
mbedakhela 0:92f5363c7790 6 * **************************************************************************
mbedakhela 0:92f5363c7790 7 * FileName: thingspeak.c
mbedakhela 0:92f5363c7790 8 * Dependencies:
mbedakhela 0:92f5363c7790 9 * Module:
mbedakhela 0:92f5363c7790 10 * Compiler:
mbedakhela 0:92f5363c7790 11 *
mbedakhela 0:92f5363c7790 12 * Author Rev. Date Comment
mbedakhela 0:92f5363c7790 13 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 14 * Stefano Lai 1.0 03/27/2014 First release
mbedakhela 0:92f5363c7790 15 *
mbedakhela 0:92f5363c7790 16 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 17 *
mbedakhela 0:92f5363c7790 18 * Software License Agreement
mbedakhela 0:92f5363c7790 19 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 20 * This is free software; you can redistribute it and/or modify it under
mbedakhela 0:92f5363c7790 21 * the terms of the GNU General Public License (version 2) as published by
mbedakhela 0:92f5363c7790 22 * the Free Software Foundation AND MODIFIED BY OpenPicus team.
mbedakhela 0:92f5363c7790 23 *
mbedakhela 0:92f5363c7790 24 * ***NOTE*** The exception to the GPL is included to allow you to distribute
mbedakhela 0:92f5363c7790 25 * a combined work that includes OpenPicus code without being obliged to
mbedakhela 0:92f5363c7790 26 * provide the source code for proprietary components outside of the OpenPicus
mbedakhela 0:92f5363c7790 27 * code.
mbedakhela 0:92f5363c7790 28 * OpenPicus software is distributed in the hope that it will be useful, but
mbedakhela 0:92f5363c7790 29 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
mbedakhela 0:92f5363c7790 30 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
mbedakhela 0:92f5363c7790 31 * more details.
mbedakhela 0:92f5363c7790 32 *
mbedakhela 0:92f5363c7790 33 *
mbedakhela 0:92f5363c7790 34 * Warranty
mbedakhela 0:92f5363c7790 35 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mbedakhela 0:92f5363c7790 36 * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
mbedakhela 0:92f5363c7790 37 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
mbedakhela 0:92f5363c7790 38 * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A
mbedakhela 0:92f5363c7790 39 * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
mbedakhela 0:92f5363c7790 40 * WE ARE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR
mbedakhela 0:92f5363c7790 41 * CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF
mbedakhela 0:92f5363c7790 42 * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS
mbedakhela 0:92f5363c7790 43 * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE
mbedakhela 0:92f5363c7790 44 * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER
mbedakhela 0:92f5363c7790 45 * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT
mbedakhela 0:92f5363c7790 46 * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE.
mbedakhela 0:92f5363c7790 47 *
mbedakhela 0:92f5363c7790 48 **************************************************************************/
mbedakhela 0:92f5363c7790 49 #include "mbed.h"
mbedakhela 0:92f5363c7790 50 #include "thingspeak.h"
mbedakhela 0:92f5363c7790 51 #include "TCPSocketConnection.h"
mbedakhela 0:92f5363c7790 52
mbedakhela 0:92f5363c7790 53 /****************************************************************************************
mbedakhela 0:92f5363c7790 54 * --- Global Parameters --- *
mbedakhela 0:92f5363c7790 55 ***************************************************************************************/
mbedakhela 0:92f5363c7790 56
mbedakhela 0:92f5363c7790 57 //static TCP_SOCKET Socket;
mbedakhela 0:92f5363c7790 58 //TCPSocketConnection ThingSock;
mbedakhela 0:92f5363c7790 59
mbedakhela 0:92f5363c7790 60
mbedakhela 0:92f5363c7790 61
mbedakhela 0:92f5363c7790 62
mbedakhela 0:92f5363c7790 63 static int i;
mbedakhela 0:92f5363c7790 64 static BOOL flagTCP=FALSE;
mbedakhela 0:92f5363c7790 65 static BOOL flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 66 static int z = 0;
mbedakhela 0:92f5363c7790 67 static int error = 0;
mbedakhela 0:92f5363c7790 68
mbedakhela 0:92f5363c7790 69 /*-------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 70 | Function: WdataF(char* apikey, float value[], int nvalue) |
mbedakhela 0:92f5363c7790 71 | Description: Function to write float data in a specific ThingSpeak database. |
mbedakhela 0:92f5363c7790 72 | Returns: BYTE 0 - No error |
mbedakhela 0:92f5363c7790 73 | 1 - TCPClientOpen error |
mbedakhela 0:92f5363c7790 74 | Parameters: char* apikey - ThingSpeak write api key |
mbedakhela 0:92f5363c7790 75 | |
mbedakhela 0:92f5363c7790 76 | int* value - array with float data to send to ThingSpeak |
mbedakhela 0:92f5363c7790 77 | |
mbedakhela 0:92f5363c7790 78 | int nvalue - number of value elements |
mbedakhela 0:92f5363c7790 79 -------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 80
mbedakhela 0:92f5363c7790 81 int THINGSPEAK::wfTHINGSPEAK(char* apikey, float* value, int nvalue)
mbedakhela 0:92f5363c7790 82 {
mbedakhela 0:92f5363c7790 83 error = 0;
mbedakhela 0:92f5363c7790 84 char messageTS[nvalue*20];
mbedakhela 0:92f5363c7790 85 char bufferTS[20];
mbedakhela 0:92f5363c7790 86 TCPSocketConnection ThingSock;
mbedakhela 0:92f5363c7790 87 flagTCP=0;
mbedakhela 0:92f5363c7790 88
mbedakhela 0:92f5363c7790 89 for(i=0; i<nvalue;i++)
mbedakhela 0:92f5363c7790 90 {
mbedakhela 0:92f5363c7790 91 if(i==0)
mbedakhela 0:92f5363c7790 92 {
mbedakhela 0:92f5363c7790 93 sprintf(messageTS,"field%d=%2.1f", i+1, (double)value[i]);
mbedakhela 0:92f5363c7790 94 }
mbedakhela 0:92f5363c7790 95 else
mbedakhela 0:92f5363c7790 96 {
mbedakhela 0:92f5363c7790 97 sprintf(bufferTS,"&field%d=%2.1f", i+1, (double)value[i]);
mbedakhela 0:92f5363c7790 98 strcat(messageTS,bufferTS);
mbedakhela 0:92f5363c7790 99 }
mbedakhela 0:92f5363c7790 100
mbedakhela 0:92f5363c7790 101 }
mbedakhela 0:92f5363c7790 102
mbedakhela 0:92f5363c7790 103 char strPOST[195+(int)strlen(messageTS)];
mbedakhela 0:92f5363c7790 104 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, (int)strlen(messageTS), messageTS);
mbedakhela 0:92f5363c7790 105
mbedakhela 0:92f5363c7790 106 while(flagTCP==FALSE)
mbedakhela 0:92f5363c7790 107 {
mbedakhela 0:92f5363c7790 108 if(z==5)
mbedakhela 0:92f5363c7790 109 {
mbedakhela 0:92f5363c7790 110 z=0;
mbedakhela 0:92f5363c7790 111 flagTCP=TRUE;
mbedakhela 0:92f5363c7790 112 error=1;
mbedakhela 0:92f5363c7790 113 }
mbedakhela 0:92f5363c7790 114 else
mbedakhela 0:92f5363c7790 115 {
mbedakhela 0:92f5363c7790 116 //Socket=TCPClientOpen ( IPThingSpeak, "80");
mbedakhela 0:92f5363c7790 117 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 118 //flagTCP=TCPisConn(Socket);
mbedakhela 0:92f5363c7790 119 //flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 120 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 121 //z++;
mbedakhela 0:92f5363c7790 122 ThingSock.connect(IPThingSpeak, 80);
mbedakhela 0:92f5363c7790 123 //ThingSock.connect(IPThingSpeak, 80);
mbedakhela 0:92f5363c7790 124 flagTCP=ThingSock.is_connected();
mbedakhela 0:92f5363c7790 125 flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 126 z++;
mbedakhela 0:92f5363c7790 127 }
mbedakhela 0:92f5363c7790 128 }
mbedakhela 0:92f5363c7790 129
mbedakhela 0:92f5363c7790 130 if(flagTCPisCON==TRUE)
mbedakhela 0:92f5363c7790 131 {
mbedakhela 0:92f5363c7790 132 //TCPWrite ( Socket, strPOST, (int)strlen(strPOST) );
mbedakhela 0:92f5363c7790 133 //vTaskDelay(200);
mbedakhela 0:92f5363c7790 134 //TCPClientClose ( Socket );
mbedakhela 0:92f5363c7790 135 //flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 136
mbedakhela 0:92f5363c7790 137 ThingSock.send_all(strPOST, (int)strlen(strPOST));
mbedakhela 0:92f5363c7790 138 ThingSock.close();
mbedakhela 0:92f5363c7790 139 flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 140 }
mbedakhela 0:92f5363c7790 141
mbedakhela 0:92f5363c7790 142 return error;
mbedakhela 0:92f5363c7790 143 }
mbedakhela 0:92f5363c7790 144
mbedakhela 0:92f5363c7790 145 /*-------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 146 | Function: WdataI(char* apikey, int* value, int nvalue) |
mbedakhela 0:92f5363c7790 147 | Description: Function to write integer data in a specific ThingSpeak database. |
mbedakhela 0:92f5363c7790 148 | Returns: BYTE 0 - No error |
mbedakhela 0:92f5363c7790 149 | 1 - TCPClientOpen error |
mbedakhela 0:92f5363c7790 150 | Parameters: char* apikey - ThingSpeak write api key |
mbedakhela 0:92f5363c7790 151 | |
mbedakhela 0:92f5363c7790 152 | int* value - array with integer data to send to ThingSpeak |
mbedakhela 0:92f5363c7790 153 | |
mbedakhela 0:92f5363c7790 154 | int nvalue - number of value elements |
mbedakhela 0:92f5363c7790 155 -------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 156
mbedakhela 0:92f5363c7790 157 int THINGSPEAK::wiTHINGSPEAK(char* apikey, int* value, int nvalue)
mbedakhela 0:92f5363c7790 158 {
mbedakhela 0:92f5363c7790 159 error = 0;
mbedakhela 0:92f5363c7790 160 char messageTS[nvalue*20];
mbedakhela 0:92f5363c7790 161 char bufferTS[20];
mbedakhela 0:92f5363c7790 162 TCPSocketConnection ThingSock;
mbedakhela 0:92f5363c7790 163 flagTCP=0;
mbedakhela 0:92f5363c7790 164
mbedakhela 0:92f5363c7790 165 for(i=0; i<nvalue;i++)
mbedakhela 0:92f5363c7790 166 {
mbedakhela 0:92f5363c7790 167 if(i==0)
mbedakhela 0:92f5363c7790 168 {
mbedakhela 0:92f5363c7790 169 sprintf(messageTS,"field%d=%d", i+1, value[i]);
mbedakhela 0:92f5363c7790 170 }
mbedakhela 0:92f5363c7790 171 else
mbedakhela 0:92f5363c7790 172 {
mbedakhela 0:92f5363c7790 173 sprintf(bufferTS,"&field%d=%d", i+1, value[i]);
mbedakhela 0:92f5363c7790 174 strcat(messageTS,bufferTS);
mbedakhela 0:92f5363c7790 175 }
mbedakhela 0:92f5363c7790 176
mbedakhela 0:92f5363c7790 177 }
mbedakhela 0:92f5363c7790 178
mbedakhela 0:92f5363c7790 179 char strPOST[195+(int)strlen(messageTS)];
mbedakhela 0:92f5363c7790 180 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, (int)strlen(messageTS), messageTS);
mbedakhela 0:92f5363c7790 181
mbedakhela 0:92f5363c7790 182 while(flagTCP==FALSE)
mbedakhela 0:92f5363c7790 183 {
mbedakhela 0:92f5363c7790 184 if(z==5)
mbedakhela 0:92f5363c7790 185 {
mbedakhela 0:92f5363c7790 186 z=0;
mbedakhela 0:92f5363c7790 187 flagTCP=TRUE;
mbedakhela 0:92f5363c7790 188 error=1;
mbedakhela 0:92f5363c7790 189 }
mbedakhela 0:92f5363c7790 190 else
mbedakhela 0:92f5363c7790 191 {
mbedakhela 0:92f5363c7790 192 //Socket=TCPClientOpen ( IPThingSpeak, "80");
mbedakhela 0:92f5363c7790 193 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 194 //flagTCP=TCPisConn(Socket);
mbedakhela 0:92f5363c7790 195 //flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 196 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 197 //z++;
mbedakhela 0:92f5363c7790 198 ThingSock.connect(IPThingSpeak, 80);
mbedakhela 0:92f5363c7790 199 flagTCP=ThingSock.is_connected();
mbedakhela 0:92f5363c7790 200 flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 201 z++;
mbedakhela 0:92f5363c7790 202 }
mbedakhela 0:92f5363c7790 203 }
mbedakhela 0:92f5363c7790 204
mbedakhela 0:92f5363c7790 205 if(flagTCPisCON==TRUE)
mbedakhela 0:92f5363c7790 206 {
mbedakhela 0:92f5363c7790 207 //TCPWrite ( Socket, strPOST, (int)strlen(strPOST) );
mbedakhela 0:92f5363c7790 208 //vTaskDelay(200);
mbedakhela 0:92f5363c7790 209 //TCPClientClose ( Socket );
mbedakhela 0:92f5363c7790 210 //flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 211 ThingSock.send_all(strPOST, (int)strlen(strPOST));
mbedakhela 0:92f5363c7790 212 ThingSock.close();
mbedakhela 0:92f5363c7790 213 flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 214 }
mbedakhela 0:92f5363c7790 215
mbedakhela 0:92f5363c7790 216 return error;
mbedakhela 0:92f5363c7790 217 }
mbedakhela 0:92f5363c7790 218
mbedakhela 0:92f5363c7790 219 /*-------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 220 | Function: thingHTTP(char* apikey, char* data) |
mbedakhela 0:92f5363c7790 221 | Description: Function to use ThingHTTP APP. |
mbedakhela 0:92f5363c7790 222 | Returns: BYTE 0 - No error |
mbedakhela 0:92f5363c7790 223 | 1 - TCPClientOpen error |
mbedakhela 0:92f5363c7790 224 | 2 - ThingSpeak response timeout |
mbedakhela 0:92f5363c7790 225 | Parameters: char* apikey - ThingSpeak write api key |
mbedakhela 0:92f5363c7790 226 | |
mbedakhela 0:92f5363c7790 227 | char* data - pointer to the return data/string value from ThingSpeak|
mbedakhela 0:92f5363c7790 228 -------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 229
mbedakhela 0:92f5363c7790 230 int THINGSPEAK::thingHTTP(char* apikey, char* data)
mbedakhela 0:92f5363c7790 231 {
mbedakhela 0:92f5363c7790 232 error = 0;
mbedakhela 0:92f5363c7790 233 char strPOST[300];
mbedakhela 0:92f5363c7790 234 int size;
mbedakhela 0:92f5363c7790 235 int flag = 0;
mbedakhela 0:92f5363c7790 236 TCPSocketConnection ThingSock;
mbedakhela 0:92f5363c7790 237 i=0;
mbedakhela 0:92f5363c7790 238 flagTCP=0;
mbedakhela 0:92f5363c7790 239
mbedakhela 0:92f5363c7790 240 sprintf( strPOST, "POST /apps/thinghttp/send_request HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\napi_key=%s",8+(int)strlen(apikey), apikey);
mbedakhela 0:92f5363c7790 241
mbedakhela 0:92f5363c7790 242 while(flagTCP==FALSE)
mbedakhela 0:92f5363c7790 243 {
mbedakhela 0:92f5363c7790 244 if(z==5)
mbedakhela 0:92f5363c7790 245 {
mbedakhela 0:92f5363c7790 246 z=0;
mbedakhela 0:92f5363c7790 247 flagTCP=TRUE;
mbedakhela 0:92f5363c7790 248 error=1;
mbedakhela 0:92f5363c7790 249 }
mbedakhela 0:92f5363c7790 250 else
mbedakhela 0:92f5363c7790 251 {
mbedakhela 0:92f5363c7790 252 //Socket=TCPClientOpen ( IPThingSpeak, "80");
mbedakhela 0:92f5363c7790 253 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 254 //flagTCP=TCPisConn(Socket);
mbedakhela 0:92f5363c7790 255 //flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 256 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 257 //z++;
mbedakhela 0:92f5363c7790 258 ThingSock.connect(IPThingSpeak, 80);
mbedakhela 0:92f5363c7790 259 flagTCP=ThingSock.is_connected();
mbedakhela 0:92f5363c7790 260 flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 261 z++;
mbedakhela 0:92f5363c7790 262 }
mbedakhela 0:92f5363c7790 263 }
mbedakhela 0:92f5363c7790 264
mbedakhela 0:92f5363c7790 265 if(flagTCPisCON==TRUE)
mbedakhela 0:92f5363c7790 266 {
mbedakhela 0:92f5363c7790 267 //TCPWrite ( Socket, strPOST, (int)strlen(strPOST) );
mbedakhela 0:92f5363c7790 268 ThingSock.send_all(strPOST, (int)strlen(strPOST));
mbedakhela 0:92f5363c7790 269 while( flag==0 )
mbedakhela 0:92f5363c7790 270 {
mbedakhela 0:92f5363c7790 271 // size = TCPRxLen ( Socket );
mbedakhela 0:92f5363c7790 272
mbedakhela 0:92f5363c7790 273 if((int)size<=0)
mbedakhela 0:92f5363c7790 274 {
mbedakhela 0:92f5363c7790 275 i++;
mbedakhela 0:92f5363c7790 276 // vTaskDelay(5);
mbedakhela 0:92f5363c7790 277 if(i==100)
mbedakhela 0:92f5363c7790 278 {
mbedakhela 0:92f5363c7790 279 error=2;
mbedakhela 0:92f5363c7790 280 break;
mbedakhela 0:92f5363c7790 281 }
mbedakhela 0:92f5363c7790 282 }
mbedakhela 0:92f5363c7790 283 else
mbedakhela 0:92f5363c7790 284 flag = 1;
mbedakhela 0:92f5363c7790 285 }
mbedakhela 0:92f5363c7790 286 if(flag==1)
mbedakhela 0:92f5363c7790 287 {
mbedakhela 0:92f5363c7790 288 char bufferTS[(int)size];
mbedakhela 0:92f5363c7790 289
mbedakhela 0:92f5363c7790 290 //TCPRead ( Socket, bufferTS, (int)size );
mbedakhela 0:92f5363c7790 291
mbedakhela 0:92f5363c7790 292 //vTaskDelay(100);
mbedakhela 0:92f5363c7790 293 ThingSock.receive_all(bufferTS, (int)size);
mbedakhela 0:92f5363c7790 294
mbedakhela 0:92f5363c7790 295 strcpy(data,bufferTS);
mbedakhela 0:92f5363c7790 296 }
mbedakhela 0:92f5363c7790 297 //TCPClientClose ( Socket );
mbedakhela 0:92f5363c7790 298 ThingSock.close();
mbedakhela 0:92f5363c7790 299 flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 300 }
mbedakhela 0:92f5363c7790 301 return error;
mbedakhela 0:92f5363c7790 302 }
mbedakhela 0:92f5363c7790 303 /*-----------------------------------------------------------------------------------------
mbedakhela 0:92f5363c7790 304 | Function: thingTWEET(char* apikey, char* message) |
mbedakhela 0:92f5363c7790 305 | Description: Function to use ThingTWEET APP. |
mbedakhela 0:92f5363c7790 306 | Returns: BYTE 0 - No error |
mbedakhela 0:92f5363c7790 307 | 1 - TCPClientOpen error |
mbedakhela 0:92f5363c7790 308 | Parameters: char* apikey - ThingSpeak TWEET api key |
mbedakhela 0:92f5363c7790 309 | |
mbedakhela 0:92f5363c7790 310 | char* message - message to send on Twitter to change status, you can |
mbedakhela 0:92f5363c7790 311 | add some tag in this way: |
mbedakhela 0:92f5363c7790 312 | message&lat=(your latitude)&long=(your longitude) |
mbedakhela 0:92f5363c7790 313 | for available tags see this |
mbedakhela 0:92f5363c7790 314 | https://dev.twitter.com/docs/api/1/post/statuses/update |
mbedakhela 0:92f5363c7790 315 -----------------------------------------------------------------------------------------*/
mbedakhela 0:92f5363c7790 316
mbedakhela 0:92f5363c7790 317 int THINGSPEAK::thingTWEET(char* apikey, char* message)
mbedakhela 0:92f5363c7790 318 {
mbedakhela 0:92f5363c7790 319 error = 0;
mbedakhela 0:92f5363c7790 320 char strPOST[400];
mbedakhela 0:92f5363c7790 321 TCPSocketConnection ThingSock;
mbedakhela 0:92f5363c7790 322 flagTCP=0;
mbedakhela 0:92f5363c7790 323
mbedakhela 0:92f5363c7790 324 sprintf( strPOST, "POST /apps/thingtweet/1/statuses/update HTTP/1.1\r\nHost: api.thingspeak.com\r\nConnection: close\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\napi_key=%s&status=%s",8+(int)strlen(apikey)+(int)strlen(message), apikey, message);
mbedakhela 0:92f5363c7790 325
mbedakhela 0:92f5363c7790 326 while(flagTCP==FALSE)
mbedakhela 0:92f5363c7790 327 {
mbedakhela 0:92f5363c7790 328 if(z==5)
mbedakhela 0:92f5363c7790 329 {
mbedakhela 0:92f5363c7790 330 z=0;
mbedakhela 0:92f5363c7790 331 flagTCP=TRUE;
mbedakhela 0:92f5363c7790 332 error=1;
mbedakhela 0:92f5363c7790 333 }
mbedakhela 0:92f5363c7790 334 else
mbedakhela 0:92f5363c7790 335 {
mbedakhela 0:92f5363c7790 336 //Socket=TCPClientOpen ( IPThingSpeak, "80");
mbedakhela 0:92f5363c7790 337 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 338 //flagTCP=TCPisConn(Socket);
mbedakhela 0:92f5363c7790 339 //flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 340 //vTaskDelay(25);
mbedakhela 0:92f5363c7790 341 //z++;
mbedakhela 0:92f5363c7790 342 ThingSock.connect(IPThingSpeak, 80);
mbedakhela 0:92f5363c7790 343 flagTCP=ThingSock.is_connected();
mbedakhela 0:92f5363c7790 344 flagTCPisCON=flagTCP;
mbedakhela 0:92f5363c7790 345 z++;
mbedakhela 0:92f5363c7790 346 }
mbedakhela 0:92f5363c7790 347 }
mbedakhela 0:92f5363c7790 348
mbedakhela 0:92f5363c7790 349 if(flagTCPisCON==TRUE)
mbedakhela 0:92f5363c7790 350 {
mbedakhela 0:92f5363c7790 351 //TCPWrite ( Socket, strPOST, (int)strlen(strPOST) );
mbedakhela 0:92f5363c7790 352 //vTaskDelay(200);
mbedakhela 0:92f5363c7790 353 //TCPClientClose ( Socket );
mbedakhela 0:92f5363c7790 354 //flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 355 ThingSock.send_all(strPOST, (int)strlen(strPOST));
mbedakhela 0:92f5363c7790 356 ThingSock.close();
mbedakhela 0:92f5363c7790 357 flagTCPisCON=FALSE;
mbedakhela 0:92f5363c7790 358 }
mbedakhela 0:92f5363c7790 359
mbedakhela 0:92f5363c7790 360 return error;
mbedakhela 0:92f5363c7790 361 }