diff --git a/Examples/Universal_Gateway/Universal_Gateway.ino b/Examples/Universal_Gateway/Universal_Gateway.ino index c38e341..b58bfd4 100644 --- a/Examples/Universal_Gateway/Universal_Gateway.ino +++ b/Examples/Universal_Gateway/Universal_Gateway.ino @@ -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 espnow_peer_unknown_data; +#endif + #ifdef ESPNOW_PEER_1 uint8_t ESPNOW1[] = {MAC_PREFIX, ESPNOW_PEER_1}; +std::vector espnow_peer_1_data; #endif #ifdef ESPNOW_PEER_2 uint8_t ESPNOW2[] = {MAC_PREFIX, ESPNOW_PEER_2}; +std::vector 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 lora_peer_1_data; #endif #ifdef LORA_PEER_2 uint8_t LoRa2[6] = {MAC_PREFIX, LORA_PEER_2}; +std::vector 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 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 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); }