#include<SparkFunCCS811.h>
#include"SparkFunBME280.h"
#include"Wire.h"
#include<Sparkfun_APDS9301_Library.h>
#include<WiFi.h>
BME280bme;
CCS811ccs(0x5B);
APDS9301apds;
//Variablesforwifiserversetup
const char* ssid= "your_ssid_here";
const char* password= "password";
String ID= "wunderground_station_id";
String key= "wunderground_station_key";
WiFiClientclient;
const int httpPort= 80;
const char* host= "weatherstation.wunderground.com";
//Variablesandconstantsusedincalculatingthewindspeed.
volatileunsigned long timeSinceLastTick=0;
volatileunsigned long lastTick=0;
//Variablesandconstantsusedintrackingrainfall
#defi
neS_IN_DAY86400
#defineS_IN_HR3600
#defineNO_RAIN_SAMPLES2000
volatilelong rainTickList[NO_RAIN_SAMPLES];
volatileint rainTickIndex=0;
volatileint rainTicks=0;
int rainLastDay=0;
int rainLastHour=0;
int rainLastHourStart=0;
int rainLastDayStart=0;
long secsClock=0;
String windDir= "";
float windSpeed= 0.0;
//Pinassignmentdefinitions
#defineWIND_SPD_PIN14
#defineRAIN_PIN25
#defineWIND_DIR_PIN35
#defineAIR_RST4
#defineAIR_WAKE15
#defineDONE_LED5
void setup()
{
delay(5);//TheCCS811wantsabriefdelayafterst
artu
p.
Serial.begin(115200);
Wire.begin();
pinMode(DONE_LED,OUTPUT);
digitalWrite(DONE_LED,LOW);
//Windspeedsensorsetup.Thewindspeediscalculatedacco
rdingtothenumber
//oftickspersecond.Timestampsarecapturedintheinte
rrupt,andthenconverted
//intomph.
pinMode(WIND_SPD_PIN,INPUT);//Windspeedsensor
attachInterrupt(digitalPinToInterrupt(WIND_SPD_PIN),windTic
Page 1
of 20