Analog clock that shows the weather instead of the actual numerical hour it points to.

Overview

Eli's weatherClock

An digital analog clock but instead of showing the hours, the clock shows the weather at that hour of the day. So instead of showing 1, it will show the weather forecast for 1AM/PM. Click on the hour for more detailed information such as wind, precipitation and more. Once in the detailed view, simply click the center again to return to the analog clock face.

Video demo

You will need to:

  • Acquire Pi Zero W and a Pimoroni 4" touchscreen
  • Install a full Raspbian distribution (not lite)
  • Install python pynput module. Pynput needs X11 which is on full Raspbian distributions.
  • Obtain your own OpenWeatherMap API key from and change your location to where you are
  • Follow the "Setting up your Raspberry Pi" instructions to setup the Pi to push display to the Pimoroni screen
  • Print the two parts of the case (files found in repo). CAD found [here](CAD files for enclosure located here

NOTE: I have experienced an issue with running this on the Pi Zero W - after a few days, the program starts to get super slow and at some point the program closes itself. A few contributors have provided some potential solutions and these are under test.

For any questions/comments - you can open an issue or contact me directly at [email protected] !

Comments
  • icon logic // sun/moon-dichotomy

    icon logic // sun/moon-dichotomy

    @KeepThisTicket I still haven't understood what logic stands behind the choice of icon. Would you be so kind to elaborate on that?

    In the current release status, there is no differentiation between the sun/moon. I highly appreciate the merge you made yesterday, it does good for the optical representation of the text, thank you. However, I am shown sun for 3am/4am now, which is logically impossible for where I live, which is Frankfurt/Germany. Sunset is somewhere around 8AM. I would love to help optimize the logic behind it.

    opened by 0x0lli 14
  • documentation of ... anything?

    documentation of ... anything?

    after cloning the repo and configuring the display into the correct rotation, I am left with questions only.

    1. how are you running the file itself? If I run it over SSH via "python weatherClock.py" I get: File "weatherClock.py", line 326 SyntaxError: Non-ASCII character '\xe2' in file weatherClock.py on line 326, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details" Cooperation of b-morgan and Vacant0mens produces a syntax error within their v4 in line 22. Trying to run the file on the GUI brings the source to an editor. It appears, some of you have it running, but how?

    2. My intention would be to have it running when powered on, so how would one go about it? I found there are several ways, just trying to see if your can recommend one. https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/

    3. the pimoroni link is not working anymore.

    opened by 0x0lli 11
  • 24hours time format

    24hours time format

    Hello, Not sure, but I think that "24 hours format management" is not done.

    Am I correct ?

    For example, it's 3PM (15H) here and if i click on 4 hours on the screen, I got weather for tomorrow 4AM instead of today 4PM (16H)

    opened by Sebwap 7
  • Making it work

    Making it work

    Congratulations on achieving recognition with this project - Raspberry Pi .org no less. I ordered the Pimoroni display last night when they had 11 in stock; less than 24 hours later, no stock 😱

    A few things slowed my installation of this software on my fresh Raspbian Buster on an R Pi Zero, which may help those that follow:

    Get the weatherClock software: git clone https://github.com/KeepThisTicket/weatherClock

    Force the use of Python 3 (or the default Raspbian may use the deprecated Python 2) AND change working directory. Add to the top of weatherClock.py:

    #!/usr/bin/python3
    import os
    os.chdir("/home/YOUR_USER/weatherClock/")
    

    Install the Python tkinter module (don't use pip3 for this module): sudo apt-get install python3-tk

    My Pimoroni display has just been posted so whilst waiting, I have diverted the output from this software to my iMac using the XQuartz X Window system. It works a treat and I do like the look of it, including the touch for details. I suspect this will have a high WAF and I'll be printing a case shortly.

    Many thanks for your efforts in making this project public.

    opened by Chiny91 6
  • small optimize

    small optimize

    logging level check no OR statement also detail from another hour touch when in detailmode end print = info. Please look at my email and see all my changes over there and look how we can implement this.

    opened by vierlijner 1
  • Code refactoring and error fix

    Code refactoring and error fix

    • fix error that lead to wrong visible timestamps
    • fix error with wrong weather data mapped to an hour
    • refactore code
    • remove unused code
    • move code to methods and reduce usage of global variables for further separation in different files
    opened by SettRaziel 1
  • Feature/system settings

    Feature/system settings

    Add more comments and regions. Try to change system settings to match language that is shown. Set meridiem and tomorrow easier. Make bg_windtext code shorter. Create LICENSE.md

    opened by vierlijner 0
  • German Translation

    German Translation

    I am not at all good at coding, but i changed the standard values to be German incl. displaying the days and values in German.

    Had to insert these values:

    from datetime import datetime, timedelta
    import locale
    # Umstellung auf Deutsch:
    locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
    

    and made these changes too: ` weatherText.goto(weatherText_Description, weatherText_vertSpacing*3) weatherText.color("white") # day of the week weatherText.write("Tag", align="right", font=("Verdana", weatherText_DescriptionFontSize, "bold"))

        weatherText.goto(weatherText_Data, weatherText_vertSpacing*3)
        if not tomorrow_date:
            weatherText.write(datetime.today().strftime('%A'),
                              align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
        else:
            weatherText.write(tomorrow_date.strftime('%A'),
                              align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
    
        # hour of the day
        weatherText.goto(weatherText_Description, weatherText_vertSpacing*2)
        weatherText.write("Uhrzeit", align="right", font=("Verdana", weatherText_DescriptionFontSize, "bold"))
    
        weatherText.goto(weatherText_Data, weatherText_vertSpacing*2)
        weatherText.write(str(hour_touched) + " " + touched_meridiem,
                          align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
    
        # temperature
        weatherText.goto(weatherText_Description, weatherText_vertSpacing)
        weatherText.write("Temperatur", align="right", font=("Verdana", weatherText_DescriptionFontSize, "bold"))
    
        weatherText.goto(weatherText_Data, weatherText_vertSpacing)
        weatherText.write(str(round_half_up(data["hourly"][hours_ahead]["temp"], 1)) + degree_sign,
                          align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
    
        # Feels like
        weatherText.goto(weatherText_Description, 0)
        weatherText.write("Gefuehlt", align="right",
                          font=("Verdana", weatherText_DescriptionFontSize, "bold"))
    
        weatherText.goto(weatherText_Data, 0)
        weatherText.write(str(round_half_up(data["hourly"][hours_ahead]["feels_like"], 1)) + degree_sign,
                          align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
    
        # POP
        weatherText.goto(weatherText_Description, -weatherText_vertSpacing)
        weatherText.write("Regenchance", align="right", font=("Verdana", weatherText_DescriptionFontSize, "bold"))
    
        weatherText.goto(weatherText_Data, -weatherText_vertSpacing)
        weatherText.write(str(int(data["hourly"][hours_ahead]["pop"]*100)) + " %",
                          align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
    
        # Rain
        weatherText.goto(weatherText_Description, -weatherText_vertSpacing*2)
        weatherText.write("Regenmenge", align="right", font=("Verdana", weatherText_DescriptionFontSize, "bold"))
    
        weatherText.goto(weatherText_Data, -weatherText_vertSpacing*2)
        if 'rain' not in data["hourly"][hours_ahead]:
            weatherText.write("--", align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
        else:
            weatherText.write(str(data["hourly"][hours_ahead]["rain"]["1h"]) + " mm",
                              align="left", font=("Verdana", weatherText_DataFontSize, "bold"))
    
        # Wind
        weatherText.goto(weatherText_Description, -weatherText_vertSpacing*3)
        weatherText.write("Wind", align="right", font=("Verdana", weatherText_DescriptionFontSize, "bold"))
    

    weatherClock-German.zip `

    opened by Naglafarn 2
Owner
Kovin
I'm all about making it go beep-beep.
Kovin
Visual Weather api. Returns beautiful pictures with the current weather.

VWapi Visual Weather api. Returns beautiful pictures with the current weather. Installation: sudo apt update -y && sudo apt upgrade -y sudo apt instal

Hotaru 33 Nov 13, 2022
Design and build a wrapper for the Open Weather API current weather data service

Design and build a wrapper for the Open Weather API current weather data service that returns a city's temperature, with caching, also allowing for the temperature of the latest queried cities that are still validly cached to be retrieved.

Duan Rafael Ribeiro 1 Jun 27, 2022
Insane Weather Bot is here! Give suggestions, fork, and do much more to help us enhance the abilities of Insane Weather Bot.

Insane_Weather_Bot Insane Weather Bot is here! Give suggestions, fork, and do much more to help us enhance the abilities of Insane Weather Bot. Weathe

null 1 Jan 2, 2022
Weather Tracker, made with Python using Open Weather API

Weather Tracker Weather Tracker, made with Python using Open Weather API

Sahil Kumar 1 Feb 7, 2022
πŸ“– GitHub action schedular (cron) that posts a Hadith every hour on Twitter & Facebook.

Hadith Every Hour ?? A bot that posts a Hadith every hour on Twitter & Facebook (Every 3 hours for now to avoid spamming) Follow on Twitter @HadithEve

Ananto 13 Dec 14, 2022
Stop writing scripts to interact with your APIs. Call them as CLIs instead.

Zum Stop writing scripts to interact with your APIs. Call them as CLIs instead. Zum (German word roughly meaning "to the" or "to" depending on the con

Daniel Leal 84 Nov 17, 2022
Ditch Xiaomi's cloud and use a Telegram bot instead

Yi-Home_Telegram_Bot_Interface Ditch Xiaomi's cloud and use a Telegram bot instead Features Motion detection Works by monitoring a tmp file that is cr

Erli 10 Aug 18, 2022
A Telegram Music Tag Editor Bot that can remove almost all usernames in the music tags and add own username instead.

Music Tag Editor Bot A Telegram Music Tag Editor Bot that can remove almost all usernames in the music tags and add own username instead. It can also

null 14 Oct 21, 2022
Powerful Telegram userbot to turn your PROFILE PICTURE & LAST NAME into a real time clock & to change your BIO automatically.

DATE_TIME_USERBOT-TeLeTiPs Powerful Telegram userbot to turn your PROFILE PICTURE & LAST NAME into a real time clock & to change your BIO automaticall

null 53 Jan 5, 2023
A taskbar clock for secondary taskbars on Windows 11

ElevenClock A taskbar clock for secondary taskbars on Windows 11. When microsoft's engineers were creating Windows 11, they forgot to add a clock on t

MartΓ­ Climent 1.7k Jan 7, 2023
A bot can play all variants, but standard are abit weak, so if you need strongest you can change fsf instead of stockfish_14_Dev

MAINTAINERS Drdisrespect1 and drrespectable lichess-bot Engine communication code taken from https://github.com/ShailChoksi/lichess-bot by ShailChoksi

RPNS Nimsilu 1 Dec 12, 2021
a discord bot coded in Python which shows news based on the term searched by the user

Noah Miller v1.0 a discord bot coded in Python which shows news based on the term searched by the user Add the bot to your server About This is a disc

klevr 3 Nov 8, 2021
Shows VRML team stats of all players in your pubs

VRML Team Stat Searcher Displays Team Name, Team Rank (Worldwide), and tier of all the players in your pubs. GUI WIP: Username search works & pub name

Hamish 2 Dec 22, 2022
Image-Bot-Discord - This Is a discord bot that shows the specific image you search from Google

Advanced Discord.py Image Bot CREDITS Made by RLX and Mathiscool README by Milrato Installation Guide in .env Adjust the TOKEN python main.py to start

RLX 3 Jan 16, 2022
Discord bot that shows valorant your daily store by using the Ingame API

Valorant store checker - Discord Bot Discord bot that shows valorant your daily store by using the Ingame API. written using Python and the Pycord lib

STACIA 226 Jan 2, 2023
CryptoBar - A simple MenuBar app that shows the price of 3 cryptocurrencies

CryptoBar A very simple MenuBar app that shows the price of the following crypto

null 4 Jul 4, 2022
A simple script that will watch a stream for you and earn the channel points.

Credits Main idea: https://github.com/gottagofaster236/Twitch-Channel-Points-Miner Bet system (Selenium): https://github.com/ClementRoyer/TwitchAutoCo

Alessandro Maggio 1.1k Jan 8, 2023
Twitch Points Miner for multiple accounts with Discord logging

Twitch Points Miner for multiple accounts with Discord logging Creator of the Twitch Miner -- PLEASE NOTE THIS IS PROBABLY BANNABLE -- Made on python

null 8 Apr 27, 2022
Upvotes and karma for Discord: Heart πŸ’— or Crush πŸ’” a comment to give points to an user, or Star ⭐ it to add it to the Best Of!

?? Reto Reto is a community-oriented Discord bot, featuring a karma system, a way to reward the best comments, leaderboards, and so much more! React t

Erik Bianco Vera 3 May 7, 2022