book collections email follower instructable user
Picture of ESP8266 Internet Clock With Weather Update & Many More (No RTC)

In this instructable, I am going to share how I made an ESP8266 based hackable Internat Clock. The clock is able to show:

  • Time (Using NTP),
  • Date,
  • Weather updates (e.g. temperature, humidity, pressure, clouds, sunrise, sunset),
  • Weather forecast,
  • Facebook like and notification,
  • Youtube subscriber counter
  • Customize message and many more

The firmware of the clock can be updated over wifi. No physical connection is required. Using the Network Time Protocol (NTP) for getting time. So, no RTC module or Arduino is required.

Step 1: Bill of Materials

Picture of Bill of Materials

1. 1 X ESP8266-12E Module (

2. 2 X MAX7219 Dot Matrix Module 4 in One Display (

3. 1 X AMS1117 Power Supply Module (

4. 1 X DC 12V 1A Power Supply (

5. 1 X LM7805 Voltage regulator and jumper wires

Tools Require

1. Desktop 3D Printer: Buy one from for only $129

2. Soldering Station (

3. Flexible Helping Arm for Soldering (optional) (

4. Lead-Free Solder Soldering Wire Reel (

5. Wire Cutters Clipper Diagonal Plier (

By using an ESP8266 module that has an on-board regulator, we can avoid the extra AMS1117. An example of such a board would be a Wemos D1 Mini, which has a micro USB connector and an added advantage is that the MAX7219 boards can be driven directly from controller board itself (The input voltage at micro USB is available near to it across two pins)
Further advantage is the ability to power from a 5V wall adapter or Power bank
rwl75324 months ago
My 8266-12E drives the display just fine at 3.3v directly. I followed: I can update what is displayed using my phone.
RomanŠ1274 months ago
Hi. I have a problem, I have built your project but can't connect to the server in the weather I am writing a voice 18: 37: 52.567 -> Connecting WiFi Booting
18: 37: 56.642 -> Ready
18: 37: 56.642 -> IP address:
18: 37: 56.642 -> connecting to
18: 37: 57.184 -> w.
18: 37: 57.184 -> parseObject () failed
Can you give advice?
My Location is Ostrava Czech Republik.ID 3068799?
yo2ldk6 months ago
Excellent project, that is what I need !
What version of Arduino compiler you use, my friend ?
I have 1.8 and receive error on DynamicJsonBuffer jsonBuf or
'getWeatherData' was not declared in this scope
and cannot compile, any solution please?
marik2500 made it!7 months ago
myk3yth1 year ago

how do you manage time offset for local geo?

taifur (author)  myk3yth1 year ago

I just hardcoded the offset value.

rbright taifur10 months ago
for example I changed the following line
'float utcOffset = 2;'
to = 8 for 'GMT +8' being West Australia Standard Time
TheoP2110 months ago
Hi, I'm amazed with this project. I've just finished right now!
Clock is working ok, but weather and cryptocurrency aren't... how can I solve this?
All sketche was compiled ok...
I'd like to ask you some help to implement a stock ticker instead a crypto currency.. like an alpha vantage? [available at github, but I don't have know how to deal with this...]
Thanks in advance.. and thanks for sharing this amazing projetct!

rbright TheoP2110 months ago
YES some sample code showing a 'stock price ticker' or even just a string of text would enhance this code
rbright10 months ago
Love this code especially within Loop() the use of for example if(s>30 && s<45) being the expired seconds to branch to a routine like showTime() which is providing something like Time Division Multiplexing which is a form of multitasking.
hrvoje_cro10 months ago

I need help. I've tried to compile ESP8266_NTP_Clock.ino but i received an error: Arduino: 1.8.7 (Windows 10), Board: "NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

WARNING: library MAX7219_Dot_Matrix claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (esp8266) architecture(s).
WARNING: library Timezone-master claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (esp8266) architecture(s).
Sketch uses 292340 bytes (27%) of program storage space. Maximum is 1044464 bytes.
Global variables use 35988 bytes (43%) of dynamic memory, leaving 45932 bytes for local variables. Maximum is 81920 bytes.

Thank you in advance!
ПИ1 year ago

Nice.. But.... I have an weird Idea for an cheap advertising screen ( for car )... Is it possible with this wifi module to do this:

1. Making on my website or free host plus domain etc a empty web page onl containing plain text without code.

2. read it and put it on the screen.

Why? Because it would be cheaper than getting an rasberry or arduino board. Its mych easyer to make an hotspot in the car or if it is in office, and leave it, he will automatically connect and read the text from this ''website''...

If it does this, it could do the website rading instead of using boards memory cards etc

JonasN1 ПИ11 months ago

You can even make it host its own "web" page.
connect to it with your phone and enter its address and give it new text



In step 5 there is a clear red plexiglass, isn't there?Where do I buy this?If it isn't plexiglass then can you tell me what is it?Thank you.

bro how can i contacat you...

i have some doubts about your smart bulb project...

dajian1 year ago

The little things are very cute, haha~ I also made a clock before, but there is no good way to hide the cable, which blocks my next step, you know that lithium battery is not the right choice.

A bit weird way to sync time. Why haven't you used NTP?

taifur (author)  StrangeRand1 year ago

Code using NTP server is now added.

What do you mean? He gets the time using this call:
sendNTPpacket(timeServerIP); // Send an NTP request
Is there a better way?

No, it is ok.

However, in the attached sketches I've found nothing about NTP. There is getTime() function which parses the response from (date header).

That's why I sed about the weird way to sync time.

StrangeRand makes a good point. If you look at the code for internet-clock.ino it would appear that the NTP server is not used. Rather it seems to use Google as the time server. So, here we have a tutorial that goes into detail about using the NTP time server but the final code uses an entirely different method and offers no explanation. I agree...weird.

But don't get me wrong, I still appreciate the effort that the author has put into this tutorial. I am learning from it and I'm going to give it a try.

DaveW2161 year ago

Wouldn't it be better to have the input to the 3.3 volt regulator the output of the 5.0 volt regulator. Less voltage drop and less power loss and heat?

taifur (author)  DaveW2161 year ago

You are absolutely right. Thanks for your feedback.

markus11 year ago

Cool stuff, i will build one! But why haven't you used something like a Wemos or NodeMCU? No worries about voltage and easier to connect:)

taifur (author)  markus11 year ago

Yes, you can use Wemos or NodeMCU.

pwdavo1 year ago

Very detailed presentation, great documentation.

taifur (author)  pwdavo1 year ago

Thank you.

Nice work my friend. One question the AMS1117 you linked to on Gearbest says its a 5 volt regulator not a 3.3 volt. Is this the correct part?
taifur (author)  crashradius1 year ago
Yes AMS1117 has 5v version also. Be sure you selected 3.3v version.
eburman1 year ago

I'm not able to get your code to compile. I was able to find the nonstandard libraries and install them into my Arduino IDE but it would be helpful if you were to include links to those libraries in your instructions. Even with all the required libraries installed I still can't get the sketches to fully compile. And yes, I'm sure that I selected the correct board. None the less, the compiler hitches up on the ArduinoJson and ArduinoOTA classes. I suspect that this may have something to do with conflicts between versions of one or more of the libraries and/or board packages that I have installed that probably don't match the versions that you may have used. I just can't seem to resolve it. Any ideas?

taifur (author)  eburman1 year ago

The link of the libraries are now added in the code section. Thank you for your feedback.

Is it possible to enter your own message?

e.g. advertize an item offer for my shop.

taifur (author)  maddog5719981 year ago

Yes, of course you can display your own message.

It's awesome.