用于将数据从 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 下拉此信息以滚动显示。该代码可以很容易地适用于任何应用程序。
如果您尚未安装 Python,则需要安装它。转到https://www.python.org/downloads/并为您的操作系统下载并运行正确的安装。您需要确保安装 pip 并将 python/pip 添加到 Path。
现在您需要从我的 Github 存储库中检索 Python 脚本和其他文件。您可以安装 git 客户端并克隆存储库,也可以从浏览器下载存储库的 zip 文件。
https://github.com/mjdargen/gform2adafruitIO
git clone https://github.com/mjdargen/gform2adafruitIO.git
要运行此程序,您需要安装以下软件包: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。
首先,您需要创建一个 Google 表单。打开 Google Drive 并创建一个新表单。这是我的这个项目的示例表单的链接:https ://forms.gle/MUWWtGKMeH4RmXeq6 。
您需要让 Google 表单自动发布到 Google 表格。为此,请点击 Google 表单的“回复”标签,然后点击表格图标(如上图所示)。这会将您带到链接的电子表格。每当有人提交新表单时,它都会自动显示在链接的 Google 表格中。
完成以下步骤以将 Google 表格发布为 .csv,以便 Python 脚本可以检索它。
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 。
设置好 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 文件,这样您的私钥就不会与大众共享!
现在,您需要对代码进行一些细微的修改,以使其适用于您的特定情况。
更新您的 .csv 文件的 URL。
设置要存储的最大报价数。
设置 Adafruit IO feed 的名称。分组时,feed 的名称格式为:“group_name.feed_name”。
如果您将此代码用于完全不同的项目,您还需要修改 processing() 函数。我的处理函数将表单数据组织成一个带标签的字典结构。然后它会检查以确保颜色有效并且文本没有亵渎。您将需要更改 processing() 以满足您的需求。
要查看源代码,请访问此 Github 存储库。
以下是程序每个功能的功能描述:
fetch_form_data()
加工()
adafruitIOaccess()
更新文件()
以下是运行代码的 2 种不同方式的描述。
第一个 if __name__ == "__main__": 选项:
sudo crontab -e
*/30 * * * * /usr/bin/python3 /home/pi/Documents/gform2adafruitIO/gform2adafruitIO.py
第二个 if __name__ == "__main__": 选项:
python3 gform2adafruitIO.py
如果您想使用 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
更多项目,请访问我的页面:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !