BingoDinkus / weather-dashboard

A Python project for the Raspberry Pi that pushes weather forecast information and upcoming calendar events to an image or screen.
BSD 3-Clause "New" or "Revised" License
10 stars 3 forks source link

Modularity #8

Open cliffburdick opened 2 weeks ago

cliffburdick commented 2 weeks ago

Hi, first off, this project looks great and is something I was considering doing. I have the tri-color 12.48" from waveshare. I noticed when looking at the code that it's hard-coded for your 7" model. Do you think it can be made flexible to allow drawing from different devices?

I would be happy to add support for this, but given the license is gpl I was shying away from contributing. My end goal would be to allow a customizable grid for users to choose what they want. For instance, I want 7 days of events and a to-do list, but not more than 2 days of weather. If you're willing to change the license I'm happy to contribute.

BingoDinkus commented 2 weeks ago

Hey Cliff, I recently added a display controller with the intent of making it easier to support a variety of screens, but it has a has a long way to go to really accomplish that. I'm also working on developing a grid/layout class, with the goal of making allowing easy configure the items on the screen through a config file.

I'm pretty new to open source, is there a license you'd recommend?

cliffburdick commented 2 weeks ago

Hi @BingoDinkus, GPL is considered a copy-left license, and is typically avoided by a lot of people and companies because it has strict rules regarding what you can and can't do with it. It's useful when you want to release OSS and not have other people modifying it. I would recommend either Apache V2, MIT, or BSDv3, which are the most common on github.

For the grid idea I think part of the rendering needs to be moved into the device's class, and each of the draw functions would have to exist in there. For example, on a tri-color e-ink screen you may want the weather icon to be red and everything else black. If you can think of a better way that would be great. I was thinking the user could define something like a 3x4 grid and choose pre-defined widgets to go into each of those. Eventually having push notifications would be useful too where if the calendar is updated the screen would refresh immediately.

Let me know what you need help on. I have the 12.48" waveshare and can develop and test on it.

BingoDinkus commented 2 weeks ago

Hey @cliffburdick, thanks for the info. Things have been pretty busy lately, but I'll take a look at the licenses and see about changing things over.

My idea for the grid was more about making it quick and easy to experiment with different layouts, ideally something as easy as putting together an HTML table. I hadn't thought about the widget idea, that sounds pretty cool, but also really complex (we'd have to account for different dpi's and scale things to look right).

I like the idea of push notifications. That's not something I've ever looked into. I'm sure you can tell my project is pretty basic, haha.

cliffburdick commented 2 weeks ago

Hi @BingoDinkus, I'm actually trying to take it for a spin right now. I modified the code to work on my 12.48" waveshare. I'll let you know how it goes and push a PR when it works.