Добрый день, подскажите пожалуйста в чем может быть проблема. Отправляю данные в гугл таблицу по get-запросу. Нужно отправить 5 значений в одном запросе. Два значения отправляются хорошо, но стоит добавить 3 значение, в таблицу вообще ничего не приходит. В чем может быть проблема?
Код esp:
#include <HTTPClient.h>
#include <WiFi.h>
const char* ssid = “";
const char password = "***”;
const char* googleScriptURL = “https://script.google.com/macros/s/AKfycbzSoSHauCv_dd1majUdUdprSUx7Bi927jNuUhPWAFDi4Txcl4dUm-5nEisk8tdWZsU5/exec?”;
String s;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(“Connecting to WiFi…”);
}
Serial.println(“Connected to WiFi”);
}
void loop(){
String s;
HTTPClient http;
s+=googleScriptURL;
s+=“a=”;
s+=time_work_1;
s+=“&b=”;
s+=time_work_2;
s+=“&c=”;
s+=time_work_3;
s+=“&d=”;
s+=time_work_4;
s+=“&w=”;
s+=time_work_5;
Serial.println(s);
http.begin(s);
int httpCode = http.GET();
if (httpCode > 0) {
Serial.println(“Data sent to Google Sheets successfully”);
} else {
Serial.println(“Error sending data to Google Sheets”);
}
http.end();
}
}
time_work_n- это переменные которые хочу отправлять, инициализация и часть кода где их получаю я удалил, оставил только отправку.
Не эксперт в WEB. С удовольствием почитал бы ответы более опытных в этом деле форумчан.
Но Вы не пробовали вывести в Serial итоговый запрос и “проанализировать” его?
Останется ли запрос корректным, если одна из переменных time_work_n будет пустой строкой (они же строки?)
Да, с Serial приходит корректный запрос. Сейчас обратился за помощью к ChatGPT вот он написал, что это ограничения GET- запроса, что он не дает более двух переменных сразу отправить. И видимо для моих задач нужно будет пробовать с post-запросами по пользоваться.
Может и не знает, но пока выглядит логично. Так как я попробовал отправить данные просто через браузер и они тоже не отправились. То есть одна переменная отправляется, две тоже, третью добавляю и все запрос не отправляется
HTTP-протокол может использовать неограниченное количество таких запросов, но в этом нет никакой необходимости. Напротив, при использовании большого количества параметров могут возникнуть проблемы с рейтингом сайта в поисковых системах. Связано это с тем, что лимиты все-таки присутствуют, но со стороны сервера и браузера. Если длина будет превышена, то запрос попросту урежется.
Однако никто не сможет назвать идеальное количество параметров. Для разных серверов это число может колебаться – для одного 32 Кб, для другого – 1024 Кб. Золотая середина – 512 Кб. Рекомендуется использовать не более 5 параметров, иначе их будет сложно контролировать со стороны сервера и браузера. Если необходимо отправить большое количество данных, то лучше использовать POST-запросы.
Это явно какой-то нестандартный “облегчённо-сокращённый” способ передачи данных в таблицу. Не из основного API. Хотелось бы видеть его официальное описание.
Я вот первое что подумал, глядя на него, ну и как гугл должен из этих данных понять в какую книгу, на какой лист, в какие ячейки эти числа нужно вставить? Чудно!
Я не большой скрипт написал для приема данных в Google Таблицы
function doGet(e){
var a = e.parameter.a;
var b = e.parameter.b;
var g = e.parameter.g;
var d = e.parameter.d;
var w = e.parameter.w;
var dataTime = new Date();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1"); // замените "Sheet1" на имя вашего листа
sheet.appendRow([dataTime, a, b, c, d, w]);
return ContentService.createTextOutput("Данные успешно записаны в таблицу.");
В Serial выводи строку нормально с переменными, проблема в том, что я туже строку через браузер отправляю и все ровно данные не приходят. Приходят все 5 значений только в случае отправки единиц, если значения отличны от единиц, то пусто( А вот если всего две переменные то любые значения получает и отправляет в таблицу( Может тогда посоветуете как по другому можно отправлять 5 измеренных значений? Они должны сохраняться в таблицу и потом выводится среднее за текущий день) Пробовал через MQTT, но забуксовал на брокере, поэтом решил попробовать такой способ.