使用 Arduino 和 GSM shield 以及 Parse REST API 将数据上传到 Parse.com [英] Upload data to Parse.com using Arduino and GSM shield and Parse REST API

查看:17
本文介绍了使用 Arduino 和 GSM shield 以及 Parse REST API 将数据上传到 Parse.com的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用带有 GSM 屏蔽的 Arduino,使用他们的 REST API 通过 GPRS 将传感器数据发布到 www.parse.com.这是他们的文档显示需要完成的方式:

I am trying to use an Arduino with a GSM shield to post sensor data to www.parse.com over GPRS using their REST API. This is how their documentation shows it needs to be done:

curl -X POST \
   -H "X-Parse-Application-Id: gmOpYot0OhWGnkMojjZv9KYUHMySCSeTGyyplArZ" \
   -H "X-Parse-REST-API-Key: XQMA4Wd3SQdOsxudtKz5OdbPaVN3YE9aOKx0VSh2" \
   -H "Content-Type: application/json" \
   -d '{"Level":90, "Temp":25}' \
   https://api.parse.com/1/classes/PercentFull

我需要在 Arduino 草图中以某种方式实现它.这是我的起点,因为它包括我的盾牌使用的库.此示例草图连接到 Google 并显示结果.我已经测试过了,它可以工作.

I need to implement this somehow in the Arduino sketch. This is my starting point, as it includes the libraries that my shield uses. This sample sketch connects to Google and displays the result. I've tested it and it works.

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
//#include "sms.h"
//#include "call.h"

//To change pins for Software Serial, use the two lines in GSM.cpp.

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs.

//Simple sketch to start a connection as client.

InetGSM inet;
//CallGSM call;
//SMSGSM sms;

char msg[50];
int numdata;
char inSerial[50];
int i=0;
boolean started=false;

void setup() 
{
  //Serial connection.
  Serial.begin(9600);
  Serial.println("GSM Shield testing.");
  //Start configuration of shield with baudrate.
  //For http uses is raccomanded to use 4800 or slower.
  if (gsm.begin(2400)){
    Serial.println("\nstatus=READY");
    started=true;  
  }
  else Serial.println("\nstatus=IDLE");

  if(started){
    //GPRS attach, put in order APN, username and password.
    //If no needed auth let them blank.
    if (inet.attachGPRS("internet.wind", "", ""))
      Serial.println("status=ATTACHED");
    else Serial.println("status=ERROR");
    delay(1000);

    //Read IP address.
    gsm.SimpleWriteln("AT+CIFSR");
    delay(5000);
    //Read until serial buffer is empty.
    gsm.WhileSimpleRead();


   // Change this bit!!

   //TCP Client GET, send a GET request to the server and
    //save the reply.
    numdata=inet.httpGET("www.google.co.nz", 80, "/", msg, 50);
    //Print the results.
    Serial.println("\nNumber of data received:");
    Serial.println(numdata);  
    Serial.println("\nData received:"); 
    Serial.println(msg); 
  }
};

void loop() 
{
  //Read for new byte on serial hardware,
  //and write them on NewSoftSerial.
  serialhwread();
  //Read for new byte on NewSoftSerial.
  serialswread();
};

void serialhwread(){
  i=0;
  if (Serial.available() > 0){            
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;      
    }

    inSerial[i]='\0';
    if(!strcmp(inSerial,"/END")){
      Serial.println("_");
      inSerial[0]=0x1a;
      inSerial[1]='\0';
      gsm.SimpleWriteln(inSerial);
    }
    //Send a saved AT command using serial port.
    if(!strcmp(inSerial,"TEST")){
      Serial.println("SIGNAL QUALITY");
      gsm.SimpleWriteln("AT+CSQ");
    }
    //Read last message saved.
    if(!strcmp(inSerial,"MSG")){
      Serial.println(msg);
    }
    else{
      Serial.println(inSerial);
      gsm.SimpleWriteln(inSerial);
    }    
    inSerial[0]='\0';
  }
}

void serialswread(){
  gsm.SimpleRead();
}

我需要能够使用应用 ID 和 API 密钥等将级别"和临时"数据发布到 Parse.com,如上面的 API 示例所示.关于如何在草图中做到这一点的任何想法?

I need to be able to post the "Level" and "Temp" data to Parse.com using the App ID and API key, etc, shown in the API example above. Any ideas on how to do this in the sketch?

提前致谢!!

推荐答案

我对此做了一些额外的研究,似乎 Arduino 无法通过安全 (https) 连接连接到 Web 服务器.为此,我需要选择不同的硬件.

I've done some additional research on this and it seems that Arduino is unable to connect to web servers over a secured (https) connection. To do this I would need to choose different hardware.

我尝试了上面 zmo 的回答,结果返回 0,因为 Arduino 无法建立连接.目前使用 Arduino 执行此操作的唯一方法似乎是将传感器数据发布到运行脚本的中间服务器,然后将数据发布到 Parse.

I tried zmo's answer above and it returned 0 as the Arduino couldn't make the connection. It seems the only way to do this at present with Arduino is to post sensor data to an intermediate server running a script that then posts the data to Parse.

这篇关于使用 Arduino 和 GSM shield 以及 Parse REST API 将数据上传到 Parse.com的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆