Nu är det dags att bygga själva displayen. Även den består av en Huzzah och den har en OLED-display kopplad till sig. Förutom Vcc som är kopplad till 3v matningen och GND som är kopplad till… ja GND, så används anslutningen på Huzzah för SCL (I/O pin 5) och SCA (I/O pin 4) då displayen använder I2C-protokollet. Bara fyra trådar att ansluta alltså.
Koden nedan behöver anpassas för ditt wifi och lösen samt din FLESPI-token. Du kan även experimentera med vilket teckensnitt och storlek du vill använda.
#include <ESP8266WiFi.h>
#include "Adafruit_MQTT_Client.h"
#include <U8g2lib.h>
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, "mqtt.flespi.io", 1883, "FlespiToken HfgdxCT4mG **** Your FLESPI-Token goes here **** oZcr8YT8", "");
Adafruit_MQTT_Subscribe temp = Adafruit_MQTT_Subscribe(&mqtt, "/feeds/badtunna");
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
void setup() {
u8g2.begin();
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_7x14_tr);
u8g2.drawStr(0, 15, "Connecting...");
u8g2.sendBuffer();
WiFi.begin("SSID", "yourwifipasswordgoeshere");
delay(2000);
while (WiFi.status() != WL_CONNECTED) delay(500);
u8g2.drawStr(0, 30, "Connected!");
u8g2.sendBuffer();
String ipString = WiFi.localIP().toString();
u8g2.drawStr(0, 45, (char *)ipString.c_str());
u8g2.sendBuffer();
mqtt.subscribe(&temp);
u8g2.setFont(u8g2_font_logisoso54_tn);
}
void loop() {
MQTT_connect();
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(5000))) {
if (subscription == &temp) {
u8g2.clearBuffer();
u8g2.drawStr(0, 60, (char *)temp.lastread);
u8g2.sendBuffer();
}
}
delay(6000);
}
void MQTT_connect() {
int8_t ret;
if (mqtt.connected()) {
return;
}
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) {
mqtt.disconnect();
delay(5000);
retries--;
if (retries == 0) {
u8g2.clearBuffer();
u8g2.drawStr(0, 15, "Cant connect.");
u8g2.drawStr(0, 30, "Execution halted.");
u8g2.sendBuffer();
while (1);
}
}
}
Kod kan alltid förbättras. En idé är att ett par sekunder visa temperatur och därefter visa aktuell tid i ett par sekunder i en loop. Ni som läser får givetvis förbättra koden. Min egen kod innehåller som vanligt inte så många kommentarer, samtidigt så är den ganska självförklarande.
Observera att ni behöver en MQTT broker för att den skall fungera. Mer information om hur denna installeras kommer i nästa avsnitt.