first versione of ThingSpeak IOT library (not tested)
thingspeak.cpp@0:92f5363c7790, 2014-04-04 (annotated)
- 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?
User | Revision | Line number | New 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 | } |