# Required Arduino Libraries for ESP32 Grid Frequency Monitor

## Core Libraries (Included with ESP32 Arduino Core)
- WiFi
- WebServer
- SPIFFS
- Arduino.h

## External Libraries (Install via Library Manager)

### PubSubClient
- **Author**: Nick O'Leary
- **Version**: 2.8.0 or later
- **Purpose**: MQTT client for publishing frequency data
- **Installation**: Tools → Manage Libraries → Search "PubSubClient"

### ArduinoJson
- **Author**: Benoit Blanchon
- **Version**: 6.21.0 or later
- **Purpose**: JSON serialization for MQTT and web API
- **Installation**: Tools → Manage Libraries → Search "ArduinoJson"

## Note on WebSocket Library
- **WebSocket library removed** - Using fast polling (500ms) for real-time updates instead
- **No additional libraries required** - Uses only standard ESP32 libraries

## Installation Instructions

1. Open Arduino IDE
2. Go to Tools → Manage Libraries
3. Search for each library name
4. Click "Install" for the latest version
5. Verify installation in Sketch → Include Library

## Alternative Installation (GitHub)

If you prefer to install from GitHub:

### PubSubClient
```bash
cd ~/Arduino/libraries
git clone https://github.com/knolleary/pubsubclient.git
```

### ArduinoJson
```bash
cd ~/Arduino/libraries
git clone https://github.com/bblanchon/ArduinoJson.git
```

## Library Compatibility

- **ESP32 Arduino Core**: 2.0.0 or later
- **Arduino IDE**: 1.8.19 or later
- **Platform**: ESP32 (all variants)

## Troubleshooting

### Common Issues

1. **Library not found**: Ensure libraries are installed in the correct location
2. **Compilation errors**: Check library versions and ESP32 core version
3. **Memory issues**: Use ArduinoJson v6.x for better memory management
4. **WiFi connection**: Ensure WiFi credentials are correct in config.h

### Library Versions Tested

- PubSubClient: 2.8.0
- ArduinoJson: 6.21.0
- ESP32 Arduino Core: 2.0.11
- Arduino IDE: 2.0.4
