|
|
|
@ -1,8 +1,8 @@
|
|
|
|
|
// FARM DATA RELAY SYSTEM
|
|
|
|
|
//
|
|
|
|
|
// Experimental Universal Gateway
|
|
|
|
|
// GATEWAY 2.000
|
|
|
|
|
//
|
|
|
|
|
// Under construction, feedback is appreciated!
|
|
|
|
|
// Developed by Timm Bogner (timmbogner@gmail.com) for Sola Gratia Farm in Urbana, Illinois, USA.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "fdrs_config.h"
|
|
|
|
@ -17,39 +17,43 @@
|
|
|
|
|
CRGB leds[NUM_LEDS];
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t selfAddress[6] = {MAC_PREFIX, UNIT_MAC};
|
|
|
|
|
|
|
|
|
|
#if defined(ESP_GET) || defined(ESP_SEND)
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_ALL
|
|
|
|
|
std::vector<DataReading_t> espnow_peer_unknown_data;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_1
|
|
|
|
|
uint8_t ESPNOW1[] = {MAC_PREFIX, ESPNOW_PEER_1};
|
|
|
|
|
std::vector<DataReading_t> espnow_peer_1_data;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_2
|
|
|
|
|
uint8_t ESPNOW2[] = {MAC_PREFIX, ESPNOW_PEER_2};
|
|
|
|
|
std::vector<DataReading_t> espnow_peer_2_data;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(LORA_GET) || defined(LORA_SEND)
|
|
|
|
|
|
|
|
|
|
#ifdef LORA_PEER_1
|
|
|
|
|
uint8_t LoRa1[6] = {MAC_PREFIX, LORA_PEER_1};
|
|
|
|
|
std::vector<DataReading_t> lora_peer_1_data;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef LORA_PEER_2
|
|
|
|
|
uint8_t LoRa2[6] = {MAC_PREFIX, LORA_PEER_2};
|
|
|
|
|
std::vector<DataReading_t> lora_peer_2_data;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(MQTT_GET) || defined(MQTT_SEND)
|
|
|
|
|
|
|
|
|
|
MQTT_FDRSGateWay MQTT(WIFI_SSID,WIFI_PASS,MQTT_ADDR,MQTT_PORT);
|
|
|
|
|
|
|
|
|
|
std::vector<DataReading_t> mqtt_data;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(ESP_GET) || defined(ESP_SEND)
|
|
|
|
@ -58,12 +62,14 @@ ESP_FDRSGateWay ESPNow;
|
|
|
|
|
|
|
|
|
|
#if defined(SER_GET) || defined(SER_SEND)
|
|
|
|
|
|
|
|
|
|
#if defined(ESP32)
|
|
|
|
|
#ifdef ESP32
|
|
|
|
|
Serial_FDRSGateWay SerialGW(&Serial1,115200);
|
|
|
|
|
#else
|
|
|
|
|
Serial_FDRSGateWay SerialGW(&Serial,115200);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
std::vector<DataReading_t> serial_data;
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(LORA_GET) || defined(LORA_SEND)
|
|
|
|
@ -101,7 +107,7 @@ void setup() {
|
|
|
|
|
|
|
|
|
|
#if defined(SER_GET) || defined(SER_SEND)
|
|
|
|
|
|
|
|
|
|
#if defined(ESP32)
|
|
|
|
|
#ifdef ESP32
|
|
|
|
|
SerialGW.init(SERIAL_8N1,RXD2,TXD2);
|
|
|
|
|
#else
|
|
|
|
|
SerialGW.init();
|
|
|
|
@ -117,54 +123,112 @@ void setup() {
|
|
|
|
|
|
|
|
|
|
void loop() {
|
|
|
|
|
|
|
|
|
|
#if defined(LORA_GET)
|
|
|
|
|
//collect data
|
|
|
|
|
#ifdef LORA_GET
|
|
|
|
|
LoRaGW.get();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(SER_GET)
|
|
|
|
|
#ifdef SER_GET
|
|
|
|
|
SerialGW.get();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(ESP_SEND)
|
|
|
|
|
//get the collected data
|
|
|
|
|
#ifdef ESP_GET
|
|
|
|
|
#ifdef ESPNOW_ALL
|
|
|
|
|
espnow_peer_unknown_data = ESPNow.get_unkown_peer_data();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_1
|
|
|
|
|
espnow_peer_1_data = ESPNow.get_peer_data(ESPNOW1);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_2
|
|
|
|
|
espnow_peer_2_data = ESPNow.get_peer_data(ESPNOW2);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef MQTT_GET
|
|
|
|
|
mqtt_data = MQTT.get_data();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef SER_GET
|
|
|
|
|
serial_data = SerialGW.get_data();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef LORA_GET
|
|
|
|
|
#ifdef LORA_PEER_1
|
|
|
|
|
lora_peer_1_data = LoRaGW.get_peer_data(LoRa1);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef LORA_PEER_1
|
|
|
|
|
lora_peer_2_data = LoRaGW.get_peer_data(LoRa2);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//send the collected data to where you want it
|
|
|
|
|
#ifdef ESP_SEND
|
|
|
|
|
#ifdef ESPNOW_ALL
|
|
|
|
|
ESPNow.release();
|
|
|
|
|
// send ESPNOW_UNKNOWN_PEER data to ESPNOW_UNKNOWN_PEER
|
|
|
|
|
ESPNow.release(espnow_peer_unknown_data);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_1
|
|
|
|
|
ESPNow.release(ESPNOW1);
|
|
|
|
|
// send ESPNOW_PEER_2 data to ESPNOW_PEER_1
|
|
|
|
|
ESPNow.release(espnow_peer_2_data,ESPNOW1);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_2
|
|
|
|
|
ESPNow.release(ESPNOW2);
|
|
|
|
|
// send ESPNOW_PEER_1 data to ESPNOW_PEER_2
|
|
|
|
|
ESPNow.release(espnow_peer_1_data,ESPNOW2);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(MQTT_SEND)
|
|
|
|
|
MQTT.release();
|
|
|
|
|
#ifdef MQTT_SEND
|
|
|
|
|
// send ESPNOW_PEER_1 data to MQTT
|
|
|
|
|
MQTT.release(espnow_peer_1_data);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(SER_SEND)
|
|
|
|
|
SerialGW.release();
|
|
|
|
|
#ifdef SER_SEND
|
|
|
|
|
// send ESPNOW_PEER_2 data to SERIAL
|
|
|
|
|
SerialGW.release(espnow_peer_2_data);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(LORA_SEND)
|
|
|
|
|
LoRaGW.release();
|
|
|
|
|
#ifdef LORA_SEND
|
|
|
|
|
// send SERIAL data to LoRa
|
|
|
|
|
LoRaGW.release(serial_data);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//It does not matter witch one you call.
|
|
|
|
|
//it will clear all the data that has been received.
|
|
|
|
|
#if defined(ESP_SEND)
|
|
|
|
|
//clear out the buffers
|
|
|
|
|
#ifdef ESP_GET
|
|
|
|
|
#ifdef ESPNOW_ALL
|
|
|
|
|
ESPNow.flush();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(MQTT_SEND)
|
|
|
|
|
#ifdef ESPNOW_PEER_1
|
|
|
|
|
ESPNow.flush(ESPNOW1);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef ESPNOW_PEER_2
|
|
|
|
|
ESPNow.flush(ESPNOW2);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef MQTT_GET
|
|
|
|
|
MQTT.flush();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(SER_SEND)
|
|
|
|
|
#ifdef SER_GET
|
|
|
|
|
SerialGW.flush();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(LORA_SEND)
|
|
|
|
|
LoRaGW.flush();
|
|
|
|
|
#ifdef LORA_GET
|
|
|
|
|
#ifdef LORA_PEER_1
|
|
|
|
|
LoRaGW.flush(LoRa1);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef LORA_PEER_1
|
|
|
|
|
LoRaGW.flush(LoRa2);
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
delay(1000);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|