/**
* ESP8266 Weather Display with WiFiManager
*
* This program uses an ESP8266 with MAX7219 LED matrix displays to show weather information.
* It fetches weather data and current time from online APIs and displays them on the LED matrix.
*
* Features:
* - Uses WiFiManager for easy WiFi configuration via captive portal
* - Displays current weather conditions, temperature, humidity, pressure, wind, etc.
* - Shows current date and time
* - Long-press the FLASH button (GPIO0) to reset WiFi settings
* - Automatically reconnects if WiFi connection is lost
* - Uses scrolling text and animations to display information
*
* Hardware:
* - ESP8266 NodeMCU or similar NodeMcu (ESP-12E, ESP version 2.7.4)
* - MAX7219 LED matrix displays (4 units daisy-chained)
* - Connections:
* - MAX7219 CLK to D5
* - MAX7219 DATA to D7
* - MAX7219 CS to D8
*
* External dependencies:
* - ESP8266WiFi
* - ArduinoJson
* - ESP8266HTTPClient
* - MD_MAX72xx
* - WiFiManager
* - SPI
*
* APIs used:
* - OpenWeatherMap for weather data
* - WorldClockAPI for date and time
*
* Created: February 2025
*/
#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <ArduinoJson.h> // JSON decoding library
#include <ESP8266HTTPClient.h> // http web access library
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <WiFiClient.h>