Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <LoRa.h> // https://github.com/sandeepmistry/arduino-LoRa
- #include <WiFi.h>
- #include <HTTPClient.h>
- #include <DNSServer.h>
- //#include <WiFiManager.h>
- // SPI LoRa Radio
- #define LORA_SCK 5 // GPIO5 - SX1276 SCK
- #define LORA_MISO 19 // GPIO19 - SX1276 MISO
- #define LORA_MOSI 27 // GPIO27 - SX1276 MOSI
- #define LORA_CS 18 // GPIO18 - SX1276 CS
- #define LORA_RST 14 // GPIO14 - SX1276 RST
- #define LORA_IRQ 26 // GPIO26 - SX1276 IRQ (interrupt request)
- #define azul 32
- #define verde 33
- #define vermelho 2
- const char* ssid = "WiFi";
- const char* password = "20172018";
- String idTrap, temp, ent, sai, bat;
- String postar;
- String service;
- String packet = "";
- int recebi;
- String pk[10];
- char MyID = 'R';
- String firebase = "https://us-central1-live-farm-prod.cloudfunctions.net";
- boolean posicionador = false;
- void setup() {
- pinMode(azul, OUTPUT);
- pinMode(verde, OUTPUT);
- pinMode(vermelho, OUTPUT);
- digitalWrite(azul, 1);
- digitalWrite(verde, 1);
- digitalWrite(vermelho, 0);
- Serial.begin(115200);
- // WiFiManager wifiManager;
- // wifiManager.autoConnect("LiveFarm_Config");
- // Connect to Wi-Fi network with SSID and password
- Serial.print("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- // Print local IP address and start web server
- Serial.println("");
- Serial.println("WiFi connected.");
- Serial.println("IP address: ");
- Serial.println(WiFi.localIP());
- digitalWrite(azul, 0);
- digitalWrite(verde, 1);
- digitalWrite(vermelho, 1);
- while (!Serial);
- SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_CS);
- LoRa.setPins(LORA_CS, LORA_RST, LORA_IRQ);
- if (!LoRa.begin(915E6)) {
- while (1);
- }
- else
- {Serial.println("Lora ok");}
- LoRa.setSpreadingFactor(12);
- }
- void loop() {
- int packetSize = LoRa.parsePacket();
- if (packetSize) {
- digitalWrite(azul, 1);
- digitalWrite(verde, 0);
- digitalWrite(vermelho, 1);
- delay(100);
- digitalWrite(azul, 0);
- digitalWrite(verde, 1);
- digitalWrite(vermelho, 1);
- packet = "";
- while (LoRa.available()) {
- packet += (char)LoRa.read(); // Assemble new packet
- }
- Serial.println(packet);
- int ultimoChar = packet.length()-1;
- Serial.println(packet.charAt(ultimoChar));
- pk[0]="";pk[1]="";pk[2]="";
- pk[3]="";pk[4]="";pk[5]="";
- int ref=0;
- for(int w = 0; w<packet.length(); w++){
- char c = packet.charAt(w);
- if(c == ';'){
- ref++;
- }
- else{
- if(c == '@' || c == '!' || c == '?'|| c =='%'){}
- else{pk[ref] += c;}
- }
- }
- idTrap = pk[0];
- ent = pk[1];
- sai = pk[2];
- bat = pk[3];
- temp = pk[4];
- pk[0]="";pk[1]="";pk[2]="";
- pk[3]="";pk[4]="";pk[5]="";
- ref=0;
- for(int w = 0; w<packet.length(); w++){
- char c = packet.charAt(w);
- if(c == ';'){
- ref++;
- }
- else{
- if(c == '@' || c == '!' || c == '?' || c =='%'){}
- else{pk[ref] += c;}
- }
- }
- idTrap = pk[0];
- ent = pk[1];
- sai = pk[2];
- bat = pk[3];
- temp = pk[4];
- Serial.println();
- Serial.print("idTrap: ");Serial.println(idTrap);
- Serial.print("entrada: ");Serial.println(ent);
- Serial.print("saida: ");Serial.println(sai);
- Serial.print("bateria: ");Serial.println(bat);
- Serial.print("temperatura: ");Serial.println(temp);
- Serial.println();Serial.println();
- if(packet.charAt(ultimoChar) == '%' && packet.charAt(0) == MyID){
- Serial.println("recebi do posicionador");
- String resp;
- resp += MyID;
- resp += "XXXXXXXXXXXXXXXXXXXXXXXXX%";
- delay(10);
- LoRa.beginPacket();
- LoRa.print(resp);
- LoRa.endPacket();
- posicionador = true;
- }
- else if(packet.charAt(ultimoChar) == '?' && packet.charAt(0) == MyID){
- String resp;
- resp += MyID;
- resp += "OK";
- LoRa.beginPacket();
- LoRa.print(resp);
- LoRa.endPacket();
- service = "/trapBug";
- postar = "";
- postar += "{";
- postar += '\n';
- postar += " \"trap\":\"";
- postar += idTrap;
- postar += "\",";
- postar += '\n';
- postar += " \"hasBug\":";
- postar += "true";
- postar += '\n';
- postar += "}";
- posicionador = false;
- }
- else if(packet.charAt(ultimoChar) == '!' && packet.charAt(0) == MyID){
- String resp;
- resp += MyID;
- resp += "OK";
- LoRa.beginPacket();
- LoRa.print(resp);
- LoRa.endPacket();
- service = "/trapBug";
- postar = "";
- postar += "{";
- postar += '\n';
- postar += " \"trap\":\"";
- postar += idTrap;
- postar += "\",";
- postar += '\n';
- postar += " \"hasBug\":";
- postar += "false";
- postar += '\n';
- postar += "}";
- posicionador = false;
- }
- else if(packet.charAt(ultimoChar) == '@' && packet.charAt(0) == MyID){
- String resp;
- resp += MyID;
- resp += "OK";
- LoRa.beginPacket();
- LoRa.print(resp);
- LoRa.endPacket();
- service = "/trapUpdate";
- postar = "";
- postar += "{";
- postar += '\n';
- postar += " \"trap\":\"";
- postar += idTrap;
- postar += "\",";
- postar += '\n';
- postar += " \"battery\":";
- postar += bat;
- postar += ",";
- postar += '\n';
- postar += " \"temperature\":";
- postar += temp;
- postar += '\n';
- postar += "}";
- posicionador = false;
- }
- else{
- String resp;
- resp += idTrap;
- resp += "OK";
- LoRa.beginPacket();
- LoRa.print(resp);
- LoRa.endPacket();
- postar = "";
- postar += "{";
- postar += '\n';
- postar += " \"trap\":\"";
- postar += idTrap;
- postar += "\",";
- postar += '\n';
- postar += " \"input\":";
- postar += ent;
- postar += ",";
- postar += '\n';
- postar += " \"output\":";
- postar += sai;
- postar += ",";
- postar += '\n';
- postar += " \"battery\":";
- postar += bat;
- postar += ",";
- postar += '\n';
- postar += " \"temperature\":";
- postar += temp;
- postar += '\n';
- postar += "}";
- posicionador = false;
- }
- if(!posicionador){sendPost();}
- }
- }
- void sendPost() {
- if(WiFi.status()== WL_CONNECTED){ //Check WiFi connection status
- String EnviarPost = firebase;
- EnviarPost += service;
- HTTPClient http;
- http.begin(EnviarPost); //Specify destination for HTTP request
- http.addHeader("Content-Type", "application/json"); //Specify content-type header
- int httpResponseCode = http.POST(postar); //Send the actual POST request
- if(httpResponseCode>0){
- String response = http.getString(); //Get the response to the request
- Serial.println(httpResponseCode); //Print return code
- Serial.println(response); //Print request answer
- }else{
- Serial.print("Error on sending POST: ");
- Serial.println(httpResponseCode);
- }
- http.end(); //Free resources
- }else{
- Serial.println("Error in WiFi connection");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement