用于將數(shù)據(jù)從Google表單自動(dòng)發(fā)布到Adafruit IO的Python腳本
資料介紹
描述
?
![poYBAGNzbzOAFS-9AA1VZ-i9H7E016.jpg](https://file.elecfans.com/web2/M00/7A/B9/poYBAGNzbzOAFS-9AA1VZ-i9H7E016.jpg)
用于將數(shù)據(jù)從 Google 表單自動(dòng)發(fā)布到 Adafruit IO 的 Python 腳本。
該程序提供了一個(gè)框架,可以輕松地將 Google 表單鏈接到 Adafruit IO 提要,該提要可用于任意數(shù)量的項(xiàng)目。該程序不只允許任何人直接訪問您的提要,而是充當(dāng)公共 Google 表單和私人提要之間的中間件。任何人都可以填寫您的 Google 表單。該程序?qū)⒍ㄆ跈z查新提交的表單,審核提交數(shù)據(jù)以確認(rèn)數(shù)據(jù)有效,然后將數(shù)據(jù)推送到您的 Adafruit IO 提要。
我在本教程中給出的示例使用 Adafruit Matrix Portal 來制作 Marquee Sign。我提出這個(gè)想法是為了讓我的學(xué)生可以輕松地將文本提交到實(shí)驗(yàn)室的 Matrix Portal。Google 表單要求用戶輸入文本和顏色。該程序確保顏色有效且文本無褻瀆(盡可能無褻瀆)。然后程序?qū)?shù)據(jù)發(fā)布到 Adafruit IO。Matrix Portal 從 Adafruit IO 下拉此信息以滾動(dòng)顯示。該代碼可以很容易地適用于任何應(yīng)用程序。
補(bǔ)給品:
- Raspberry Pi 或計(jì)算機(jī) (Windows/Mac/Linux) 與互聯(lián)網(wǎng)和 Python 運(yùn)行腳本
- Adafruit IO 帳戶(免費(fèi))
- 谷歌帳戶(免費(fèi))
第 1 步:設(shè)置環(huán)境
Python 3 安裝
如果您尚未安裝 Python,則需要安裝它。轉(zhuǎn)到https://www.python.org/downloads/并為您的操作系統(tǒng)下載并運(yùn)行正確的安裝。您需要確保安裝 pip 并將 python/pip 添加到 Path。
Git 項(xiàng)目文件
現(xiàn)在您需要從我的 Github 存儲(chǔ)庫中檢索 Python 腳本和其他文件。您可以安裝 git 客戶端并克隆存儲(chǔ)庫,也可以從瀏覽器下載存儲(chǔ)庫的 zip 文件。
https://github.com/mjdargen/gform2adafruitIO
git clone https://github.com/mjdargen/gform2adafruitIO.git
安裝 Python 包
要運(yùn)行此程序,您需要安裝以下軟件包:requests、webcolors、adafruit-io、python-dotenv。這些可以通過導(dǎo)航到克隆的存儲(chǔ)庫目錄并運(yùn)行以下命令來輕松安裝:
pip3 install -r requirements.txt
如果您對(duì)任何軟件包有問題,可以將它們降級(jí)到這些版本(發(fā)布時(shí)的最新版本)。這些是我測試的特定版本:python == 3.7.7、requests == 2.24.0、webcolors == 1.11.1、adafruit-io == 2.4.0、python-dotenv == 0.14.0。
第 2 步:設(shè)置 Google 表單
創(chuàng)建 Google 表單/Google 表格
首先,您需要?jiǎng)?chuàng)建一個(gè) Google 表單。打開 Google Drive 并創(chuàng)建一個(gè)新表單。這是我的這個(gè)項(xiàng)目的示例表單的鏈接:https ://forms.gle/MUWWtGKMeH4RmXeq6 。
您需要讓 Google 表單自動(dòng)發(fā)布到 Google 表格。為此,請點(diǎn)擊 Google 表單的“回復(fù)”標(biāo)簽,然后點(diǎn)擊表格圖標(biāo)(如上圖所示)。這會(huì)將您帶到鏈接的電子表格。每當(dāng)有人提交新表單時(shí),它都會(huì)自動(dòng)顯示在鏈接的 Google 表格中。
將工作表發(fā)布到 Python 腳本
完成以下步驟以將 Google 表格發(fā)布為 .csv,以便 Python 腳本可以檢索它。
- 轉(zhuǎn)到“文件-> 發(fā)布到網(wǎng)絡(luò)”。
- 這將打開如上所示的窗口。選擇“鏈接”選項(xiàng)卡。
- 選擇要發(fā)布的工作表:“Form Responses 1”。
- 然后選擇將其發(fā)布為“逗號(hào)分隔值 (.csv)”。
- 準(zhǔn)備好后,單擊發(fā)布。將出現(xiàn)一個(gè)彈出窗口,詢問您是否確定。單擊“確定”。
- 該窗口現(xiàn)在將顯示指向 .csv 文件的鏈接。
- 您可以在瀏覽器中打開此鏈接,它會(huì)下載 .csv 文件,以便您查看。
- 這是我的示例表單發(fā)布的.csv:https ://docs.google.com/spreadsheets/d/e/2PACX-1vQ2AwUbx6lsZK-H0WjvcF1Bu2VUlsN4ir8kMD10xSEkl-JkxXKlqLZfnJ5pgyNhYIDYMEOK6Ys4cEYK/pub?gid=1198589603&single=true&output=csv
第 3 步:Adafruit IO 設(shè)置
![pYYBAGNzbzWAI4NvAACA2YPN5Sw594.png](https://file.elecfans.com/web2/M00/7B/47/pYYBAGNzbzWAI4NvAACA2YPN5Sw594.png)
Adafruit IO 是一項(xiàng)令人難以置信的云服務(wù),可讓您從許多不同的設(shè)備來回推送和拉取數(shù)據(jù)。在我提供的示例中,我將數(shù)據(jù)從 Raspberry Pi 推送到 Adafruit IO,而我的 Matrix Portal 將數(shù)據(jù)從 Adafruit IO 拉回。Adafruit IO 還使您能夠創(chuàng)建儀表板并連接到其他 Web 服務(wù)。出于我們的目的,我們將主要關(guān)注從 Adafruit IO 上的私人訂閱源發(fā)送和檢索數(shù)據(jù)。
如果您想實(shí)現(xiàn) Matrix Portal Marquee 的具體示例,請?jiān)诖颂幾裱局改希?/font>https ://learn.adafruit.com/aio-quote-board-matrix-display/ 。在“為報(bào)價(jià)板編碼”頁面上,它會(huì)逐步指導(dǎo)您如何為您的標(biāo)志創(chuàng)建提要。
在我的例子中,我創(chuàng)建了兩個(gè)提要:一個(gè)用于文本(稱為 signtext),一個(gè)用于顏色(稱為 signcolor)。創(chuàng)建這兩個(gè)提要后,我將它們分配給我創(chuàng)建的名為“矩陣門戶報(bào)價(jià)”的組。稍后您將需要這些名稱以供參考,因此請記住它們!
--
如果您想將 gform2adafruitIO 用于不同的項(xiàng)目,Adafruit 發(fā)布了許多其他有關(guān) Adafruit IO 的有用指南,無論您的具體要求是什么,它們都將為您提供幫助。這是一系列有用的 Adafruit IO 指南:https ://learn.adafruit.com/series/adafruit-io-basics 。
第 4 步:環(huán)境變量設(shè)置
設(shè)置好 Adafruit IO 帳戶后,您應(yīng)該有一個(gè)用戶名和一個(gè)密鑰。我將向您展示如何將這些安全地存儲(chǔ)為環(huán)境變量,這樣您就不會(huì)意外地將這些私人信息發(fā)布到網(wǎng)絡(luò)上。該程序使用 python-dotenv 包來執(zhí)行此操作。
要設(shè)置環(huán)境變量,請?jiān)诳寺〈鎯?chǔ)庫的目錄中創(chuàng)建一個(gè)名為“.env”的文件。在您喜歡的文本編輯器中打開此文件,并按以下格式提供您的用戶名和密鑰:
ADAFRUIT_IO_KEY=<put_your_adafruit_io_key_here>
ADAFRUIT_IO_USERNAME=<put_your_adafruit_io_username_here>
你們都完成了!Python 腳本將成功地將您的信息導(dǎo)入代碼中。如果您曾經(jīng)將代碼發(fā)布到 GitHub,default.gitignore 文件將自動(dòng)知道排除您的 .env 文件,這樣您的私鑰就不會(huì)與大眾共享!
第 5 步:修改代碼
現(xiàn)在,您需要對(duì)代碼進(jìn)行一些細(xì)微的修改,以使其適用于您的特定情況。
更新您的 .csv 文件的 URL。
- 修改變量 CSV_URL 以指向您的 Google 表格發(fā)布 .csv 文件的 URL。
- CSV_URL = ""
設(shè)置要存儲(chǔ)的最大報(bào)價(jià)數(shù)。
- 修改變量 MAX_QUOTES 以控制要存儲(chǔ)在 Adafruit IO Feed 中的最大報(bào)價(jià)數(shù)
- MAX_QUOTES =
- 如果您指定 10,它將保留 10 個(gè)最近的報(bào)價(jià)/顏色
設(shè)置 Adafruit IO feed 的名稱。分組時(shí),feed 的名稱格式為:“group_name.feed_name”。
- TEXT_FEED = 'matrix-portal-quotes.signtext'
- COLOR_FEED = 'matrix-portal-quotes.signcolor'
- 就我而言,我有兩個(gè)提要:一個(gè)用于文本,一個(gè)用于顏色。
- 我在 Adafruit IO 門戶中將它們組合在一起。
如果您將此代碼用于完全不同的項(xiàng)目,您還需要修改 processing() 函數(shù)。我的處理函數(shù)將表單數(shù)據(jù)組織成一個(gè)帶標(biāo)簽的字典結(jié)構(gòu)。然后它會(huì)檢查以確保顏色有效并且文本沒有褻瀆。您將需要更改 processing() 以滿足您的需求。
第 6 步:執(zhí)行程序
要查看源代碼,請?jiān)L問此 Github 存儲(chǔ)庫。
程序說明
以下是程序每個(gè)功能的功能描述:
fetch_form_data()
- 使用 requests 庫下載 Google Sheet 的.csv 文件。
- 將下載的文件與上次檢索的文件進(jìn)行比較,以查看是否有新的提交數(shù)據(jù)。
- 如果有新數(shù)據(jù),則繼續(xù)對(duì)其進(jìn)行處理。否則,程序結(jié)束。
加工()
- 將表單數(shù)據(jù)組織成字典結(jié)構(gòu)。
- 調(diào)用 color_check() 處理顏色數(shù)據(jù)并查看它是否有效。
- 調(diào)用 profanity_check() 來處理文本數(shù)據(jù)并查看它是否沒有褻瀆。
adafruitIOaccess()
- 使用 Rest API 與 Adafruit IO 連接。
- 從文本和顏色提要中提取現(xiàn)有值。
- 將新值添加到這些提要中。
- 如果值超過了值的最大限制,則從這些提要中刪除它們。
更新文件()
- 成功完成所有其他任務(wù)后,用當(dāng)前下載的.csv 覆蓋以前的下載.csv 以供下次執(zhí)行。
以下是運(yùn)行代碼的 2 種不同方式的描述。
第一個(gè) if __name__ == "__main__": 選項(xiàng):
- 程序只執(zhí)行一次然后存在。非常適合安排腳本運(yùn)行。
- 我的腳本在 Raspberry Pi 上運(yùn)行并使用 cron 進(jìn)行調(diào)度。使用此工具來計(jì)算調(diào)度。
- 下面我將展示如何向 cron 添加任務(wù)以安排腳本每 30 分鐘運(yùn)行一次。
sudo crontab -e
*/30 * * * * /usr/bin/python3 /home/pi/Documents/gform2adafruitIO/gform2adafruitIO.py
第二個(gè) if __name__ == "__main__": 選項(xiàng):
- 程序永遠(yuǎn)在循環(huán)中重復(fù)執(zhí)行。執(zhí)行之間有一個(gè)睡眠間隔。
- 通過修改此行設(shè)置睡眠間隔(以秒為單位): INTRVL = 1800
- 下面我展示如何調(diào)用程序。
python3 gform2adafruitIO.py
第 7 步:Adafruit 矩陣門戶信息
![pYYBAGNzbziADY1QAAE5yjJikSo356.jpg](https://file.elecfans.com/web2/M00/7B/47/pYYBAGNzbziADY1QAAE5yjJikSo356.jpg)
如果您想使用 Adafruit Matrix Portal 運(yùn)行這個(gè)特定的 Marquee Sign 示例,請查看以下鏈接。這些指南將引導(dǎo)您了解如何設(shè)置 Matrix 門戶以及如何在 Adafruit IO 中設(shè)置提要。
Adafruit Matrix 門戶產(chǎn)品頁面:https ://www.adafruit.com/product/4745
一般 Adafruit 矩陣門戶信息:https ://learn.adafruit.com/adafruit-matrixportal-m4
自定義滾動(dòng)報(bào)價(jià)教程:https ://learn.adafruit.com/aio-quote-board-matrix-display
第 8 步:更多項(xiàng)目
更多項(xiàng)目,請?jiān)L問我的頁面:
- 使用Adafruit IO的無線警鈴
- 將傳感器數(shù)據(jù)從Helium設(shè)備路由到Google表格
- 帶有Adafruit IO的太陽能氣象站
- 使用Google Assistant和Adafruit IO實(shí)現(xiàn)家庭自動(dòng)化
- 使用Python和JQWidgets控制Adafruit NeoPixels
- 如何將微控制器和adafruit.io儀表板連接到外部應(yīng)用程序
- 基于Python的實(shí)時(shí)嵌入式軟件測試腳本總結(jié)
- 帶有Adafruit_IO的氣象站監(jiān)視器源碼 9次下載
- 從Excel到Python數(shù)據(jù)分析進(jìn)階指南資源下載 0次下載
- Python學(xué)習(xí)手冊免費(fèi)下載 9次下載
- Python學(xué)習(xí)手冊免費(fèi)下載 26次下載
- python2與python3到底有什么區(qū)別 4次下載
- 如何使用python將txt文件導(dǎo)入到mysql的應(yīng)用實(shí)例 12次下載
- Python的學(xué)習(xí)資料總結(jié)教程 18次下載
- Python人工智能教程讓你從入門到踐 99次下載
- 利用Python腳本登錄到交換機(jī)并創(chuàng)建VLAN 606次閱讀
- 使用Python腳本備份華為交換機(jī)的配置信息 630次閱讀
- python解析netflow數(shù)據(jù)到csv的流程詳解 703次閱讀
- 通過Python腳本實(shí)現(xiàn)WIFI密碼的自動(dòng)猜解 3563次閱讀
- 西門子博圖GET_NAME讀取IO設(shè)備或DP從站的名稱 3991次閱讀
- 如何解決表單重復(fù)提交的問題 1196次閱讀
- 使用Python腳本實(shí)現(xiàn)自動(dòng)化運(yùn)維任務(wù) 1736次閱讀
- Python怎么玩轉(zhuǎn)JS腳本 1157次閱讀
- 如何通過Python腳本批量采集華為交換機(jī)配置 5221次閱讀
- 10個(gè)殺手級(jí)的Python自動(dòng)化腳本分享 773次閱讀
- 用Python寫SecureCRT批量登錄/巡檢網(wǎng)絡(luò)設(shè)備腳本 4647次閱讀
- 一次學(xué)會(huì)使用Adafruit IO平臺(tái)! 4491次閱讀
- 通過Python腳本實(shí)現(xiàn)WIFI密碼的暴力破解 6754次閱讀
- Python爬蟲8個(gè)常用的爬蟲技巧分析總結(jié) 5119次閱讀
- 如何快速學(xué)會(huì)Python?利用Python進(jìn)行數(shù)據(jù)分析 1.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論