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发送给我们服务器的数据。
我们希望得到一个很好的反馈! 非常感谢你。