st-anything/lib/SmartThingsESP32WiFi/SmartThingsESP32WiFi.h

114 lines
5.8 KiB
C
Raw Normal View History

2023-03-11 14:11:03 +00:00
//*******************************************************************************
// SmartThings Arduino ESP32 Wifi Library
//
// License
// (C) Copyright 2017 Dan Ogorchock
//
// History
// 2017-08-15 Dan Ogorchock Created with the help of Joshua Spain
// 2017-09-05 Dan Ogorchock Added automatic WiFi reconnect logic as ESP32
// doesn't do this automatically currently
// 2018-01-01 Dan Ogorchock Added WiFi.RSSI() data collection
// 2019-05-01 Dan Ogorchock Changed max transmit rate from every 100ms to every
// 500ms to prevent duplicate child devices
// 2020-06-20 Dan Ogorchock Add user selectable host name (repurposing the old shieldType variable)
//
//*******************************************************************************
#ifndef __SMARTTHINGSESP32WIFI_H__
#define __SMARTTHINGSESP32WIFI_H__
#include "SmartThingsEthernet.h"
//*******************************************************************************
// Using ESP32 WiFi
//*******************************************************************************
#include <WiFi.h>
namespace st
{
class SmartThingsESP32WiFi: public SmartThingsEthernet
{
private:
//ESP32 WiFi Specific
char st_ssid[50];
char st_password[50];
static int disconnectCounter;
boolean st_preExistingConnection = false;
WiFiServer st_server; //server
WiFiClient st_client; //client
long previousMillis;
long RSSIsendInterval;
char st_devicename[50];
//**************************************************************************************
/// Event Handler for ESP32 WiFi Events (needed to implement reconnect logic for now...)
//**************************************************************************************
static void WiFiEvent(WiFiEvent_t event);
public:
//*******************************************************************************
/// @brief SmartThings ESP32 WiFi Constructor - Static IP
/// @param[in] ssid - Wifi Network SSID
/// @param[in] password - Wifi Network Password
/// @param[in] localIP - TCP/IP Address of the Arduino
/// @param[in] localGateway - TCP/IP Gateway Address of local LAN (your Router's LAN Address)
/// @param[in] localSubnetMask - Subnet Mask of the Arduino
/// @param[in] localDNSServer - DNS Server
/// @param[in] serverPort - TCP/IP Port of the Arduino
/// @param[in] hubIP - TCP/IP Address of the ST Hub
/// @param[in] hubPort - TCP/IP Port of the ST Hub
/// @param[in] callout - Set the Callout Function that is called on Msg Reception
/// @param[in] shieldType (optional) - Set the Reported SheildType to the Server
/// @param[in] enableDebug (optional) - Enable internal Library debug
//*******************************************************************************
SmartThingsESP32WiFi(String ssid, String password, IPAddress localIP, IPAddress localGateway, IPAddress localSubnetMask, IPAddress localDNSServer, uint16_t serverPort, IPAddress hubIP, uint16_t hubPort, SmartThingsCallout_t *callout, String shieldType = "ESP32Wifi", bool enableDebug = false, int transmitInterval = 500);
//*******************************************************************************
/// @brief SmartThings ESP32 WiFi Constructor - DHCP
/// @param[in] ssid - Wifi Network SSID
/// @param[in] password - Wifi Network Password
/// @param[in] serverPort - TCP/IP Port of the Arduino
/// @param[in] hubIP - TCP/IP Address of the ST Hub
/// @param[in] hubPort - TCP/IP Port of the ST Hub
/// @param[in] callout - Set the Callout Function that is called on Msg Reception
/// @param[in] shieldType (optional) - Set the Reported SheildType to the Server
/// @param[in] enableDebug (optional) - Enable internal Library debug
//*******************************************************************************
SmartThingsESP32WiFi(String ssid, String password, uint16_t serverPort, IPAddress hubIP, uint16_t hubPort, SmartThingsCallout_t *callout, String shieldType = "ESP32Wifi", bool enableDebug = false, int transmitInterval = 500);
//*******************************************************************************
/// @brief SmartThings ESP32 WiFi Constructor - Pre-existing connection
/// @param[in] serverPort - TCP/IP Port of the Arduino
/// @param[in] hubIP - TCP/IP Address of the ST Hub
/// @param[in] hubPort - TCP/IP Port of the ST Hub
/// @param[in] callout - Set the Callout Function that is called on Msg Reception
/// @param[in] shieldType (optional) - Set the Reported SheildType to the Server
/// @param[in] enableDebug (optional) - Enable internal Library debug
//*******************************************************************************
SmartThingsESP32WiFi(uint16_t serverPort, IPAddress hubIP, uint16_t hubPort, SmartThingsCallout_t *callout, String shieldType = "ESP32Wifi", bool enableDebug = false, int transmitInterval = 500);
//*******************************************************************************
/// Destructor
//*******************************************************************************
~SmartThingsESP32WiFi();
//*******************************************************************************
/// Initialize SmartThingsESP32WiFI Library
//*******************************************************************************
virtual void init(void);
//*******************************************************************************
/// Run SmartThingsESP32WiFI Library
//*******************************************************************************
virtual void run(void);
//*******************************************************************************
/// Send Message to the Hub
//*******************************************************************************
virtual void send(String message);
};
}
#endif