Я хочу поместить запись в базу данных PostgreSQL моего приложения, которое я развертываю через веб-сайт Heroku (RoR).
Мне нужно это сделать с модулем ESP-01 / 12.
Я не могу найти полный пример подключения и выполнения оператора sql в базе данных pg в C.
Мой код:
#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. Я сделал такое подключение с компьютера, та же строка, что и в коде и получил доступ.
Помогите мне, пожалуйста, перейдите в мою базу данных из модуля ESP в C. Я заметил, что, несмотря на ввод пароля после команды psql, я должен ввести его снова, но я не могу зарегистрировать ответ командной строки, поступающий с другой стороны, например «введите пароль».
Да, помогала с переводчиком, говорю по-польски.
client.print()
предназначен для записи некоторых данных в WifiClient. Я думаю, что это какая-то команда в базе данных. Если вам нужно добавить данные в базу данных PostgreSQL, вы можете создать конечную точку API с помощью запросов SQL. Это решит вашу проблему.
Это объясняет, как создать API-интерфейс NodeJS для сбора данных, отправленных с ESP8266, и записи их в базу данных Firebase. Вы можете клонировать его и изменить часть базы данных. Часть Arduino такая же, и вам необходимо установить библиотеку ArduinoJSON
. Надеюсь ты понимаешь.
Не очень-очень короткий и не очень разумный ответ. Если вы знаете что-то конкретное, пожалуйста, расширьте этот ответ. Я все еще работаю над проблемой, и мне, вероятно, нужно использовать SSL от ESP8266, но я действительно не знаю, как это сделать. Думаю, закончится написанием отдельного приложения для загрузки на дектоп :(.