×

用于将数据从Google表单自动发布到Adafruit IO的Python脚本

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-16

分享资料个

描述

 

 
 
 
 
poYBAGNzbzOAFS-9AA1VZ-i9H7E016.jpg
 
1 / 2
 

用于将数据从 Google 表单自动发布到 Adafruit IO 的 Python 脚本。

该程序提供了一个框架,可以轻松地将 Google 表单链接到 Adafruit IO 提要,该提要可用于任意数量的项目。该程序不只允许任何人直接访问您的提要,而是充当公共 Google 表单和私人提要之间的中间件。任何人都可以填写您的 Google 表单。该程序将定期检查新提交的表单,审核提交数据以确认数据有效,然后将数据推送到您的 Adafruit IO 提要。

我在本教程中给出的示例使用 Adafruit Matrix Portal 来制作 Marquee Sign。我提出这个想法是为了让我的学生可以轻松地将文本提交到实验室的 Matrix Portal。Google 表单要求用户输入文本和颜色。该程序确保颜色有效且文本无亵渎(尽可能无亵渎)。然后程序将数据发布到 Adafruit IO。Matrix Portal 从 Adafruit IO 下拉此信息以滚动显示。该代码可以很容易地适用于任何应用程序。

补给品:

  • Raspberry Pi 或计算机 (Windows/Mac/Linux) 与互联网和 Python 运行脚本
  • Adafruit IO 帐户(免费)
  • 谷歌帐户(免费)

第 1 步:设置环境

Python 3 安装

如果您尚未安装 Python,则需要安装它。转到https://www.python.org/downloads/并为您的操作系统下载并运行正确的安装。您需要确保安装 pip 并将 python/pip 添加到 Path。

Git 项目文件

现在您需要从我的 Github 存储库中检索 Python 脚本和其他文件。您可以安装 git 客户端并克隆存储库,也可以从浏览器下载存储库的 zip 文件。

https://github.com/mjdargen/gform2adafruitIO

git clone  https://github.com/mjdargen/gform2adafruitIO.git

安装 Python 包

要运行此程序,您需要安装以下软件包:requests、webcolors、adafruit-io、python-dotenv。这些可以通过导航到克隆的存储库目录并运行以下命令来轻松安装:

pip3 install -r requirements.txt

如果您对任何软件包有问题,可以将它们降级到这些版本(发布时的最新版本)。这些是我测试的特定版本:python == 3.7.7、requests == 2.24.0、webcolors == 1.11.1、adafruit-io == 2.4.0、python-dotenv == 0.14.0。

第 2 步:设置 Google 表单

创建 Google 表单/Google 表格

首先,您需要创建一个 Google 表单。打开 Google Drive 并创建一个新表单。这是我的这个项目的示例表单的链接:https ://forms.gle/MUWWtGKMeH4RmXeq6

您需要让 Google 表单自动发布到 Google 表格。为此,请点击 Google 表单的“回复”标签,然后点击表格图标(如上图所示)。这会将您带到链接的电子表格。每当有人提交新表单时,它都会自动显示在链接的 Google 表格中。

将工作表发布到 Python 脚本

完成以下步骤以将 Google 表格发布为 .csv,以便 Python 脚本可以检索它。

第 3 步:Adafruit IO 设置

 
 
 
 
pYYBAGNzbzWAI4NvAACA2YPN5Sw594.png
 
1 / 2
 

https://io.adafruit.com/

Adafruit IO 是一项令人难以置信的云服务,可让您从许多不同的设备来回推送和拉取数据。在我提供的示例中,我将数据从 Raspberry Pi 推送到 Adafruit IO,而我的 Matrix Portal 将数据从 Adafruit IO 拉回。Adafruit IO 还使您能够创建仪表板并连接到其他 Web 服务。出于我们的目的,我们将主要关注从 Adafruit IO 上的私人订阅源发送和检索数据。

如果您想实现 Matrix Portal Marquee 的具体示例,请在此处遵循本指南:https ://learn.adafruit.com/aio-quote-board-matrix-display/ 在“为报价板编码”页面上,它会逐步指导您如何为您的标志创建提要。

在我的例子中,我创建了两个提要:一个用于文本(称为 signtext),一个用于颜色(称为 signcolor)。创建这两个提要后,我将它们分配给我创建的名为“矩阵门户报价”的组。稍后您将需要这些名称以供参考,因此请记住它们!

--

如果您想将 gform2adafruitIO 用于不同的项目,Adafruit 发布了许多其他有关 Adafruit IO 的有用指南,无论您的具体要求是什么,它们都将为您提供帮助。这是一系列有用的 Adafruit IO 指南:https ://learn.adafruit.com/series/adafruit-io-basics

第 4 步:环境变量设置

设置好 Adafruit IO 帐户后,您应该有一个用户名和一个密钥。我将向您展示如何将这些安全地存储为环境变量,这样您就不会意外地将这些私人信息发布到网络上。该程序使用 python-dotenv 包来执行此操作。

要设置环境变量,请在克隆存储库的目录中创建一个名为“.env”的文件。在您喜欢的文本编辑器中打开此文件,并按以下格式提供您的用户名和密钥:

ADAFRUIT_IO_KEY=<put_your_adafruit_io_key_here>
ADAFRUIT_IO_USERNAME=<put_your_adafruit_io_username_here>

你们都完成了!Python 脚本将成功地将您的信息导入代码中。如果您曾经将代码发布到 GitHub,default.gitignore 文件将自动知道排除您的 .env 文件,这样您的私钥就不会与大众共享!

第 5 步:修改代码

现在,您需要对代码进行一些细微的修改,以使其适用于您的特定情况。

更新您的 .csv 文件的 URL。

  • 修改变量 CSV_URL 以指向您的 Google 表格发布 .csv 文件的 URL。
  • CSV_URL = ""

设置要存储的最大报价数。

  • 修改变量 MAX_QUOTES 以控制要存储在 Adafruit IO Feed 中的最大报价数
  • MAX_QUOTES =
  • 如果您指定 10,它将保留 10 个最近的报价/颜色

设置 Adafruit IO feed 的名称。分组时,feed 的名称格式为:“group_name.feed_name”。

  • TEXT_FEED = 'matrix-portal-quotes.signtext'
  • COLOR_FEED = 'matrix-portal-quotes.signcolor'
  • 就我而言,我有两个提要:一个用于文本,一个用于颜色。
  • 我在 Adafruit IO 门户中将它们组合在一起。

如果您将此代码用于完全不同的项目,您还需要修改 processing() 函数。我的处理函数将表单数据组织成一个带标签的字典结构。然后它会检查以确保颜色有效并且文本没有亵渎。您将需要更改 processing() 以满足您的需求。

第 6 步:执行程序

 

要查看源代码,请访问此 Github 存储库

程序说明

以下是程序每个功能的功能描述:

fetch_form_data()

  • 使用 requests 库下载 Google Sheet 的.csv 文件。
  • 将下载的文件与上次检索的文件进行比较,以查看是否有新的提交数据。
  • 如果有新数据,则继续对其进行处理。否则,程序结束。

加工()

  • 将表单数据组织成字典结构。
  • 调用 color_check() 处理颜色数据并查看它是否有效。
  • 调用 profanity_check() 来处理文本数据并查看它是否没有亵渎。

adafruitIOaccess()

  • 使用 Rest API 与 Adafruit IO 连接。
  • 从文本和颜色提要中提取现有值。
  • 将新值添加到这些提要中。
  • 如果值超过了值的最大限制,则从这些提要中删除它们。

更新文件()

  • 成功完成所有其他任务后,用当前下载的.csv 覆盖以前的下载.csv 以供下次执行。

以下是运行代码的 2 种不同方式的描述。

第一个 if __name__ == "__main__": 选项:

  • 程序只执行一次然后存在。非常适合安排脚本运行。
  • 我的脚本在 Raspberry Pi 上运行并使用 cron 进行调度。使用此工具来计算调度。
  • 下面我将展示如何向 cron 添加任务以安排脚本每 30 分钟运行一次。
sudo crontab -e
*/30 * * * * /usr/bin/python3 /home/pi/Documents/gform2adafruitIO/gform2adafruitIO.py

第二个 if __name__ == "__main__": 选项:

  • 程序永远在循环中重复执行。执行之间有一个睡眠间隔。
  • 通过修改此行设置睡眠间隔(以秒为单位): INTRVL = 1800
  • 下面我展示如何调用程序。
python3 gform2adafruitIO.py

第 7 步:Adafruit 矩阵门户信息

 
pYYBAGNzbziADY1QAAE5yjJikSo356.jpg
 

如果您想使用 Adafruit Matrix Portal 运行这个特定的 Marquee Sign 示例,请查看以下链接。这些指南将引导您了解如何设置 Matrix 门户以及如何在 Adafruit IO 中设置提要。

Adafruit Matrix 门户产品页面:https ://www.adafruit.com/product/4745

一般 Adafruit 矩阵门户信息:https ://learn.adafruit.com/adafruit-matrixportal-m4

自定义滚动报价教程:https ://learn.adafruit.com/aio-quote-board-matrix-display

第 8 步:更多项目

更多项目,请访问我的页面:


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !