Skip to content

Instantly share code, notes, and snippets.

@pudelosha
Created November 27, 2018 20:18
Show Gist options
  • Save pudelosha/e2a4a09fb96b09264a1030eb99098776 to your computer and use it in GitHub Desktop.
Save pudelosha/e2a4a09fb96b09264a1030eb99098776 to your computer and use it in GitHub Desktop.
Arduino meteo station with ESP8266WebServer
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <Wire.h>
#include <BH1750.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
#include <ClosedCube_HDC1080.h>
#include <SDS011.h>
const char *Webssid = "xxxxxxxxxxx";
const char *Webpass = "xxxxxxxxxxx";
ESP8266WebServer Webserver(80);
char ssid[] = "xxxxxxxxxxx"; // Network Name
char pass[] = "xxxxxxxxxxx"; // Network Password
WiFiServer server(80);
IPAddress ip(192, 168, 1, 150);
IPAddress gateway(192, 168, 2, 1);
IPAddress subnet(255, 255, 255, 0);
WiFiClient client;
BH1750 lightMeter;
ClosedCube_HDC1080 hdc1080;
Adafruit_BMP085 bmp;
float p10,p25;
int error;
SDS011 my_sds;
void setup() {
Serial.begin(9600);
lightMeter.begin(); // initialise BH1750
bmp.begin(); // initialise BMP180
hdc1080.begin(0x40); // initialise HDC1080
WiFi.softAP(Webssid,Webpass);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, pass);
// connect to WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(200);
}
my_sds.begin(D4,D5);
}
void loop() {
ReadAndInsert();
delay(15000); // 15sec
}
void ReadAndInsert(){
// air quality
error = my_sds.read(&p25,&p10);
// read temp and humidity
float temp1 = hdc1080.readTemperature();
float hum = hdc1080.readHumidity();
// read data pressure and temp
float pres;
pres = bmp.readPressure() / 100;
float temp2;
temp2 = bmp.readTemperature();
float alt;
alt = bmp.readAltitude();
double slpMultiplier;
double slp;
slpMultiplier = 1 - (0.0065 * 205 / (temp1 + 0.0065 * 205 + 273.15));
slpMultiplier = 1 / pow(slpMultiplier, 5.257);
slp = pres * slpMultiplier;
// create query
String url = "/?page=insertrecord&hum=";
url += (int)hum;
url += "&temp=";
url += (int)temp1;
url += "&press1=";
url += (int)pres;
url += "&press2=";
url += (int)slp;
url += "&light=";
url += lightMeter.readLightLevel();
url += "&pm25=";
url += (int)p25;
url += "&pm10=";
url += (int)p10;
url += "&pwd=xxxxxxxxxxx";
Serial.println(url);
IPAddress server(xxx, xxx ,xxx, xxx);
if (client.connect(server, 80)) {
client.print("GET ");
client.print(url);
client.println(" HTTP/1.1");
client.println("Host: www.arduinogreen.com");
client.println("Connection: close");
client.println();
client.println();
client.stop();
}
else {
Serial.println("--> connection failed\n");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment