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" 62 _wifi_client =
new WiFiClient;
63 WiFi.persistent(
false);
72 ~Wippersnapper_ESP8266() {
88 void set_ssid_pass(
const char *ssid,
const char *ssidPassword) {
93 if ((ssidPassword != NULL) && (strlen(ssidPassword) == 0)) {
107 _ssid = WS.
_config.network.ssid;
108 _pass = WS.
_config.network.pass;
125 int n = WiFi.scanNetworks();
131 bool foundNetwork =
false;
134 for (uint8_t i = 0; i < n; i++) {
135 if (!foundNetwork && strcmp(WiFi.SSID(i).c_str(), _ssid) == 0) {
140 if (strcmp(WS.
_multiNetworks[j].ssid, WiFi.SSID(i).c_str()) == 0) {
174 uint8_t mac[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
175 WiFi.macAddress(mac);
176 memcpy(WS.
_macAddr, mac,
sizeof(mac));
185 int32_t
getRSSI() {
return WiFi.RSSI(); }
195 if (WS.
_config.io_port == 8883)
197 WS.
_mqtt =
new Adafruit_MQTT_Client(
209 switch (WiFi.status()) {
211 return WS_NET_CONNECTED;
212 case WL_CONNECT_FAILED:
213 return WS_NET_CONNECT_FAILED;
217 return WS_NET_DISCONNECTED;
227 const char *connectionType() {
return "ESP8266"; }
230 const char *_ssid = NULL;
231 const char *_pass = NULL;
232 WiFiClient *_wifi_client;
233 ESP8266WiFiMulti _wifiMulti;
242 if (WiFi.status() == WL_CONNECTED)
245 if (strlen(_ssid) == 0) {
246 _status = WS_SSID_INVALID;
248 WiFi.setAutoReconnect(
false);
254 _status = WS_NET_DISCONNECTED;
270 if (_wifiMulti.existsAP(_ssid) ==
false) {
271 _wifiMulti.addAP(_ssid, _pass);
274 long startRetry = millis();
277 while (_wifiMulti.run(5000) != WL_CONNECTED &&
278 millis() - startRetry < 10000) {
283 if (WiFi.status() == WL_CONNECTED) {
284 _status = WS_NET_CONNECTED;
286 _status = WS_NET_DISCONNECTED;
304 #endif // ARDUINO_ARCH_ESP8266 305 #endif // WIPPERSNAPPER_ESP8266_H virtual void setupMQTTClient(const char *clientID)
Sets up the MQTT client session.
Definition: Wippersnapper.cpp:185
#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:431
#define WL_MAC_ADDR_LENGTH
MAC address length - from RP2040 BSP.
Definition: Wippersnapper_Networking.h:20
ws_status_t
Definition: Wippersnapper.h:218
virtual bool check_valid_ssid()
Performs a scan of local WiFi networks.
Definition: Wippersnapper.cpp:230
Class that provides storage and functions for the Adafruit IO Wippersnapper interface.
Definition: Wippersnapper.h:310
virtual void _connect()
Connects to wireless network.
Definition: Wippersnapper.cpp:144
#define WS_MAX_ALT_WIFI_NETWORKS
Maximum number of alternative networks.
Definition: Wippersnapper.h:279
virtual void getMacAddr()
Sets the network interface's unique identifier, typically the MAC address.
Definition: Wippersnapper.cpp:163
virtual void set_ssid_pass()
Sets the device's wireless network credentials from the secrets.json configuration file...
Definition: Wippersnapper.cpp:220
void feedWDT()
Feeds the WDT to prevent hardware reset.
Definition: Wippersnapper.cpp:2645
bool _isWiFiMulti
Definition: Wippersnapper.h:433
networkConfig _multiNetworks[3]
Definition: Wippersnapper.h:432
#define WS_DEBUG_PRINTLN(...)
Prints line from debug output.
Definition: Wippersnapper.h:66
Wippersnapper WS
Definition: Wippersnapper.cpp:36
uint8_t _macAddr[6]
Definition: Wippersnapper.h:425
Adafruit_MQTT * _mqtt
Definition: Wippersnapper.h:429
virtual ws_status_t networkStatus()
Returns the network's connection status.
Definition: Wippersnapper.cpp:195
virtual int32_t getRSSI()
Gets the network's RSSI.
Definition: Wippersnapper.cpp:173
virtual void _disconnect()
Disconnect Wippersnapper MQTT session and network.
Definition: Wippersnapper.cpp:153