Модуль ESP подключился и работал в PostgreSQL в Heroku - PullRequest
0 голосов
/ 05 сентября 2018


Я хочу поместить запись в базу данных 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, я должен дать его снова, но не могу зарегистрировать ответ командной строки, поступающей из с другой стороны, например «пожалуйста, введите пароль».

Да, я помог себе с переводчиком, я говорю по-польски.

1 Ответ

0 голосов
/ 08 сентября 2018

client.print() для записи некоторых данных в WifiClient. Я думаю, что это какая-то команда в базе данных. Если вам нужно добавить данные в базу данных PostgreSQL, вы можете создать некоторую конечную точку API с запросами SQL. Это решит вашу проблему.

См. Этот репо

Это объясняет, как создать API-интерфейс NodeJS для сбора данных, отправленных из ESP8266, и записи их в базу данных Firebase. Вы можете клонировать его и изменить часть базы данных. Часть Arduino такая же, и вам нужно установить библиотеку ArduinoJSON. Надеюсь, вы понимаете.

...