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.
あなたの回答
tips
プレビュー