亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何將數據發送到Google表格

發布時間:2022-01-17 17:10:22 來源:億速云 閱讀:117 作者:柒染 欄目:互聯網科技

如何將數據發送到Google表格,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

在夏天的一個愉快的周末,我沒有去海灘或其他地方,而是呆在家里,想知道是否可以使用我最喜歡的MicroPython從ESP板發送數據到Google表格。假設它可以發送由DHT22傳感器測量的溫度和濕度。這就是項目的開始。

如何將數據發送到Google表格

在谷歌上快速搜索后顯示,這不是一個新想法,并且已經有人實施從ESP板發送數據到Google表格。我讀了幾篇關于這個主題的文章,我發現了所有項目做了兩件事:要么項目需要在互聯網上公開發布Google表格,要么項目使用PushingBox或IFTTT等中間件將數據插入表格。

但是Google表格提供了很棒的HTTP API,為什么我們不能只發送一個POST請求來將數據插入到工作表中?原因是Google表格API關注安全性并需要身份驗證。特別是,Google Sheet API支持兩種身份驗證方法:API密鑰和OAuth3令牌。使用API密鑰聽起來很簡單:我們可以在Google IAM控制臺中創建一個API密鑰,在我們的ESP板上編碼,忘記旋轉密鑰和安全性,并永遠使用密鑰。不幸的是(或者說幸運的是)它不會起作用。Google Sheet API僅允許API鍵進行讀取操作。如果要寫入工作表,則必須使用OAuth3。

這里出現了問題。首先,您需要在Google IAM控制臺中創建一個服務帳戶,然后為該服務帳戶創建一個私有RSA密鑰。好的,那并不難。然后,您的ESP板必須構建一個JWT請求,將當前時間戳放入其中,并使用RSA-SHA256簽名算法使用密鑰對請求進行簽名。接下來,板子必須將簽名的JWT請求發送到Google OAuth3服務,該服務最終返回OAuth3令牌。最后使用令牌來調用Google表格API。

讓我快速總結一下ESP板能夠在Google表格中插入一行需要的內容:HTTP客戶端、JSON解析器、具有正確時間的實時時鐘或NTP客戶端,以及RSA-SHA256簽名的實現算法。幸運的是,MicroPython提供了除RSA-SHA256簽名之外的大部分內容。確切地說,MicroPython可以計算SHA256哈希,但不能使用RSA算法對數據進行簽名。此外,RSA簽名是一項昂貴的操作,可能需要相當多的時間和內存,但ESP板并不像PC那么強大,也沒有太多的內存。

我猜想Google身份驗證帶來的復雜性以及缺少MicroPython的RSA,讓人們使用了一個公開的表單或一個可以實現認證過程的中間件服務。當然,作為一名安全工程師,我無法接受一個包含公共可用表格的解決方案,其中包含我房間內溫度和濕度等敏感數據。因為我是一名安全工程師,所以我不喜歡中間件。最后,唯一的選擇是以某種方式在ESP板上實現上述認證過程。

正如我之前提到的,MicroPython已經提供了大部分必需的東西:

  • ujson允許解析JSON

  • ntptime.py提供NTP客戶端

  • uhashlib可以計算SHA256哈希值

  • http.client提供了一個HTTP客戶端

唯一缺少的部分是RSA簽名。密碼學的一個主要規則是:不要自己實現任何加密算法,而是使用現有的算法。我知道這個規則,并發現python-rsa包在純Python中實現了RSA算法。除了使用RSA進行簽名之外,該庫還支持其他操作,例如驗證簽名,加密和解密,加載和存儲密鑰等。這個庫對于一個小型的ESP板來說負擔太重了,我決定只保留RSA簽名的實現并刪除剩下的代碼。我甚至刪除了以PKCS1格式加載RSA密鑰的代碼,因為它需要移植一個不小的pyasn1包。我還必須基于從右到左的二進制方法和其他一些操作來實現模塊化求冪,因為事實證明它們不是由MicroPython提供的。它產生了一個新的micropython-rsa簽名庫。

我使用ESP8266和MicroPython以前的一個項目作為起點。在實施身份驗證過程并在我的筆記本電腦上進行測試后,我終于成功用ESP8266主板運行了代碼。不幸的是我發現代碼運行得很慢,主要問題是ESP8266主板沒有足夠的內存來完成RSA簽名。我嘗試了一些優化,甚至嘗試將應用程序代碼嵌入到MicroPython固件中,但沒有任何幫助。

最后的希望是在ESP32上運行代碼。我之前沒有用過ESP32,于是訂購了我的第一個ESP32開發板。幸運的是,它成功了!應用程序不再抱怨內存不足,事實上它運行得更快了。

該代碼可在GitHub上獲得。README簡要描述了如何構建項目。我還在Hackaday.io上創建了一個項目。我希望我能找到一些時間在后續帖子中提供更多細節。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石屏县| 石嘴山市| 修水县| 清流县| 丰县| 宁波市| 平湖市| 高淳县| 伊川县| 嘉禾县| 外汇| 贺兰县| 龙口市| 昔阳县| 罗甸县| 陆河县| 沧源| 宝山区| 东阿县| 水富县| 枣庄市| 仁化县| 北安市| 福建省| 清远市| 申扎县| 乌鲁木齐市| 昌平区| 都安| 武川县| 土默特右旗| 灵璧县| 靖宇县| 徐汇区| 义马市| 马关县| 文山县| 襄樊市| 大城县| 玉溪市| 江口县|