Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include <Wire.h>
- #include <Adafruit_Sensor.h>
- #include <Adafruit_BME280.h>
- #define SEALEVELPRESSURE_HPA (1013.25)
- Adafruit_BME280 bme;
- SoftwareSerial ESP8266(2, 3); // Rx, Tx
- float humidity, temp_f, pressure;
- long writingTimer = 30;
- long startTime = 0;
- long waitTime = 0;
- String myAPIkey = "myapikey";
- //boolean relay1_st = false;
- //boolean relay2_st = false;
- unsigned char check_connection = 0;
- unsigned char times_check = 0;
- //boolean error;
- void setup()
- {
- Serial.begin(9600);
- ESP8266.begin(9600);
- if (!bme.begin(0x76)) {
- Serial.println("Could not find a valid BME280 sensor, check wiring!");
- while (1);
- }
- //
- connectToThingSpeak();
- }
- void loop()
- {
- waitTime = millis() - startTime;
- if (waitTime > (writingTimer * 1000))
- {
- readSensors();
- writeThingSpeak();
- startTime = millis();
- }
- }
- void connectToThingSpeak(void)
- {
- startTime = millis();
- ESP8266.println("AT+RST");
- delay(2000);
- Serial.println("Connecting to Wifi");
- while (check_connection == 0)
- {
- Serial.print(".");
- ESP8266.print("AT+CWJAP=\"myssid\",\"mypwd\"\r\n");
- ESP8266.setTimeout(5000);
- if (ESP8266.find("WIFI CONNECTED\r\n") == 1)
- {
- Serial.println("WIFI CONNECTED");
- break;
- }
- times_check++;
- if (times_check > 3)
- {
- times_check = 0;
- Serial.println("Trying to Reconnect..");
- }
- }
- }
- void readSensors(void)
- {
- temp_f = bme.readTemperature();
- humidity = bme.readHumidity();
- pressure = bme.readPressure() / 1000.0F;
- }
- void writeThingSpeak(void)
- {
- startThingSpeakCmd();
- // preparacao da string GET
- String getStr = "GET /update?api_key=";
- getStr += myAPIkey;
- getStr += "&field1=";
- getStr += String(temp_f);
- getStr += "&field2=";
- getStr += String(humidity);
- getStr += "&field3=";
- getStr += String(pressure);
- getStr += "\r\n\r\n";
- GetThingspeakcmd(getStr);
- }
- void startThingSpeakCmd(void)
- {
- ESP8266.flush();
- String cmd = "AT+CIPSTART=\"TCP\",\"";
- cmd += "184.106.153.149"; // api.thingspeak.com IP address
- cmd += "\",80";
- ESP8266.println(cmd);
- Serial.print("Start Commands: ");
- Serial.println(cmd);
- if (ESP8266.find("Error"))
- {
- Serial.println("AT+CIPSTART error");
- return;
- }
- }
- String GetThingspeakcmd(String getStr)
- {
- String cmd = "AT+CIPSEND=";
- cmd += String(getStr.length());
- ESP8266.println(cmd);
- Serial.println(cmd);
- if (ESP8266.find(">"))
- {
- ESP8266.print(getStr);
- Serial.println(getStr);
- delay(500);
- String messageBody = "";
- while (ESP8266.available())
- {
- String line = ESP8266.readStringUntil('\n');
- if (line.length() == 1)
- {
- messageBody = ESP8266.readStringUntil('\n');
- }
- }
- Serial.print("MessageBody received: ");
- Serial.println(messageBody);
- return messageBody;
- }
- else
- {
- ESP8266.println("AT+CIPCLOSE");
- Serial.println("AT+CIPCLOSE");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement