part of the preparation works for Ina-city Hackerthon
Fork of Wio_3G_example by
Diff: main.cpp
- Revision:
- 76:fe9dd61c5f5c
- Parent:
- 75:f93c0063755c
- Child:
- 77:0194cca4103b
--- a/main.cpp Fri Aug 10 09:07:14 2018 +0000
+++ b/main.cpp Wed Aug 22 05:27:25 2018 +0000
@@ -5,6 +5,11 @@
#include "PixelArray.h"
#include "Servo.h"
+#include <sstream>
+#include "easy-connect.h"
+#include "https_request.h"
+#include "ssl_ca_pem.h"
+
#if !defined(TARGET_WIO_3G)
#error Selected target is not supported.
#endif
@@ -45,6 +50,36 @@
}
+const char API_TOKEN[] = "tfa6Ud9FY760SfLLhHl3UBr0NFdVHEFLHvdjTsrW";
+const char URL[] = "https://devzfyjsa.cybozu.com/k/v1/record.json";
+
+int app_id = 1;
+
+// JSON simplicity parser
+char* j_paser( const char *buf , char *word , char *out )
+{
+ int i = 0;
+ char *p;
+ char _word[64] = "\"\0";
+
+ strcat(_word , word );
+ strcat(_word , "\"" );
+
+ p = strstr( (char*)buf , _word ) + 2 + strlen(_word);
+
+ while( (p[i] != ',')&&(p[i] != '\n')&&(p[i] != '"') )
+ {
+ out[i] = p[i];
+ i++;
+ }
+ out[i] = '\0';
+
+ return p;
+}
+
+
+
+
int main()
{
char buf[20];
@@ -59,7 +94,7 @@
// set up the colours we want to draw with
const int colorbuf[NUM_COLORS] = {0x000000, 0x2f0000,0x2f2f00,0x002f00,0x002f2f,0x00002f,0x2f002f, 0x2f2f2f};
- ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling
+ ::ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling
// for each of the colours (j) write out 10 of them
// the pixels are written at the colour*10, plus the colour position
@@ -71,6 +106,7 @@
pc.printf("hello, Mbed world\n");
+ /*
int cnt = 0;
int idx = 0;
@@ -92,4 +128,118 @@
wait(0.5);
}
+ */
+ NetworkInterface* network = NULL;
+
+ /*
+ pc.baud(115200);
+
+ lcd.cls();
+ lcd.locate(0,3);
+ lcd.printf("Network Connect..");
+ */
+
+ pc.printf("\r\n----- Start -----\r\n");
+
+ network = easy_connect(true); // If true, prints out connection details.
+ if (!network) {
+ //lcd.printf("NG");
+ pc.printf("\r\n----- Network Error -----\r\n");
+ return -1;
+ }
+
+ //lcd.printf("OK");
+ pc.printf("\r\n----- Network Connected -----\r\n");
+
+ wait(2.0);
+
+ while(1){
+ int id = 10;
+
+ /*
+ // ID select
+ lcd.cls();
+ lcd.locate(0,3);
+ lcd.printf("Please select id.");
+ while(fire == 0){
+ lcd.locate(0,14);
+ lcd.printf("id = ");
+ if( up == 1) id++;
+ if( down == 1) id--;
+ lcd.printf("%d ",id);
+ wait(0.2);
+ }
+
+ lcd.cls();
+ lcd.locate(0,3);
+ lcd.printf("It is polling with the selected id.");
+ */
+
+ // Set url
+ std::stringstream ss_url;
+ std::string s_url(URL);
+
+ ss_url << s_url << "?app=" << app_id << "&id=" << id;
+
+ string url = ss_url.str();
+
+ pc.printf("%s\r\n",url.c_str());
+
+ while(1){
+ pc.printf("\r\n----- HTTPS GET request -----\r\n");
+ HttpsRequest* get_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_GET, url.c_str());
+
+ get_req->set_header("X-Cybozu-API-Token", API_TOKEN);
+
+ HttpResponse* get_res = get_req->send();
+
+ pc.printf("\n----- HTTPS GET response [%d]-----\n",get_res->get_status_code());
+
+ if(get_res->get_status_code() == 200){
+ pc.printf("\n----- HTTPS GET response 200 -----\n");
+ const char* body = get_res->get_body_as_string().c_str();
+
+ pc.printf("%s\r\n",body);
+
+ // Response JSON parse
+ char value[256];
+
+ char* p = j_paser(body,"日付",value);
+ j_paser(p,"value",value);
+ printf("date:%s\r\n",value);
+
+ /*
+ lcd.cls();
+ lcd.locate(0,3);
+ lcd.printf("Date:%s",value);
+ */
+
+ p = j_paser(body,"文字列__1行_",value);
+ j_paser(p,"value",value);
+ printf("%s\r\n",value);
+
+ /*
+ lcd.locate(0,14);
+ lcd.printf("name:%s",value);
+
+ // Sound an alert
+ spkr.period(1.0/5000.0);
+ spkr=0.5;
+ wait(1.0);
+ spkr=0.0;
+ */
+
+ delete get_req;
+
+ break;
+ }
+
+ delete get_req;
+
+ wait(10.0);
+ }
+
+ //while(fire == 0);
+ wait(1.0);
+ }
}
