17 #ifndef WIPPERSNAPPER_ESP8266_H 18 #define WIPPERSNAPPER_ESP8266_H 20 #ifdef ARDUINO_ARCH_ESP8266 21 #include "Adafruit_MQTT.h" 22 #include "Adafruit_MQTT_Client.h" 23 #include "ESP8266WiFi.h" 24 #include "ESP8266WiFiMulti.h" 27 class Wippersnapper_ESP8266;
28 extern Wippersnapper_ESP8266
WS;
63 _wifi_client =
new WiFiClient;
64 WiFi.persistent(
false);
73 ~Wippersnapper_ESP8266() {
89 void set_ssid_pass(
const char *ssid,
const char *ssidPassword) {
94 if ((ssidPassword != NULL) && (strlen(ssidPassword) == 0)) {
126 int n = WiFi.scanNetworks();
132 bool foundNetwork =
false;
135 for (uint8_t i = 0; i < n; i++) {
136 if (!foundNetwork && strcmp(WiFi.SSID(i).c_str(), _ssid) == 0) {
175 uint8_t mac[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
176 WiFi.macAddress(mac);
186 int32_t
getRSSI() {
return WiFi.RSSI(); }
198 WS.
_mqtt =
new Adafruit_MQTT_Client(
210 switch (WiFi.status()) {
212 return WS_NET_CONNECTED;
213 case WL_CONNECT_FAILED:
214 return WS_NET_CONNECT_FAILED;
218 return WS_NET_DISCONNECTED;
228 const char *connectionType() {
return "ESP8266"; }
231 const char *_ssid = NULL;
232 const char *_pass = NULL;
233 WiFiClient *_wifi_client;
234 ESP8266WiFiMulti _wifiMulti;
243 if (WiFi.status() == WL_CONNECTED)
246 if (strlen(_ssid) == 0) {
247 _status = WS_SSID_INVALID;
249 WiFi.setAutoReconnect(
false);
255 _status = WS_NET_DISCONNECTED;
271 if (_wifiMulti.existsAP(_ssid) ==
false) {
272 _wifiMulti.addAP(_ssid, _pass);
275 long startRetry = millis();
278 while (_wifiMulti.run(5000) != WL_CONNECTED &&
279 millis() - startRetry < 10000) {
284 if (WiFi.status() == WL_CONNECTED) {
285 _status = WS_NET_CONNECTED;
287 _status = WS_NET_DISCONNECTED;
305 #endif // ARDUINO_ARCH_ESP8266 306 #endif // WIPPERSNAPPER_ESP8266_H virtual void setupMQTTClient(const char *clientID)
Sets up the MQTT client session.
Definition: Wippersnapper.cpp:187
#define WS_DEBUG_PRINT(...)
Prints debug output.
Definition: Wippersnapper.h:63
#define WS_DEBUG_PRINTHEX(...)
Prints in hexadecimal.
Definition: Wippersnapper.h:78
#define WS_DEBUG_PRINTVAR(...)
Prints variable (any type)
Definition: Wippersnapper.h:72
secretsConfig _config
Definition: Wippersnapper.h:432
#define WL_MAC_ADDR_LENGTH
MAC address length - from RP2040 BSP.
Definition: Wippersnapper_Networking.h:20
ws_status_t
Definition: Wippersnapper.h:219
virtual bool check_valid_ssid()
Performs a scan of local WiFi networks.
Definition: Wippersnapper.cpp:232
Class that provides storage and functions for the Adafruit IO Wippersnapper interface.
Definition: Wippersnapper.h:311
virtual void _connect()
Connects to wireless network.
Definition: Wippersnapper.cpp:146
#define WS_MAX_ALT_WIFI_NETWORKS
Maximum number of alternative networks.
Definition: Wippersnapper.h:280
virtual void getMacAddr()
Sets the network interface's unique identifier, typically the MAC address.
Definition: Wippersnapper.cpp:165
virtual void set_ssid_pass()
Sets the device's wireless network credentials from the secrets.json configuration file...
Definition: Wippersnapper.cpp:222
void feedWDT()
Feeds the WDT to prevent hardware reset.
Definition: Wippersnapper.cpp:2645
bool _isWiFiMulti
Definition: Wippersnapper.h:434
networkConfig _multiNetworks[3]
Definition: Wippersnapper.h:433
#define WS_DEBUG_PRINTLN(...)
Prints line from debug output.
Definition: Wippersnapper.h:66
Wippersnapper_AIRLIFT WS
Global instance of Wippersnapper_WiFi.
Definition: Wippersnapper.cpp:38
uint8_t _macAddr[6]
Definition: Wippersnapper.h:426
Adafruit_MQTT * _mqtt
Definition: Wippersnapper.h:430
virtual ws_status_t networkStatus()
Returns the network's connection status.
Definition: Wippersnapper.cpp:197
virtual int32_t getRSSI()
Gets the network's RSSI.
Definition: Wippersnapper.cpp:175
virtual void _disconnect()
Disconnect Wippersnapper MQTT session and network.
Definition: Wippersnapper.cpp:155