Wert in eine Externe Datenbank

Hallo Community,

ich bin an verzweifeln, wie bekomme ich diesen PH Wert in eine Externe DB geschrieben?

const int analogInPin = A0; 
int sensorValue = 0; 
unsigned long int avgValue; 
float b;
int buf[10],temp;
void setup() {
 Serial.begin(9600);
}
 
void loop() {
 for(int i=0;i<10;i++) 
 { 
  buf[i]=analogRead(analogInPin);
  delay(10);
 }
 for(int i=0;i<9;i++)
 {
  for(int j=i+1;j<10;j++)
  {
   if(buf[i]>buf[j])
   {
    temp=buf[i];
    buf[i]=buf[j];
    buf[j]=temp;
   }
  }
 }
 avgValue=0;
 for(int i=2;i<8;i++)
 avgValue+=buf[i];
 float pHVol=(float)avgValue*5.0/1024/6;
 float phValue = -5.69 * pHVol + 21.34;
 Serial.print("PH Wert = ");
 Serial.println(phValue);
 
 delay(2000);
}

Wifi ist vorhanden ESP32 oder NodeMCU

nowin:
ich bin an verzweifeln, wie bekomme ich diesen PH Wert in eine Externe DB geschrieben?

Kommt darauf an ...

Wifi ist vorhanden ESP32 oder NodeMCU

Ohne Cloud kommst Du nicht einmal bis zum nächsten Kiosk :wink:

Deine Frage ist zu unspezifisch.

Gruß

Gregor

@TO: Was meinst Du mit externe DB? Welche DB?

a) bei Dir im lokalen Netz
b) bei einem Provider im Netz, wo Du einen Webserver hast? Läßt dieser DB-Zugriffe von überall her zu?

Gruß Tommy

Hi,
danke für die Antworten.

Datenbank ist auf einem Externen Server und nur mit der IP von der Homeanbindung und User und Passwort erreichbar.

Beispiel:

#include <ESP8266WiFi.h>[color=#222222][/color]
#include <Hash.h>[color=#222222][/color]
#include <MySQL.h>[color=#222222][/color]
[color=#222222][/color]
// weil ich faul bin[color=#222222][/color]
#define sp Serial.print[color=#222222][/color]
#define spn Serial.println[color=#222222][/color]
[color=#222222][/color]
// WLAN[color=#222222][/color]
// das bitte ändern[color=#222222][/color]
// <= 31 Zeichen[color=#222222][/color]
char *ssid = "meineSSID";[color=#222222][/color]
// >= 8 oder <= 63 Zeichen oder NULL[color=#222222][/color]
char *password = "geheim123456";[color=#222222][/color]
[color=#222222][/color]
// DB[color=#222222][/color]
char *server_addr = "192.168.178.5";[color=#222222][/color]
static char user[] = "lol"; // SQL-Nutzer[color=#222222][/color]
static char dbpassword[] = "lol"; // SQL Kennwort[color=#222222][/color]
static char db[] = "phwert";[color=#222222][/color]
const char ins1[] = "insert into phwert (tmst, intval, strval, floatval) values(now(),";[color=#222222][/color]
Connector my_conn;

Ich weiß nicht, wo Du Deinen Code her hast, aber mit den ganzen color-Tags ist der weder lesbar, noch kompilierfähig. Korrigiere das bitte.

Ansonsten hast Du 2 mögliche Wege:

  1. Auf dem fernen Webserver ein Programm (z.B. PHP), das die Daten aus einem GET- oder POST-Request entgegen nimmt und in die DB einträgt. Dazu nutzt Du den HTTP(S)-Client Deines ESP.

  2. Falls es eine MySQL/MariaDB ist (die Frage hast Du ignoriert), kannst Du diese Direktzugriffslib nutzen.

Gruß Tommy

Hi,
ja mysql sorry

hier ein Beispiel

#include <ESP8266WiFi.h>
#include <Hash.h>
#include <MySQL.h>

// weil ich faul bin
#define sp Serial.print
#define spn Serial.println

// WLAN
// das bitte ändern
// <= 31 Zeichen
char *ssid = “meineSSID”;
// >= 8 oder <= 63 Zeichen oder NULL
char *password = “geheim123456”;

// DB
char *server_addr = “192.168.178.5”;
static char user = “arduino”; // SQL-Nutzer
static char dbpassword = “ardu”; // SQL Kennwort
static char db = “ardutest”;
const char ins1 = “insert into ardu1 (tmst, intval, strval, floatval) values(now(),”;
Connector my_conn;

void setup() {
boolean erg;
sp(115200);
spn("\nStart");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
sp(".");
}

spn("\nConnected to Wifi. Connecting to database . . .");
if (my_conn.mysql_connect(server_addr, 3306, user, dbpassword)) {
spn(“Connection ok.”);
delay(500);
}
else
spn(“Connection failed.”);

erg = my_conn.cmd_query(“use ardutest”);
spn(“use ardutest”);
erg = my_conn.cmd_query(“insert into ardu1 (tmst, intval, strval, floatval) values( now(),11,‘Text54’,5.44)”);
spn(“insert”);
my_conn.disconnect();

}

void loop() {

}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter oder gehe in der IDE auf Bearbeiten - Für Forum kopieren und füge es hier ein).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Das von Dir kopierte Beispiel von mir ist stark veraltet. Nutze unbedingt die aktuelle Version der Lib und orientiere Dich an den dort gezeigten Beispielen. Ich habe Dir den Link geschrieben, weil er auf die aktuellste Version verweist.

Gruß Tommy

nowin:
hier ein Beispiel

Na da stehts doch in der letzten Nachricht drin...

Du hast noch immer nicht beschrieben, was Dein Problem ist.
Bekommst Du das INSERT nicht gebaut?
Bekommst Du den Connect nicht hin?

Aus Deinem Code:

const char ins1[] = "insert into ardu1 (tmst, intval, strval, floatval) values(now(),";
[...]
  erg = my_conn.cmd_query("insert into ardu1 (tmst, intval, strval, floatval) values( now(),11,'Text54',5.44)")

Du baust Dir was und verwendest es nicht - ok, kann man machen.

Der Rest ist original Tommy sein Code von 2017.

hi,

ich bekomme den insert von meinem Code nicht hin, das andere war nur ein Beispiel.

Dann solltest Du evtl. mal etwas ausführlicher werden und Dein Insert-SQL darstellen.
Hast Du es mal in einem SQL-Client (HeidiSQL,DBeaver) getestet?

Gruß Tommy