Skip to content

Instantly share code, notes, and snippets.

@ZanzyTHEbar
Last active August 3, 2022 07:40
Show Gist options
  • Save ZanzyTHEbar/832411883384f5ab21b7901a6c822294 to your computer and use it in GitHub Desktop.
Save ZanzyTHEbar/832411883384f5ab21b7901a6c822294 to your computer and use it in GitHub Desktop.
#include <ESP8266WiFi.h> // Simple Libary for Wifi AP to use
const char WiFiAPPSK[] = "xxx"; // Set Wifi Password
const char AP_NameChar[] = "xxx"; // Set Wifi Name
#include <Hash.h> // Used for webserver
#include <ESPAsyncTCP.h> // Used for webserver
#include <ESPAsyncWebServer.h> // Used for webserver
#include <FS.h> // Used for webserver
AsyncWebServer server(80); // Create AsyncWebServer object on port 80
#include <Wire.h> //Used for temp etc
#include <SPI.h> //Used for temp etc
#include <Adafruit_BMP280.h> //Used for temp etc
Adafruit_BMP280 bmp;
String _jsonDocument;
SensorData_t sensorData;
void createJSONDocument(float temp, float humidity, float pressure)
{
char buffer[100];
snprintf(buffer, sizeof(buffer), "{\"temp\": %f, \"humidity\": %f, \"pressure\": %f}", temp, humidity, pressure);
_jsonDocument = buffer;
}
void readBME280()
{
float t = bmp.readTemperature();
float p = bmp.readPressure();
float h = bmp.readHumidity();
if (!isnan(t) && !isnan(p) && !isnan(h))
{
Serial.println(t);
createJSONDocument(t, h, p);
return;
}
Serial.println("Failed to read from BME280 sensor!");
}
void setup()
{
Serial.begin(9600); // Start Serial Interface
unsigned status;
status = bmp.begin(0x76);
if (!SPIFFS.begin())
{
Serial.println("An Error has occurred while mounting SPIFFS");
return;
}
WiFi.mode(WIFI_AP); // Start the Access point
WiFi.softAP(AP_NameChar, WiFiAPPSK); // Set the name and password from above
/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
{ request->send(SPIFFS, "/index.html"); });
server.on("/highcharts.js", HTTP_GET, [](AsyncWebServerRequest *request)
{ request->send(SPIFFS, "/highcharts.js", "text/javascript"); });
server.on("/data.json", HTTP_GET, [](AsyncWebServerRequest *request)
{ request->send_P(200, "text/plain", _jsonDocument); });
// Start server
server.begin();
}
void loop()
{
readBME280();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment