From 95d7c003cbe8fe6daf132dbcb57a2a9aca0655b3 Mon Sep 17 00:00:00 2001 From: Marcelo Aquino Date: Tue, 13 Jun 2017 17:59:01 -0300 Subject: [PATCH] Fix UDP on Ethernet gateway (#858) - Fix UDP send - Add a default value for MY_IP_GATEWAY_ADDRESS and MY_IP_SUBNET_ADDRESS, making them optional when using MY_IP_ADDRESS - Add support for MY_IP_GATEWAY_ADDRESS and MY_IP_SUBNET_ADDRESS to W5100 --- core/MyGatewayTransportEthernet.cpp | 135 ++++++++++-------- core/MyGatewayTransportMQTTClient.cpp | 54 ++++--- examples/GatewayESP8266/GatewayESP8266.ino | 36 +++-- .../GatewayESP8266MQTTClient.ino | 35 +++-- .../GatewayESP8266OTA/GatewayESP8266OTA.ino | 39 +++-- examples/GatewayW5100/GatewayW5100.ino | 23 ++- .../GatewayW5100MQTTClient.ino | 13 +- 7 files changed, 181 insertions(+), 154 deletions(-) diff --git a/core/MyGatewayTransportEthernet.cpp b/core/MyGatewayTransportEthernet.cpp index ad46456..3ca7609 100644 --- a/core/MyGatewayTransportEthernet.cpp +++ b/core/MyGatewayTransportEthernet.cpp @@ -28,7 +28,20 @@ IPAddress _ethernetControllerIP(MY_CONTROLLER_IP_ADDRESS); #if defined(MY_IP_ADDRESS) IPAddress _ethernetGatewayIP(MY_IP_ADDRESS); -#endif +#if defined(MY_IP_GATEWAY_ADDRESS) +IPAddress _gatewayIp(MY_IP_GATEWAY_ADDRESS); +#elif defined(MY_GATEWAY_ESP8266) /* Elif part of MY_IP_GATEWAY_ADDRESS */ +// Assume the gateway will be the machine on the same network as the local IP +// but with last octet being '1' +IPAddress _gatewayIp(_ethernetGatewayIP[0], _ethernetGatewayIP[1], _ethernetGatewayIP[2], 1); +#endif /* End of MY_IP_GATEWAY_ADDRESS */ +#if defined(MY_IP_SUBNET_ADDRESS) +IPAddress _subnetIp(MY_IP_SUBNET_ADDRESS); +#elif defined(MY_GATEWAY_ESP8266) /* Elif part of MY_IP_SUBNET_ADDRESS */ +IPAddress _subnetIp(255, 255, 255, 0); +#endif /* End of MY_IP_SUBNET_ADDRESS */ +#endif /* End of MY_IP_ADDRESS */ + uint8_t _ethernetGatewayMAC[] = { MY_MAC_ADDRESS }; uint16_t _ethernetGatewayPort = MY_PORT; MyMessage _ethernetMsg; @@ -45,34 +58,33 @@ typedef struct { #define EthernetServer WiFiServer #define EthernetClient WiFiClient #define EthernetUDP WiFiUDP +#endif /* End of MY_GATEWAY_ESP8266 */ -#if defined(MY_IP_ADDRESS) -IPAddress _gatewayIp(MY_IP_GATEWAY_ADDRESS); -IPAddress _subnetIp(MY_IP_SUBNET_ADDRESS); -#endif -#endif - +#if defined(MY_GATEWAY_CLIENT_MODE) #if defined(MY_USE_UDP) EthernetUDP _ethernetServer; -#elif defined(MY_GATEWAY_LINUX) +#endif /* End of MY_USE_UDP */ +#elif defined(MY_GATEWAY_LINUX) /* Elif part of MY_GATEWAY_CLIENT_MODE */ EthernetServer _ethernetServer(_ethernetGatewayPort, MY_GATEWAY_MAX_CLIENTS); -#elif defined(MY_GATEWAY_CLIENT_MODE) -// Nothing to do here -#else +#else /* Else part of MY_GATEWAY_CLIENT_MODE */ EthernetServer _ethernetServer(_ethernetGatewayPort); -#endif +#endif /* End of MY_GATEWAY_CLIENT_MODE */ #if defined(MY_GATEWAY_CLIENT_MODE) -static EthernetClient client = EthernetClient(); static inputBuffer inputString; -#elif defined(MY_GATEWAY_ESP8266) || defined(MY_GATEWAY_LINUX) +#if defined(MY_USE_UDP) +// Nothing to do here +#else +static EthernetClient client = EthernetClient(); +#endif /* End of MY_USE_UDP */ +#elif defined(MY_GATEWAY_ESP8266) || defined(MY_GATEWAY_LINUX) /* Elif part of MY_GATEWAY_CLIENT_MODE */ static EthernetClient clients[MY_GATEWAY_MAX_CLIENTS]; static bool clientsConnected[MY_GATEWAY_MAX_CLIENTS]; static inputBuffer inputString[MY_GATEWAY_MAX_CLIENTS]; -#else +#else /* Else part of MY_GATEWAY_CLIENT_MODE */ static EthernetClient client = EthernetClient(); static inputBuffer inputString; -#endif +#endif /* End of MY_GATEWAY_CLIENT_MODE */ #ifndef MY_IP_ADDRESS void gatewayTransportRenewIP(); @@ -80,7 +92,7 @@ void gatewayTransportRenewIP(); // On W5100 boards with SPI_EN exposed we can use the real SPI bus together with radio // (if we enable it during usage) -#ifdef MY_W5100_SPI_EN +#if defined(MY_W5100_SPI_EN) void _w5100_spi_en(bool enable) { if (enable) { @@ -103,13 +115,13 @@ bool gatewayTransportInit(void) #if defined(MY_GATEWAY_ESP8266) #if defined(MY_ESP8266_SSID) // Turn off access point - WiFi.mode (WIFI_STA); + WiFi.mode(WIFI_STA); #if defined(MY_ESP8266_HOSTNAME) WiFi.hostname(MY_ESP8266_HOSTNAME); -#endif -#ifdef MY_IP_ADDRESS +#endif /* End of MY_ESP8266_HOSTNAME */ +#if defined(MY_IP_ADDRESS) WiFi.config(_ethernetGatewayIP, _gatewayIp, _subnetIp); -#endif +#endif /* End of MY_IP_ADDRESS */ (void)WiFi.begin(MY_ESP8266_SSID, MY_ESP8266_PASSWORD); while (WiFi.status() != WL_CONNECTED) { wait(500); @@ -117,35 +129,41 @@ bool gatewayTransportInit(void) } MY_SERIALDEVICE.print(F("IP: ")); MY_SERIALDEVICE.println(WiFi.localIP()); -#endif -#elif defined(MY_GATEWAY_LINUX) +#endif /* End of MY_ESP8266_SSID */ +#elif defined(MY_GATEWAY_LINUX) /* Elif part of MY_GATEWAY_ESP8266 */ // Nothing to do here -#else -#ifdef MY_IP_ADDRESS +#else /* Else part of MY_GATEWAY_ESP8266 */ +#if defined(MY_IP_GATEWAY_ADDRESS) && defined(MY_IP_SUBNET_ADDRESS) + // DNS server set to gateway ip + Ethernet.begin(_ethernetGatewayMAC, _ethernetGatewayIP, _gatewayIp, _gatewayIp, _subnetIp); +#elif defined(MY_IP_ADDRESS) Ethernet.begin(_ethernetGatewayMAC, _ethernetGatewayIP); -#else +#else /* Else part of MY_IP_GATEWAY_ADDRESS && MY_IP_SUBNET_ADDRESS */ // Get IP address from DHCP if (!Ethernet.begin(_ethernetGatewayMAC)) { MY_SERIALDEVICE.print(F("DHCP FAILURE...")); _w5100_spi_en(false); return false; } -#endif +#endif /* End of MY_IP_GATEWAY_ADDRESS && MY_IP_SUBNET_ADDRESS */ MY_SERIALDEVICE.print(F("IP: ")); MY_SERIALDEVICE.println(Ethernet.localIP()); // give the Ethernet interface a second to initialize delay(1000); -#endif /* MY_GATEWAY_ESP8266 */ +#endif /* End of MY_GATEWAY_ESP8266 */ #if defined(MY_GATEWAY_CLIENT_MODE) +#if defined(MY_USE_UDP) + _ethernetServer.begin(_ethernetGatewayPort); +#else /* Else part of MY_USE_UDP */ #if defined(MY_GATEWAY_LINUX) && defined(MY_IP_ADDRESS) client.bind(_ethernetGatewayIP); -#endif +#endif /* End of MY_GATEWAY_LINUX && MY_IP_ADDRESS */ #if defined(MY_CONTROLLER_URL_ADDRESS) if (client.connect(MY_CONTROLLER_URL_ADDRESS, MY_PORT)) { #else if (client.connect(_ethernetControllerIP, MY_PORT)) { -#endif +#endif /* End of MY_CONTROLLER_URL_ADDRESS */ debug(PSTR("Eth: connect\n")); _w5100_spi_en(false); gatewayTransportSend(buildGw(_msgTmp, I_GATEWAY_READY).set(MSG_GW_STARTUP_COMPLETE)); @@ -155,16 +173,15 @@ bool gatewayTransportInit(void) client.stop(); debug(PSTR("Eth: Failed to connect\n")); } -#elif defined(MY_USE_UDP) - _ethernetServer.begin(_ethernetGatewayPort); -#else +#endif /* End of MY_USE_UDP */ +#else /* Else part of MY_GATEWAY_CLIENT_MODE */ #if defined(MY_GATEWAY_LINUX) && defined(MY_IP_ADDRESS) _ethernetServer.begin(_ethernetGatewayIP); #else // we have to use pointers due to the constructor of EthernetServer _ethernetServer.begin(); -#endif -#endif /* USE_UDP */ +#endif /* End of MY_GATEWAY_LINUX && MY_IP_ADDRESS */ +#endif /* End of MY_GATEWAY_CLIENT_MODE */ _w5100_spi_en(false); return true; @@ -184,18 +201,18 @@ bool gatewayTransportSend(MyMessage &message) _ethernetServer.beginPacket(MY_CONTROLLER_URL_ADDRESS, MY_PORT); #else _ethernetServer.beginPacket(_ethernetControllerIP, MY_PORT); -#endif +#endif /* End of MY_CONTROLLER_URL_ADDRESS */ _ethernetServer.write(_ethernetMsg, strlen(_ethernetMsg)); // returns 1 if the packet was sent successfully nbytes = _ethernetServer.endPacket(); -#else +#else /* Else part of MY_USE_UDP */ if (!client.connected()) { client.stop(); #if defined(MY_CONTROLLER_URL_ADDRESS) if (client.connect(MY_CONTROLLER_URL_ADDRESS, MY_PORT)) { #else if (client.connect(_ethernetControllerIP, MY_PORT)) { -#endif +#endif /* End of MY_CONTROLLER_URL_ADDRESS */ debug(PSTR("Eth: connect\n")); _w5100_spi_en(false); gatewayTransportSend(buildGw(_msgTmp, I_GATEWAY_READY).set(MSG_GW_STARTUP_COMPLETE)); @@ -209,8 +226,8 @@ bool gatewayTransportSend(MyMessage &message) } } nbytes = client.write((const uint8_t*)_ethernetMsg, strlen(_ethernetMsg)); -#endif -#else +#endif /* End of MY_USE_UDP */ +#else /* Else part of MY_GATEWAY_CLIENT_MODE */ // Send message to connected clients #if defined(MY_GATEWAY_ESP8266) for (uint8_t i = 0; i < ARRAY_SIZE(clients); i++) { @@ -218,14 +235,17 @@ bool gatewayTransportSend(MyMessage &message) nbytes += clients[i].write((uint8_t*)_ethernetMsg, strlen(_ethernetMsg)); } } -#else +#else /* Else part of MY_GATEWAY_ESP8266 */ nbytes = _ethernetServer.write(_ethernetMsg); -#endif -#endif /* MY_GATEWAY_CLIENT_MODE */ +#endif /* End of MY_GATEWAY_ESP8266 */ +#endif /* End of MY_GATEWAY_CLIENT_MODE */ _w5100_spi_en(false); return (nbytes > 0); } +#if defined(MY_USE_UDP) +// Nothing to do here +#else #if (defined(MY_GATEWAY_ESP8266) || defined(MY_GATEWAY_LINUX)) && !defined(MY_GATEWAY_CLIENT_MODE) bool _readFromClient(uint8_t i) { @@ -256,7 +276,7 @@ bool _readFromClient(uint8_t i) } return false; } -#else +#else /* Else part of MY_GATEWAY_ESP8266 || MY_GATEWAY_LINUX || !MY_GATEWAY_CLIENT_MODE */ bool _readFromClient(void) { while (client.connected() && client.available()) { @@ -286,8 +306,8 @@ bool _readFromClient(void) } return false; } -#endif - +#endif /* End of MY_GATEWAY_ESP8266 || MY_GATEWAY_LINUX || !MY_GATEWAY_CLIENT_MODE */ +#endif /* End of MY_USE_UDP */ bool gatewayTransportAvailable(void) { @@ -297,36 +317,30 @@ bool gatewayTransportAvailable(void) gatewayTransportRenewIP(); #endif -#ifdef MY_USE_UDP +#if defined(MY_GATEWAY_CLIENT_MODE) +#if defined(MY_USE_UDP) int packet_size = _ethernetServer.parsePacket(); if (packet_size) { //debug(PSTR("UDP packet available. Size:%d\n"), packet_size); -#if defined(MY_GATEWAY_ESP8266) && !defined(MY_GATEWAY_CLIENT_MODE) - _ethernetServer.read(inputString[0].string, MY_GATEWAY_MAX_RECEIVE_LENGTH); - inputString[0].string[packet_size] = 0; - debug(PSTR("UDP packet received: %s\n"), inputString[0].string); - const bool ok = protocolParse(_ethernetMsg, inputString[0].string); -#else _ethernetServer.read(inputString.string, MY_GATEWAY_MAX_RECEIVE_LENGTH); inputString.string[packet_size] = 0; debug(PSTR("UDP packet received: %s\n"), inputString.string); _w5100_spi_en(false); const bool ok = protocolParse(_ethernetMsg, inputString.string); -#endif if (ok) { setIndication(INDICATION_GW_RX); } return ok; } -#elif defined(MY_GATEWAY_CLIENT_MODE) +#else /* Else part of MY_USE_UDP */ if (!client.connected()) { client.stop(); #if defined(MY_CONTROLLER_URL_ADDRESS) if (client.connect(MY_CONTROLLER_URL_ADDRESS, MY_PORT)) { #else if (client.connect(_ethernetControllerIP, MY_PORT)) { -#endif +#endif /* End of MY_CONTROLLER_URL_ADDRESS */ debug(PSTR("Eth: connect\n")); _w5100_spi_en(false); gatewayTransportSend(buildGw(_msgTmp, I_GATEWAY_READY).set(MSG_GW_STARTUP_COMPLETE)); @@ -343,7 +357,8 @@ bool gatewayTransportAvailable(void) _w5100_spi_en(false); return true; } -#else +#endif /* End of MY_USE_UDP */ +#else /* Else part of MY_GATEWAY_CLIENT_MODE */ #if defined(MY_GATEWAY_ESP8266) || defined(MY_GATEWAY_LINUX) // ESP8266: Go over list of clients and stop any that are no longer connected. // If the server has a new client connection it will be assigned to a free slot. @@ -382,7 +397,7 @@ bool gatewayTransportAvailable(void) return true; } } -#else +#else /* Else part of MY_GATEWAY_ESP8266 || MY_GATEWAY_LINUX */ // W5100/ENC module does not have hasClient-method. We can only serve one client at the time. EthernetClient newclient = _ethernetServer.available(); // if a new client connects make sure to dispose any previous existing sockets @@ -409,8 +424,8 @@ bool gatewayTransportAvailable(void) } } } -#endif /* MY_GATEWAY_ESP8266 */ -#endif +#endif /* End of MY_GATEWAY_ESP8266 || MY_GATEWAY_LINUX */ +#endif /* End of MY_GATEWAY_CLIENT_MODE */ _w5100_spi_en(false); return false; } diff --git a/core/MyGatewayTransportMQTTClient.cpp b/core/MyGatewayTransportMQTTClient.cpp index a9d1564..972cd59 100644 --- a/core/MyGatewayTransportMQTTClient.cpp +++ b/core/MyGatewayTransportMQTTClient.cpp @@ -26,21 +26,29 @@ IPAddress _brokerIp(MY_CONTROLLER_IP_ADDRESS); #endif +#if defined(MY_IP_ADDRESS) +IPAddress _MQTT_clientIp(MY_IP_ADDRESS); +#if defined(MY_IP_GATEWAY_ADDRESS) +IPAddress _gatewayIp(MY_IP_GATEWAY_ADDRESS); +#elif defined(MY_GATEWAY_ESP8266) /* Elif part of MY_IP_GATEWAY_ADDRESS */ +// Assume the gateway will be the machine on the same network as the local IP +// but with last octet being '1' +IPAddress _gatewayIp(_MQTT_clientIp[0], _MQTT_clientIp[1], _MQTT_clientIp[2], 1); +#endif /* End of MY_IP_GATEWAY_ADDRESS */ +#if defined(MY_IP_SUBNET_ADDRESS) +IPAddress _subnetIp(MY_IP_SUBNET_ADDRESS); +#elif defined(MY_GATEWAY_ESP8266) /* Elif part of MY_IP_SUBNET_ADDRESS */ +IPAddress _subnetIp(255, 255, 255, 0); +#endif /* End of MY_IP_SUBNET_ADDRESS */ +#endif /* End of MY_IP_ADDRESS */ + #if defined(MY_GATEWAY_ESP8266) #define EthernetClient WiFiClient -#if defined(MY_IP_ADDRESS) -IPAddress _gatewayIp(MY_IP_GATEWAY_ADDRESS); -IPAddress _subnetIp(MY_IP_SUBNET_ADDRESS); -#endif #elif defined(MY_GATEWAY_LINUX) // Nothing to do here #else uint8_t _MQTT_clientMAC[] = { MY_MAC_ADDRESS }; -#endif - -#if defined(MY_IP_ADDRESS) -IPAddress _MQTT_clientIp(MY_IP_ADDRESS); -#endif +#endif /* End of MY_GATEWAY_ESP8266 */ static EthernetClient _MQTT_ethClient; static PubSubClient _MQTT_client(_MQTT_ethClient); @@ -56,12 +64,12 @@ bool gatewayTransportSend(MyMessage &message) setIndication(INDICATION_GW_TX); char *topic = protocolFormatMQTTTopic(MY_MQTT_PUBLISH_TOPIC_PREFIX, message); debug(PSTR("Sending message on topic: %s\n"), topic); -#ifdef MY_MQTT_CLIENT_PUBLISH_RETAIN +#if defined(MY_MQTT_CLIENT_PUBLISH_RETAIN) bool retain = mGetCommand(message) == C_SET || (mGetCommand(message) == C_INTERNAL && message.type == I_BATTERY_LEVEL); #else bool retain = false; -#endif +#endif /* End of MY_MQTT_CLIENT_PUBLISH_RETAIN */ return _MQTT_client.publish(topic, message.getString(_convBuffer), retain); } @@ -103,26 +111,26 @@ bool gatewayTransportConnect(void) } MY_SERIALDEVICE.print(F("IP: ")); MY_SERIALDEVICE.println(WiFi.localIP()); -#elif defined(MY_GATEWAY_LINUX) +#elif defined(MY_GATEWAY_LINUX) /* Elif part of MY_GATEWAY_ESP8266 */ #if defined(MY_IP_ADDRESS) _MQTT_ethClient.bind(_MQTT_clientIp); -#endif -#else -#ifdef MY_IP_ADDRESS +#endif /* End of MY_IP_ADDRESS */ +#else /* Else part of MY_GATEWAY_ESP8266 */ +#if defined(MY_IP_ADDRESS) Ethernet.begin(_MQTT_clientMAC, _MQTT_clientIp); -#else +#else /* Else part of MY_IP_ADDRESS */ // Get IP address from DHCP if (!Ethernet.begin(_MQTT_clientMAC)) { MY_SERIALDEVICE.print(F("DHCP FAILURE...")); _MQTT_connecting = false; return false; } -#endif +#endif /* End of MY_IP_ADDRESS */ MY_SERIALDEVICE.print(F("IP: ")); MY_SERIALDEVICE.println(Ethernet.localIP()); // give the Ethernet interface a second to initialize delay(1000); -#endif +#endif /* End of MY_GATEWAY_ESP8266 */ return true; } @@ -133,7 +141,7 @@ bool gatewayTransportInit(void) _MQTT_client.setServer(_brokerIp, MY_PORT); #else _MQTT_client.setServer(MY_CONTROLLER_URL_ADDRESS, MY_PORT); -#endif +#endif /* End of MY_CONTROLLER_IP_ADDRESS */ _MQTT_client.setCallback(incomingMQTT); @@ -142,12 +150,12 @@ bool gatewayTransportInit(void) WiFi.mode(WIFI_STA); #if defined(MY_ESP8266_HOSTNAME) WiFi.hostname(MY_ESP8266_HOSTNAME); -#endif -#ifdef MY_IP_ADDRESS +#endif /* End of MY_ESP8266_HOSTNAME */ +#if defined(MY_IP_ADDRESS) WiFi.config(_MQTT_clientIp, _gatewayIp, _subnetIp); -#endif +#endif /* End of MY_IP_ADDRESS */ (void)WiFi.begin(MY_ESP8266_SSID, MY_ESP8266_PASSWORD); -#endif +#endif /* End of MY_GATEWAY_ESP8266 */ gatewayTransportConnect(); diff --git a/examples/GatewayESP8266/GatewayESP8266.ino b/examples/GatewayESP8266/GatewayESP8266.ino index 950bd31..9d1f56e 100644 --- a/examples/GatewayESP8266/GatewayESP8266.ino +++ b/examples/GatewayESP8266/GatewayESP8266.ino @@ -65,7 +65,6 @@ * Make sure to fill in your ssid and WiFi password below for ssid & pass. */ - // Enable debug prints to serial monitor #define MY_DEBUG @@ -82,18 +81,18 @@ #define MY_ESP8266_PASSWORD "MyVerySecretPassword" // Enable UDP communication -//#define MY_USE_UDP +//#define MY_USE_UDP // If using UDP you need to set MY_CONTROLLER_IP_ADDRESS below // Set the hostname for the WiFi Client. This is the hostname // it will pass to the DHCP server if not static. -// #define MY_ESP8266_HOSTNAME "sensor-gateway" +//#define MY_ESP8266_HOSTNAME "sensor-gateway" // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP) //#define MY_IP_ADDRESS 192,168,178,87 -// If using static ip you need to define Gateway and Subnet address as well -#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 -#define MY_IP_SUBNET_ADDRESS 255,255,255,0 +// If using static ip you can define Gateway and Subnet address as well +//#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 +//#define MY_IP_SUBNET_ADDRESS 255,255,255,0 // The port to keep open on node server mode #define MY_PORT 5003 @@ -106,44 +105,43 @@ //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68 // Enable inclusion mode -#define MY_INCLUSION_MODE_FEATURE +//#define MY_INCLUSION_MODE_FEATURE // Enable Inclusion mode button on gateway -// #define MY_INCLUSION_BUTTON_FEATURE +//#define MY_INCLUSION_BUTTON_FEATURE // Set inclusion mode duration (in seconds) -#define MY_INCLUSION_MODE_DURATION 60 +//#define MY_INCLUSION_MODE_DURATION 60 // Digital pin used for inclusion mode button -#define MY_INCLUSION_MODE_BUTTON_PIN 3 - +//#define MY_INCLUSION_MODE_BUTTON_PIN 3 // Set blinking period -// #define MY_DEFAULT_LED_BLINK_PERIOD 300 +//#define MY_DEFAULT_LED_BLINK_PERIOD 300 // Flash leds on rx/tx/err // Led pins used if blinking feature is enabled above -#define MY_DEFAULT_ERR_LED_PIN 16 // Error led pin -#define MY_DEFAULT_RX_LED_PIN 16 // Receive led pin -#define MY_DEFAULT_TX_LED_PIN 16 // the PCB, on board LED +//#define MY_DEFAULT_ERR_LED_PIN 16 // Error led pin +//#define MY_DEFAULT_RX_LED_PIN 16 // Receive led pin +//#define MY_DEFAULT_TX_LED_PIN 16 // the PCB, on board LED #if defined(MY_USE_UDP) #include #endif #include - #include void setup() { + // Setup locally attached sensors } void presentation() { - // Present locally attached sensors here + // Present locally attached sensors here } - void loop() { - // Send locally attached sensors data here + // Send locally attached sensors data here } + diff --git a/examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino b/examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino index 2f2aecd..0e74a85 100644 --- a/examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino +++ b/examples/GatewayESP8266MQTTClient/GatewayESP8266MQTTClient.ino @@ -57,7 +57,6 @@ * Make sure to fill in your ssid and WiFi password below for ssid & pass. */ - // Enable debug prints to serial monitor #define MY_DEBUG @@ -91,12 +90,11 @@ // #define MY_ESP8266_HOSTNAME "mqtt-sensor-gateway" // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP) -#define MY_IP_ADDRESS 192,168,178,87 - -// If using static ip you need to define Gateway and Subnet address as well -#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 -#define MY_IP_SUBNET_ADDRESS 255,255,255,0 +//#define MY_IP_ADDRESS 192,168,178,87 +// If using static ip you can define Gateway and Subnet address as well +//#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 +//#define MY_IP_SUBNET_ADDRESS 255,255,255,0 // MQTT broker ip address. #define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68 @@ -104,39 +102,38 @@ // The MQTT broker port to to open #define MY_PORT 1883 -/* // Enable inclusion mode -#define MY_INCLUSION_MODE_FEATURE +//#define MY_INCLUSION_MODE_FEATURE // Enable Inclusion mode button on gateway -#define MY_INCLUSION_BUTTON_FEATURE +//#define MY_INCLUSION_BUTTON_FEATURE // Set inclusion mode duration (in seconds) -#define MY_INCLUSION_MODE_DURATION 60 +//#define MY_INCLUSION_MODE_DURATION 60 // Digital pin used for inclusion mode button -#define MY_INCLUSION_MODE_BUTTON_PIN 3 +//#define MY_INCLUSION_MODE_BUTTON_PIN 3 // Set blinking period -#define MY_DEFAULT_LED_BLINK_PERIOD 300 +//#define MY_DEFAULT_LED_BLINK_PERIOD 300 // Flash leds on rx/tx/err -#define MY_DEFAULT_ERR_LED_PIN 16 // Error led pin -#define MY_DEFAULT_RX_LED_PIN 16 // Receive led pin -#define MY_DEFAULT_TX_LED_PIN 16 // the PCB, on board LED -*/ +//#define MY_DEFAULT_ERR_LED_PIN 16 // Error led pin +//#define MY_DEFAULT_RX_LED_PIN 16 // Receive led pin +//#define MY_DEFAULT_TX_LED_PIN 16 // the PCB, on board LED #include #include void setup() { + // Setup locally attached sensors } void presentation() { - // Present locally attached sensors here + // Present locally attached sensors here } - void loop() { - // Send locally attech sensors data here + // Send locally attech sensors data here } + diff --git a/examples/GatewayESP8266OTA/GatewayESP8266OTA.ino b/examples/GatewayESP8266OTA/GatewayESP8266OTA.ino index 5de0965..3c52f9d 100644 --- a/examples/GatewayESP8266OTA/GatewayESP8266OTA.ino +++ b/examples/GatewayESP8266OTA/GatewayESP8266OTA.ino @@ -88,14 +88,14 @@ // #define MY_ESP8266_HOSTNAME "sensor-ota-gateway" // Enable UDP communication -//#define MY_USE_UDP +//#define MY_USE_UDP // If using UDP you need to set MY_CONTROLLER_IP_ADDRESS below // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP) //#define MY_IP_ADDRESS 192,168,178,87 -// If using static ip you need to define Gateway and Subnet address as well -#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 -#define MY_IP_SUBNET_ADDRESS 255,255,255,0 +// If using static ip you can define Gateway and Subnet address as well +//#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 +//#define MY_IP_SUBNET_ADDRESS 255,255,255,0 // The port to keep open on node server mode #define MY_PORT 5003 @@ -117,7 +117,6 @@ // Digital pin used for inclusion mode button #define MY_INCLUSION_MODE_BUTTON_PIN 3 - // Set blinking period // #define MY_DEFAULT_LED_BLINK_PERIOD 300 @@ -137,45 +136,41 @@ void setup() { - + // Setup locally attached sensors ArduinoOTA.onStart([]() { - Serial.println("ArduinoOTA start"); + debug("ArduinoOTA start\n"); }); ArduinoOTA.onEnd([]() { - Serial.println("\nArduinoOTA end"); + debug("\nArduinoOTA end\n"); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - Serial.printf("OTA Progress: %u%%\r", (progress / (total / 100))); + debug("OTA Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { - Serial.printf("Error[%u]: ", error); + debug("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { - Serial.println("Auth Failed"); + debug("Auth Failed\n"); } else if (error == OTA_BEGIN_ERROR) { - Serial.println("Begin Failed"); + debug("Begin Failed\n"); } else if (error == OTA_CONNECT_ERROR) { - Serial.println("Connect Failed"); + debug("Connect Failed\n"); } else if (error == OTA_RECEIVE_ERROR) { - Serial.println("Receive Failed"); + debug("Receive Failed\n"); } else if (error == OTA_END_ERROR) { - Serial.println("End Failed"); + debug("End Failed\n"); } }); ArduinoOTA.begin(); - Serial.println("Ready"); - Serial.print("IP address: "); - Serial.println(WiFi.localIP()); - } void presentation() { - // Present locally attached sensors here + // Present locally attached sensors here } - void loop() { - // Send locally attech sensors data here + // Send locally attech sensors data here ArduinoOTA.handle(); } + diff --git a/examples/GatewayW5100/GatewayW5100.ino b/examples/GatewayW5100/GatewayW5100.ino index 868a150..d8cc057 100644 --- a/examples/GatewayW5100/GatewayW5100.ino +++ b/examples/GatewayW5100/GatewayW5100.ino @@ -72,12 +72,19 @@ #define MY_RF24_CS_PIN 6 #endif -// Enable to UDP -//#define MY_USE_UDP +// Enable UDP communication +//#define MY_USE_UDP // If using UDP you need to set MY_CONTROLLER_IP_ADDRESS below + +// Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP) +#define MY_IP_ADDRESS 192,168,178,66 + +// If using static ip you can define Gateway and Subnet address as well +//#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 +//#define MY_IP_SUBNET_ADDRESS 255,255,255,0 -#define MY_IP_ADDRESS 192,168,178,66 // If this is disabled, DHCP is used to retrieve address // Renewal period if using DHCP //#define MY_IP_RENEWAL_INTERVAL 60000 + // The port to keep open on node server mode / or port to contact in client mode #define MY_PORT 5003 @@ -108,18 +115,24 @@ //#define MY_DEFAULT_RX_LED_PIN 8 // Receive led pin //#define MY_DEFAULT_TX_LED_PIN 9 // Transmit led pin - #if defined(MY_USE_UDP) #include #endif #include #include - void setup() { + // Setup locally attached sensors +} + +void presentation() +{ + // Present locally attached sensors here } void loop() { + // Send locally attached sensors data here } + diff --git a/examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino b/examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino index 2b59372..e65ddef 100644 --- a/examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino +++ b/examples/GatewayW5100MQTTClient/GatewayW5100MQTTClient.ino @@ -102,9 +102,9 @@ // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP) #define MY_IP_ADDRESS 192,168,178,87 -// If using static ip you need to define Gateway and Subnet address as well -#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 -#define MY_IP_SUBNET_ADDRESS 255,255,255,0 +// If using static ip you can define Gateway and Subnet address as well +//#define MY_IP_GATEWAY_ADDRESS 192,168,178,1 +//#define MY_IP_SUBNET_ADDRESS 255,255,255,0 // MQTT broker ip address or url. Define one or the other. //#define MY_CONTROLLER_URL_ADDRESS "m20.cloudmqtt.com" @@ -138,15 +138,16 @@ void setup() { + // Setup locally attached sensors } void presentation() { - // Present locally attached sensors here + // Present locally attached sensors here } - void loop() { - // Send locally attached sensors data here + // Send locally attached sensors data here } +