From 814b481bab4090b07dd2e47c380d9aea0ece2148 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Thu, 19 Mar 2020 11:29:27 +0100 Subject: [PATCH 1/3] Use IP address for NTP lookup when using MKR NB 1500 since these is usually no DNS available when using NB-IoT --- src/utility/time/NTPUtils.cpp | 6 +++++- src/utility/time/NTPUtils.h | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/utility/time/NTPUtils.cpp b/src/utility/time/NTPUtils.cpp index 64d93ace0..9d31d78aa 100644 --- a/src/utility/time/NTPUtils.cpp +++ b/src/utility/time/NTPUtils.cpp @@ -77,8 +77,12 @@ void NTPUtils::sendNTPpacket(UDP & udp) ntp_packet_buf[13] = 0x4E; ntp_packet_buf[14] = 49; ntp_packet_buf[15] = 52; - + +#ifdef ARDUINO_SAMD_MKRNB1500 + udp.beginPacket(NTP_TIME_SERVER_IP_1, NTP_TIME_SERVER_PORT); +#else udp.beginPacket(NTP_TIME_SERVER, NTP_TIME_SERVER_PORT); +#endif udp.write(ntp_packet_buf, NTP_PACKET_SIZE); udp.endPacket(); } diff --git a/src/utility/time/NTPUtils.h b/src/utility/time/NTPUtils.h index 96ff49785..107baafd0 100644 --- a/src/utility/time/NTPUtils.h +++ b/src/utility/time/NTPUtils.h @@ -32,6 +32,13 @@ #include +/************************************************************************************** + * CONSTANTS + **************************************************************************************/ + +static IPAddress const NTP_TIME_SERVER_IP_1(35,204,74,237); +static IPAddress const NTP_TIME_SERVER_IP_2(34,73,181,129); + /************************************************************************************** * CLASS DECLARATION **************************************************************************************/ From 9b1bd99083289c2db396ce295a3a758ed215d3b2 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Thu, 9 Apr 2020 08:34:41 +0200 Subject: [PATCH 2/3] Overloading begin function in such way that it also accepts IPAddress objects. --- src/ArduinoIoTCloudTCP.cpp | 22 +++++++++++++++------- src/ArduinoIoTCloudTCP.h | 8 +++++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/ArduinoIoTCloudTCP.cpp b/src/ArduinoIoTCloudTCP.cpp index 4b350366f..800c1c3d2 100644 --- a/src/ArduinoIoTCloudTCP.cpp +++ b/src/ArduinoIoTCloudTCP.cpp @@ -102,17 +102,21 @@ ArduinoIoTCloudTCP::ArduinoIoTCloudTCP() int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, String brokerAddress, uint16_t brokerPort) { - _connection = &connection; _brokerAddress = brokerAddress; - _brokerPort = brokerPort; - time_service.begin(&connection); - return begin(_brokerAddress, _brokerPort); + _brokerIp = INADDR_NONE; + return begin(connection, brokerPort); } -int ArduinoIoTCloudTCP::begin(String brokerAddress, uint16_t brokerPort) +int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort) { + _brokerAddress = ""; + _brokerIp = brokerIp; + return begin(connection, brokerPort); +} - _brokerAddress = brokerAddress; +int ArduinoIoTCloudTCP::begin(ConnectionHandler & connection, uint16_t brokerPort) +{ + _connection = &connection; _brokerPort = brokerPort; #ifdef BOARD_HAS_ECCX08 @@ -242,7 +246,11 @@ int ArduinoIoTCloudTCP::reconnect() int ArduinoIoTCloudTCP::connect() { - if (!_mqttClient.connect(_brokerAddress.c_str(), _brokerPort)) return CONNECT_FAILURE; + if (_brokerIp == INADDR_NONE) { + if (!_mqttClient.connect(_brokerAddress.c_str(), _brokerPort)) return CONNECT_FAILURE; + } else { + if (!_mqttClient.connect(_brokerIp, _brokerPort)) return CONNECT_FAILURE; + } if (_mqttClient.subscribe(_stdinTopic) == 0) return CONNECT_FAILURE_SUBSCRIBE; if (_mqttClient.subscribe(_dataTopicIn) == 0) return CONNECT_FAILURE_SUBSCRIBE; if (_mqttClient.subscribe(_ota_topic_in) == 0) return CONNECT_FAILURE_SUBSCRIBE; diff --git a/src/ArduinoIoTCloudTCP.h b/src/ArduinoIoTCloudTCP.h index 5c82c82d3..c0475cf07 100644 --- a/src/ArduinoIoTCloudTCP.h +++ b/src/ArduinoIoTCloudTCP.h @@ -49,6 +49,9 @@ static uint16_t const DEFAULT_BROKER_PORT_SECURE_AUTH = 8883; static char const DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH[] = "mqtts-up.iot.arduino.cc"; static uint16_t const DEFAULT_BROKER_PORT_USER_PASS_AUTH = 8884; +static IPAddress const DEFAULT_BROKER_SECURE_AUTH_IP_1(34,206,248,111); +static IPAddress const DEFAULT_BROKER_SECURE_AUTH_IP_2(3,209,5,114); + /****************************************************************************** * CLASS DECLARATION ******************************************************************************/ @@ -70,7 +73,9 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass #else int begin(ConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_USER_PASS_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_USER_PASS_AUTH); #endif - int begin(String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH); + int begin(ConnectionHandler & connection, IPAddress const brokerIp, uint16_t const brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH); + int begin(ConnectionHandler & connection, uint16_t brokerPort); + #ifdef BOARD_ESP inline void setBoardId (String const device_id) { setDeviceId(device_id); } @@ -101,6 +106,7 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass int _lastSyncRequestTickTime; String _brokerAddress; + IPAddress _brokerIp; uint16_t _brokerPort; uint8_t _mqtt_data_buf[MQTT_TRANSMIT_BUFFER_SIZE]; int _mqtt_data_len; From 6b03c3bf3c72e15c45c4edbfa5d967417ad7ee18 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 8 Jul 2020 09:39:57 +0200 Subject: [PATCH 3/3] Enforce version 2.5.0 for ESP8266 CI compilation --- .github/workflows/compile-examples.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index 5ca9b3962..1e89150bc 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -106,6 +106,7 @@ jobs: # Install ESP8266 platform via Boards Manager - name: esp8266:esp8266 source-url: https://arduino.esp8266.com/stable/package_esp8266com_index.json + version: 2.5.0 libraries: sketch-paths: '"examples/utility/WiFi_Cloud_Blink_with_security_credentials"'