SHARE
TWEET

Untitled

a guest Nov 22nd, 2019 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <SPI.h>
  3. #include <LoRa.h>       // https://github.com/sandeepmistry/arduino-LoRa
  4. #include <WiFi.h>
  5. #include <HTTPClient.h>
  6. #include <DNSServer.h>
  7. //#include <WiFiManager.h>
  8.  
  9. // SPI LoRa Radio
  10. #define LORA_SCK 5        // GPIO5 - SX1276 SCK
  11. #define LORA_MISO 19     // GPIO19 - SX1276 MISO
  12. #define LORA_MOSI 27    // GPIO27 - SX1276 MOSI
  13. #define LORA_CS 18     // GPIO18 - SX1276 CS
  14. #define LORA_RST 14   // GPIO14 - SX1276 RST
  15. #define LORA_IRQ 26  // GPIO26 - SX1276 IRQ (interrupt request)
  16.  
  17. #define azul 32
  18. #define verde 33
  19. #define vermelho 2
  20.  
  21. const char* ssid     = "WiFi";
  22. const char* password = "20172018";
  23.  
  24. String idTrap, temp, ent, sai, bat;
  25. String postar;
  26. String service;
  27. String packet = "";
  28. int recebi;
  29. String pk[10];
  30. char MyID = 'R';
  31. String firebase = "https://us-central1-live-farm-prod.cloudfunctions.net";
  32. boolean posicionador = false;
  33.  
  34. void setup() {
  35.  
  36.   pinMode(azul, OUTPUT);
  37.   pinMode(verde, OUTPUT);
  38.   pinMode(vermelho, OUTPUT);
  39.  
  40.   digitalWrite(azul, 1);
  41.   digitalWrite(verde, 1);
  42.   digitalWrite(vermelho, 0);
  43.    
  44.   Serial.begin(115200);
  45.  
  46.  // WiFiManager wifiManager;
  47.  // wifiManager.autoConnect("LiveFarm_Config");
  48.   // Connect to Wi-Fi network with SSID and password
  49.   Serial.print("Connecting to ");
  50.   Serial.println(ssid);
  51.   WiFi.begin(ssid, password);
  52.   while (WiFi.status() != WL_CONNECTED) {
  53.     delay(500);
  54.     Serial.print(".");
  55.   }
  56.   // Print local IP address and start web server
  57.   Serial.println("");
  58.   Serial.println("WiFi connected.");
  59.   Serial.println("IP address: ");
  60.   Serial.println(WiFi.localIP());
  61.  
  62.   digitalWrite(azul, 0);
  63.   digitalWrite(verde, 1);
  64.   digitalWrite(vermelho, 1);
  65.  
  66.   while (!Serial);
  67.   SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_CS);
  68.   LoRa.setPins(LORA_CS, LORA_RST, LORA_IRQ);
  69.   if (!LoRa.begin(915E6)) {
  70.     while (1);
  71.   }
  72.   else
  73.   {Serial.println("Lora ok");}
  74.   LoRa.setSpreadingFactor(12);
  75. }
  76.  
  77. void loop() {
  78.    int packetSize = LoRa.parsePacket();
  79.    if (packetSize) {
  80.      digitalWrite(azul, 1);
  81.      digitalWrite(verde, 0);
  82.      digitalWrite(vermelho, 1);
  83.      delay(100);
  84.      digitalWrite(azul, 0);
  85.      digitalWrite(verde, 1);
  86.      digitalWrite(vermelho, 1);
  87.      packet = "";  
  88.      while (LoRa.available()) {
  89.         packet += (char)LoRa.read(); // Assemble new packet
  90.      }
  91.      Serial.println(packet);
  92.      int ultimoChar = packet.length()-1;
  93.      Serial.println(packet.charAt(ultimoChar));
  94.      pk[0]="";pk[1]="";pk[2]="";
  95.      pk[3]="";pk[4]="";pk[5]="";
  96.      int ref=0;
  97.     for(int w = 0; w<packet.length(); w++){
  98.         char c = packet.charAt(w);
  99.          if(c == ';'){
  100.             ref++;
  101.          }
  102.          else{
  103.            if(c == '@' || c == '!' || c == '?'|| c =='%'){}
  104.            else{pk[ref] += c;}
  105.          }
  106.      }
  107.      
  108.      idTrap = pk[0];
  109.      ent = pk[1];
  110.      sai = pk[2];
  111.      bat = pk[3];
  112.      temp = pk[4];
  113.      pk[0]="";pk[1]="";pk[2]="";
  114.      pk[3]="";pk[4]="";pk[5]="";
  115.       ref=0;
  116.     for(int w = 0; w<packet.length(); w++){
  117.         char c = packet.charAt(w);
  118.          if(c == ';'){
  119.             ref++;
  120.          }
  121.          else{
  122.            if(c == '@' || c == '!' || c == '?' || c =='%'){}
  123.            else{pk[ref] += c;}
  124.          }
  125.      }
  126.      
  127.      idTrap = pk[0];
  128.      ent = pk[1];
  129.      sai = pk[2];
  130.      bat = pk[3];
  131.      temp = pk[4];
  132.      Serial.println();
  133.      Serial.print("idTrap: ");Serial.println(idTrap);
  134.      Serial.print("entrada: ");Serial.println(ent);
  135.      Serial.print("saida: ");Serial.println(sai);
  136.      Serial.print("bateria: ");Serial.println(bat);
  137.      Serial.print("temperatura: ");Serial.println(temp);
  138.      Serial.println();Serial.println();
  139.      if(packet.charAt(ultimoChar) == '%' && packet.charAt(0) == MyID){
  140.         Serial.println("recebi do posicionador");
  141.         String resp;
  142.         resp += MyID;
  143.         resp += "XXXXXXXXXXXXXXXXXXXXXXXXX%";
  144.         delay(10);
  145.         LoRa.beginPacket();
  146.         LoRa.print(resp);
  147.         LoRa.endPacket();
  148.         posicionador = true;
  149.      }
  150.      else if(packet.charAt(ultimoChar) == '?' && packet.charAt(0) == MyID){
  151.         String resp;
  152.         resp += MyID;
  153.         resp += "OK";
  154.         LoRa.beginPacket();
  155.         LoRa.print(resp);
  156.         LoRa.endPacket();
  157.         service = "/trapBug";
  158.         postar = "";
  159.         postar += "{";
  160.         postar += '\n';
  161.         postar += "   \"trap\":\"";
  162.         postar += idTrap;
  163.         postar += "\",";
  164.         postar += '\n';
  165.  
  166.         postar += "   \"hasBug\":";
  167.         postar += "true";
  168.         postar += '\n';
  169.         postar += "}";
  170.         posicionador = false;
  171.      }
  172.      else if(packet.charAt(ultimoChar) == '!' && packet.charAt(0) == MyID){
  173.         String resp;
  174.         resp += MyID;
  175.         resp += "OK";
  176.         LoRa.beginPacket();
  177.         LoRa.print(resp);
  178.         LoRa.endPacket();
  179.         service = "/trapBug";
  180.         postar = "";
  181.         postar += "{";
  182.         postar += '\n';
  183.         postar += "   \"trap\":\"";
  184.         postar += idTrap;
  185.         postar += "\",";
  186.         postar += '\n';
  187.  
  188.         postar += "   \"hasBug\":";
  189.         postar += "false";
  190.         postar += '\n';
  191.         postar += "}";
  192.         posicionador = false;
  193.      }
  194.      else if(packet.charAt(ultimoChar) == '@' && packet.charAt(0) == MyID){
  195.         String resp;
  196.         resp += MyID;
  197.         resp += "OK";
  198.         LoRa.beginPacket();
  199.         LoRa.print(resp);
  200.         LoRa.endPacket();
  201.         service = "/trapUpdate";
  202.         postar = "";
  203.         postar += "{";
  204.         postar += '\n';
  205.         postar += "   \"trap\":\"";
  206.         postar += idTrap;
  207.         postar += "\",";
  208.         postar += '\n';
  209.  
  210.         postar += "   \"battery\":";
  211.         postar += bat;
  212.         postar += ",";
  213.         postar += '\n';
  214.  
  215.         postar += "   \"temperature\":";
  216.         postar += temp;
  217.         postar += '\n';
  218.         postar += "}";
  219.         posicionador = false;
  220.      }
  221.      else{
  222.         String resp;
  223.         resp += idTrap;
  224.         resp += "OK";
  225.         LoRa.beginPacket();
  226.         LoRa.print(resp);
  227.         LoRa.endPacket();
  228.         postar = "";
  229.         postar += "{";
  230.         postar += '\n';
  231.         postar += "   \"trap\":\"";
  232.         postar += idTrap;
  233.         postar += "\",";
  234.         postar += '\n';
  235.  
  236.         postar += "   \"input\":";
  237.         postar += ent;
  238.         postar += ",";
  239.         postar += '\n';
  240.  
  241.         postar += "   \"output\":";
  242.         postar += sai;
  243.         postar += ",";
  244.         postar += '\n';
  245.  
  246.         postar += "   \"battery\":";
  247.         postar += bat;
  248.         postar += ",";
  249.         postar += '\n';
  250.  
  251.         postar += "   \"temperature\":";
  252.         postar += temp;
  253.         postar += '\n';
  254.         postar += "}";
  255.         posicionador = false;
  256.      }
  257.      if(!posicionador){sendPost();}
  258.    }
  259. }
  260.  
  261. void sendPost() {
  262.  
  263.  if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status
  264.    String EnviarPost = firebase;
  265.    EnviarPost += service;
  266.    HTTPClient http;  
  267.    http.begin(EnviarPost);  //Specify destination for HTTP request
  268.    http.addHeader("Content-Type", "application/json");             //Specify content-type header
  269.  
  270.    int httpResponseCode = http.POST(postar);   //Send the actual POST request
  271.  
  272.    if(httpResponseCode>0){
  273.  
  274.     String response = http.getString();                       //Get the response to the request
  275.  
  276.     Serial.println(httpResponseCode);   //Print return code
  277.     Serial.println(response);           //Print request answer
  278.  
  279.    }else{
  280.  
  281.     Serial.print("Error on sending POST: ");
  282.     Serial.println(httpResponseCode);
  283.  
  284.    }
  285.  
  286.    http.end();  //Free resources
  287.  
  288.  }else{
  289.  
  290.     Serial.println("Error in WiFi connection");  
  291.  
  292.  }
  293.  
  294. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top