質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

0回答

1567閲覧

マイコンで気温,湿度,気圧取得→Googleスプレッドシートに入力をしたい

aRyo

総合スコア23

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2021/11/07 12:33

編集2021/11/07 13:12

BME280とESPを用いて、気温,湿度,気圧のデータを取得しGoogleスプレッドシートに入力していくプログラムを作成しております。

8月頃に作成したのですが、その頃は動いていました。

しかし、11月になり久しぶりに動かしてみると動いているのですがGoogleスプレッドシートに入力が行われません。

シリアルモニタに表示される作成したURLをコピペしアクセスするとGoogleスプレッドシートには気温,湿度,気圧のデータが記入されます。
つまり、作成されたURLに誤りはないのですが上手くコネクトされていないみたいです。(シリアルモニタ上では”Connected to server!”と記載されています)

前回は、出来たいたのに急に出来なくなったということはGASの仕様が変わってしまったのでしょうか。

ご助言いただけると幸いです。

以下にArduinoとGASのコードを記載いたします。
また、実際のシリアルモニタの表示もコピペしておきます。

Arduino

1 2#include <BME280I2C.h> 3#include <Wire.h> // Needed for legacy versions of Arduino. 4#include <WiFiClientSecure.h> 5 6#define SERIAL_BAUD 115200 7 8const char* ssid = "*********"; 9const char* password = "*********"; 10 11const char* server = "script.google.com"; 12const char* key = "*********"; // google script key 13WiFiClientSecure client; 14 float temp(NAN), hum(NAN), pres(NAN); 15 16 17BME280I2C::Settings settings( 18 BME280::OSR_X1, 19 BME280::OSR_X1, 20 BME280::OSR_X1, 21 BME280::Mode_Forced, 22 BME280::StandbyTime_1000ms, 23 BME280::Filter_Off, 24 BME280::SpiEnable_False, 25 BME280I2C::I2CAddr_0x76 // I2C address. I2C specific. 26); 27 28BME280I2C bme(settings); 29 30////////////////////////////////////////////////////////////////// 31void setup() 32{ 33 Serial.begin(SERIAL_BAUD); 34 35 while(!Serial) {} // Wait 36 37 Wire.begin(); 38 while(!bme.begin()) 39 { 40 Serial.println("Could not find BME280I2C sensor!"); 41 delay(1000); 42 } 43 44 switch(bme.chipModel()) 45 { 46 case BME280::ChipModel_BME280: 47 Serial.println("Found BME280 sensor! Success."); 48 break; 49 case BME280::ChipModel_BMP280: 50 Serial.println("Found BMP280 sensor! No Humidity available."); 51 break; 52 default: 53 Serial.println("Found UNKNOWN sensor! Error!"); 54 } 55 56 // Change some settings before using. 57 settings.tempOSR = BME280::OSR_X4; 58 59 bme.setSettings(settings); 60} 61 62////////////////////////////////////////////////////////////////// 63void loop() 64{ 65 printBME280Data(&Serial); 66 delay(10000);//1分毎に書き込みする 67 68wifi_conect(); 69delay(10000); //4分毎に書き込みする 70 g_acsess(); 71 72 73 74 75 76} 77 78////////////////////////////////////////////////////////////////// 79void printBME280Data 80( 81 Stream* client 82) 83{ 84 85 86 BME280::TempUnit tempUnit(BME280::TempUnit_Celsius); 87 BME280::PresUnit presUnit(BME280::PresUnit_Pa); 88 89 bme.read(pres, temp, hum, tempUnit, presUnit); 90 91 client->print("Temp: "); 92 client->print(temp); 93 client->print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F')); 94 client->print("\t\tHumidity: "); 95 client->print(hum); 96 client->print("% RH"); 97 client->print("\t\tPressure: "); 98 client->print(pres); 99 client->println("Pa"); 100 101 102 103 delay(1000); 104} 105 106 107 108 109void wifi_conect(){ 110 111WiFiServer server(80); 112 // Wi-Fiに接続 113 Serial.print("Attempting to connect to SSID: "); 114 Serial.println(ssid); 115 WiFi.begin(ssid, password); 116 while (WiFi.status() != WL_CONNECTED) { 117 Serial.print("."); 118 // 接続するまで待機する 119 delay(1000); 120 } 121 Serial.print("Connected to "); 122 Serial.println(ssid); 123 Serial.println("IP address: "); 124 Serial.println(WiFi.localIP()); 125 server.begin(); 126 } 127 128 129 130void g_acsess(){ 131 132 133 String URL="https://script.google.com/macros/s/"; 134 URL += key; 135 URL += "/exec?"; 136 URL += "&1_cell="; 137 URL += temp ; 138 URL += "&2_cell="; 139 URL += hum ; 140 URL += "&3_cell="; 141 URL += pres ; 142 143 Serial.println(URL); 144 // サイトにアクセス 145 Serial.println("\nStarting connection to server..."); 146 client.setInsecure(); //証明書を発行せずにパスを通す 147 if (!client.connect(server, 443)){ 148 Serial.println("Connection failed!"); 149 Serial.println(""); 150 return; 151} 152 153 Serial.println("Connected to server!\n"); 154 client.println("GET " + URL); 155 client.stop(); 156 Serial.println("finish."); 157 158}

GAS

1var id = '********'; 2function doGet(e) { 3 4if (e.parameter == undefined) { 5result = 'Parameter undefined'; 6} 7else { 8var sheet = SpreadsheetApp.openById(id).getActiveSheet(); 9var newRow = sheet.getLastRow() + 1; // 次の行に入力する 10var rowData = []; 11rowData[0] = new Date(); //タイムスタンプ 12for (var param in e.parameter) { 13var value = e.parameter[param]; 14rowData[parseInt(param)] = value; 15} 16var newRange = sheet.getRange(newRow, 1, 1, rowData.length); 17newRange.setValues([rowData]); 18var result = 'Ok'// Text des Anworts 19} 20return ContentService.createTextOutput(result); 21}
22:10:22.605 -> Temp: 24.59°C Humidity: 51.15% RH Pressure: 102253.16Pa 22:10:33.580 -> Attempting to connect to SSID: ****** 22:10:33.626 -> Connected to ****** 22:10:33.626 -> IP address: 22:10:33.626 -> ****** 22:10:43.611 -> https://script.google.com/macros/s/********/exec?&1_cell=24.59&2_cell=51.15&3_cell=102253.16 22:10:43.611 -> 22:10:43.611 -> Starting connection to server... 22:10:45.356 -> Connected to server! 22:10:45.356 -> 22:10:45.356 -> finish.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2021/11/07 12:47

削除依頼はあくまで依頼であって、運営側で受理されるかどうかはまた別の話なんだけど...(却下されることも結構あるみたい) とりあえず、「エラーが出て動きません」なら、そのエラーメッセージを転記するのがスジというものでしょう。エラーメッセージというのは、何が起こっているのかを知るための「超重要な情報」なのですから。
aRyo

2021/11/07 13:15

よくわからず質問しておりました。 一応、削除依頼はしておきました。 エラーメッセージと記入しましたが、実際にはエラーは出ておらずプログラムが動いている状態です。 しかし、Googleスプレッドシートは全く更新されていないということです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問