Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.41 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <ArduinoJson.h>
  3. #include "HX711.h"
  4. #include "DHT.h"
  5. #include "Gsender.h"
  6.  
  7. extern "C" {
  8.  #include "user_interface.h"
  9. }
  10.  
  11. #define DOUT 4                      // czujnik DHT pin5, wzmacniacz hx711 dane pin 4, zegarowa pin 14
  12. #define CLK 14
  13. #define DHTPIN 5
  14. #define DHTTYPE DHT22
  15. DHT dht(DHTPIN,DHTTYPE);
  16. HX711 scale(DOUT, CLK);
  17. #define WiFiSSID "nazwawifi"                    //definiujemy nazwe i hasło wifi
  18. #define WiFiHaslo "hasło"         
  19.  
  20.  
  21. #define adresSerwera  "adres"                   //definiujemy adres i port serwera
  22. #define portSerwera        80
  23.  
  24.  
  25. void setup() {
  26.   Serial.begin(115200);
  27.   pinMode(2,OUTPUT);
  28.   digitalWrite(2, HIGH);
  29.   scale.set_scale(3210); //Ustawienie kalibracji
  30.   scale.tare();             // zerowanie
  31.   dht.begin();      
  32.   wifiConnect();            //funkcja łącząca z wifi
  33. }
  34.  
  35. void loop() {
  36. float t,h,f;
  37. f=scale.get_units();              //pobieramy odczyty
  38.  h = dht.readHumidity();
  39.  t = dht.readTemperature();
  40.  //Serial.println(f);
  41.  //Serial.println(h);
  42.  //Serial.println(t);
  43.     wyslijDane(t,h,f);               //funkcja wysylajaca dane na serwer
  44.     system_deep_sleep_set_option(0);  // ustawienie metody uśpienia
  45.     system_deep_sleep(1000000*30);   //uśpienie na końcu po wykonaniu się funkcji wyslijDane
  46.    
  47. }
  48.  
  49. void wifiConnect()
  50. {
  51.     Serial.print("Trwa laczenie z siecia");
  52.     WiFi.begin(WiFiSSID, WiFiHaslo);
  53.     while (WiFi.status() != WL_CONNECTED) {    //będzie się wykonywać aż nie połączy z wifi
  54.     delay(1000);
  55.     Serial.print(".");
  56.   }
  57.   Serial.println("Nawiazano polaczenie WiFi");  
  58. }
  59.  
  60.  
  61. void wyslijDane(float t,float h,float f)
  62. {  
  63.    WiFiClient client;
  64.    
  65.    while(!client.connect(adresSerwera, portSerwera)) {
  66.     Serial.println("blad polaczenia");
  67.     wifiConnect();
  68.   }
  69.  
  70.  
  71.                
  72.   String url = "/food/conec.php?temperatura="+String(t)+"&wilgotnosc="+String(h)+"&jedzenie="+String(f)+"&id=30";
  73.  
  74.  
  75.   Serial.print("Wysylam dane na serwer: ");
  76.   Serial.println(url);
  77.  
  78.   client.print(String("GET ") + url + " HTTP/1.1\r\n" +                         //wysłanie zapytania na serwer
  79.                "Host: " + String(adresSerwera) + "\r\n" +
  80.                "Connection: close\r\n" +
  81.                "Content-Length: 0\r\n" +
  82.                "\r\n");
  83.  
  84.   delay(3000);
  85.     while(client.available()){
  86.           client.readStringUntil('\n');
  87.     client.readStringUntil('\n');
  88.     client.readStringUntil('\n');
  89.     client.readStringUntil('\n');
  90.     client.readStringUntil('\n');
  91.     client.readStringUntil('\n');
  92.     client.readStringUntil('\n');
  93.     client.readStringUntil('\n');
  94.     client.readStringUntil('\n');
  95.     String acc = client.readStringUntil('\n');                //zapisanie obiektu JSON
  96.  Serial.println(acc);
  97.  //acc to : {"temp_min":"20","temp_max":"30","humidity_min":"30","humidity_max":"65","food_min":"20"}
  98.  
  99. char response[1024];
  100. strncpy(response, acc.c_str(), sizeof(response));      //analiza i przypisywanie wartości z obiektu
  101. response[sizeof(response) - 1] = 0;
  102. StaticJsonBuffer<200> jsonBuffer;
  103. JsonObject& root = jsonBuffer.parseObject(response);
  104.     // Note the '&' above
  105. if (!root.success()) {
  106.     Serial.println("parseObject() failed");
  107.     return;
  108.   }
  109.     const char* temp_min = root["temp_min"];
  110.     const char* temp_max = root["temp_max"];
  111.     const char* humidity_min = root["humidity_min"];
  112.     const char* humidity_max = root["humidity_max"];
  113.     const char* food_min = root["food_min"];
  114.    
  115. int tmax = atoi(temp_max);                    //konwersja string na int aby można było porównać
  116. int tmin = atoi(temp_min);
  117. int hmax = atoi(humidity_max);
  118. int hmin = atoi(humidity_min);
  119. int fmin = atoi(food_min);
  120.  
  121.     if(t>tmax||t<tmin||h>hmax||h<hmin||f<fmin){                     //porównywanie i wysyłanie maila
  122.     digitalWrite(2, LOW);   // zapalenie diody
  123.  
  124.   delay(7000);                    
  125.  digitalWrite(2, HIGH);  // zgaszenie diody
  126.    }
  127.    if(t>tmax){
  128.        Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
  129.     String subject = "Pet Food Level Tracker!";
  130.     if(gsender->Subject(subject)->Send("oski.koscianski@gmail.com", "Twój zwierzak się gotuję! Temperatura wynosi:"+String(t)+"°C przy maksymalnej ustawionej temperaturze "+String(tmax)+"°C.")) {
  131.         Serial.println("Message send.");
  132.     } else {
  133.         Serial.print("Error sending message: ");
  134.         Serial.println(gsender->getError());
  135.     }
  136.   }
  137.      if(t<tmin){
  138.        Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
  139.     String subject = "Pet Food Level Tracker!";
  140.     if(gsender->Subject(subject)->Send("oski.koscianski@gmail.com", "Twój zwierzak zamarza! Temperatura wynosi:"+String(t)+"°C przy minimalnej ustawionej temperaturze "+String(tmin)+"°C.")) {
  141.         Serial.println("Message send.");
  142.     } else {
  143.         Serial.print("Error sending message: ");
  144.         Serial.println(gsender->getError());
  145.     }
  146.   }
  147.      if(h>hmax){
  148.        Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
  149.     String subject = "Pet Food Level Tracker!";
  150.     if(gsender->Subject(subject)->Send("oski.koscianski@gmail.com", "Twój zwierzak się rozpływa! Wilgotność wynosi:"+String(h)+"% przy maksymalnej ustawionej wilgotności "+String(hmax)+"%.")) {
  151.         Serial.println("Message send.");
  152.     } else {
  153.         Serial.print("Error sending message: ");
  154.         Serial.println(gsender->getError());
  155.     }
  156.   }
  157.      if(h<hmin){
  158.        Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
  159.     String subject = "Pet Food Level Tracker!";
  160.     if(gsender->Subject(subject)->Send("oski.koscianski@gmail.com", "Twój zwierzak wysycha na wiór! Wilgotność wynosi: "+String(h)+"% przy minimalnej ustawionej wilgotności "+String(hmin)+"%.")) {
  161.         Serial.println("Message send.");
  162.     } else {
  163.         Serial.print("Error sending message: ");
  164.         Serial.println(gsender->getError());
  165.     }
  166.   }
  167.      if(f<fmin){
  168.        Gsender *gsender = Gsender::Instance();    // Getting pointer to class instance
  169.     String subject = "Pet Food Level Tracker!";
  170.     if(gsender->Subject(subject)->Send("oski.koscianski@gmail.com", "Twój zwierzak umiera z głodu! Obecna ilość jedzenia w miseczce to "+String(f)+"g przy minimalnej ustawionej ilości "+String(fmin)+"g.")) {
  171.         Serial.println("Message send.");
  172.     } else {
  173.         Serial.print("Error sending message: ");
  174.         Serial.println(gsender->getError());
  175.     }
  176.   }
  177.    
  178. }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement