Append Basic Authentications
Dependencies: C12832 HTTPClient LM75B SNICInterface mbed-rtos mbed
Fork of kintone-POST by
main.cpp@3:57ffcb4c9f5d, 2017-08-31 (annotated)
- Committer:
- cybozudld
- Date:
- Thu Aug 31 00:46:34 2017 +0000
- Revision:
- 3:57ffcb4c9f5d
- Parent:
- 2:de803d46330e
- Child:
- 4:2731edb619b9
Append Basic Authentications
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchiyoshihiko | 2:de803d46330e | 1 | #define POST_URL "https://{subdomain}.cybozu.com/k/v1/record.json" |
cybozudld | 3:57ffcb4c9f5d | 2 | #define APP_ID 999 |
takeuchiyoshihiko | 2:de803d46330e | 3 | #define API_TOKEN "xxx" |
cybozudld | 3:57ffcb4c9f5d | 4 | #define BASIC64 "xxx" |
takeuchiyoshihiko | 1:875f37e8e786 | 5 | #define DEMO_AP_SSID "xxx" |
takeuchiyoshihiko | 1:875f37e8e786 | 6 | #define DEMO_AP_SECUTIRY_KEY "xxx" |
takeuchiyoshihiko | 0:a064b2730f3e | 7 | |
takeuchiyoshihiko | 0:a064b2730f3e | 8 | #include "mbed.h" |
takeuchiyoshihiko | 0:a064b2730f3e | 9 | #include "LM75B.h" |
takeuchiyoshihiko | 0:a064b2730f3e | 10 | #include "C12832.h" |
takeuchiyoshihiko | 0:a064b2730f3e | 11 | #include "HTTPClient.h" |
takeuchiyoshihiko | 0:a064b2730f3e | 12 | #include "SNIC_WifiInterface.h" |
takeuchiyoshihiko | 0:a064b2730f3e | 13 | |
takeuchiyoshihiko | 0:a064b2730f3e | 14 | C12832 lcd(p5, p7, p6, p8, p11); |
takeuchiyoshihiko | 0:a064b2730f3e | 15 | LM75B sensor(p28, p27); |
takeuchiyoshihiko | 0:a064b2730f3e | 16 | |
takeuchiyoshihiko | 0:a064b2730f3e | 17 | #if defined(TARGET_LPC1768) |
takeuchiyoshihiko | 0:a064b2730f3e | 18 | C_SNIC_WifiInterface wifi( p9, p10, NC, NC, p30 ); |
takeuchiyoshihiko | 0:a064b2730f3e | 19 | #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_L152RE) |
takeuchiyoshihiko | 0:a064b2730f3e | 20 | C_SNIC_WifiInterface wifi( D8, D2, NC, NC, D3); |
takeuchiyoshihiko | 0:a064b2730f3e | 21 | #elif defined(TARGET_K64F) |
takeuchiyoshihiko | 0:a064b2730f3e | 22 | C_SNIC_WifiInterface wifi( D1, D0, NC, NC, D2); |
takeuchiyoshihiko | 0:a064b2730f3e | 23 | #endif |
takeuchiyoshihiko | 0:a064b2730f3e | 24 | #define DEMO_AP_SECURITY_TYPE e_SEC_WPA2_AES |
takeuchiyoshihiko | 0:a064b2730f3e | 25 | |
takeuchiyoshihiko | 0:a064b2730f3e | 26 | |
takeuchiyoshihiko | 0:a064b2730f3e | 27 | |
takeuchiyoshihiko | 0:a064b2730f3e | 28 | void display(char *message) |
takeuchiyoshihiko | 0:a064b2730f3e | 29 | { |
takeuchiyoshihiko | 0:a064b2730f3e | 30 | lcd.cls(); |
takeuchiyoshihiko | 0:a064b2730f3e | 31 | lcd.locate(0,3); |
takeuchiyoshihiko | 0:a064b2730f3e | 32 | lcd.printf("%s", message); |
takeuchiyoshihiko | 0:a064b2730f3e | 33 | wait(0.1); |
takeuchiyoshihiko | 0:a064b2730f3e | 34 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 35 | |
takeuchiyoshihiko | 0:a064b2730f3e | 36 | void post(void) |
takeuchiyoshihiko | 0:a064b2730f3e | 37 | { |
takeuchiyoshihiko | 0:a064b2730f3e | 38 | HTTPClient http; |
takeuchiyoshihiko | 0:a064b2730f3e | 39 | HTTPResult ret; |
takeuchiyoshihiko | 0:a064b2730f3e | 40 | char str[512]; |
takeuchiyoshihiko | 0:a064b2730f3e | 41 | char message[128]; |
takeuchiyoshihiko | 0:a064b2730f3e | 42 | |
takeuchiyoshihiko | 0:a064b2730f3e | 43 | HTTPText inText(str, 1024); |
takeuchiyoshihiko | 0:a064b2730f3e | 44 | |
takeuchiyoshihiko | 0:a064b2730f3e | 45 | char post_template[] = "{\"app\": %i, \"record\": {\"temp\": {\"value\": \"%.1f\"}}}\n"; |
takeuchiyoshihiko | 0:a064b2730f3e | 46 | char header_template[] = "X-Cybozu-API-Token: %s\nContent-Type: application/json\n"; |
cybozudld | 3:57ffcb4c9f5d | 47 | char header_template_basic[] = "Authorization:Basic %s\nX-Cybozu-API-Token: %s\nContent-Type: application/json\n"; |
takeuchiyoshihiko | 0:a064b2730f3e | 48 | char post_data[256]; |
takeuchiyoshihiko | 0:a064b2730f3e | 49 | char header_data[256]; |
cybozudld | 3:57ffcb4c9f5d | 50 | |
cybozudld | 3:57ffcb4c9f5d | 51 | // Basic Authentications |
cybozudld | 3:57ffcb4c9f5d | 52 | if (BASIC64 != "") { |
cybozudld | 3:57ffcb4c9f5d | 53 | sprintf(header_data, header_template_basic, BASIC64, API_TOKEN); |
cybozudld | 3:57ffcb4c9f5d | 54 | header_template[0] = header_template_basic[0]; |
cybozudld | 3:57ffcb4c9f5d | 55 | } else { |
cybozudld | 3:57ffcb4c9f5d | 56 | sprintf(header_data, header_template, API_TOKEN); |
cybozudld | 3:57ffcb4c9f5d | 57 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 58 | sprintf(post_data, post_template, APP_ID, (float)sensor); |
takeuchiyoshihiko | 0:a064b2730f3e | 59 | |
takeuchiyoshihiko | 0:a064b2730f3e | 60 | HTTPText outText(post_data, strlen(post_data)); |
takeuchiyoshihiko | 0:a064b2730f3e | 61 | |
takeuchiyoshihiko | 0:a064b2730f3e | 62 | http.setHeader(header_data) ; |
takeuchiyoshihiko | 0:a064b2730f3e | 63 | http.setSSLversion(3) ; /* TLSv1.2 */ |
takeuchiyoshihiko | 0:a064b2730f3e | 64 | ret = http.post(POST_URL, outText, &inText); |
takeuchiyoshihiko | 0:a064b2730f3e | 65 | if (ret == HTTP_OK) { |
takeuchiyoshihiko | 0:a064b2730f3e | 66 | sprintf(message, "OK: %s", str); |
takeuchiyoshihiko | 0:a064b2730f3e | 67 | display(message); |
takeuchiyoshihiko | 0:a064b2730f3e | 68 | } else { |
takeuchiyoshihiko | 0:a064b2730f3e | 69 | sprintf(message, "ERROR: %d", http.getHTTPResponseCode()); |
takeuchiyoshihiko | 0:a064b2730f3e | 70 | display(message); |
takeuchiyoshihiko | 0:a064b2730f3e | 71 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 72 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 73 | |
takeuchiyoshihiko | 0:a064b2730f3e | 74 | int main() |
takeuchiyoshihiko | 0:a064b2730f3e | 75 | { |
takeuchiyoshihiko | 0:a064b2730f3e | 76 | int check = 0; |
takeuchiyoshihiko | 0:a064b2730f3e | 77 | char message[128]; |
takeuchiyoshihiko | 0:a064b2730f3e | 78 | |
takeuchiyoshihiko | 0:a064b2730f3e | 79 | // Initialize Wi-Fi interface |
takeuchiyoshihiko | 0:a064b2730f3e | 80 | check = wifi.init(); |
takeuchiyoshihiko | 0:a064b2730f3e | 81 | if (check != 0) { |
takeuchiyoshihiko | 0:a064b2730f3e | 82 | display("Wifi could not be initialized"); |
takeuchiyoshihiko | 0:a064b2730f3e | 83 | return -1; |
takeuchiyoshihiko | 0:a064b2730f3e | 84 | } else { |
takeuchiyoshihiko | 0:a064b2730f3e | 85 | display("wifi initialized successfully"); |
takeuchiyoshihiko | 0:a064b2730f3e | 86 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 87 | wait(0.5); |
takeuchiyoshihiko | 0:a064b2730f3e | 88 | |
takeuchiyoshihiko | 0:a064b2730f3e | 89 | // good form to make sure you are disconnected from all AP's |
takeuchiyoshihiko | 0:a064b2730f3e | 90 | check = wifi.disconnect(); |
takeuchiyoshihiko | 0:a064b2730f3e | 91 | if (check != 0) { |
takeuchiyoshihiko | 0:a064b2730f3e | 92 | display("disconnect failed"); |
takeuchiyoshihiko | 0:a064b2730f3e | 93 | return -1; |
takeuchiyoshihiko | 0:a064b2730f3e | 94 | } else { |
takeuchiyoshihiko | 0:a064b2730f3e | 95 | display("disconnection successful"); |
takeuchiyoshihiko | 0:a064b2730f3e | 96 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 97 | wait(0.3); |
takeuchiyoshihiko | 0:a064b2730f3e | 98 | |
takeuchiyoshihiko | 0:a064b2730f3e | 99 | // Connect AP |
takeuchiyoshihiko | 0:a064b2730f3e | 100 | wifi.connect( DEMO_AP_SSID |
takeuchiyoshihiko | 0:a064b2730f3e | 101 | , strlen(DEMO_AP_SSID) |
takeuchiyoshihiko | 0:a064b2730f3e | 102 | , DEMO_AP_SECURITY_TYPE |
takeuchiyoshihiko | 0:a064b2730f3e | 103 | , DEMO_AP_SECUTIRY_KEY |
takeuchiyoshihiko | 0:a064b2730f3e | 104 | , strlen(DEMO_AP_SECUTIRY_KEY) ); |
takeuchiyoshihiko | 0:a064b2730f3e | 105 | wait(0.5); |
takeuchiyoshihiko | 0:a064b2730f3e | 106 | |
takeuchiyoshihiko | 0:a064b2730f3e | 107 | // Get DHCP IP |
takeuchiyoshihiko | 0:a064b2730f3e | 108 | check = wifi.setIPConfig(true); |
takeuchiyoshihiko | 0:a064b2730f3e | 109 | if (check != 0) { |
takeuchiyoshihiko | 0:a064b2730f3e | 110 | display("SetIPConfig failed"); |
takeuchiyoshihiko | 0:a064b2730f3e | 111 | return -1; |
takeuchiyoshihiko | 0:a064b2730f3e | 112 | } else { |
takeuchiyoshihiko | 0:a064b2730f3e | 113 | display("SetIPConfig successful"); |
takeuchiyoshihiko | 0:a064b2730f3e | 114 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 115 | sprintf(message, "IP: %s", wifi.getIPAddress()); |
takeuchiyoshihiko | 0:a064b2730f3e | 116 | display(message); |
takeuchiyoshihiko | 0:a064b2730f3e | 117 | |
takeuchiyoshihiko | 0:a064b2730f3e | 118 | while (true) { |
takeuchiyoshihiko | 0:a064b2730f3e | 119 | post(); |
takeuchiyoshihiko | 0:a064b2730f3e | 120 | wait(60); |
takeuchiyoshihiko | 0:a064b2730f3e | 121 | } |
takeuchiyoshihiko | 0:a064b2730f3e | 122 | |
takeuchiyoshihiko | 0:a064b2730f3e | 123 | wifi.disconnect(); |
takeuchiyoshihiko | 0:a064b2730f3e | 124 | } |