wi-fi модуль NodeMcu v3 с чипом ESP8266 (ESP-12e) — отправка GET запроса с сохранением в базу данных

На базе wi-fi модуля NodeMcu v3 с чипом ESP8266 (ESP-12e) можно сделать (для примера) термометр на цифровом датчике 18B20, информация об температуре при помощи GET запроса будет отправятся в базу данных MySQL.

Следующий скетч позволяет отправлять GET запросы на указанную страницу, в моем случае это test.php.

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
 
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(14);// D5 вход датчика 18b20
DallasTemperature t(&oneWire);
 
const char* ssid = "******"; // имя сети
const char* password = "******"; // пароль сети
int temper;
 
void setup () {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting..");
  }
  Serial.println("OK");
  Serial.print("IP: ");
  Serial.println( WiFi.localIP().toString() );
  t.begin();
  t.setResolution(10);//10 бит 18B20
}
 
void loop() {  
  t.requestTemperatures();
  temper = t.getTempCByIndex(0)*100; // опрос датчика 18B20
 
  if (WiFi.status() == WL_CONNECTED) {
    Serial.print(WiFi.RSSI());
    Serial.println(" dBm");
    Serial.println(temper);
    HTTPClient http;  
    http.begin("http://rcl-radio.ru/test.php/?temp=" + (String)temper);  
    delay(10000);
    int httpCode = http.GET();                                                                 
    if (httpCode > 0) { 
    Serial.print("HTTP ");
    Serial.print(httpCode); 
    if(httpCode==200){Serial.println(" OK");}else{Serial.println(" Error");}
    }                                                                
    http.end();   
  }
}

Файл test.php содержит следующий код:

<?php
 mysql_connect("localhost","имя_пользователя", "пароль") or die("Could not connect: " . mysql_error());
 mysql_select_db("имя_базы_данных") or die("Could not select database");
 mysql_query("SET NAMES utf8");
 
if(!empty($_GET["temp"])){
$temp = $_GET["temp"]/100;
$query = "INSERT INTO test (temp) VALUES ('$temp')";  
mysql_query($query);
}
?>

Файл test.php позволяет записывать данные от температуре в базу данных каждые 10 секунд.

В сервере MySQL необходимо создать базу данных, далее создайте таблицу test,  в ней будут всего два столбца, это id и test.

Столбцы содержат следующую структуру:

После создания таблицы столбцы будут заполнятся данными о температуре:

В мониторе порта можно увидеть следующую информацию:

Данные монитора порта содержать информацию об уровне сигнала, значение температуры и статус страницы.

На данном примере можно можно сконструировать уст-во которое будет передавать на сервер различную информацию с различных датчиков.

Добавить комментарий

Войти с помощью: