MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


ESP8266 Wemos Clock News Weather Scrolling Marquee

by Qrome Apr 18, 2018
Download All Files

Thing Apps Enabled

Please Login to Comment

Has anyone had an issue with slicing the base. Not so much the actual object, but the skirt. For some odd reason the skirt doesn't go around the whole part, but goes through it about halfway. I tried closing and restarting the program along with re-downloading the STL files.

Wh are you printing it with a skirt? There is no need.

There indeed is a need. To prime the nozzle before it starts the print. But it's okay I am printing the larger one. I am actually almost done with that one, and it's turning out nicely. But to clarify on why my printer (Anet A8) typically needs a skirt is because the flow is inconsistent when it first begins to print. The skirt allows my printer to extrude filament on the build surface so that when it begins printing the PLA is flowing well and there is no deviations in bed adhesion or print quality. Thank you for responding and giving me the opportunity to make this for my brother as a Christmas gift.

looked through all of them did not see lib folder at all

Yeah, your missing something -- just follow the link for the zip file -- it is there. Nothing is missing. Please extract using winzip --- and follow the instructions. It does not sound like you extracted the entire project.

libs/ArduinoJson/ArduinoJson.h: No such file or directory
What does this mean
trying to make this.
Kinda new to all this.Any help would be most appreciated.

Probably the best place to post questions about the code is on GitHub where the code repo is hosted and maintained.
That being said, simiply take the download ZIP from the repo here: https://github.com/Qrome/marquee-scroller/archive/Scroller_V2.15.zip

USE Winzip (or something like it) to extract the entire contents of the zip file -- this contains the libs/ArduinoJson/ArduinoJson.h that you are talking about. When you extract it correctly you will see a "libs" folder in the same directory as the rest of the project when looking at it with a file browser.

See the attached image -- it shows the project folder including the lib directory.

If you continue to have issue with the code, please use GitHub to ask questions there where the code and project is hosted.

Just saw this project - one thing that's not clear to me - do I need an Arduino to program this or do I just need the 2 components listed above (the "Makerfocus D1 Mini NodeMcu 4M Bytes Lua WiFi Development Board Base on ESP8266 ESP-12F N Compatible NodeMcu Arduino" and the "Wangdd22 MAX7219 Dot Matrix Module for Arduino Microcontroller 4 in 1 Display with 5pin Dupont Line" ?

You will load the firmware directly from your computer over USB to the Wemos D1 Mini. Follow the project Readme.md.

OK - Cool ! Thanks - parts ordered :D

Cool project, have the electronics working, just a couple more hours to finish printing the case parts.

Is there a way to use my local NTP server for the time?

From other comments it seems that may have been supported before(?). I try to keep IOT devices from accessing the internet as much as possible for security and reducing traffic (>40 devices and growing).

Looks good.... looks like you have it monitoring your print job for the case. ;)

About your question, the choice was made to use an outside time service that would get the time zone based on the selected City for weather. The service uses latitude and longitude. As a result you can select what ever city you want in the world, see their local time and weather.


Fun make. Rotation value of “1” worked for me. Thank you!

I tried all of the rotation settings. Still nothing. One of the segments might have one line scrolling. I have had and still have numerous Arduino and Raspberry Pis. And many types of led lcds. I have a handful of small lcds and will work on an Octoprint display only. I normally workout the coding on a breadboard. As the two ESP8266s solder pads are about worn out.

Yes 1M allowed it to flash. But the MAX7219 led is all jumbled.

Gave up. Too much time involved.

Sorry, you are giving up. It sounds like all you need to do is change the rotation value in the web interface and it should work for you. So close.

It flashed. And can see the webpage. But have random lines on the display. On bootup it diplays a bunch of small boxes. I have a larger 5 volt brick running power. Would have been nice to be able to use the new printed case.

You said it flashed -- does that mean it is working now? If you didn't get the LED that it was designed for, that is ok, you can set the rotation of the displays in the web interface. Did you turn on the 1M SPIFFS?

After 10 tries and two D1 boards. It finally flashed. But now all 4 led matrixs are randomly going on and off. No scrolling text.

I have a feeling you missed this from the Readme.md file:

  • Set 1M SPIFFS -- this project requires SPIFFS for saving and reading configuration settings.

This is where the settings are stored and it won't run until that is set before the compile and load.

[this is done in the Arduino IDE under Tools -> Flash Size...]

Hello again!

There seems to be some sort of issue with the advice. It just displays "Advice:" and nothing else. Is there a fix for this?


You are running a really old version of the software. Advice has been removed as the source changed over to using HTTPS and was causing some issues. Advice is dead. Update your firmware too.

I really like you project. But what a shame is I can not connect to google in China. Can you replace a NTP server to replace time.google.com?
I tried to use cn.ntp.org.cn, but it just donot work.

Good news the release 2.10 that is coming out is totally replacing the older time client code. It will no longer use Google for NTP -- it will use a new service for setting the time via your GPS location through TimeZoneDB. Release will be prepared today.

Thank you for your reply. The new version works very well. Excellent work! Thanks again!

I made the marquee scroller and the printer monitor in both sizes 0,96 inches and 1,3 inches screen, evrything works fine when i turn it on, but it doesn't display the time and doesn't update the printing process.
If i disconnect power and start it again the printing processs appear updated, but remain in same status after (for example if i turn it on and printing is 60% it will remain 60% unless i reconnect the power).
For the marquee once i turn it on, it shows the weather info correctly, but then shows 2 lines that i guess should be the time (but it doesn't shows the time) and it stays like that forever..
What is wrong? do i need to do something more into the arduino file?

OH gee, I just read your post again -- you have updated the code to use different display than intended and now you want help with it. Please do not post this kind of stuff here as it only serves to confuse people. Please take it to GitHub.

First, it is better to post these questions on GitHub were the code is managed.
Did you wire up the screens like the diagram or are you using different pins. If you wired up to the D4 pin you will get the screen lock up every time the LED light flashes. The other option is to run the serial monitor on the device and look at the output and see why it is hanging up.

hi, sorry i was not intended to make mass here, i will post again on github and if you can, i would like to explain you more details over there.

hey, ive just got the electronics finally done and am now printing your case in a very horrible primary blue..... yeah the main bit will be spray painted black i think.... anyways...

is it possible to have the news ticker section display news from multiple sources?

The code only supports one news source at a time. It caches 10 news stories every time it checks the news.

Thanks for the project. Is it possible to make this display other messages, like when my front door opens i get a notification on the marquee scroller, i would guess that it would need MQTT or IFTT support ?

Yeah, it would need MQTT support. You can post these requests where the code is hosted on GitHub. Thanks.

Ok i will do. Thanks

Thanks for your code excellent work the problem I’m having everything on the screen is jumbled is there something incompatible It looks like the LEDs are not in order

NickX -- sounds like you bought a different model of the LED than the links -- that is ok. It is an easy fix and it has to do with the rotation of the LED. This can easily be fixed in the code.

You can adde the variable to the Settings.h and edit the marquee.ino file as it mentions or just change the variable in the marquee.ino to the rotation that works for you -- that is probably what I would do.

i made the changes in marquee.ino?
but getting a error in settings.h

NickX -- please make these kinds of posts over where the code is on GitHub -- Thingiverse is for the 3D printed parts.
Looks like you copied in the comments without the comment tags. The compiler doesn't know that those are comments and doesn't ignore them. You need to look close at what was shared and the comment tags and where they go.

Hello everybody
a great project, congratulation. Everything worked right away, thank you.
Is it possible to send a message to the Diplay with wget or as web command? Would like to send information about the power production of my PV system from my home automation.
Furthermore, the time is not correct one hour ahead, but the data is already wrong from OpenWeatherMap. (for Rehetobel, Switzerland)

regards Remo

You can use the DST checkbox option to adjust the time in the web interface.

Currently there isn't a API to push messages to the display -- yet.

A quick follow up... 2.6 solved all the problems! I like the progress bar on the left and it has not given any parsing errors. Thank you!!

I'm getting "Weather Data Parsing Failed!" - it works then quits - do you know why? You have to 'forget wifi' or power cycle....

By the way it only attempts to update the weather data every 15 minutes (or what ever you have set) -- so it won't attempt to update the weather data again until the time to fetch data is there. So Power Cycle just forces it to get the data. You could also use the Web Interface and select the "Fetch Data" option to force it to refresh the data.

Usually connection issue. It means the service that it is requesting the weather data isn't responding. This may happen occasionally. You can connect it to your Serial Monitor in the Arduino IDE and see the messages that show up there. That will tell you what is going on for sure. Also, for code related issues, please use GitHub were the code is published for questions or issues running the code. Thanks.

Comments deleted.

Philip, the way your print looks is based on your printer and material you are using, not the STL. Have you found the correct settings for your exact printer and the material you are using? It won't help much telling you my settings (and they are mostly the same with everything I print).

The model (STL) file was designed with a 0.4 mm thick face plate that is thin enough for the LED light to shine through most PLA. In CURA, I set my print for 0.2 mm layer height. This gives you two layers over the LED plate. I hope that helps you.

It sure does! I've been printing with .12 layer height - and that makes it .5mm thick!! reprint!

Hi Again!

I’ve been using this for about two months and it works great! My only issue is now that daylight saving time has ended, my clock won’t adjust and the advice stopped showing up. Should I go ahead and update the clock’s software?


Yes, download the latest firmware. There is on option to turn off DST.

Hi Everyone. In the UK the clocks have just gone back but now the time on the scroller is not correct. When I look at the serial monitor after uploading the code it says that Geo time is 10:50 (Which is correct) but the display still reads 11:50.
I have tried changing the timeclient files to use google.co.uk instead of google.com but it made no difference.
Maybe changing utcOffset would help (I haven't found where yet) but I don't understand why the serial monitor is correct but is different from the time displayed.
Can anyone help? It should be a simple fix to get it to work correctly when we enter and leave british summer time in the UK.

There is a 2.4 Dev branch started to fix this over on GitHub. You can try out the changes to fix this there.


Update. Now works fine. The 2.4 update resolved the BST issue, and also added a day/date option to the display, configurable via the web interface.
Great work to all involved! Thank you.

OK, That's cool. I'll check it out. Many thanks for your response. I have been digging round the code getCurrentEpochWithUtcOffset but I can't quite figure out the parameters passed (for example, why is there an "L" after the number of seconds in a day)
I'll nip over to github and see what's happening :-)

first nice job

i have error - DynamicJsonBuffer jsonBuffer(bufferSize);

can you help ?

Yeah, you will want to use the version of ArduinoJson mentioned in the Readme.md file. You have probably loaded the 6.X BETA version.
Remove the BETA version and load: ArduinoJson version 5.13.X.


Any idea why I get this message?

All the libraries listed are installed

Arduino: 1.8.5 (Windows 10), Board: "LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 921600"

Using library json-streaming-parser-master at version 1.0.5 in folder: C:\Users\aj_wa\Documents\Arduino\libraries\json-streaming-parser-master
exit status 1
'DynamicJsonBuffer' was not declared in this scope

This is really awesome. Getting read to try and get this together with no experience. Are the pins meant to be soldered to the wires or is there room to slide them on with the supplied connectors that come with the wires from the dot matrix module?

Ok. Thanks. Since you used WU in your reply, dis you choose openweather over weatherunderground for a specific reason? I've used weatherunderground before and it seems pretty easy but I don't really want to tear your code completely apart either!

Sorry, my other project I used the common WU with some large modifications to it to get it to work the way I wanted it to. I have not share that project (yet). The openweather is the one that has the 3 hour incremental forecast out to (I think) five days. You can probably get that to work, but you will need to figure out what members of the array in the response you want to use.

I must be doing something wrong with the print but I'm not sure what. I can't see the display through the plastic (even with cranking up the intensity on the display) so I guess I've ended up with it too thick. I've used black PLA for it. My layer height is set to .2 and Simplify3d says it's doing 3 top solid layers and 3 bottom solid layers. Outline/Premeter shells is 2.

Any idea on what I should change?

No, you have not done anything wrong. I printed one out of the Black PLA I have and could see NOTHING through it. It all depends on the brand and how much coloring they have in it. I would simply print it in a different color or find a black PLA that may allow some light to go through it. The layer in the design in front of the display is 0.4mm -- so if you do a 0.2 layer height then it should only have two layers. You could test print some 0.4mm squares of different PLA and test light through them.

Oh, one more thing. Did you post you forecast code anywhere?

No, I have not. Sorry. The WU data is a little confusing at it comes back in 3 hour chunks -- not by day. So you need to figure out the number in the array that equates to the day / time you want.

Thanks. I will look into that approach. Basically I was thinking of only using current day and tomorrow for the weather report. Beyond that won't matter anyway! Never accurate anyway! HA

Qrome - I absolutely love this thing! I have 3 of them so far, 1 2x8 and 2 2x8 display modules. My newest one I decided to look at trying to adjust the software just a bit, but I'm having trouble. I would like to get the forecast so I can make this newest display just a weather display. I've been able to get the weather forecast info in the json format from openweather just fine. My problem is understanding what all I need Tobe looking at to display the information I want. Any chance you have already done something like this and could point me in the right direction for getting this to work?

Thanks, I have these all over the house now and at work as well.

I have other projects that I have done a 3 day forecast -- however the WU forecast data was so large that I worried about hitting the memory limit. The approach I would take is to have the weather object store the data from the last call then have the display loop just ask for it when it needs to display it. I hope that helps.

It might be easier for you to post these questions over on the GitHub for the code project.

Can you share your Tinkercad design? My display requires the width of the step to be about 2mm wider. Would also like to cut out the opening for the display instead of having it show through the PLA.

Nice clock and clock case. I have made 2 so far. One with 1x4 and one with 1x8. I have no 3D printer ATM so the case is on hold till then. Fun idea with the advise line, make's me smile.

I've been using another esp8266 platform clock idea that also shows Lunar phase of the moon via a small string of ws2812 leds and FastLed. link to that project: (https://arduinosaurus.wordpress.com/portfolio/lunar-phase-weather-station/) Again I have no 3D printer. So for this project I used a "uncle milton moon in my room" for the moon

I wondered if you would be interested in adding the lunar phase/LED portion from that project to your project?

I have been trying myself. However my Hobbyist level programing skills are little more then copy&paste&pray.

Well anyway Thanks for sharing your project.

Added RTL-nieuws for the dutch people, see Makes for modifications.

Also had trouble finding the right library versions to compile.
The following worked for me:

  • Wifimanager 0.8.0
  • Board version: 2.4.0

Great thing

Not sure why you had to use those older versions. I am using the latest on everything except the Beta Version of ArduinoJson. You should be using a newer version of ESP8266 Core on the Board manager as well.

Comments deleted.

I keep getting this every time I try to verify:
Error compiling for board WeMos D1 R2 & mini.
Did I do something wrong??

There is probably more to the error. Do you have all the supporting libraries installed in Arduino?

Oh, I'm missing FS.h. Could you please provide me a link to the library?

PS: I think that's a library? Sorry, I'm new to Arduino.

That should be included as part of the ESP8266 core library. You will need to install the Arduino ESP8266 core library -- it has more than just the FS.h in it.

Could you please give me the link to it?

This video is for another project but the section on searching up and installing Arduino ESP8266 libraries is the same. I think this might help you out. https://youtu.be/niRv9SCgAPk

Thank you so much for the video! In the end, the issue was caused by the file not being unzipped! Anyways, now the clock is working amazingly well! I also posted a make! Thanks again!

Awesome! Your make looks great too!

First off let me say what a great job. Worked straight away from an .STL and code perspective. Having put together some projects for myself, I can see this has taken some time because of how comprehensive it is. Again great job.

For me at least what would complete this clock is if it connected to an MQTT server and I could push custom message to it through my Home Automation system. I have only just built this and haven't looked at the code (because it just worked basically) but if you have no plans to do it I many have a crack myself. Thanks again.

Thanks for the kind words. I do not have any MQTT related items and don't have the immediate desire to add it. I would not have a good way to test it. However, if you post this up on the GitHub repo for the code, there might be someone out there that would be willing to contribute to the code base.

OK cheers. I may just write it myself then. I will post it up on Github jic someone is working on it already. Thanks

KmanOz have you written the MQTT part? with MQTT and a piezzo this would be a super awesome addition to HA ;)
Congratulations for the design Qrome it really looks amazing :)

Hi. No I completely re-wrote a clock from scratch to suit my environment. I run HA & MQTT and have Oregon Scientific weather sensors so needed to display local weather. Was easier to start from scratch. Just use his excellent case. Sorry.

Hi, you surely know mpeter who ask me info about my clock just 1 week before u post this clock which is actually a copy of my concept:
Esp based with LCD. I do hope thingiverse will ask you to remove it!

What's the problem of having more that one similar project here?
Case is completely different (better), code is completely different (better) and it was done longer time ago.
So similar ideas with completely different implementations. Problem == none!

Wow, I can't believe you are serious. First of all, I have the STL files out in TinkerCad that show I created them back in November of 2017. I also have a code repo that goes back to November of 2017 out in GitLab -- I moved it to GitHub when I decided to take it public. I have never seen your clock before and didn't use anything from it.

You believe this is a copy of your concept? Wow, well, I have proof that it isn't in GitLab and in Tinkercad -- you are NOT the first person to use these LED lights. Also, there is no way I could have designed and writen the software (that I share) in 8 days.

Have you looked over on Instructables.com on how many LED clock projects there are? Give me a break and just go away.

I just finished printing your design and downloaded your code, thank you for sharing.

Dude are you serious. There is room on Thingiverse for both these clocks. May the best one win. P.S I know which one that is. HINT: It's not yours. As far as copy of YOUR concept, I'd say this design both from an .STL and code perspective is far superior to yours. Don't be butthurt and get on with the job of developing yours further. As I said plenty of room for both and may the best one win :D

I would not like to get it removed! If you are right which I cannot evaluate, try to get an agreement somehow, maybe a reference or whatever. But don't force him to delete. By the way, what do you mean with concept? Connecting a display to a ESP and scrolling text including time and weather information? There are hundreds of them in the web.

Hi, I printed the case and for some reason, the matrix module would not fit inside, like one side could go in, but for the other side, it would stick out a bit. I made the case a bit longer (0.60mm) and printing that now. Other people have made this case without any mods but not mine! Do you know what might be causing that? My printer is a 3DWOX DP200.


It could be anything from your slicer or your printer might be extruding a little thicker than most. I have made about 10 of them and it is a nice snug fit. I typically fit one side in then use a small flat screw driver to apply pressure at the base of the other side and they just slip right in. Did your matrix have a blue or a green circuit board? Just wondering.

It had a blue board. Is there a different matrix that you use sometimes?

Same here, the blue board doesn't quite fit.

Comments deleted.

No, I designed it with the blue one in mind. I know some have bought another version that has a green board and I was told it fit just fine. Thanks.

Made the new version and it worked! Fits so nicely! Thanks!

Cool, you should share a photo of your make.

Comments deleted.

Why would they block your IP? If you followed their requirements I don't see why they would block you.

What's supposed to happen when you connect to the AP Hotspot? Nothing happens on my smartphone... Just an open WiFi without internet connection... How do I enter my"WiFi connection information"? Thanks.

You probably missed or ignored the popup window that usually pulls up the webpage. It may not show again unless you "forget" the network and connect to it again. The other option is when you are connected with out internet, pull open your browser and open -- this is the AP page that you should be prompted with. If you need more help, search up ESP8266 WifiManager on google and you will see lots of information. This is a great manager that helps you avoid hard coding your wifi connection information into the code. It also allows you to move your device easily between networks.

Yeah. That finally works. I searched that and I found that address. Done! Thank you! Now I have another problem... xD When I want to configure in the Web Interface it doesn't let me log in. I use the same name and password I putted in the Settings.h

boolean IS_BASIC_AUTH = true; // Use Basic Authorization for Configuration security on Web Interface
char www_username = "user"; // User account for the Web Interface
www_password = "password"; // Password for the Web Interface

Please note in the README.md file -- once the Settings.h file is loaded (first time) you MUST use the web interface to change settings. Unless you use the web interface option to "Reset Settings" then it will read from the Settings.h for the default values. The idea here is that you don't have to edit anything in the Settings.h file. Try the default user / pass that was loaded the very first time on the device. That usually is admin / password.

This is from the README.md
NOTE: The settings in the Settings.h are the default settings for the first loading. After loading you will manage changes to the settings via the Web Interface. If you want to change settings again in the settings.h, you will need to erase the file system on the Wemos or use the “Reset Settings” option in the Web Interface.

Any idea on this error?

exit status 1
'readCityIds' was not declared in this scope

i cannot compile the code

Did you change the code? Do you have the latest code? What version are you using? Please comment on questions and issues with the code over on GitHub. Thanks.

i got it working!...but the time is 4hrs off. i used openweather to find my correct location. is there a place i can change the time?

You need to provide a valid account key for GeoNames key or it won't look up your time offset. This is covered in the README.md file.

Hello QROME,
As I mentioned before I love your clock. I have 2 around the house and am building one for my friend.
I tried to update to your version 2 software but it bombs out with the error message (see attached file). This happens if I include my API key in the setting file. If I don’t include it everything compiles fine and then I have to type it in the web interface. Thanks for your help.

MPeter, you are using an old version of the Settings.h file -- The latest version does not have the APIKEY defined as a const. Please use the Settings.h file from the latest code. Also, you no longer need to edit the Settings.h file before uploading. You can update all the important keys in the Web UI.

What is meant by your note "Printed with 1.2mm on all walls top and bottom"? Does that mean at .2mm layer height you have your top solid layers and bottom solid layers set to 6?

I use Cura to prepare my print files. I set the layer thickness to 0.2 mm per layer. My nozzle is 0.4mm so the wall thickness needs to be divisible by 0.4 -- so, 1.2 is 3 layers thick. The screen area is design for 0.4 mm thick so that with a 0.2 mm per layer that means you will get 2 passed on the screen area. I hope that helps. Your slicer should figure it out.

Excellent - that helps. Thanks!


Great project!

I have a problem, everytime I go to configure webpage it asks me for credentials, and I cannot do any setup.
Any idea why?

Thank you

Look at the Settings.h file that was loaded with the firmware. The default user / pass for the device configuration is admin / password.

I'm getting "Weather Data Parsing Failed" error from today (6/8). Using SW 1.9. Could you check what's wrong? Thanks.

Nothing wrong here. Can you plug it in and run the serial monitor -- it should give you all kinds of useful information.

get always that: 'DynamicJsonBuffer' was not declared in this scope. how can i fix it?

Makes sure you have installed all the supporting libraries for Arduino like ArduinoJson. It does not appear you have added the supporting libraries.

Make sure you are using ArduinoJson by Benoit Blanchon Version 5.13.1 -- what are you using?

There are breaking changes introduced in the 6.0.0-beta version of ArduinoJson -- it will require code changes to work with it. Please use 5.13.1. When they go final with the beta -- we will make the changes.
You can read about it here if you want to implement them in your local copy: https://github.com/bblanchon/ArduinoJson/releases

Awesome, I was getting the same error - downgrading the library from the newest beta to 5.13.1 worked! THanks

Comments deleted.

Thank you for this excellent design and sharing your code! Is there anyway you could upload a version that accommodates 8 matrices?

This guy did it: https://www.thingiverse.com/make:500989 Maybe you can talk him into sharing his STL file. :)

ESP8266 Wemos Clock News Weather Scrolling Marquee

Thanks. So you want a version of the code for 8 matrices? The code and easily be modified to accommodate a large chain of displays.

Sorry, no not the code I know how to modify that. I am asking if you could post a modified .stl file to fit two diary chained 4x1 matrices.

Are you thinking of stacking them or making it longer?

You have a printer bed large enough for that? I don't have any plans on making it longer. You are welcome to use the STL files and make one longer.

connected all together, can connect to AP the first time, get correct IP address, but then it resets all the time.
this is the serial log.
any idea what goes wrong?

Getting Weather Data
GET /data/2.5/group?id=2761369&units=metric&cnt=1&APPID=a17866878968bf7d43xxxxxxxxxxxxxxxx HTTP/1.1
connection for weather data failed

Updating Time...

Exception (0):
epc1=0x52cf3eb5 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: cont
sp: 3fff3a60 end: 3fff3e20 offset: 01a0

3fff3c00: 3fff2d2c 3fff2a01 3fff3c58 52cf3eb2
3fff3c10: 00000006 00000001 3fff291c 4021ecdc
3fff3c20: 00000001 3fff23a8 3fff3c50 40219b90
3fff3c30: 00000010 00000000 00000010 3fff291c
3fff3c40: 3fff28d4 00000050 3fff3c80 4021125c
3fff3c50: 00000008 00000000 401074d8 00000000
3fff3c60: 3ffe916c 00000008 3fff2b44 3fff2d04
3fff3c70: 00000010 3fff28d4 3fff2d2c 4020b1d5
3fff3c80: 40107278 00000000 00001388 40219e18
3fff3c90: 3fff21a4 00000000 00000000 3fff291c
3fff3ca0: 00000010 00000001 3ffe91d2 40106a11
3fff3cb0: 3fff291c 00000000 00000001 4021a0c2
3fff3cc0: 00000000 00000001 3fff7975 4021f458
3fff3cd0: 3fff2d04 000006c5 000006c5 4010020c
3fff3ce0: 3fff23a8 3ffe8540 3fff3d10 40100690
3fff3cf0: 3ffe9cae 3fff3d10 3fff291c 3fff291c
3fff3d00: 3fff28d4 3ffe8540 3fff2d2c 4020dcbf
3fff3d10: 00000000 00000000 00000000 00000000
3fff3d20: 00000000 401074d8 00000000 401074d8
3fff3d30: 00000000 401074d8 00000000 401074d8
3fff3d40: 00000000 401074d8 00000000 401074d8
3fff3d50: 00000000 00000000 ffffffff fe000001
3fff3d60: 3ffe8bce 00000000 fe01ef35 4020df08
3fff3d70: 00000001 feefeffe 3fff28d4 4020ad48
3fff3d80: feefeffe 00000000 3fff2de9 3fff2df0
3fff3d90: 3fffdad0 00000000 3fff2de9 4020e383
3fff3da0: 00000000 00000000 4021e6e8 00000000
3fff3db0: 00000000 00000000 00000000 00000000
3fff3dc0: 00000000 00000000 00000000 00000000
3fff3dd0: 00000000 00000000 00000000 401074d8
3fff3de0: e601a8c0 feefeffe feefeffe feefeffe
3fff3df0: feefeffe feefeffe feefeffe 3fff2df0
3fff3e00: 3fffdad0 00000000 3fff2de9 4021d604
3fff3e10: feefeffe feefeffe 3fff2e00 40100710

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d

What version of the Marquee-Scroller are you loading?
What is the exact version of your Wemos D1 Mini? -- even a link to where you got it.

Could be a flash memory failure.
Exception (0) indicates an illegal instruction.

It is failing connecting out of your network. Failed getting weather and it looks like it is blowing up on getting the time.
Does the network you are trying to run this on require a proxy connection? The simple get data calls are failing to connect.

wemos d1 mini. at least this is what it's sold as. i got several of them from different sellers from aliexpress. i flashed a second one and got the same result. https://www.aliexpress.com/item/ESP8266-ESP-12-ESP-12F-CH340G-CH340-V2-USB-WeMos-D1-Mini-WIFI-Development-Board-D1/32674463823.html?spm=a2g0s.9042311.0.0.27424c4d9cmlLm

there's no proxy involved, and network is stable, with 100% reception to my ubiquity access point.
maybe there's some outdated or not compatible ip library or something?

Signal Strength (RSSI): 100%
Server started
Use this URL :

Getting Weather Data
GET /data/2.5/group?id=2761369&units=metric&cnt=1&APPID=a17866878968xxxxxxxxxxxxxx HTTP/1.1
connection for weather data failed

Updating Time...

Exception (0):
epc1=0x52cf3eb5 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: cont
sp: 3fff3a60 end: 3fff3e20 offset: 01a0

3fff3c00: 3fff2d2c 3fff2a01 3fff3c58 52cf3eb2
3fff3c10: 00000006 00000001 3fff291c 4021ecdc
3fff3e00: 3fffdad0 00000000 3fff2de9 4021d604
3fff3e10: feefeffe feefeffe 3fff2e00 40100710

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d

well, that's strange. it really IS a problem related to internet connection. i opened a wifi hotspot on my mobile and it works.
so now i have to find out what's wrong with my ubiquity wifi.

How do I adjust the time zone? currently I'm 2 hours behind.

It's very possible I've done something wrong with my settings, but my clock will show the wrong time until I visit its webpage. I don't have to mess with the page at all, just have it served to me, and the time instantly corrects.

Here is Qrome's response to that question (see bellow):
The project uses the latitude and longitude from the weather station results and does a service call to http://www.geonames.org/ api to get the timezone offset for your city location. Make sure you have a valid geonames user account set in your Settings.h file.
const String GEONAMES_USER = "validaccount";

Here is a sample call that it would make to get the dst offset:

*replace the [GEONAMES_USER] with the value you have in your Settings.h file.

Just to follow up on this if it's still not working for you, you may not have enabled your geonames account for free services. Go to http://www.geonames.org/manageaccount and you'll see a tiny bit of text at the bottom saying "enable the account XXXX for free services" Guess who was up late last night trying to get this working only to come back to it with fresh eyes and notice it straight away? :)

Now I have 2 of these working great.
I had an idea for a very inexpensive improvement. Is there any way you could incorporate the code for using DHT11. It is small and would allow the clock to display outside and inside humidity and temperature. I beleive there is planty of room for it in the case.
Thanks a lot in advance for your comments.

Sorry to bug you again. Everything is working great except when I go to Config thru my computer's browser I can't see anything after the box for Bitcoin currency. Needless to say the Save button is not present either so I can't save anything.
Please give me some pointers where to look for the fix?

Thanks again.

Yeah, I have noticed that happening a few times. The latest code I tried to clear up the page. I think it is running out of memory (occasionally) at that part of the page. Try refreshing it or starting it again and then try the config page again. The latest is 1.8 and was updated yesterday. It might clear that up for you.

I just flashed version 1.8 and it works great now.
I have a question and a suggestion.
The question: if I want to give my clock to my friend what do I need to do to configure it for his network?
The suggestion: it would be great if you could put the scroll speed in the web configuration menu as well.
And again thanks for a great project. Please let me know if you have some other ones (similar complexity).

Thanks, glad it is working for you.

When ever you move the clock to a new network it will display the message to connect to the AP point and give the station name in the display. You would then pull up your phone and configure it. Actually quite simple.

The other project that I currently release is the OctoPrint Monitor. https://www.thingiverse.com/thing:2884823 This one is easy and fun if you are running OctoPrint to manage you printer. It is a great way to monitor it remotely through a little device.

3D Printer Monitor for OctoPrint Wemos D1 ESP8266
by Qrome

Very nice, have you thought of the option to receive and display data from other devices (Domoticz home automation for example) ?

Message could be send thru API to the ESP, suggested format: priority, display xx times/until date/time, message

What I am thinking of is Rain/thunder/UV warning and othe domotica messages.

Any way to put a sports ticker on this? Scores etc.

Great project! I put one together and love it.
I have only one problem. It recognizes my city and displays it correctly, but the time is fast by 4 hours.
I am in the eastern time zone so it sounds like it doesn't adjust for it.
Any pointers what I should do?
Thanks again for a great clock.

The project uses the latitude and longitude from the weather station results and does a service call to http://www.geonames.org/ api to get the timezone offset for your city location. Make sure you have a valid geonames user account set in your Settings.h file.
const String GEONAMES_USER = "validaccount";

Here is a sample call that it would make to get the dst offset:

*replace the [GEONAMES_USER] with the value you have in your Settings.h file.

Comments deleted.

You need a ; after the value 4 on line 84. That is the issue. Also, changing values in the Setting.h (that are managed in the Web UI) will not change. The only values after the initial load that are managed are the API keys. You can also use the Reset Settings option in the Web Config and then it will reload the values from your Settings.h.

Also, line 90 does not look right either. Looks like some random text. Also you probably don't want to keep that image up there as it displays your API keys.

Thank you so much for all your help. It makes the project so much better.
And you are right on. Everything works now thanks to you in more ways than one.

This is awesome. I just built one. Will post pics tomorrow. If this had google calendar integration it would be even better!

Is there a way to add support for 2 different octoprint instances for those of us with multiple printers?

I know I have been thinking about this as well. I have 2 printers and it would be nice to not have to go in and change the port. Right now, there isn't an easy solution, but it is something to think over. My current solution -- I have multiple scrolling clocks around my house. LOL -- they watch different OctoPrint servers.

Has anyone found a blue matrix to use for this? All im finding is red and im not a big fan of red lol.

Actually, I have been looking around as well. It looks like you would have to buy the red LED with the board then you can replace the 4 panels with different colors -- the catch is they are very expensive for some reason.

Know a good place to find the blue panels?

excelent project, thanks for sharing friend.

I am in the process of building your clock. Everything is printed and now I am configuring the WeMos board. Is there a way to assign in the sketch predetermined static IP address, gateway, SSID, password to it instead of using WIFIManager?
Thanks again for a great project.

Yes, you can always change the code. However the WiFiManager will allow you to specify a specific IP. Read about it here: https://github.com/tzapu/WiFiManager#custom-ip-configuration
It would be easy to alter the marque.ino file just above the wifiManager.autoConnect() line to specify the IP.
Also, if you have control of your network router, you can do IP and Mac Binding to control the IP address that is given to any specific device on your network -- this is what I like to do as it helps prevent collisions and all the devices are managed there in the router.

Thanks a lot for your help.
I am slow with Arduino coding. I understand now how to specify Ip address, gateway, mask. But how can I hard code the SSID and password for the network that I want the clock to connect to.
Sorry about bugging you so much.

You should be able to change the line where it has the wifiManager.autoConnect() and add the SSID and Password to it.
wifiManager.autoConnect("AP-NAME", "AP-PASSWORD");

Like that. Give it a try. The entire reason of using the WifiManager is so you would not have to put your password in your config or code. But I am sure there is a good reason you want to do it this way. Let me know if that works.

This is awesome, great work. Would love to see Bitcoin value added like a ticker.

I wrote a BitcoinApiClient and added to the Marquee Scroller as on option to display. It is up in the latest 1.7 release.

That isn't a bad idea. It should be easy to add the option. Would this data be ok? https://api.coindesk.com/v1/bpi/currentprice.json

Is the power to the displays borrowed from the 5V pin of the USB?

There is a 5V pin on the board and all power comes from the USB. It does not draw much power at all. It fluctuates from about 50 ~ 80mAh when scrolling. There are no extra batteries or anything required.

Looks great.
I have a clock made out of 4 separate units on one mainboard my wife designed. It has light, temperature, and other sensors and is powered by an USB cable.
I would love to use this design as an enclosure, but I need to make holes in the back for the power and sensors. And I don't want to drill those holes.

Could you upload the CAD file too? Either op OpenSCAD of Fusion 360.

No, you can modify the STL files. There are programs out there that will let you import the STL file.

I love it!
Is there a reason why there is no cutout for the matrix in the box? I would think the display would look much brighter with the face of the matrix exposed.
Thanks for your design.

Thanks, the reason to keep the thin layer over the LED is strictly aesthetic. I like the way it looks. Also, the brightness is configured in the web interface and all the photos and videos shared here are at the very lowest setting. It is very bright. Also, it looks cool when the LED is shut off -- has a clean slate futuristic look to it.

i like it too, the "missing cutout" ;-)

Great, thanks for sharing! This will be probably one of my next projects.
Do you think the electronics would also work with two dot matrix modules in row? Would require a larger housing, I know ;-)

Wow, that's exactly what I want. Thanks for your reply to my message pointing me to it. Have you posted your files somewhere?

Yes, you can stack and join lots of the 4x1 modules together. In the marquee.ino code there is a place to define and orient each of the cells. You could make a really big LED Matrix Display without very minimal changes in the code.

Change this:
const int numberOfHorizontalDisplays = 4;
const int numberOfVerticalDisplays = 1;

And then find the section where you define the orientation and add the new cells. This is the current cells for the 4x1:

matrix.setPosition(0, 3, 0);
matrix.setPosition(1, 2, 0);
matrix.setPosition(2, 1, 0);
matrix.setPosition(3, 0, 0);

I would love to make it with 2 modules one on top of the other. The intent is to make the digits and characters twice as big. How would I change your code to accomplish that and how would I wire these 2 modules: Out of first to the In of the second?

Many thanks for your fast reply. I already have 2 modules each having 4 Displays with 8 x 8 Diodes. So it would make 8 x 64 LEDs. I bought them with something like your design in mind, but never got the starting point. Your posting pushed my "restart button" ;-)
It may take some time but I'll let you know about the final result. Maybe earlier if there are questions. I'm wondering a bit that the LEDs are directly driven by the ESP8266 WeMos but as your pictures show it obviously works.
Thanks again!

You can chain them and the amp draw is actually very low. They run directly off the 5V power from the Wemos. Post up your design. The LED driver supports huge configurations, but as noted above you will need to initialize them with their positions and orientation. Should be easy and sounds like fun.

Update 4/18/2018 -- I have updated the description with a link to the Source Code. Please share your makes! :)

Di you have a Beta for testing?

I will update here when I have it prepared. I hope by this weekend.

Really dig the idea and design execution - looking forward to the source code!