Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
#include <ESP8266WiFi.h> #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" // Setup Wi-Fi #define WLAN_SSID "...SSID..." #define WLAN_PASS "...PASSWD..." // Setup Adafruit.io #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "...IO.Adafruit - login..." #define AIO_KEY "... AIO KEY..." // Create WiFiClient class to connect to the MQTT server. WiFiClient 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_KEY); // Setup a feed called 'A0' for publishing. Adafruit_MQTT_Publish AnalogPort0 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/AnalogPort0"); // Setup a feed called 'onoff' for subscribing to changes. Adafruit_MQTT_Subscribe onoffbutton = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/onoff"); void MQTT_connect(); void setup() { Serial.begin(9600); delay(10); // Connect to WiFi access point. 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"); // Setup MQTT subscription for onoff feed. mqtt.subscribe(&onoffbutton); } int AnalogPort0Value=0; void loop() { MQTT_connect(); Adafruit_MQTT_Subscribe *subscription; while ((subscription = mqtt.readSubscription(5000))) { if (subscription == &onoffbutton) { Serial.print(F("Got: ")); Serial.println((char *)onoffbutton.lastread); } } // Now we can publish stuff! Serial.print(F("\nSending A0 val ")); AnalogPort0Value = analogRead(A0); Serial.print(AnalogPort0Value); Serial.print("..."); if (! AnalogPort0.publish(AnalogPort0Value)) { Serial.println(F("Failed")); } else { Serial.println(F("OK!")); } } // Function to connect and reconnect as necessary to the MQTT server. 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); retries--; if (retries == 0) { while (1); } } Serial.println("MQTT Connected!"); } |
[collapse]