yotanutmaliwan

การเชื่อมต่ออุปกรณ์เข้ากับ NETPIE สำหรับ CCS811 และ GP2Y1010

Jun 28th, 2018
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. /* connect to Gas Sensor */
  2. #include "Adafruit_CCS811.h"
  3. Adafruit_CCS811 ccs;
  4.  
  5. /* connect to SHARP PM2.5 Sensor*/
  6. #include <PMsensor.h>
  7. PMsensor PM;
  8.  
  9. /* connect to wifi */
  10. #include <ESP8266WiFi.h>
  11. const char* ssid = "YOUR WiFi Network Name’"; // ssid wifi
  12. const char* password = "PASSWORD PUT IN HERE"; // it is recommended to use WPA/WPA2
  13. WiFiClient client;
  14.  
  15. /* connect to netpie */
  16. #include <MicroGear.h>
  17. #define APPID "REPLACE ME WITH YOUR APP ID" // APPLICATION (APPID)
  18. #define KEY "REPLACE ME WITH YOUR DEVICE KEY" // device key
  19. #define SECRET "REPLACE ME WITH YOUR SECRET KEY" // *secret device key
  20. #define FEEDID "REPLACE ME WITH YOUR FEED NAME" // feed name
  21. #define ALIAS "PLEASE GIVE ME A MEANINGFUL NAME TO CALL ME"
  22. MicroGear microgear(client);
  23.  
  24. /* Variable */
  25. int timer = 0;
  26. char str[32];
  27.  
  28. void onMsghandler(char *topic, uint8_t* msg, unsigned int msglen) {
  29. Serial.print("Incoming message --> ");
  30. msg[msglen] = '\0';
  31. Serial.println((char *)msg);
  32. }
  33.  
  34. void onConnected(char *attribute, uint8_t* msg, unsigned int msglen) {
  35. Serial.println("Connected to NETPIE...");
  36. microgear.setAlias(ALIAS);
  37. }
  38.  
  39. void setup() {
  40. Serial.begin(115200);
  41.  
  42. // Initialize PM Sensor
  43. /////(infrared LED pin, sensor pin) /////
  44. PM.init(D5, A0);
  45.  
  46. // Initialize Gas Sensor
  47. if (!ccs.begin()) {
  48. Serial.println("Failed to start sensor! Please check your wiring.");
  49. while (1);
  50. }
  51.  
  52. //calibrate temperature sensor
  53. while (!ccs.available());
  54. float temp = ccs.calculateTemperature();
  55. ccs.setTempOffset(temp - 25.0);
  56.  
  57. // Initialize microgear
  58. microgear.on(MESSAGE, onMsghandler);
  59. microgear.on(CONNECTED, onConnected); //optional
  60. microgear.on(ERROR, onConnected);
  61. microgear.on(INFO, onConnected);
  62.  
  63. //Wait for WiFi Establishement
  64. Serial.println("Starting...");
  65. if (WiFi.begin(ssid, password)) {
  66. while (WiFi.status() != WL_CONNECTED) {
  67. delay(500);
  68. Serial.print(".");
  69. }
  70. }
  71.  
  72. Serial.println("WiFi connected");
  73. Serial.println("IP address: ");
  74. Serial.println(WiFi.localIP());
  75.  
  76. microgear.init(KEY, SECRET, ALIAS);
  77. microgear.connect(APPID);
  78.  
  79. }
  80.  
  81. void loop() {
  82. if (microgear.connected()) {
  83. Serial.print("*");
  84. microgear.loop();
  85. if (timer >= 1000) {
  86.  
  87. int CO2;
  88. int TVOC;
  89. float temp;
  90. float pm = 0;
  91. int err = PMsensorErrSuccess;
  92.  
  93. if (ccs.available() && !((err = PM.read(&pm, true, 0.1)) != PMsensorErrSuccess)) {
  94. temp = ccs.calculateTemperature();
  95. if (!ccs.readData()) {
  96. Serial.println("CO2: ");
  97. Serial.print(ccs.geteCO2());
  98. CO2 = ccs.geteCO2();
  99. Serial.print("ppm, TVOC: ");
  100. Serial.print(ccs.getTVOC());
  101. TVOC = ccs.getTVOC();
  102. Serial.print("ppb, Temp: ");
  103. Serial.println(temp);
  104. //Don't You DARE USE white spaces in the String
  105. String data = "{\"Room_CO2\":";
  106. data += CO2 ;
  107. data += ",\"Room_TEMP\":";
  108. data += temp ;
  109. data += ",\"Room_TVOC\":";
  110. data += TVOC ;
  111. data += ",\"Room_PM25\":";
  112. data += pm ;
  113. data += "}";
  114. Serial.print("PM2.5: ");
  115. Serial.print(pm);
  116. Serial.println(" ppm");
  117. sprintf(str, "%d,%.2f,%d,%.2f", CO2, temp, TVOC, pm);
  118. Serial.println(str);
  119. Serial.println((char*) data.c_str());
  120. Serial.print("Sending --> ");
  121. microgear.publish("/roomquality", str);
  122. microgear.writeFeed(FEEDID, data); //YOUR FEED ID, API KEY
  123. }
  124. else {
  125. Serial.println("ERROR!");
  126. while (1);
  127. }
  128. }
  129. timer = 0;
  130. }
  131. else timer += 250;
  132. } else {
  133. Serial.println("connection lost, reconnect...");
  134. if (timer >= 5000) {
  135. microgear.connect(APPID);
  136. timer = 0;
  137. }
  138. else timer += 250;
  139. }
  140. delay(250);
  141. }
Advertisement
Add Comment
Please, Sign In to add comment