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" 67 _wifi_client =
new WiFiClient;
68 WiFi.persistent(
false);
77 ~Wippersnapper_ESP8266() {
93 void set_ssid_pass(
const char *ssid,
const char *ssidPassword) {
98 if ((ssidPassword != NULL) && (strlen(ssidPassword) == 0)) {
101 _pass = ssidPassword;
112 _ssid = WS.
_config.network.ssid;
113 _pass = WS.
_config.network.pass;
130 int n = WiFi.scanNetworks();
136 bool foundNetwork =
false;
139 for (uint8_t i = 0; i < n; i++) {
140 if (!foundNetwork && strcmp(WiFi.SSID(i).c_str(), _ssid) == 0) {
145 if (strcmp(WS.
_multiNetworks[j].ssid, WiFi.SSID(i).c_str()) == 0) {
179 uint8_t mac[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
180 WiFi.macAddress(mac);
181 memcpy(WS.
_macAddr, mac,
sizeof(mac));
190 int32_t
getRSSI() {
return WiFi.RSSI(); }
204 if (WS.
_config.io_port == 8883)
206 WS.
_mqtt =
new Adafruit_MQTT_Client(
218 switch (WiFi.status()) {
220 return WS_NET_CONNECTED;
221 case WL_CONNECT_FAILED:
222 return WS_NET_CONNECT_FAILED;
226 return WS_NET_DISCONNECTED;
236 const char *connectionType() {
return "ESP8266"; }
239 const char *_ssid = NULL;
240 const char *_pass = NULL;
241 WiFiClient *_wifi_client;
242 ESP8266WiFiMulti _wifiMulti;
251 if (WiFi.status() == WL_CONNECTED)
254 if (strlen(_ssid) == 0) {
255 _status = WS_SSID_INVALID;
257 WiFi.setAutoReconnect(
false);
263 _status = WS_NET_DISCONNECTED;
279 if (_wifiMulti.existsAP(_ssid) ==
false) {
280 _wifiMulti.addAP(_ssid, _pass);
283 long startRetry = millis();
286 while (_wifiMulti.run(5000) != WL_CONNECTED &&
287 millis() - startRetry < 10000) {
292 if (WiFi.status() == WL_CONNECTED) {
293 _status = WS_NET_CONNECTED;
295 _status = WS_NET_DISCONNECTED;
313 #endif // ARDUINO_ARCH_ESP8266 314 #endif // WIPPERSNAPPER_ESP8266_H virtual void setupMQTTClient(const char *clientID)
Sets up the MQTT client session.
Definition: Wippersnapper.cpp:203
#define WS_DEBUG_PRINT(...)
Prints debug output.
Definition: Wippersnapper.h:49
#define WS_DEBUG_PRINTHEX(...)
Prints debug output.
Definition: Wippersnapper.h:55
secretsConfig _config
Definition: Wippersnapper.h:406
#define WL_MAC_ADDR_LENGTH
MAC address length - from RP2040 BSP.
Definition: Wippersnapper_Networking.h:20
ws_status_t
Definition: Wippersnapper.h:190
virtual bool check_valid_ssid()
Performs a scan of local WiFi networks.
Definition: Wippersnapper.cpp:248
Class that provides storage and functions for the Adafruit IO Wippersnapper interface.
Definition: Wippersnapper.h:283
virtual void _connect()
Connects to wireless network.
Definition: Wippersnapper.cpp:162
#define WS_MAX_ALT_WIFI_NETWORKS
Maximum number of alternative networks.
Definition: Wippersnapper.h:251
virtual void getMacAddr()
Sets the network interface's unique identifer, typically the MAC address.
Definition: Wippersnapper.cpp:181
virtual void set_ssid_pass()
Sets the device's wireless network credentials from the secrets.json configuration file...
Definition: Wippersnapper.cpp:238
void feedWDT()
Feeds the WDT to prevent hardware reset.
Definition: Wippersnapper.cpp:2608
bool _isWiFiMulti
Definition: Wippersnapper.h:408
networkConfig _multiNetworks[3]
Definition: Wippersnapper.h:407
#define WS_DEBUG_PRINTLN(...)
Prints line from debug output.
Definition: Wippersnapper.h:52
Wippersnapper WS
Definition: Wippersnapper.cpp:36
uint8_t _macAddr[6]
Definition: Wippersnapper.h:401
Adafruit_MQTT * _mqtt
Definition: Wippersnapper.h:404
virtual ws_status_t networkStatus()
Returns the network's connection status.
Definition: Wippersnapper.cpp:213
virtual int32_t getRSSI()
Gets the network's RSSI.
Definition: Wippersnapper.cpp:191
virtual void _disconnect()
Disconnect Wippersnapper MQTT session and network.
Definition: Wippersnapper.cpp:171