Espruino:Примеры/Залогинивание в Google Sheets: различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighlig...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Залогинивание в Google Sheets<ref>[https://www.espruino.com/Logging+to+Google+Sheets www.espruino.com - Logging to Google Sheets]</ref>= | ||
Часто вам нужно прочесть какие-то данные, а затем загрузить их в онлайн-сервис. Несколько примеров таких сервисов можно найти в [http://wikihandbk.com/wiki/Espruino:Примеры/IoT-сервисы этой статье], но один из самых легкодоступных способов сохранения данных и последующего доступа к ним – это их загрузка в [https://www.google.com/sheets/about/ Google Таблицы] при помощи [https://www.google.com/forms/about/ Google Форм]. | |||
Это можно сделать при помощи платы [[Espruino Pico]], имеющей поддержку [[HTTPS]]. В этом руководстве мы при помощи модуля [https://www.espruino.com/ESP8266 ESP8266 WiFi] будем каждую минуту загружать в Google Таблицы температуру чипа [[STM32]]. | |||
{{Примечание1|Ранее в этом проекте нужно было явно указать ключ и сертификаты [[HTTPS]], но теперь это не нужно. Более подробно об использовании сертификатов читайте в [http://wikihandbk.com/wiki/Espruino:Примеры/Хранение_HTTPS-сертификатов этой статье].}} | |||
== Нам понадобятся == | |||
* Одна плата [https://www.espruino.com/Pico Espruino Pico] | |||
* Модуль [https://www.espruino.com/ESP8266 ESP8266 WiFi] | |||
Или оба этих устройства может заменить одна плата [https://www.espruino.com/WiFi Espruino WiFi]. | |||
== Подсоединение == | |||
Если вы используете [[Espruino WiFi]], то ничего подключать не нужно. | |||
Если вы используете [[Espruino]] и модуль [[ESP8266 WiFi]], следуйте инструкциям из [https://www.espruino.com/ESP8266 этой статьи] – проще всего воспользоваться ля этого адаптерной платой [[Shim]]. | |||
== Код == | |||
* Обновите прошивку вашего устройства до последней версии. Нужна как минимум версия '''1v92'''. | |||
* Скопируйте код ниже в правую часть [[Web IDE]]. | |||
* Выставьте собственные [[WiFi]]-настройки в верхней части кода ([[SSID]] и пароль). | |||
* Удалите функцию '''onInit()''' в нижней части кода, не соответствующую вашему устройству. | |||
<syntaxhighlight lang="javascript"> | |||
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); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
* Теперь зайдите на '''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]] – при добавлении новых элементов вам нужно будет разделять их символом '''&'''. | |||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 19: | Строка 118: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 21:54, 22 мая 2023
Залогинивание в 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 – при добавлении новых элементов вам нужно будет разделять их символом &.
См.также
Внешние ссылки