Espruino:Примеры/Залогинивание в Google Sheets
Залогинивание в Google Sheets[1]
Часто вам нужно прочесть какие-то данные, а затем загрузить их в онлайн-сервис. Несколько примеров таких сервисов можно найти в этой статье, но один из самых легкодоступных способов сохранения данных и последующего доступа к ним – это их загрузка в Google Таблицы при помощи Google Форм.
Это можно сделать при помощи платы Espruino Pico, имеющей поддержку HTTPS. В этом руководстве мы при помощи модуля ESP8266 WiFi будем каждую минуту загружать в Google Таблицы температуру чипа STM32.
Нам понадобятся
- Одна плата Espruino Pico
- Модуль ESP8266 WiFi
Или оба этих устройства может заменить одна плата Espruino WiFi.
Подсоединение
Если вы используете Espruino WiFi, то ничего подключать не нужно.
Если вы используете Espruino и модуль ESP8266 WiFi, следуйте инструкциям из этой статьи – проще всего воспользоваться ля этого адаптерной платой Shim.
Код
- Обновите прошивку вашего устройства до последней версии. Нужна как минимум версия 1v92.
- Скопируйте код ниже в правую часть Web IDE.
- Выставьте собственные WiFi-настройки в верхней части кода (SSID и пароль).
- Удалите функцию onInit() в нижней части кода, не соответствующую вашему устройству.
var WIFI_NAME = "";
var WIFI_OPTIONS = { password : "" };
var wifi;
// Отправляем форму:
function sendForm() {
// Это загрузит данные на https://docs.google.com/spreadsheets/d/1R1D6GKK5MvtjS-PDEPHdqIqKSYX4kG4dPHkj_lkL1P0/pubhtml:
LED1.set(); // во время работы
// держим включённым красный светодиод
var content = "entry.1093163892="+encodeURIComponent(E.getTemperature());
var options = {
host: 'docs.google.com',
port: '443',
path:'/forms/d/1bBV4map47MPRWfaHYCEd1ByR4f_sm3LSd3oRdYkiVKg/formResponse',
protocol: "https:",
method:'POST',
headers: {
"Content-Type":"application/x-www-form-urlencoded",
"Content-Length":content.length
}
};
console.log("Подключение к Google");
require("http").request(options, function(res) {
console.log("Подключились к Google");
var nRecv = 0;
res.on('data', function(data) { nRecv += data.length; });
res.on('close', function(data) {
LED1.reset(); // закончив, выключаем красный светодиод
console.log("Соединение с Google завершено, "+nRecv+" байт получено");
});
}).end(content);
}
function onConnected(err) {
if (err) throw err;
wifi.getIP(function(e,ip) {
LED2.set();
console.log(ip);
setInterval(sendForm, 60000); // раз в минуту
});
}
// Для инициализации Espruino Pico:
function onInit() {
clearInterval();
// Инициализируем ESP8266 после задержки:
setTimeout(function() {
digitalWrite(B9,1); // включаем WiFi на Pico Shim V2
Serial2.setup(115200, { rx: A3, tx : A2 });
wifi = require("ESP8266WiFi_0v25").connect(Serial2, function(err) {
if (err) throw err;
console.log("Подключение к WiFi");
wifi.connect(WIFI_NAME,WIFI_OPTIONS.password, onConnected);
});
}, 2000);
}
// Для инициализации Espruino WiFi:
function onInit() {
wifi = require("EspruinoWiFi");
wifi.connect(WIFI_NAME, WIFI_OPTIONS, onConnected);
}
- Теперь зайдите на drive.google.com (вы должны быть залогинены в аккаунте Google).
- Кликните на «Создать» > «Google Формы».
- Отредактируйте заголовок.
- Добавьте первый элемент с заголовком Temperature, а в типе вопроса задайте «Текст (строка)».
- Кликните на кнопку «Отправить» справа вверху и скопируйте сгенерированный URL.
- Откройте новую вкладку браузера, вставьте туда этот URL и нажмите ↵ Enter . Затем кликните правой кнопкой мыши по странице и в открывшемся меню выберите «Просмотр кода страницы».
- Найдите в этом коде фрагмент <form, скопируйте /forms/..., но без параметра action, а затем вставьте скопированное в свойство path в функции sendForm().
- Также найдите в коде фрагмент <input type="text", скопируйте значение параметра name и вставьте его в var content = в функции sendForm(). Не забудьте поставить в конце =.
- Теперь загрузите отредактированный код выше на Espruino и напечатайте save(), чтобы сохранить его на flash-память. Теперь этот код будет автоматически запускаться при каждом запуске Espruino.
Если вы хотите загружать в Google Таблицы не только температуру чипа STM32, но и другие данные, то это просто. Для этого в форму нужно добавить больше элементов, а также добавить дополнительные элементы в переменную content. Она работает по принципу URL – при добавлении новых элементов вам нужно будет разделять их символом &.
См.также
Внешние ссылки