Спасибо всем, все работает хорошо, я изменил предыдущий код на:
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp();
exports.helloWorld = functions.https.onRequest((req, res) => {
res.send('identifiant: ' + req.body.identifiant);
});
exports.insertMesure = functions.https.onRequest((req, res) => {
const identifiant = req.body.identifiant;
const temperatureAir = req.body.temperatureAir;
const humiditeSol = req.body.humiditeSol;
const humiditeAir = req.body.humiditeAir;
const niveauEau = req.body.niveauEau;
const phSol = req.body.phSol;
const mesure = {
temperatureAir: temperatureAir,
humiditeSol: humiditeSol,
humiditeAir: humiditeAir,
niveauEau: niveauEau,
phSol: phSol
};
const dbRef = admin.database().ref('/users/' + identifiant + '/mesures');
dbRef.push(mesure);
// .then(snapchot => {
// const data = snapchot;
// return data;
// })
// .catch(err => {
// res.send('Error: ' + err);
// });
});
Я хочу отправить данные с помощью Arduino, используя модуль SIM800L со следующим кодом:
#include <Sim800.h>
#include <Http.h>
#include <ArduinoJson.h>
#define BODY_FORMAT "{\"identifiant\":%s, \"temperatureAir\": %d, \"humiditeSol\": %d, \"humiditeAir\": %d, \"phSol\": %d, \"niveauEau\": %d}"
unsigned long lastRunTime = 0;
unsigned long waitForRunTime = 0;
unsigned int RX_PIN = 11; // RX du module
unsigned int TX_PIN = 10; // TX du module
unsigned int RST_PIN = 12;
HTTP http(9600, RX_PIN, TX_PIN, RST_PIN);
// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
while(!Serial);
Serial.println("Starting!");
}
// the loop routine runs over and over again forever:
void loop() {
// if (shouldTrackTimeEntry())
trackTimeEntry();
}
// functions
void print(const __FlashStringHelper *message, int code = -1){
if (code != -1){
Serial.print(message);
Serial.println(code);
}
else {
Serial.println(message);
}
}
void trackTimeEntry(){
char response[32];
char body[100];
char auth[50];
Result result;
String identifiant = "user_4";
int temperatureAir = 45;
int humiditeSol = 23;
int humiditeAir = 23;
int phSol = 6;
int niveauEau = 23;
print(F("Cofigure bearer: "), http.configureBearer("internet"));
result = http.connect();
print(F("HTTP connect: "), result);
sprintf(body, BODY_FORMAT,identifiant, temperatureAir, humiditeSol, humiditeAir, phSol, niveauEau);
print(F("body: "), body);
result = http.post("https://us-central1-MY_PROJET_ID.cloudfunctions.net/insertMesure", body, response);
print(F("HTTP POST: "), result);
print(F("HTTP disconnect: "), http.disconnect());
delay(10000);
}
Но сервер отправляет мне 400 error code
.Как мне отформатировать запрос?