如何使用Arduino ESP8266中的JavaScript处理发布请求

时间:2017-07-25 16:14:47

标签: javascript express post server arduino-esp8266

Hey StackOverFlow社区。我刚刚进入了JavaScript和Node.JS的世界。但我非常了解C#。我正在尝试让Arduino收集一些数据并将其发送到我的Ubuntu服务器(在DigitalOcean租用)。我正在使用ESP8266 Arduino发布帖子请求(Arduino wifi模块),我确信那部分有效。

问题是,我想收到并显示我的Arduino在服务器上发送的数据。但JavaScript部分似乎不起作用(在服务器上)。

ESP8266在这里使用了一个库:https://github.com/esp8266/Arduino。这是ESP8266 Arduino使用的代码。

include Arduino.h
include ESP8266WiFi.h
include ESP8266WiFiMulti.h
include ESP8266HTTPClient.h

#define USE_SERIAL Serial
ESP8266WiFiMulti WiFiMulti;

String ssid = "YourWifiName";
String password = "YourWifiPassword";
String website = "http://165.227.138.230/";
String data = "20";

void setup() {

USE_SERIAL.begin(115200);
// USE_SERIAL.setDebugOutput(true);

USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();

for(uint8_t t = 4; t > 0; t--) {
    USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
    USE_SERIAL.flush();
    delay(1000);
}

WiFiMulti.addAP("drach", "a5b4c3d2e1");
}

void sendData(String data) {
HTTPClient http;
USE_SERIAL.print("Attempting upload to");
USE_SERIAL.println(website);
http.begin("http://165.227.138.230/" + data);
int code = http.POST("Doge");

USE_SERIAL.print("Response code = ");
USE_SERIAL.println(code);

if ( code > 0 ) { USE_SERIAL.println("Upload succeeded"); }
if ( code == 0 ) { USE_SERIAL.println("Upload failed"); }
http.end();
USE_SERIAL.println("HTTP.end");
}

void loop() {

USE_SERIAL.println("Waiting for connecting");
if((WiFiMulti.run() == WL_CONNECTED)) {
  sendData(data);
} else {
  USE_SERIAL.println("Connecting faled, trying again");
}

delay(5000);
}

我们处理post请求的方式是使用Express和body-parser模块的JavaScript。 Express有一个关于设置Express模块​​和get请求的示例。但是没有帖子请求的例子。链接到express的示例:https://expressjs.com/en/starter/hello-world.html。这是我们最终得到的代码。

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.get('/', function (req, res) {
res.send('Hello World!');
});

app.post('/', urlencodedParser, function(req, res){
console.log("Post triggered");
console.log(req.body);
});


app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});

我们的目标是接收并记录Arduino发送给我们服务器的数据。

我们希望得到一个很好的反馈! 非常感谢你。

0 个答案:

没有答案