{"id":26614,"date":"2024-06-27T13:55:27","date_gmt":"2024-06-27T06:55:27","guid":{"rendered":"https:\/\/tom.ji42.com\/?p=26614"},"modified":"2024-06-27T13:55:27","modified_gmt":"2024-06-27T06:55:27","slug":"sending-data-from-the-esp8266-to-mysql-directly","status":"publish","type":"post","link":"https:\/\/tom.tomwork.net\/?p=26614","title":{"rendered":"Sending data from the ESP8266 to MySQL directly"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Introduction<\/h2>\n<p>The ESP8266 is a popular programmable microcontroller with a lot of features. One of its main features in the ability to directly connect the microcontroller to WiFi. This gives u the ability to control the microcontroller over the internet using http, MQTT and many other ways. But it also gives u the ability to send data to the internet. In this guide i am going to explain to you how you can connect a ESP8266 based controller with an BME280 directly to an MySQL database without any other connections or servers in-between.<\/p>\n<h2 class=\"wp-block-heading\">Parts required<\/h2>\n<p>-NodeMCU (Other ESP8266 based controllers will also work)<\/p>\n<p>-BME280 sensor (Other sensors will also work but u have to modify the code)<\/p>\n<p>-Breadboard<\/p>\n<p>-Jumper wires<!--more--><\/p>\n<h2 class=\"wp-block-heading\">Schematic<\/h2>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-205\" src=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/sketch.png?resize=741%2C498&amp;ssl=1\" sizes=\"auto, (max-width: 741px) 100vw, 741px\" srcset=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/sketch.png?w=741&amp;ssl=1 741w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/sketch.png?resize=300%2C202&amp;ssl=1 300w\" alt=\"\" width=\"741\" height=\"498\" \/><\/figure>\n<figure class=\"wp-block-table\">\n<table>\n<tbody>\n<tr>\n<td><strong>NodeMCU\/ESP8266<\/strong><\/td>\n<td><strong>BMP280<\/strong><\/td>\n<\/tr>\n<tr>\n<td>3,3v\/5v<\/td>\n<td>VIN<\/td>\n<\/tr>\n<tr>\n<td>GND<\/td>\n<td>GND<\/td>\n<\/tr>\n<tr>\n<td>D1 (SCL)<\/td>\n<td>SCL<\/td>\n<\/tr>\n<tr>\n<td>D2 (SDA)<\/td>\n<td>SDA<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<h2 class=\"wp-block-heading\">Code<\/h2>\n<p>We\u2019re gonna program the ESP8266 using the Arduino IDE. You need to install the ESP8266 board in to the IDE and know how to program to it. For this you can follow the following tutorial:<\/p>\n<p><a href=\"https:\/\/randomnerdtutorials.com\/installing-esp8266-nodemcu-arduino-ide-2-0\/\">https:\/\/randomnerdtutorials.com\/installing-esp8266-nodemcu-arduino-ide-2-0\/<\/a><\/p>\n<p>To be able to connect to MySQL and to use the BME280 you need to install some libraries. Follow the next steps to install these libraries:<\/p>\n<p>-Adafruit BME280 Library (version 2.2.2)<\/p>\n<p>-MySQL MariaDB_Generic (version 1.7.2)<\/p>\n<p>Open the Arduino IDE and go to\u00a0<strong>Sketch -&gt; Include Library -&gt; Manage Libraries.<\/strong>\u00a0Here search for the above Libraries and install them one by one.<\/p>\n<p>After installing the required libraries and making sure your Arduino IDE is set-up copy the following code to your Arduino IDE.\u00a0<strong>Don\u2019t upload it yet<\/strong>. You first need to make some changes to make it work!<\/p>\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-3\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow\">\n<div class=\"wp-block-group is-layout-flow\">\n<div class=\"wp-block-group__inner-container\">\n<pre class=\"wp-block-code language-csharp\" tabindex=\"0\"><code class=\"language-csharp\" lang=\"csharp\"><span class=\"token comment\">\/*\r\n * ioTechProjects.com 2022\r\n * \r\n * ESP8266 to MySQL tutorial\r\n * \r\n * u are free to edit this code\r\n *\/<\/span>\r\n \r\n<span class=\"token preprocessor property\">#include &lt;Wire.h&gt;<\/span>\r\n<span class=\"token preprocessor property\">#include &lt;SPI.h&gt;<\/span>\r\n<span class=\"token preprocessor property\">#include &lt;MySQL_Generic.h&gt;<\/span>\r\n<span class=\"token preprocessor property\">#include &lt;Adafruit_Sensor.h&gt;<\/span>\r\n<span class=\"token preprocessor property\">#include &lt;Adafruit_BME280.h&gt;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Defining BME280 sensor<\/span>\r\n<span class=\"token preprocessor property\">#<\/span><span class=\"token return-type class-name\">define<\/span> SEALEVELPRESSURE_HPA <span class=\"token punctuation\">(<\/span><span class=\"token number\">1013.25<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token class-name\">Adafruit_BME280<\/span> bme<span class=\"token punctuation\">;<\/span> <span class=\"token comment\">\/\/ I2C<\/span>\r\n\r\n<span class=\"token comment\">\/\/ MySQL Debug Level from 0 to 4<\/span>\r\n<span class=\"token preprocessor property\">#<span class=\"token directive keyword\">define<\/span> _MYSQL_LOGLEVEL_      1<\/span>\r\n<span class=\"token preprocessor property\">#<span class=\"token directive keyword\">define<\/span> MYSQL_DEBUG_PORT      Serial<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Network Info<\/span>\r\n<span class=\"token keyword\">char<\/span> ssid<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"WIFI_SSID\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">char<\/span> pass<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"WIFI_PASSWORD\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Database Adress<\/span>\r\n<span class=\"token keyword\">char<\/span> server<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"HOSTNAME OR IP\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token class-name\">uint16_t<\/span> server_port <span class=\"token operator\">=<\/span> PORT<span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Database Account<\/span>\r\n<span class=\"token keyword\">char<\/span> user<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>         <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_NAME\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">char<\/span> password<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>     <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_PASSWORD\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/Database Name<\/span>\r\n<span class=\"token keyword\">char<\/span> database<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_NAME\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">char<\/span> table<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>    <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_TABLE_NAME\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Default insert data values<\/span>\r\n<span class=\"token class-name\"><span class=\"token keyword\">double<\/span><\/span> temperature <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token class-name\"><span class=\"token keyword\">double<\/span><\/span> humidity <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token class-name\"><span class=\"token keyword\">double<\/span><\/span> pressure <span class=\"token operator\">=<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ MySQL something<\/span>\r\n<span class=\"token return-type class-name\">MySQL_Connection<\/span> <span class=\"token function\">conn<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>Client <span class=\"token operator\">*<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">&amp;<\/span>client<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\nMySQL_Query <span class=\"token operator\">*<\/span>query_mem<span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token return-type class-name\"><span class=\"token keyword\">void<\/span><\/span> <span class=\"token function\">setup<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token comment\">\/\/ Initialize status LED<\/span>\r\n  <span class=\"token function\">pinMode<\/span><span class=\"token punctuation\">(<\/span>LED_BUILTIN<span class=\"token punctuation\">,<\/span> OUTPUT<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  \r\n  <span class=\"token comment\">\/\/ Setup Serial<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">begin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">115200<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Begin WiFi section<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"================================================\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Connecting to \"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> ssid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  WiFi<span class=\"token punctuation\">.<\/span><span class=\"token function\">begin<\/span><span class=\"token punctuation\">(<\/span>ssid<span class=\"token punctuation\">,<\/span> pass<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>WiFi<span class=\"token punctuation\">.<\/span><span class=\"token function\">status<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">!=<\/span> WL_CONNECTED<span class=\"token punctuation\">)<\/span>\r\n  <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function\">delay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">500<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\".\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Print out info about the WiFi connection<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Connected to network. My IP address is: \"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span>WiFi<span class=\"token punctuation\">.<\/span><span class=\"token function\">localIP<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Test MySQL connection<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Connecting to SQL Server @ \"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\", Port = \"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> server_port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"User = \"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> user <span class=\"token operator\">+<\/span> <span class=\"token function\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\", PW = \"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> password <span class=\"token operator\">+<\/span> <span class=\"token function\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\", DB = \"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> database<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Testing BME280 Sensor<\/span>\r\n  <span class=\"token class-name\">unsigned<\/span> status<span class=\"token punctuation\">;<\/span>\r\n  status <span class=\"token operator\">=<\/span> bme<span class=\"token punctuation\">.<\/span><span class=\"token function\">begin<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0x76<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>status<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Could not find a valid BME280 sensor, check wiring, address, sensor ID!\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"SensorID was: 0x\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span>bme<span class=\"token punctuation\">.<\/span><span class=\"token function\">sensorID<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"        ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\\n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"   ID of 0x56-0x58 represents a BMP 280,\\n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"        ID of 0x60 represents a BME 280.\\n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"        ID of 0x61 represents a BME 680.\\n\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">delay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n\r\n\r\n<span class=\"token return-type class-name\"><span class=\"token keyword\">void<\/span><\/span> <span class=\"token function\">loop<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token punctuation\">{<\/span>\r\n  <span class=\"token comment\">\/\/ Turn on status LED<\/span>\r\n  <span class=\"token function\">digitalWrite<\/span><span class=\"token punctuation\">(<\/span>LED_BUILTIN<span class=\"token punctuation\">,<\/span> LOW<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Measuring data<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"================================================\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Measuring data...\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token function\">delay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">500<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  \r\n  temperature <span class=\"token operator\">=<\/span> bme<span class=\"token punctuation\">.<\/span><span class=\"token function\">readTemperature<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  pressure <span class=\"token operator\">=<\/span> bme<span class=\"token punctuation\">.<\/span><span class=\"token function\">readPressure<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">100.0F<\/span><span class=\"token punctuation\">;<\/span>\r\n  humidity <span class=\"token operator\">=<\/span> bme<span class=\"token punctuation\">.<\/span><span class=\"token function\">readHumidity<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  \r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Temperature = \"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>temperature<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\" \u00b0C\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Pressure = \"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>pressure <span class=\"token operator\">\/<\/span> <span class=\"token number\">100.0F<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\" hPa\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Humidity = \"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>humidity<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\" %\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"================================================\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ change Insert Query with new data<\/span>\r\n  <span class=\"token class-name\">String<\/span> INSERT_SQL <span class=\"token operator\">=<\/span> <span class=\"token function\">String<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"INSERT INTO \"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> database <span class=\"token operator\">+<\/span> <span class=\"token string\">\".\"<\/span> <span class=\"token operator\">+<\/span> table <span class=\"token operator\">+<\/span> <span class=\"token string\">\" (temperature, humidity, pressure) VALUES (\"<\/span> <span class=\"token operator\">+<\/span> temperature <span class=\"token operator\">+<\/span> <span class=\"token string\">\",\"<\/span> <span class=\"token operator\">+<\/span> humidity <span class=\"token operator\">+<\/span> <span class=\"token string\">\",\"<\/span> <span class=\"token operator\">+<\/span> pressure <span class=\"token operator\">+<\/span> <span class=\"token string\">\")\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Insert data in to database<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Connecting to MySQL...\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>conn<span class=\"token punctuation\">.<\/span><span class=\"token function\">connectNonBlocking<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">,<\/span> server_port<span class=\"token punctuation\">,<\/span> user<span class=\"token punctuation\">,<\/span> password<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">!=<\/span> RESULT_FAIL<span class=\"token punctuation\">)<\/span>\r\n  <span class=\"token punctuation\">{<\/span>\r\n    <span class=\"token function\">delay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">500<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    <span class=\"token comment\">\/\/ Initiate the query class instance<\/span>\r\n    <span class=\"token class-name\">MySQL_Query<\/span> query_mem <span class=\"token operator\">=<\/span> <span class=\"token function\">MySQL_Query<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span>conn<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>conn<span class=\"token punctuation\">.<\/span><span class=\"token function\">connected<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\r\n    <span class=\"token punctuation\">{<\/span>\r\n      Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span>INSERT_SQL<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n      <span class=\"token comment\">\/\/ Execute the query<\/span>\r\n      <span class=\"token comment\">\/\/ KH, check if valid before fetching<\/span>\r\n      <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span> <span class=\"token operator\">!<\/span>query_mem<span class=\"token punctuation\">.<\/span><span class=\"token function\">execute<\/span><span class=\"token punctuation\">(<\/span>INSERT_SQL<span class=\"token punctuation\">.<\/span><span class=\"token function\">c_str<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">)<\/span>\r\n        Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Insert error\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n      <span class=\"token keyword\">else<\/span>\r\n        Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Data Inserted.\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    <span class=\"token punctuation\">}<\/span>\r\n    <span class=\"token keyword\">else<\/span>\r\n    <span class=\"token punctuation\">{<\/span>\r\n      Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Disconnected from Server. Can't insert.\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n    <span class=\"token punctuation\">}<\/span>\r\n    conn<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>                     <span class=\"token comment\">\/\/ close the connection<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n  <span class=\"token keyword\">else<\/span>\r\n  <span class=\"token punctuation\">{<\/span>\r\n    Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\\nConnect failed. Trying again on next iteration.\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token punctuation\">}<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Turn off status LED<\/span>\r\n  <span class=\"token function\">digitalWrite<\/span><span class=\"token punctuation\">(<\/span>LED_BUILTIN<span class=\"token punctuation\">,<\/span> HIGH<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n  <span class=\"token comment\">\/\/ Sleep till next data measure and insert<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"================================================\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  Serial<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\\nSleeping...\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n  <span class=\"token function\">delay<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5000<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Code changes<\/h2>\n<p>Now you need to change the following values in the code to your values.<\/p>\n<p>After u done this you can upload the code. It should now connect to your WiFi network and connect to your database. Now there is only one thing for us to do and set up the right database structure so that our ESP8266 can write data to MySQL.<\/p>\n<pre class=\"wp-block-code language-csharp\" tabindex=\"0\"><code class=\"language-csharp\" lang=\"csharp\"><span class=\"token comment\">\/\/ Network Info<\/span>\r\n<span class=\"token keyword\">char<\/span> ssid<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"WIFI_SSID\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">char<\/span> pass<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"WIFI_PASSWORD\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Database Adress<\/span>\r\n<span class=\"token keyword\">char<\/span> server<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"HOSTNAME OR IP\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token class-name\">uint16_t<\/span> server_port <span class=\"token operator\">=<\/span> PORT<span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/ Database Account<\/span>\r\n<span class=\"token keyword\">char<\/span> user<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>         <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_NAME\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">char<\/span> password<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>     <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_PASSWORD\"<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/\/Database Name<\/span>\r\n<span class=\"token keyword\">char<\/span> database<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_NAME\"<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">char<\/span> table<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>    <span class=\"token operator\">=<\/span> <span class=\"token string\">\"DATABASE_TABLE_NAME\"<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n<h2 class=\"wp-block-heading\">Database requirements<\/h2>\n<p>Our ESP8266 needs a MySQL database to store it\u2019s data. We\u2019re now going to set up the structure of the database. Assuming you already have an MySQL phpmyadmin host or set up your own server.<\/p>\n<p>If u have not, make sure you have an MySQL phpmyadmin server before you move on. Also make sure\u00a0<strong>Legacy Authentication<\/strong>\u00a0Is enabled! Otherwise the code is not gonna work.<\/p>\n<p>I suggest u use the following tutorial if u gonna host your own:\u00a0<a href=\"https:\/\/www.osradar.com\/how-to-install-phpmyadmin-on-windows-10\/\">https:\/\/www.osradar.com\/how-to-install-phpmyadmin-on-windows-10\/<\/a><\/p>\n<p>&nbsp;<\/p>\n<h3 class=\"wp-block-heading\">Database structure<\/h3>\n<p>id -&gt; type: INT -&gt; select A_I (auto increment)<\/p>\n<p>timestamp -&gt; type: DATETIME -&gt; select standard value: CURRENT_TIMESTAMP<\/p>\n<p>temperature -&gt; type: DOUBLE<\/p>\n<p>humidity -&gt; type: DOUBLE<\/p>\n<p>pressure -&gt; type: DOUBLE<\/p>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-214\" src=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/mysql-1.png?resize=989%2C350&amp;ssl=1\" sizes=\"auto, (max-width: 989px) 100vw, 989px\" srcset=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/mysql-1.png?w=989&amp;ssl=1 989w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/mysql-1.png?resize=300%2C106&amp;ssl=1 300w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/mysql-1.png?resize=768%2C272&amp;ssl=1 768w\" alt=\"\" width=\"989\" height=\"350\" data-recalc-dims=\"1\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Wrapping Up<\/h2>\n<p>Now power on the board, Everything should now work!<\/p>\n<p>You now made an ESP8266 based sensor node who directly talks to an MySQL Database! Feel free to leave a comment below when u need extra information or troubleshooting help.<\/p>\n<p>Here are some demonstration pictures of the project:<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-216\" src=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082.jpg?resize=1024%2C683&amp;ssl=1\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082-scaled.jpg?resize=1024%2C683&amp;ssl=1 1024w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082-scaled.jpg?resize=300%2C200&amp;ssl=1 300w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082-scaled.jpg?resize=768%2C512&amp;ssl=1 768w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082-scaled.jpg?resize=1536%2C1024&amp;ssl=1 1536w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082-scaled.jpg?resize=2048%2C1365&amp;ssl=1 2048w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/IMG_7082-scaled.jpg?resize=1620%2C1080&amp;ssl=1 1620w\" alt=\"\" width=\"1024\" height=\"683\" data-recalc-dims=\"1\" \/><figcaption>The Hardware<\/figcaption><\/figure>\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-220\" src=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/data-1.png?resize=844%2C201&amp;ssl=1\" sizes=\"auto, (max-width: 844px) 100vw, 844px\" srcset=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/data-1.png?w=721&amp;ssl=1 721w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/data-1.png?resize=300%2C72&amp;ssl=1 300w\" alt=\"\" width=\"844\" height=\"201\" data-recalc-dims=\"1\" \/><figcaption>Data debug in Arduino IDE<\/figcaption><\/figure>\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-221\" src=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/database-1.png?resize=840%2C300&amp;ssl=1\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" srcset=\"https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/database-1.png?w=699&amp;ssl=1 699w, https:\/\/i0.wp.com\/iotechprojects.com\/wp-content\/uploads\/2022\/05\/database-1.png?resize=300%2C107&amp;ssl=1 300w\" alt=\"\" width=\"840\" height=\"300\" data-recalc-dims=\"1\" \/><figcaption>MySQL database<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The ESP8266 is a popular programmable microcontroller with a lot of features. One of its main features in the ability to directly connect the microcontroller to WiFi. This gives u the ability to control the microcontroller over the internet using http, MQTT and many other ways. But it also gives u the ability to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[],"class_list":["post-26614","post","type-post","status-publish","format-standard","hentry","category-13"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6cOVM-6Vg","_links":{"self":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts\/26614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26614"}],"version-history":[{"count":2,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts\/26614\/revisions"}],"predecessor-version":[{"id":26727,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=\/wp\/v2\/posts\/26614\/revisions\/26727"}],"wp:attachment":[{"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tom.tomwork.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}