168 lines
4.9 KiB
C++
168 lines
4.9 KiB
C++
/*********************************************************************************************************************************
|
|
Connect.ino
|
|
|
|
Library for communicating with a MySQL or MariaDB Server
|
|
|
|
Based on and modified from Dr. Charles A. Bell's MySQL_Connector_Arduino Library https://github.com/ChuckBell/MySQL_Connector_Arduino
|
|
to support nRF52, SAMD21/SAMD51, SAM DUE, STM32F/L/H/G/WB/MP1, ESP8266, ESP32, etc. boards using W5x00, ENC28J60, LAM8742A Ethernet,
|
|
WiFiNINA, ESP-AT, built-in ESP8266/ESP32 WiFi.
|
|
|
|
The library provides simple and easy Client interface to MySQL or MariaDB Server.
|
|
|
|
Built by Khoi Hoang https://github.com/khoih-prog/MySQL_MariaDB_Generic
|
|
Licensed under MIT license
|
|
**********************************************************************************************************************************/
|
|
|
|
/*
|
|
MySQL Connector/Arduino Example : connect
|
|
|
|
This example demonstrates how to connect to a MySQL server from an
|
|
Arduino using an Arduino-compatible Ethernet shield. Note that "compatible"
|
|
means it must conform to the Ethernet class library or be a derivative
|
|
with the same classes and methods.
|
|
|
|
For more information and documentation, visit the wiki:
|
|
https://github.com/ChuckBell/MySQL_Connector_Arduino/wiki.
|
|
|
|
INSTRUCTIONS FOR USE
|
|
|
|
1) Change the address of the server to the IP address of the MySQL server
|
|
2) Change the user and password to a valid MySQL user and password
|
|
3) Connect a USB cable to your Arduino
|
|
4) Select the correct board and port
|
|
5) Compile and upload the sketch to your Arduino
|
|
6) Once uploaded, open Serial Monitor (use 115200 speed) and observe
|
|
|
|
If you do not see messages indicating you have a connection, refer to the
|
|
manual for troubleshooting tips. The most common issues are the server is
|
|
not accessible from the network or the user name and password is incorrect.
|
|
|
|
Note: The MAC address can be anything so long as it is unique on your network.
|
|
|
|
Created by: Dr. Charles A. Bell
|
|
*/
|
|
|
|
#include "defines.h"
|
|
|
|
#include <MySQL_Generic.h>
|
|
|
|
#define USING_HOST_NAME true
|
|
|
|
#if USING_HOST_NAME
|
|
// Optional using hostname, and Ethernet built-in DNS lookup
|
|
char server[] = "your_account.ddns.net"; // change to your server's hostname/URL
|
|
#else
|
|
IPAddress server(192, 168, 2, 112);
|
|
#endif
|
|
|
|
uint16_t server_port = 5698; //3306;
|
|
|
|
char default_database[] = "world";
|
|
|
|
char user[] = "invited-guest"; // MySQL user login username
|
|
char password[] = "the-invited-guest"; // MySQL user login password
|
|
|
|
MySQL_Connection conn((Client *)&client);
|
|
|
|
void initEthernet()
|
|
{
|
|
#if USE_NATIVE_ETHERNET
|
|
MYSQL_DISPLAY(F("======== USE_NATIVE_ETHERNET ========"));
|
|
#elif USE_QN_ETHERNET
|
|
MYSQL_DISPLAY(F("=========== USE_QN_ETHERNET ==========="));
|
|
#endif
|
|
|
|
#if USE_NATIVE_ETHERNET
|
|
|
|
// start the ethernet connection and the server:
|
|
// Use DHCP dynamic IP and random mac
|
|
uint16_t index = millis() % NUMBER_OF_MAC;
|
|
// Use Static IP
|
|
//Ethernet.begin(mac[index], ip);
|
|
Ethernet.begin(mac[index]);
|
|
|
|
MYSQL_DISPLAY(F("========================="));
|
|
|
|
MYSQL_DISPLAY1("Using mac index =", index);
|
|
MYSQL_DISPLAY1("Connected! IP address:", Ethernet.localIP());
|
|
|
|
// give the Ethernet shield 2 seconds to initialize:
|
|
delay(2000);
|
|
|
|
#else
|
|
|
|
#if USING_DHCP
|
|
// Start the Ethernet connection, using DHCP
|
|
Serial.print("Initialize Ethernet using DHCP => ");
|
|
Ethernet.begin();
|
|
#else
|
|
// Start the Ethernet connection, using static IP
|
|
Serial.print("Initialize Ethernet using static IP => ");
|
|
Ethernet.begin(myIP, myNetmask, myGW);
|
|
Ethernet.setDNSServerIP(mydnsServer);
|
|
#endif
|
|
|
|
if (!Ethernet.waitForLocalIP(5000))
|
|
{
|
|
Serial.println("Failed to configure Ethernet");
|
|
|
|
if (!Ethernet.linkStatus())
|
|
{
|
|
Serial.println("Ethernet cable is not connected.");
|
|
}
|
|
|
|
// Stay here forever
|
|
while (true)
|
|
{
|
|
delay(1);
|
|
}
|
|
}
|
|
|
|
if (!Ethernet.waitForLink(5000))
|
|
{
|
|
Serial.println(F("Failed to wait for Link"));
|
|
}
|
|
else
|
|
{
|
|
Serial.print("IP Address = ");
|
|
Serial.println(Ethernet.localIP());
|
|
}
|
|
|
|
#endif
|
|
}
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(115200);
|
|
while (!Serial && millis() < 5000); // wait for serial port to connect
|
|
|
|
MYSQL_DISPLAY2("\nStarting Connect on", BOARD_NAME, SHIELD_TYPE);
|
|
MYSQL_DISPLAY(MYSQL_MARIADB_GENERIC_VERSION);
|
|
|
|
initEthernet();
|
|
|
|
MYSQL_DISPLAY3("Connecting to SQL Server @", server, ", Port =", server_port);
|
|
MYSQL_DISPLAY3("User =", user, ", PW =", password);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
MYSQL_DISPLAY("Connecting...");
|
|
|
|
//if (conn.connect(server, server_port, user, password, default_database))
|
|
if (conn.connectNonBlocking(server, server_port, user, password, default_database) != RESULT_FAIL)
|
|
{
|
|
MYSQL_DISPLAY("Closing connection...");
|
|
conn.close(); // close the connection
|
|
}
|
|
else
|
|
{
|
|
MYSQL_DISPLAY("\nConnect failed. Trying again on next iteration.");
|
|
}
|
|
|
|
MYSQL_DISPLAY("\nSleeping...");
|
|
MYSQL_DISPLAY("================================================");
|
|
|
|
delay(60000);
|
|
}
|