From b367c499d6b68cc3084ec98e6de10e4e4ce8c766 Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:29:58 +0100 Subject: [PATCH 1/8] Add files via upload --- .../adafruitio_led_SSL_esp8266.ino | 168 ++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 examples/adafruitio_led_SSL_esp8266/adafruitio_led_SSL_esp8266.ino diff --git a/examples/adafruitio_led_SSL_esp8266/adafruitio_led_SSL_esp8266.ino b/examples/adafruitio_led_SSL_esp8266/adafruitio_led_SSL_esp8266.ino new file mode 100644 index 0000000..8b8620f --- /dev/null +++ b/examples/adafruitio_led_SSL_esp8266/adafruitio_led_SSL_esp8266.ino @@ -0,0 +1,168 @@ +/*************************************************** + Adafruit_led_SSL_esp8266 Example + + Must use ESP8266 Arduino from: + https://github.com/esp8266/Arduino + + Works great with Adafruit's Huzzah ESP board & Feather + ----> https://www.adafruit.com/product/2471 + ----> https://www.adafruit.com/products/2821 + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by aandroide (GitHub) + MIT license, all text above must be included in any redistribution + ****************************************************/ +#include +#include "Adafruit_MQTT.h" +#include "Adafruit_MQTT_Client.h" + +// the on off button feed turns this LED on/off +#define LED 13 + +/************************* WiFi Access Point *********************************/ + +#define WLAN_SSID "...your SSID..." +#define WLAN_PASS "...your password..." + +/************************* Adafruit.io Setup *********************************/ + +#define AIO_SERVER "io.adafruit.com" +#define AIO_SERVERPORT 8883 // 8883 for MQTTS +#define AIO_USERNAME "...your AIO username (see https://accounts.adafruit.com)..." +#define AIO_KEY "...your AIO key..." + +/************ Global State (you don't need to change this!) ******************/ + +// WiFiFlientSecure for SSL/TLS support +WiFiClientSecure client; + +// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details. +Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_USERNAME, AIO_KEY); + +/****************************** Feeds ***************************************/ + +// Notice MQTT paths for AIO follow the form: /feeds/ +Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/onoff"); + +// io.adafruit.com SHA1 fingerprint +const char* fingerprint = "77 00 54 2D DA E7 D8 03 27 31 23 99 EB 27 DB CB A5 4C 57 18"; + +/*************************** Sketch Code ************************************/ + +// Bug workaround for Arduino 1.6.6, it seems to need a function declaration +// for some reason (only affects ESP8266, likely an arduino-builder bug). +void MQTT_connect(); +void verifyFingerprint(); + +void setup() { + pinMode(LED, OUTPUT); + digitalWrite(LED, LOW); + + Serial.begin(115200); + delay(10); + + Serial.println(F("Adafruit IO MQTTS (SSL/TLS) Example")); + + // Connect to WiFi access point. + Serial.println(); Serial.println(); + Serial.print("Connecting to "); + Serial.println(WLAN_SSID); + + WiFi.begin(WLAN_SSID, WLAN_PASS); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(); + + Serial.println("WiFi connected"); + Serial.println("IP address: "); Serial.println(WiFi.localIP()); + + // Setup MQTT subscription for onoff & slider feed. + mqtt.subscribe(&onoffbutton); + // check the fingerprint of io.adafruit.com's SSL cert + verifyFingerprint(); + } + +void loop() { + // Ensure the connection to the MQTT server is alive (this will make the first + // connection and automatically reconnect when disconnected). See the MQTT_connect + // function definition further below. + MQTT_connect(); + + // this is our 'wait for incoming subscription packets' busy subloop + // try to spend your time here + + Adafruit_MQTT_Subscribe *subscription; + while ((subscription = mqtt.readSubscription(5000))) { + // Check if its the onoff button feed + if (subscription == &onoffbutton) { + Serial.print(F("Button: ")); + Serial.println((char *)onoffbutton.lastread); + + if (strcmp((char *)onoffbutton.lastread, "ON") == 0) { + digitalWrite(LED, HIGH); + } + if (strcmp((char *)onoffbutton.lastread, "OFF") == 0) { + digitalWrite(LED, LOW); + } + } + } + + // ping the server to keep the mqtt connection alive + if(! mqtt.ping()) { + mqtt.disconnect(); + } + +} + +void verifyFingerprint() { + + const char* host = AIO_SERVER; + + Serial.print("Connecting to "); + Serial.println(host); + + if (! client.connect(host, AIO_SERVERPORT)) { + Serial.println("Connection failed. Halting execution."); + while(1); + } + + if (client.verify(fingerprint, host)) { + Serial.println("Connection secure."); + } else { + Serial.println("Connection insecure! Halting execution."); + while(1); + } + +} + +// Function to connect and reconnect as necessary to the MQTT server. +// Should be called in the loop function and it will take care if connecting. +void MQTT_connect() { + int8_t ret; + + // Stop if already connected. + if (mqtt.connected()) { + return; + } + + Serial.print("Connecting to MQTT... "); + + uint8_t retries = 3; + while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected + Serial.println(mqtt.connectErrorString(ret)); + Serial.println("Retrying MQTT connection in 5 seconds..."); + mqtt.disconnect(); + delay(5000); // wait 5 seconds + retries--; + if (retries == 0) { + // basically die and wait for WDT to reset me + while (1); + } + } + Serial.println("MQTT Connected!"); +} From d74b17fa5e08d5c2fcbc8c96cf6ec20998b2d775 Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:44:34 +0100 Subject: [PATCH 2/8] Create .zero.test.skip --- esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip | 1 + 1 file changed, 1 insertion(+) create mode 100644 esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip diff --git a/esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip b/esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip @@ -0,0 +1 @@ + From ec9c182bcfc2b61a4a0de8cd6d4030130188fbd4 Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:44:57 +0100 Subject: [PATCH 3/8] Create .zero.test.skip --- examples/adafruitio_led_SSL_esp8266/.zero.test.skip | 1 + 1 file changed, 1 insertion(+) create mode 100644 examples/adafruitio_led_SSL_esp8266/.zero.test.skip diff --git a/examples/adafruitio_led_SSL_esp8266/.zero.test.skip b/examples/adafruitio_led_SSL_esp8266/.zero.test.skip new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/examples/adafruitio_led_SSL_esp8266/.zero.test.skip @@ -0,0 +1 @@ + From 10175c2823dcfe1b7aafe92b859395921b38bd27 Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:48:24 +0100 Subject: [PATCH 4/8] Delete .zero.test.skip --- esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip | 1 - 1 file changed, 1 deletion(-) delete mode 100644 esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip diff --git a/esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip b/esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip deleted file mode 100644 index 8b13789..0000000 --- a/esempi/ adafruitio_led_SSL_esp8266/.zero.test.skip +++ /dev/null @@ -1 +0,0 @@ - From 3ec9addd12fb566ffb7653b286caaa779955707a Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:49:33 +0100 Subject: [PATCH 5/8] Delete .zero.test.skip --- examples/adafruitio_errors_esp8266/.zero.test.skip | 1 - 1 file changed, 1 deletion(-) delete mode 100644 examples/adafruitio_errors_esp8266/.zero.test.skip diff --git a/examples/adafruitio_errors_esp8266/.zero.test.skip b/examples/adafruitio_errors_esp8266/.zero.test.skip deleted file mode 100644 index 8b13789..0000000 --- a/examples/adafruitio_errors_esp8266/.zero.test.skip +++ /dev/null @@ -1 +0,0 @@ - From 42793cde412ff4aa1f0c6ce926a140b12fa86de1 Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:49:53 +0100 Subject: [PATCH 6/8] Library Fixes (adafruit#127) --- esempi/ adafruitio_errors_esp8266/.zero.test.skip | 1 + 1 file changed, 1 insertion(+) create mode 100644 esempi/ adafruitio_errors_esp8266/.zero.test.skip diff --git a/esempi/ adafruitio_errors_esp8266/.zero.test.skip b/esempi/ adafruitio_errors_esp8266/.zero.test.skip new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/esempi/ adafruitio_errors_esp8266/.zero.test.skip @@ -0,0 +1 @@ + From 7bb34967b1cbd9f4a8a29d357797c0d4334a800b Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:50:07 +0100 Subject: [PATCH 7/8] Library Fixes (adafruit#127) --- examples/adafruitio_errors_esp8266/.zero.test.skip | 1 + 1 file changed, 1 insertion(+) create mode 100644 examples/adafruitio_errors_esp8266/.zero.test.skip diff --git a/examples/adafruitio_errors_esp8266/.zero.test.skip b/examples/adafruitio_errors_esp8266/.zero.test.skip new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/examples/adafruitio_errors_esp8266/.zero.test.skip @@ -0,0 +1 @@ + From 74920cd2f6c3479e356f7db9efdbc2eefb0c533e Mon Sep 17 00:00:00 2001 From: aandroide Date: Tue, 19 Feb 2019 23:50:54 +0100 Subject: [PATCH 8/8] Delete .zero.test.skip --- esempi/ adafruitio_errors_esp8266/.zero.test.skip | 1 - 1 file changed, 1 deletion(-) delete mode 100644 esempi/ adafruitio_errors_esp8266/.zero.test.skip diff --git a/esempi/ adafruitio_errors_esp8266/.zero.test.skip b/esempi/ adafruitio_errors_esp8266/.zero.test.skip deleted file mode 100644 index 8b13789..0000000 --- a/esempi/ adafruitio_errors_esp8266/.zero.test.skip +++ /dev/null @@ -1 +0,0 @@ -