Quantcast
Channel: Azure フォーラム
Viewing all articles
Browse latest Browse all 1798

ArduinoからAzureモバイルサービスのテーブルにデータを送信したい

$
0
0

Arduino(マイコンボード)から、Azureモバイルサービスのテーブルに

30秒ごとにデータを送信し格納しようと試みていますが、

テーブルにデータがうまく格納されません。

Arduinoがネットワークに接続できることは検証済みです。

原因を教えていただけると幸いです。

コードは下記のとおりです。

(Azureのアプリケーションキーとネットワークのキーは隠しています)

#include <SPI.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
// 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のアプリケーションキー

// 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);
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();
  }

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.");
  }
}

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モバイルサービスの設定


Viewing all articles
Browse latest Browse all 1798

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>