Paso 3: código
Para el comienzo necesita ssid y la pass de tu red, la API key de OpenWeatherMap y TimezoneDB. Definir esas cadenas al principio del código.
Después de eso definir sus pasadores LED y LCD.
En la configuración de inicio pantalla LCD. comunicación serial entre PC (para elegir el país de la ciudad) y Arduino, Arduino y ESP8266. También iniciar la comunicación SDA/SCL con su módulo RTC. Velocidad en baudios de la depende del modelo de la ESP8266. ESP8266 utilizado en este ejemplo utiliza 115200 baudios.
Si hay un dato en memoria EEPROM utilizar esos datos, si no en cuanto a los nuevos datos.
La ESP8266 la conexión a la red utilizando los comandos AT. Desde ESP8266 se conectará a dos servicios web debe enviar comando AT + CIPMUX = 1 para el ESP8266.
función connectWiFi:
Conectarse al servicio de OpenWeatherMap:
Conectarse al servicio de TimezoneDB:
Servicios web devuelven datos en formato XML o JSON y hay una biblioteca bastante buena para parsear JSON en Arduino pero ya que hay un problema con conseguir la cadena respone todo debemos obtenemos todos los datos manualmente utilizando la función find().
Dependiendo del clima tiene datos del servicio OWM LEDs son activar o desactivar. WHIS es bastante complicado para el efecto de la lluvia porque azul LED se debe encender y apagar (en el ejemplo cada segundo) asincrónica para el resto del programa (no debe bloquear programa). Para lograr ese efecto se puede utilizar millis(). Parte del código responsable de encender el LED cuando es lluvia normal en una ciudad elegida:
Funciones de ahorro y tiempo desde el módulo RTC se toman del enlace y son ligeramente modificados para mostrar los datos en la pantalla LCD. Parte modificada de la función returnTime():
Código completo para este proyecto puede encontrarse en un archivo adjunto.
Espero que hayas disfrutado este Instructable y gracias por leer :) Si usted tiene alguna pregunta acerca de este proyecto no dude en ponerse en contacto conmigo o me preguntan en los comentarios :)