Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* connect to Gas Sensor */
- #include "Adafruit_CCS811.h"
- Adafruit_CCS811 ccs;
- /* connect to SHARP PM2.5 Sensor*/
- #include <PMsensor.h>
- PMsensor PM;
- /* connect to wifi */
- #include <ESP8266WiFi.h>
- const char* ssid = "YOUR WiFi Network Name’"; // ssid wifi
- const char* password = "PASSWORD PUT IN HERE"; // it is recommended to use WPA/WPA2
- WiFiClient client;
- /* connect to netpie */
- #include <MicroGear.h>
- #define APPID "REPLACE ME WITH YOUR APP ID" // APPLICATION (APPID)
- #define KEY "REPLACE ME WITH YOUR DEVICE KEY" // device key
- #define SECRET "REPLACE ME WITH YOUR SECRET KEY" // *secret device key
- #define FEEDID "REPLACE ME WITH YOUR FEED NAME" // feed name
- #define ALIAS "PLEASE GIVE ME A MEANINGFUL NAME TO CALL ME"
- MicroGear microgear(client);
- /* Variable */
- int timer = 0;
- char str[32];
- void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) {
- Serial.print("Incoming message --> ");
- msg[msglen] = '\0';
- Serial.println((char *)msg);
- }
- void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) {
- Serial.println("Connected to NETPIE...");
- microgear.setAlias(ALIAS);
- }
- void setup() {
- Serial.begin(115200);
- // Initialize PM Sensor
- /////(infrared LED pin, sensor pin) /////
- PM.init(D5, A0);
- // Initialize Gas Sensor
- if (!ccs.begin()) {
- Serial.println("Failed to start sensor! Please check your wiring.");
- while (1);
- }
- //calibrate temperature sensor
- while (!ccs.available());
- float temp = ccs.calculateTemperature();
- ccs.setTempOffset(temp - 25.0);
- // Initialize microgear
- microgear.on(MESSAGE, onMsghandler);
- microgear.on(CONNECTED, onConnected); //optional
- microgear.on(ERROR, onConnected);
- microgear.on(INFO, onConnected);
- //Wait for WiFi Establishement
- Serial.println("Starting...");
- if (WiFi.begin(ssid, password)) {
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- }
- Serial.println("WiFi connected");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- microgear.init(KEY, SECRET, ALIAS);
- microgear.connect(APPID);
- }
- void loop() {
- if (microgear.connected()) {
- Serial.print("*");
- microgear.loop();
- if (timer >= 1000) {
- int CO2;
- int TVOC;
- float temp;
- float pm = 0;
- int err = PMsensorErrSuccess;
- if (ccs.available() && !((err = PM.read(&pm, true, 0.1)) != PMsensorErrSuccess)) {
- temp = ccs.calculateTemperature();
- if (!ccs.readData()) {
- Serial.println("CO2: ");
- Serial.print(ccs.geteCO2());
- CO2 = ccs.geteCO2();
- Serial.print("ppm, TVOC: ");
- Serial.print(ccs.getTVOC());
- TVOC = ccs.getTVOC();
- Serial.print("ppb, Temp: ");
- Serial.println(temp);
- //Don't You DARE USE white spaces in the String
- String data = "{\"Room_CO2\":";
- data += CO2 ;
- data += ",\"Room_TEMP\":";
- data += temp ;
- data += ",\"Room_TVOC\":";
- data += TVOC ;
- data += ",\"Room_PM25\":";
- data += pm ;
- data += "}";
- Serial.print("PM2.5: ");
- Serial.print(pm);
- Serial.println(" ppm");
- sprintf(str, "%d,%.2f,%d,%.2f", CO2, temp, TVOC, pm);
- Serial.println(str);
- Serial.println((char*) data.c_str());
- Serial.print("Sending --> ");
- microgear.publish("/roomquality", str);
- microgear.writeFeed(FEEDID, data); //YOUR FEED ID, API KEY
- }
- else {
- Serial.println("ERROR!");
- while (1);
- }
- }
- timer = 0;
- }
- else timer += 250;
- } else {
- Serial.println("connection lost, reconnect...");
- if (timer >= 5000) {
- microgear.connect(APPID);
- timer = 0;
- }
- else timer += 250;
- }
- delay(250);
- }
Advertisement
Add Comment
Please, Sign In to add comment