资料介绍
描述
用于将数据从 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 下拉此信息以滚动显示。该代码可以很容易地适用于任何应用程序。
补给品:
第 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 脚本可以检索它。
- 转到“文件-> 发布到网络”。
- 这将打开如上所示的窗口。选择“链接”选项卡。
- 选择要发布的工作表:“Form Responses 1”。
- 然后选择将其发布为“逗号分隔值 (.csv)”。
- 准备好后,单击发布。将出现一个弹出窗口,询问您是否确定。单击“确定”。
- 该窗口现在将显示指向 .csv 文件的链接。
- 您可以在浏览器中打开此链接,它会下载 .csv 文件,以便您查看。
- 这是我的示例表单发布的.csv:https ://docs.google.com/spreadsheets/d/e/2PACX-1vQ2AwUbx6lsZK-H0WjvcF1Bu2VUlsN4ir8kMD10xSEkl-JkxXKlqLZfnJ5pgyNhYIDYMEOK6Ys4cEYK/pub?gid=1198589603&single=true&output=csv
第 3 步:Adafruit IO 设置
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 矩阵门户信息
如果您想使用 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 步:更多项目
更多项目,请访问我的页面:
- 使用Adafruit IO的无线警铃
- 将传感器数据从Helium设备路由到Google表格
- 带有Adafruit IO的太阳能气象站
- 使用Google Assistant和Adafruit IO实现家庭自动化
- 使用Python和JQWidgets控制Adafruit NeoPixels
- 如何将微控制器和adafruit.io仪表板连接到外部应用程序
- 基于Python的实时嵌入式软件测试脚本总结
- 带有Adafruit_IO的气象站监视器源码 9次下载
- 从Excel到Python数据分析进阶指南资源下载 0次下载
- Python学习手册免费下载 9次下载
- Python学习手册免费下载 26次下载
- python2与python3到底有什么区别 4次下载
- 如何使用python将txt文件导入到mysql的应用实例 12次下载
- Python的学习资料总结教程 18次下载
- Python人工智能教程让你从入门到践 96次下载
- 利用Python脚本登录到交换机并创建VLAN 248次阅读
- 使用Python脚本备份华为交换机的配置信息 261次阅读
- python解析netflow数据到csv的流程详解 517次阅读
- 通过Python脚本实现WIFI密码的自动猜解 2531次阅读
- 西门子博图GET_NAME读取IO设备或DP从站的名称 2506次阅读
- 如何解决表单重复提交的问题 862次阅读
- 使用Python脚本实现自动化运维任务 1518次阅读
- Python怎么玩转JS脚本 915次阅读
- 如何通过Python脚本批量采集华为交换机配置 4351次阅读
- 10个杀手级的Python自动化脚本分享 660次阅读
- 用Python写SecureCRT批量登录/巡检网络设备脚本 4007次阅读
- 一次学会使用Adafruit IO平台! 3830次阅读
- 通过Python脚本实现WIFI密码的暴力破解 6466次阅读
- Python爬虫8个常用的爬虫技巧分析总结 5009次阅读
- 如何快速学会Python?利用Python进行数据分析 1w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多