RaspberryPiやらESP32からGoogleスプレッドシートに書いてみる(その2)書き込み処理
書き込み処理はhttp GETで処理をするので簡単ですよ。💪
1、RaspberryPiの処理(python)
import requests
testvalue =10
gasWriteUrl = 'https://script.google.com/macros/s/[自分のキー]/\
exec?temperature={}'.format(testvalue)
response = requests.get(gasWriteUrl)
formatを使って数値を代入してますが、最小限のプログラムであれば3行ですね。
import requests
gasWriteUrl = 'https://script.google.com/macros/s/[自分のキー]/exec?temperature=10'
response = requests.get(gasWriteUrl)
書き込み数値を増やしたい時は&でクリエー文字を追加していきます。ちなみにこのクリエー文字はgoogleのスプレットシートのスプリクトを作ったときに定義した変数です。
このプログラムはpythonで書いてあるのでパソコンでも動きますし、googleクラウドでpythonが実行できるColaboratoryでも動きます。
2、ESP32の処理
プログラムの根幹がLINEへメッセージを送るプログラムと同じです。
http GETでURLを送る部分はArduinoのスケッチ例にあるWiFiClientSecureの送信部分です。
#include <WiFi.h>
#include <WiFiClientSecure.h>
const char ssid[] = "your ssdi"; // SSID
const char pass[] = "your password"; // password
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(0, INPUT_PULLUP); // Initialize the BUILTIN_LED pin as an output
//wifi
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
while( WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.printf(".");
}
Serial.println("\nwifi connect ok");
}
int gasSend(int testData) {
const char* host = "script.google.com";
WiFiClientSecure client;
Serial.println("Try");
//LineのAPIサーバに接続
if (!client.connect(host, 443)) {//httpsはポート443
Serial.println("Connection failed");
return(0);
}
Serial.println("Connected");
String URL ="https://script.google.com/macros/s/[自分のキー]/exec?&temperature=" + String(testData);
Serial.println(URL);
client.println("GET " + URL + " HTTP/1.1");
client.println("Host: " + String(host));
client.println("Connection: close");
client.println();
while (client.connected()) {
String line = client.readStringUntil('\n');
if (line == "\r") {
Serial.println("headers received");
break;
}
}
// if there are incoming bytes available
// from the server, read them and print them:
while (client.available()) {
char c = client.read();
Serial.write(c);
}
client.stop();
}
void loop() {
int count=0,testData=0;
while(1){
// put your main code here, to run repeatedly:
int a=digitalRead(0);
if(a==0) {
count++;
if(count > 250){count =250;}
}else{
count=0;
}
if(count ==2){
gasSend(testData);
testData++;
}
delay(100);
}
}
3、まとめ
ESP32をネット接続すればSPIFFSなどにデータを溜め込まなくても、計測データのセーブはできそうですね。💮
googleの使用制限なども調べてみたのですが、どれに該当するのかどれに該当するのがイマイチ分かりませんですした。
これっぽい感じもするのですが、無料だと総実行時間90分ということになりますね。GASのスプレットシートに作成したスプリクトの実行時間がどのくらいなのか分からないけど、個人で利用するにはほぼ無限に使えそうな感じもします。
有料プランであればその7倍近い時間になりますね。
では🤚
この記事が気に入ったらサポートをしてみませんか?