Giter Club home page Giter Club logo

day-meter's Introduction

Day Meter 🚥

Day Meter is a project created to provide a non-distracting, but unavoidable, view of your day using a simple addressable LED bar graph and ESP32 microcontroller running CircuitPython.

  • Non-distracting
  • Unavoidable
  • Self-contained no need for a server or connection to a computer for normal operation
  • Easy to understand at a glance
  • Gives a day view of your calendar
  • Counts down 10min to next meeting
  • Tracks remaining time in the current meeting

This repository contains the CircuitPython code that runs on the microcontroller.

Hardware Requirements

  1. ESP32 or ESP32-S3 board with 2mb PSRAM and (recommended) native USB support.
    1. Adafruit QT Py ESP32-S3 with 2mb PSRAM will work best and is strongly recommended
    2. Adafruit QT Py ESP32 Pico will also work, but doesn't have native USB support. This will make development and configuration cumbersome, since it has to be done over serial.
  2. Adafruit Bi-Color (Red/Green) 24-Bar Bargraph w/I2C Backpack Kit.
    1. This is currently the only display supported.
    2. Soldering required
    3. I'm hoping to see other displays supported if a community develops around this.
  3. STEMMA QT/Qwiic cable to connect the microcontroller to the display.

All in all, the parts are around $24 (USD), at the time of this commit.

Development

To develop on Day Meter, you will need python and pip installed.

  1. Clone this repository
  2. Install circup for CircuitPython library dependency management
    pip install circup
    
  3. Install dependent libraries to the /lib direcotry
    circup --path . install
    
  4. Copy all files and directories from the root of the repo to the root of the CIRCUITPY drive

day-meter's People

Contributors

akoebbe avatar

Watchers

 avatar

day-meter's Issues

Remove adafruit.io dependency for getting date and time

Currently, day-meter needs an API key for Adafruit IO to get a date and time in the user's timezone. Making users create an extra account and find the API key just for date and time sync is way too much friction. There are other options that should be able to handle that without any fuss. Adafruit.io does have a public API for time, but it's only for UTC.

Current options

  1. Use NTP. This would be a very convenient option and low overhead, but NTP only delivers UTC time, and we need to account for DST/locale things. A CircuitPython library that adjusts for timezones would be very large and might max out the memory, which we're already pushing. Maybe there's an option I don't know about
  2. Additional hardware solution like WWVB or GPS. These are either bulky or relatively expensive, and I don't want the hardware to be more complicated than it needs to be.
  3. Use a service like TimeAPI.io or World Time API which does not require an API key to use. This seems like the best solution.

I'm leaning toward World Time API.

Represent upcoming event while different event is happening

If I'm in a meeting and the display shows the red countdown, and either there is an overlap or adjacent event, I want to see both meters represented.

Possible solution is to show both side-by-side with 1/2 granularity:
🟩🟩🟩🟩🟩🟩🟩⬛️⬛️⬛️⬛️⬛️|⬛️⬛️⬛️⬛️⬛️🟥🟥🟥🟥🟥🟥🟥

Abstract out the calendar fetching

Abstract out the calendar event fetching and create an interface for different calendar providers. Convert the Google Calendar provider to the interface.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.