/*#define ESP32*/  /* 必要ないみたい*/ #include #include IPAddress PGIP(192,168,xx,xx);//PostgreSQL IPアドレス const char user[] = "19000"; //データベースユーザ名 const char password[] = "xxxxxxxx";//データベースへ接続するバスワード const char dbname[] = "xxxx";//データベース名 char buffer[1024]; WiFiClient client; PGconnection conn(&client, 0, 1024, buffer); void setup() { /* wifi --dhcp client --connect */ Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin("ssid", "WiFi-password"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.print("WiFi connect: OK "); Serial.print("RSSI:");//WiFi電波強度 Serial.println(WiFi.RSSI()); //ntpサーバへ接続 configTime(9 * 3600L, 0, "192.168.70.2"); displayTime(); } void displayTime(){//現在時刻をシリアルモニタで表示 struct tm timeInfo; char s[32]; getLocalTime(&timeInfo); sprintf(s, " %04d/%02d/%02d %02d:%02d:%02d", timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday, timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec); Serial.println(s); } //======= ここからデータベースに接続 ======= void mypgconnect(void){ conn.setDbLogin(PGIP, user, password, dbname, "utf8", 5432); //wait to connect Serial.print("DB connectiong:"); int rc = conn.status(); while(conn.status()==CONNECTION_AWAITING_RESPONSE){//データベースからの応答待ち delay(10); Serial.print("#"); } rc = conn.status(); if (rc==CONNECTION_BAD || rc==CONNECTION_NEEDED){ char *c=conn.getMessage(); if (c) Serial.println(c); //接続できないときはその理由 } else if(rc==CONNECTION_OK){ Serial.println("CONNECTION_OK");//データベースに接続できました } } void loop() { char sql[64]; displayTime();//現在の時刻をシリアルモニタに表示 mypgconnect();//PostgreSQLに接続 sprintf(sql, "INSERT INTO wifilevel(rssi) VALUES(%4d);",WiFi.RSSI()); conn.execute(sql); //INSERT文を実行 // Serial.print("=="); Serial.print(s); Serial.println("=="); //心配なときはINSERT文をシリアルモニタに表示 conn.close();//接続終了 delay(60000); //60秒待機 }