Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.61 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement