拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何将数据从 NodeMCU 发送到 Google Sheets

如何将数据从 NodeMCU 发送到 Google Sheets

白鹭 - 2021-12-26 2139 0 0

如何将数据从 NodeMCU 发送到 Google Sheets

如何将数据从 NodeMCU 发送到 Google Sheets

使用 NodeMCU 固件通过互联网将传感器数据发送到 Google Sheets 电子表格中非常方便。这可以通过 Google 脚本完成,并且与许多云存储替代方案相比,无需花费任何成本。

就本文而言,我们将向您展示一个用于发送温度读数的简单项目使用 ESP8266 和 DHT11 temp &湿度传感器。

设置您的 Google 表格

首先,您需要创建一个新电子表格。登录您的 Google 帐户,转到“我的云端硬盘”,然后打开一个空白电子表格。

复制电子表格的 URL 键。给电子表格一个直观的名称。转到“工具”菜单下的“脚本编辑器”。

脚本编辑器

为您的脚本命名(同样,保持直观,尤其是在您进行多个项目时)。使用给定的脚本并将其复制粘贴到 Google 脚本编辑器中。

脚本编辑器代码

在电子表格 ID 行下,粘贴您保存的电子表格中的 URL 键。

保存脚本并将其部署为应用程序。您会在“发布”菜单下找到此选项。配置部署参数以确保电子表格能够正常工作。

  1. 保存“当前网络应用 URL”。
  2. 将所有脚本修订版的项目版本保存为新版本 (这允许 Google 更新您将来可能进行的任何修订。
  3. 对于将应用程序执行为字段,添加以下“我(您的 Gmail 地址)”。
  4. 对于谁有权访问应用程序字段,添加以下行“任何人,甚至匿名”。

用于设置 ESP8266 和 DHT11 传感器的代码

这是什么您应该在将 ESP8266 连接到 DHT11 传感器时上传:

#include “ESP8266WiFi.h”

#include “DHT.h”

#define DHTPIN 2//什么数字您连接到的 pin

//pin2 到 esp 板上的 D4

//删除代码中您使用的DHT传感器类型的注释。

#define DHTTYPE DHT11//DHT 11

//#define DHTTYPE DHT21//DHT 21

//#define DHTTYPE DHT22//DHT 22

DHT dht(DHTPIN,DHTTYPE);

const char WEBSITE[]="api.pushingbox.com";//PushingBox API 服务器

const String devid="";//来自 Pushingbox 的设备 ID

const char* MY_SSID=“<YOUR_WIFI_NAME_HERE”;

const char* MY_PWD=“”;

void setup()

{

Serial.begin(115200);

dht.begin();

Serial.print(“连接到“+ *MY_SSID);

WiFi.begin (MY_SSID, MY_PWD);

Serial.println(“进入wl connect”);

while (WiFi.status() !=WL_CONNECTED)//未连接,..等待连接

{

delay(1000);

Serial.print(“.”);

}

Serial.println(“wl已连接”);

Serial.println(“”);

Serial.println(“已接受凭据!连接到wifi\n“);

Serial.println(“”);

}

void loop()

{

//在读数之间留出更多时间

//填充谷歌表,以避免超过来自 PushingBox 的免费请求数量

delay(10000);//10秒,(采样率 vs.服务调用配额)

float湿度数据=dht.readHumidity();

//读取温度为摄氏度(默认)

float celData=dht.readTemperature();

//读取温度为华氏度(isFahrenheit=true)

float fehrData=dht.readTemperature(true);

//检查失败的读取提前退出(再试一次)。

if (isnan(湿度数据) || isnan(celData) || isnan(fehrData))

{

p>

Serial.println(“DHT 传感器读取失败!”);

return;

}

//计算热指数摄氏(isFahreheit=false)

float hicData=dht.computeHeatIndex(celData, modifiedData, false);

//计算华氏温度(默认)

float hifData=dht.computeHeatIndex(fehrData, heightData);

//以 115200 波特打印到串行监视器或您选择的终端

Serial.print(“Humidity:”);

Serial.print(湿度数据);

Serial.print("%\t");

Serial.print("温度单位: “);

Serial.print(celD ata);

Serial.print(" *C ");

Serial.print("Fehr 中的温度:");

Serial.print(fehrData);

Serial.print(" *F\t");

Serial.print("Cel 中的热指数:");

Serial.print(hicData);

Serial.print(" *C ");

Serial.print("Fehr 热指数:");

Serial.print(hifData);

Serial.print(" *F\n");

WiFiClient client;//实例化WiFi对象

//通过 PushingBox 使用我们的 WiFi 客户端启动或 API 服务

if (client.connect(WEBSITE, 80))

{

client.print(“GET/pushbox?devid=” + devid

+ “&hydrityData=” + (String) 湿度数据

+ “&celData=” + (String) celData

+“&fehrData=”+(字符串)fehrData

+“&hicData=”+(字符串)hicData

+“&hifData=”+(字符串) hifData

);

client.println("HTTP/1.1");

client.print("Host:");

client.println(WEBSITE);

client.println(“User-Agent: ESP8266/1.0”);

client.println(“Connection: close”);

客户端打印ln();

}

}

Google App Script 代码示例

以下是创建可读脚本所需的代码您的传感器数据传输。

GET 请求查询:

https://script.google.com/macros/s//exec?celData=data_here

p>

HumidityDat、celData、fehrData、hicData、hifData(GScript、PushingBox 和 Arduino 变量,按照您编写它们的顺序)

函数 doGet(e) {

Logger.log (JSON.stringify(e));//这是查看参数

Var result='Ok';

If (e.parameter==undefined) {

Result='No Parameters';

}

Else {

Var id='<您的电子表格 URL\;

Var sheet=SpreadsheetApp.openById(id).getActivesheet();

Var newRow=sheet.getLastRow() + 1;

Var rowData=[ ];

//var waktu=new Date()'

rowData[0]=new Date();//A列的时间戳

for (var param in e.parameter) {

logger.log('in for loop, param='+param);

var value=stripQuotes(e.param eter[param]);

switch (param) {

case 'humityData'://Parameter

rowData[1]=value;//Value在 B 列中

break;

case 'celData';

rowData[2]=value;

break;

case 'fehrData':

rowData[3]=value ;

break;

case 'hicData':

rowData[4]=value;

break;

case 'hifData':

rowData[5]=value;

break;

default:

result=“不支持的参数”;

}

Logger.log(JSON.stringify(rowData));

Var newRange=sheet.getRange(newRow, 1, 1, rowData.length);

newRange.setValues([rowData]);

}

返回ContentService.createTextOutput(result);

}

函数stripQuotes(value){

返回value.replace(/^[“']|['|]$/g, “”);

}

Setup PushingBox

此服务充当您之间的中间人DHT 传感器数据和 Google 表格。使用 PushingBox API,您可以将 HTTP 传输的数据转换为 Google 识别的加密 HTTPS 数据。

请注意,PushingBox 将您限制为每天 1,000 个请求。但是,它省去了创建 Google 将响应的自己的加密算法所需的大量繁重工作和专业知识。

  1. 创建一个 PushingBox 帐户(如果您还没有)。
  2. 使用您也用于 NodeMCU 传感器数据项目的 Gmail 地址。
  3. 转到我的服务。
  4. 从添加一个服务选项。
  5. 滚动到最后一个名为 CustomURL 的选项,设置您自己的服务!
  6. 填写需要名称、URL 和方法的字段。
  7. 对于方法,选择 GET。
  8. 对于 URL,使用以“script.google.com...”开头的 URL,来自创建 Google Scrip 地址时生成的 URL。
  9. 提交服务并转到我的场景。
  10. 输入一个直观的名称并点击添加按钮。
  11. 在屏幕上出现提示时添加一个操作。
  12. 配置GET 方法通过格式化每个变量的名称。此步骤将因方式而异您正在录制的许多传感器及其正在录制的内容。

配置硬件

如果您在 ESP8266 上使用 DHT 传感器,请为设备供电 5v而不是 3.3v。较低的电压可能无法为您提供正确的读数。

连接 ESP8266 上的引脚 2 和 D4。

配置软件

此设置适用于 Arduino IDE,最好是比 1.6.4 新的版本。这也意味着您需要在系统上下载一些库。

可以在以下链接中找到这些库:

  1. hhtps://github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
  2. https://learn.adafruit.com/dht

下一步涉及上传 Arduino 草图并为您的设备进行配置项目和您的设备。您只需为项目设置格式和自定义三个相关字段:

  1. Wi-Fi 网络。
  2. Wi-Fi 密码。
  3. PushingBox ID。

你如何处理 NodeMCU 数据传输?

有更多的方法可以做到这一点,你可以使用大量的传感器类型来传输数据。带有 NodeMCU 固件的 ESP8266 直接连接到 Google Sheets 或其他云平台。

您更喜欢编写自己的脚本和代码来个性化您的项目,还是在 github 和其他平台上在线搜索经过验证的脚本并从那里适应?在下面的评论部分告诉我们您最喜欢的代码和脚本源以及 ESP8266 和传感器组合。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *