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" 69 _wifi_client =
new WiFiClient;
70 WiFi.persistent(
false);
79 ~Wippersnapper_ESP8266() {
95 void set_ssid_pass(
const char *ssid,
const char *ssidPassword) {
100 if ((ssidPassword != NULL) && (strlen(ssidPassword) == 0)) {
103 _pass = ssidPassword;
114 _ssid = WS.
_config.network.ssid;
115 _pass = WS.
_config.network.pass;
132 int n = WiFi.scanNetworks();
138 bool foundNetwork =
false;
141 for (uint8_t i = 0; i < n; i++) {
142 if (!foundNetwork && strcmp(WiFi.SSID(i).c_str(), _ssid) == 0) {
147 if (strcmp(WS.
_multiNetworks[j].ssid, WiFi.SSID(i).c_str()) == 0) {
181 uint8_t mac[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
182 WiFi.macAddress(mac);
183 memcpy(WS.
_macAddr, mac,
sizeof(mac));
192 int32_t
getRSSI() {
return WiFi.RSSI(); }
206 if (WS.
_config.io_port == 8883)
208 WS.
_mqtt =
new Adafruit_MQTT_Client(
220 switch (WiFi.status()) {
222 return WS_NET_CONNECTED;
223 case WL_CONNECT_FAILED:
224 return WS_NET_CONNECT_FAILED;
228 return WS_NET_DISCONNECTED;
238 const char *connectionType() {
return "ESP8266"; }
241 const char *_ssid = NULL;
242 const char *_pass = NULL;
243 WiFiClient *_wifi_client;
244 ESP8266WiFiMulti _wifiMulti;
253 if (WiFi.status() == WL_CONNECTED)
256 if (strlen(_ssid) == 0) {
257 _status = WS_SSID_INVALID;
259 WiFi.setAutoReconnect(
false);
265 _status = WS_NET_DISCONNECTED;
281 if (_wifiMulti.existsAP(_ssid) ==
false) {
282 _wifiMulti.addAP(_ssid, _pass);
285 long startRetry = millis();
288 while (_wifiMulti.run(5000) != WL_CONNECTED &&
289 millis() - startRetry < 10000) {
294 if (WiFi.status() == WL_CONNECTED) {
295 _status = WS_NET_CONNECTED;
297 _status = WS_NET_DISCONNECTED;
315 #endif // ARDUINO_ARCH_ESP8266 316 #endif // WIPPERSNAPPER_ESP8266_H virtual void setupMQTTClient(const char *clientID)
Sets up the MQTT client session.
Definition: Wippersnapper.cpp:205
#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:250
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:164
#define WS_MAX_ALT_WIFI_NETWORKS
Maximum number of alternative networks.
Definition: Wippersnapper.h:251
virtual void getMacAddr()
Sets the network interface's unique identifier, typically the MAC address.
Definition: Wippersnapper.cpp:183
virtual void set_ssid_pass()
Sets the device's wireless network credentials from the secrets.json configuration file...
Definition: Wippersnapper.cpp:240
void feedWDT()
Feeds the WDT to prevent hardware reset.
Definition: Wippersnapper.cpp:2632
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:215
virtual int32_t getRSSI()
Gets the network's RSSI.
Definition: Wippersnapper.cpp:193
virtual void _disconnect()
Disconnect Wippersnapper MQTT session and network.
Definition: Wippersnapper.cpp:173