Git Product home page Git Product logo

esphome-weatherman-dashboard's Introduction

Weatherman Dashboard for ESPHome

I have multiple dashboards around my apartment and they display different information depending on the context. Since this is placed near the front door, it contains concise information for what's outside with a homey style to match the rest of the wall.

Context

This is part of the ecosystem for my Home Assistant configuration.

Hardware

Closeup

Software

  • ESPHome
  • Home Assistant running on a Raspberry Pi as a remote server

Installation

  1. No soldering is required since the e-Paper driver board was integrated into the ESP32 board. All I needed to do was to connect the e-Paper screen to the driver board, and then connect the driver board to the USB socket on my light switch.
  2. Copy /fonts, /images, and weatherman.yaml to your /.config/esphome folder.
  3. Integrate the content of sensor.yaml to your Home Assistant template configuration YAML file.
  4. Install HA-GTFS-RT to your Home Assistant using HACS.
  5. Once booted, flash weatherman.yaml the ESP32 board using ESPHome.
  6. Enjoy!

Features

Intelligent Screen Refreshing

To reduce the frequency of screen refreshes and to prolong the life of the e-ink screen, the screen will now only refresh when motion (or any template criteria) sensor binary_sensor.weatherman_motion_detected is on. I have it set up so that it wakes up when there are any motions from my sensors in the living room.

Last Refreshed Timestamp

The last update timestamp can be displayed on the screen itself. No more wondering when the screen was last refreshed!

Remote Control and Monitoring

The screen can now be controlled and monitored remotely. The screen can be either refreshed manually, restarted, or safely shut down through buttons in your HA. The number of screen refreshes in its lifetime as well as its last update timestamp and wifi signal strength can also be monitored.

List of available sensors and buttons Refresh Screen Count example

Other changes:

  • Negative temperatures can now be displayed. Perfect for winter.
  • A nice loading screen is shown before any data is received.
  • Titles are now in text rather than bitmaps. Much easier to change it to anything you like.

Data Sources

References

Here are some other repos that I referenced from:

Weatherman is a reference to the song Blame it on the Weatherman by B*Witched. If you're late to your date because of this, blame it on the Weatherman.

esphome-weatherman-dashboard's People

Contributors

chunkysteveo avatar danito avatar madelena avatar paviro avatar pehses avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esphome-weatherman-dashboard's Issues

Waveshare Screen Degradation Issues

Currently the screen updates every minute because of the train arrival time countdown, which is bad for its lifespan. I'm already seeing artifacts on the screen from updating too many times.

I need to make the update_interval more dynamic by:

  • Turn on screen only when someone is in the room, using a motion sensor, and/or
  • Update the screen less often at night when trains are slower, and/or
  • Use opposite color scheme or blank the screen once in a while.

References:
https://community.home-assistant.io/t/dynamically-change-update-interval/108074/8

Breaking change in 2024.4.0

Weather entities do not have a forecast attribute anymore. Instead, you need to use the service get_forecasts. This breaks part of the code in sensor.yaml.

Add screen refresh counter

Would be interesting to see how many times the screen gets refreshed per day and try to figure out how long the screen will last.

Will not generate C++ files or compile

When I try to run the weatherman.yaml the ESPhome will validate and stop at "INFO Generating C++ source..."

It does not even begin to compile and there are no erros.

Too many weather icons in flash

I think Home Assistant doesn't support that many weather conditions.

Looking at the HA Core translations in lokalise (search for strings under key component::weather::entity_component::_::state), I see strings only for the ones below. Thus, I think it's useless to keep in flash so many icons which would be never used.

Instead only these would be required:

        "\U000F0594", # clear-night
        "\U000F0590", # cloudy
        "\U000F0F2F", # exceptional
        "\U000F0591", # fog
        "\U000F0592", # hail
        "\U000F0593", # lightning
        "\U000F067E", # lightning-rainy
        "\U000F0595", # partlycloudy
        "\U000F0596", # pouring
        "\U000F0597", # rainy
        "\U000F0598", # snowy
        "\U000F067F", # snowy-rainy
        "\U000F0599", # sunny
        "\U000F059D", # windy
        "\U000F059E", # windy-variant

Affected lines in the config:
https://github.com/Madelena/esphome-weatherman-dashboard/blob/c461b16ad41afa46ebf356ff16016d88ffecfb09/weatherman.yaml#L451C1-L480C43

Great project - why the PNG titles?

Love the project, looks great in the frame. I have a question though - why the use of PNG images for the text titles, and not using written text in the ESPHome display lambda?

Duplicate key "else"

While validating I get this with your weatherman.yaml

INFO Reading configuration /config/esphome/weatherman.yaml...
ERROR Error while reading config: Invalid YAML syntax:

Duplicate key "else"
  in "/config/esphome/e-ink-display.yaml", line 61, column 15:
                  else:
                  ^
NOTE: Previous declaration here:
  in "/config/esphome/e-ink-display.yaml", line 59, column 15:
                  else:
                  ^

Canarsie Due At time stamp showing Manhattan Due At

Hi @Madelena,

I believe that one of the "due at" to Canarsie on the weatherman.yaml code could be capturing the "due at" to Manhattan.

Line 331 reads:

it.printf(330, 608, id(font_small_book), color_white, TextAlign::TOP_CENTER, "%s", id(train_manhattan_due_at).state.c_str());

however, I believe it should instead read as:

it.printf(330, 608, id(font_small_book), color_white, TextAlign::TOP_CENTER, "%s", id(train_canarsie_due_at).state.c_str());

By the way, great project. Thanks a lot for it. I just build mine and was able to adapt to use with NextBus (Umo) integration from Home Assistant.

Battery support

Amazing job, love this idea and want to get started myself. Instead of a dedicated cable, I would like to use a battery. Would that be as easy as connecting a powerbank to the ESP chip? Any idea what the battery life would be?

Missing '-' glyph for negative temperatures.

Simple change needed to weatherman.yaml - add '-' to the array of glyphs included with font_large_bold.

I feel like this should be somewhat trivial, but for the sake of making things more convenient for future users of this, I thought I'd mention it.

Inverting White to Black Shows No Display

I bought the same components as listed in the README and wanted black text/images on white background. I inverted everything and now I can see the black text painted but then it almost immediately gets replaced to where you can only see the ghosted image of it.

I'm not sure if you experienced any situation like this but I didn't know if it was a mis-mapping on the pins or something else was wrong but I can clearly see the correct information painted but if you use color_white instead of color_black and vice/versa, nothing gets displayed.

Night Symbols are not always displayed correctly

Hi!

I built an own display based on this project. But during the day, weather symbols for future night forecasts were displayed as day symbols. I therefore tried another code for the sensor that works:

{% if ((cond3_time > next_setting and cond3_time < next_rising) or (cond3_time < next_setting and cond3_time < next_rising and next_rising < next_setting)) %}

Maybe you'd like to use it as well.

Best :)

Jorin

Cheaper alternative parts

Any idea whether the tri-color 7.5" screen from Waveshare would work? It's $59.95 which is about $9 cheaper on Amazon than the one you have linked. The difference is that it doesn't have the Raspberry Pi hat that I assume you wouldn't need since you're driving it with an ESP32.
https://www.amazon.com/dp/B076BVFHDV

There's also an even cheaper (but lower resolution) option for $53.99. I would guess the resolution difference wouldn't matter with this use case. Again not 100% sure about compatibility, but it's the same brand:
https://www.amazon.com/dp/B075R69T93

Also this driver which I think is the exact same part is a few bucks cheaper:
https://www.amazon.com/dp/B07RM1BBVF

I would have just PR'ed your readme but I can't create your affiliate links and I'm not 100% certain that the screens are drop-in replacements.

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.