diff --git a/examples/adafruitio_time_esp8266/adafruitio_time_esp8266.ino b/examples/adafruitio_time_esp8266/adafruitio_time_esp8266.ino new file mode 100644 index 0000000..90c412e --- /dev/null +++ b/examples/adafruitio_time_esp8266/adafruitio_time_esp8266.ino @@ -0,0 +1,81 @@ +#include +#include "Adafruit_MQTT.h" +#include "Adafruit_MQTT_Client.h" + +/************************* WiFi Access Point *********************************/ +#define WLAN_SSID "network" +#define WLAN_PASS "password" + +/************************* Adafruit.io Setup *********************************/ +#define AIO_SERVER "io.adafruit.com" +#define AIO_SERVERPORT 8883 +#define AIO_USERNAME "user" +#define AIO_KEY "key" + +WiFiClientSecure client; +Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_USERNAME, AIO_KEY); + +Adafruit_MQTT_Subscribe timefeed = Adafruit_MQTT_Subscribe(&mqtt, "time/seconds"); + +// set timezone offset from UTC +int timeZone = -4; // UTC - 4 eastern daylight time (nyc) +int interval = 4; // trigger every X hours +int hour = 0; // current hour + +void timecallback(uint32_t current) { + + // stash previous hour + int previous = hour; + + // adjust to local time zone + current += (timeZone * 60 * 60); + + // calculate current hour + hour = (current / 60 / 60) % 24; + + // only trigger on interval + if((hour != previous) && (hour % interval) == 0) { + Serial.println("Run your code here"); + } + +} + +void setup() { + + Serial.begin(115200); + delay(10); + + Serial.print(F("Adafruit IO Time Demo")); + + WiFi.begin(WLAN_SSID, WLAN_PASS); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print(F(".")); + } + Serial.println(F(" WiFi connected.")); + + timefeed.setCallback(timecallback); + mqtt.subscribe(&timefeed); + +} + +void loop() { + + int8_t code; + + // connect to adafruit io if not connected + if(! mqtt.connected()) { + + Serial.print("Connecting to Adafruit IO... "); + if((code = mqtt.connect()) != 0) { + Serial.println(mqtt.connectErrorString(code)); + while(1); + } + Serial.println("connected!"); + + } + + mqtt.processPackets(1000); + mqtt.ping(); + +}