Arduino(マイコンボード)から、Azureモバイルサービスのテーブルに
30秒ごとにデータを送信し格納しようと試みていますが、
テーブルにデータがうまく格納されません。
Arduinoがネットワークに接続できることは検証済みです。
原因を教えていただけると幸いです。
コードは下記のとおりです。
(Azureのアプリケーションキーとネットワークのキーは隠しています)
#include <SPI.h>
#include <SFE_CC3000.h>
#include <SFE_CC3000_Client.h>
#include <SFE_CC3000.h>
#include <SFE_CC3000_Client.h>
// Pins
#define CC3000_INT 2 // Needs to be an interrupt pin (D2/D3)
#define CC3000_EN 7 // Can be any digital pin
#define CC3000_CS 10 // Preferred is pin 10 on Uno
#define CC3000_INT 2 // Needs to be an interrupt pin (D2/D3)
#define CC3000_EN 7 // Can be any digital pin
#define CC3000_CS 10 // Preferred is pin 10 on Uno
// Connection info data lengths
#define IP_ADDR_LEN 4 // Length of IP address in bytes
#define table_name "data"
#define ams_key "***********************" //Azure Mobile Serviceのアプリケーションキー
#define IP_ADDR_LEN 4 // Length of IP address in bytes
#define table_name "data"
#define ams_key "***********************" //Azure Mobile Serviceのアプリケーションキー
// Constants
char ap_ssid[] = "tky-router"; // SSID of network
char ap_password[] = "*************"; // Password of network
unsigned int ap_security = WLAN_SEC_WPA2; // Security of network
unsigned int timeout = 30000; // Milliseconds
char server[] = "datatest007.azure-mobile.net"; // Remote host site
int tempPin=A0;
unsigned long prevTime=0;
// Global Variables
SFE_CC3000 wifi = SFE_CC3000(CC3000_INT, CC3000_EN, CC3000_CS);
SFE_CC3000_Client client = SFE_CC3000_Client(wifi);
SFE_CC3000 wifi = SFE_CC3000(CC3000_INT, CC3000_EN, CC3000_CS);
SFE_CC3000_Client client = SFE_CC3000_Client(wifi);
void setup() {
ConnectionInfo connection_info;
int i;
// Initialize Serial port
Serial.begin(115200);
Serial.println();
Serial.println("---------------------------");
Serial.println("SparkFun CC3000 - WebClient");
Serial.println("---------------------------");
// Initialize CC3000 (configure SPI communications)
if ( wifi.init() ) {
Serial.println("CC3000 initialization complete");
} else {
Serial.println("Something went wrong during CC3000 init!");
}
// Connect using DHCP
Serial.print("Connecting to SSID: ");
Serial.println(ap_ssid);
if(!wifi.connect(ap_ssid, ap_security, ap_password, timeout)) {
Serial.println("Error: Could not connect to AP");
}
// Gather connection details and print IP address
if ( !wifi.getConnectionInfo(connection_info) ) {
Serial.println("Error: Could not obtain connection details");
} else {
Serial.print("IP Address: ");
for (i = 0; i < IP_ADDR_LEN; i++) {
Serial.print(connection_info.ip_address[i]);
if ( i < IP_ADDR_LEN - 1 ) {
Serial.print(".");
}
}
Serial.println();
}
}
int i;
// Initialize Serial port
Serial.begin(115200);
Serial.println();
Serial.println("---------------------------");
Serial.println("SparkFun CC3000 - WebClient");
Serial.println("---------------------------");
// Initialize CC3000 (configure SPI communications)
if ( wifi.init() ) {
Serial.println("CC3000 initialization complete");
} else {
Serial.println("Something went wrong during CC3000 init!");
}
// Connect using DHCP
Serial.print("Connecting to SSID: ");
Serial.println(ap_ssid);
if(!wifi.connect(ap_ssid, ap_security, ap_password, timeout)) {
Serial.println("Error: Could not connect to AP");
}
// Gather connection details and print IP address
if ( !wifi.getConnectionInfo(connection_info) ) {
Serial.println("Error: Could not obtain connection details");
} else {
Serial.print("IP Address: ");
for (i = 0; i < IP_ADDR_LEN; i++) {
Serial.print(connection_info.ip_address[i]);
if ( i < IP_ADDR_LEN - 1 ) {
Serial.print(".");
}
}
Serial.println();
}
}
void loop()
{
if((millis()-prevTime)>(unsigned long)(30000)){//30秒に一度
int val = analogRead(tempPin);
Serial.println("send_request try");
send_request();
read_response();
client.stop();
prevTime=millis();
delay(1000);
}
}
void send_request()
{
char buffer[128] = "";
char value_str[64];
if (client.connect(server, 80)) {
Serial.print("send-data:");
sprintf(buffer, "POST https://datatest007.azure-mobile.net/tables/%s HTTP/1.1", table_name);
client.println(buffer);
sprintf(buffer, "Host: %s", server);
client.println(buffer);
sprintf(buffer, "X-ZUMO-APPLICATION: %s", ams_key);
client.println(buffer);
client.println("Content-Type: application/json");
sprintf(buffer, "{\"item\": %s}",
value_str, "abc");
client.print("Content-Length: ");
client.println(strlen(buffer));
client.println();
client.println(buffer);
Serial.println("data have sent.");
}
else{
Serial.println("Azure Connection failed.");
}
}
{
char buffer[128] = "";
char value_str[64];
if (client.connect(server, 80)) {
Serial.print("send-data:");
sprintf(buffer, "POST https://datatest007.azure-mobile.net/tables/%s HTTP/1.1", table_name);
client.println(buffer);
sprintf(buffer, "Host: %s", server);
client.println(buffer);
sprintf(buffer, "X-ZUMO-APPLICATION: %s", ams_key);
client.println(buffer);
client.println("Content-Type: application/json");
sprintf(buffer, "{\"item\": %s}",
value_str, "abc");
client.print("Content-Length: ");
client.println(strlen(buffer));
client.println();
client.println(buffer);
Serial.println("data have sent.");
}
else{
Serial.println("Azure Connection failed.");
}
}
void read_response()
{
bool print = true;
while (client.available()) {
char c = client.read();
// Print only until the first carriage return
if (c == '\n')
print = false;
if (print)
Serial.println(c);
}
}
Arduinoシリアルモニタ
Azureモバイルサービスの設定