ESP8266 Wifi Connect & Ping to Azure-based Logic App URL over HTTPS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// WIFI SETUP & LOGIC APP URL | |
char ssid[] = "YOUR_WIFI_SSID"; | |
char pass[] = "YOUR_WIFI_PASSWORD"; | |
char logicAppURL[] = "https://YOUR_LOGIC_APP_URL"; | |
// HTTP AND WIFI | |
// Needed to go here & install board support for ESP8266. https://github.com/gojimmypi/ESP8266-Arduino | |
// This gave access to the WiFiClientSecureBearSSL client library (which is needed for HTTPS). | |
// See install instructions on that GitHub page. | |
// Also installed h/w support for the TTGO OLED board I have. | |
#include <ESP8266WiFi.h> | |
#include <ESP8266WiFiMulti.h> | |
#include <ESP8266HTTPClient.h> | |
#include <WiFiClientSecureBearSSL.h> | |
// OLED INCLUDES | |
#include <Arduino.h> | |
#include <U8g2lib.h> // make sure to add U8g2 library and restart Arduino IDE | |
#include <SPI.h> | |
#include <Wire.h> | |
#define OLED_SDA 2 | |
#define OLED_SCL 14 | |
#define OLED_RST 4 | |
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, OLED_SCL, OLED_SDA , OLED_RST); | |
ESP8266WiFiMulti WiFiMulti; | |
void setup() | |
{ | |
Serial.begin(115200); | |
Serial.println(); | |
oledInit(); | |
oledPrint("Start...", false); | |
delay(500); | |
oledPrint("Wifi connect ..", false); | |
delay(500); | |
Serial.print("Connecting to "); | |
Serial.println(ssid); | |
WiFiMulti.addAP(ssid, pass); | |
String progress = "."; | |
while (WiFiMulti.run() != WL_CONNECTED) { | |
delay(500); | |
Serial.print(progress); | |
oledPrint(progress, false); | |
progress = progress + "."; | |
} | |
oledPrint("Wifi connected", false); | |
delay(1000); | |
Serial.println("Calling HTTP"); | |
httpGET(logicAppURL); | |
} | |
void loop() | |
{ | |
delay(10000); | |
} | |
void httpGET(String url) { | |
std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure); | |
client->setInsecure(); | |
HTTPClient https; | |
Serial.print("[HTTPS] begin...\n"); | |
oledPrint("[HTTPS] begin", false); | |
if (https.begin(*client, url)) { // HTTPS | |
Serial.print("[HTTPS] GET...\n"); | |
oledPrint("[HTTPS] GET...", false); | |
// start connection and send HTTP header | |
int httpCode = https.GET(); | |
// httpCode will be negative on error | |
if (httpCode > 0) { | |
// HTTP header has been send and Server response header has been handled | |
Serial.printf("[HTTPS] GET... code: %d\n", httpCode); | |
oledPrint("[HTTPS] GET " + String(httpCode), false); | |
// file found at server | |
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) { | |
String payload = https.getString(); | |
Serial.println(payload); | |
} | |
} else { | |
Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str()); | |
oledPrint("[HTTPS] GET " + String(https.errorToString(httpCode)), false); | |
} | |
https.end(); | |
} else { | |
Serial.printf("[HTTPS] Unable to connect\n"); | |
oledPrint("[HTTPS] GET Err", false); | |
} | |
} | |
void oledInit() { | |
Serial.println("OLED Start.."); | |
u8g2.begin(); | |
u8g2.setFont(u8g2_font_6x10_tf); | |
} | |
void oledPrint(String message, bool frame) { | |
char charBuf[15]; | |
message.toCharArray(charBuf, 25); | |
u8g2.clearBuffer(); | |
u8g2.drawStr(10, 25, charBuf); | |
if (frame) u8g2.drawRFrame(0,0,128,32,4); // https://github.com/olikraus/u8g2/wiki/u8g2reference#drawrbox | |
u8g2.sendBuffer(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment