heroku - ESP 模块连接并在 Heroku 的 PostgreSQL 中工作
问题描述
我想在我通过 Heroku 网站 (RoR) 部署的应用程序的 PostgreSQL 数据库中添加一条记录。我需要使用 ESP-01/12 模块来执行此操作。
我找不到任何在 C 中连接和执行 pg 数据库上的 sql 语句的完整示例。
我的代码:
#include <ESP8266WiFi.h>
/* Wi fi */
const char* ssid = "ssid";
const char* password = "password";
/* database */
const char* host = "***.compute-1.amazonaws.com";
const char* database = "database";
const char* user = "user";
const char* streamId = "???";
const char* privateKey = "password?";
void setup() {
delay(1000);
Serial.begin(115200); delay(10); Serial.println('\n');
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password); Serial.print("Connecting to "); Serial.print(ssid); Serial.println(" ...");
int i = 0;
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(++i); Serial.print(' ');
}
Serial.println("Connection established!");
Serial.print("IP address:\t");
Serial.println(WiFi.localIP());
WiFi.printDiag(Serial);
}
void loop() {
delay(5000);
Serial.print("connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 5432;
if (client.connect(host, httpPort)) {
Serial.println("OK!");
}
client.print("psql -U user --password password? -p 5432 -h host -d database \r\n");
delay(10);
// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
在我看来,我连接到了 5432 端口,但我不知道接下来如何处理下面的行,以获得一些答案:
client.print()
我假设在连接到端口 5432 后,我可以发送显示在另一侧的文本,就像在命令行上一样,并且 psql 程序在那里可用。我从计算机建立了这样的连接,与代码中的行相同,我可以访问。
帮帮我,请从 C 中的 ESP 模块访问我的数据库。我注意到尽管在 psql 命令后输入了密码,但我必须再次输入密码,但我无法注册来自另一端的命令行的答案,例如“请输入密码”。
是的,我帮自己找了个翻译,我会说波兰语。
解决方案
client.print()
就是向WifiClient写入一些数据。我认为是数据库上的一些命令。如果您需要将数据添加到 PostgreSQL 数据库,您可以使用 SQL 查询创建一些 API 端点。它将解决您的问题。
这将解释如何创建一个 NodeJS API 来捕获从 ESP8266 发送的数据并将它们写入 Firebase 数据库。您可以克隆它并更改数据库部分。Arduino 部分是相同的,您需要安装ArduinoJSON
库。希望你能理解。
推荐阅读
- powershell - 如何更改 PowerShell 提示颜色?
- javascript - 如何键入返回对象的常量函数?
- batch-file - 如何从服务获取响应消息并使用批处理文件打印该消息?
- c++ - 运算符重载 - [错误] ld 返回 1 个退出状态
- javascript - D3 v5 - 如何设置文本的背景颜色(仅与文本一样宽)
- reactjs - 如何在 React Js 中从服务器位置下载文件
- javascript - 如何将此代码更改为不同的格式?(Javascript)
- uima - 获取 ruta 中两个带注释标签之间的文本
- sqlite - 如何将多个 SQLite 数据库合并到一个文件或数据库中?
- swift - 使用 Swift 的 for...in 循环中的三个变量