Skip to content

e-ink weather forecast by using ESPhome with Home assistant

Notifications You must be signed in to change notification settings

xangin/eink-weather-board

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESPHome E-ink Weather board

Buy Me A Coffee

感謝Madelena提供本專案硬體架構與程式碼的發想

Thanks Madelena for inspired this project ideas and source code of weather data

本專案為直式的E-ink天氣預報資訊板放在玄關處,在指定的時段內每格固定,會自動更新顯示內容

另有橫式除了天氣資訊外,還能將個房間的溫濕度等資訊顯示在E-ink上: E-ink Dashboard

直式天氣資訊板顯示內容包括:

  • 今天日期
  • 當下天氣預報
  • 未來四小時天氣預報

以下將說明硬體架構、ESPHome yaml code與Home assistant yaml code

Hardware 硬體架構

Installation 安裝方式

  1. /fonts資料夾內的檔案及e-ink-weather-board.yaml放到HA/config/esphome的資料夾內
  2. eink_dashboard_sensor.yaml放到HA/config/packages內
  3. /images內的background.png放到HA/config/esphome/images的資料夾內
  4. e-ink-weather-board.yamleink_dashboard_sensor.yaml的內容修改成自己HA裡的實體ID,解說在下方
  5. HA檢查YAML code有無錯誤
    1. 開發工具>YAML>檢查設定內容,確認左下角通知沒有出現錯誤
    2. YAML 設定新載入中>模板實體
    3. 開發工具>狀態>檢查sensor.eink_sensors有確實出現,以及內容是自己想要的
  6. 在ESPhome將e-ink-weather-board.yaml燒錄至ESP32模組
  7. 完成!

ESPHome yaml 說明

在HA內手動更新面板

button:
  - platform: template
    name: '${devicename} Refresh'
    icon: 'mdi:update'
    on_press:
      then:
        - component.update: 'my_display'
    internal: false

將HA的時間帶進ESPHome

time:
  - platform: homeassistant
    id: ha_time

面板更新時機

請注意,此面板長時間通電會導致越刷越模糊,黑底會變成不是純黑,建議只有刷新時才將ESP32通電,或是刷新完進入Deep sleep以避免此情形發生

因為預設螢幕不會自動更新update_interval: never,是由HA內建自動化根據想要的間隔時間來按下更新面板按鈕

自動化流程如下:

1. 每隔多久時間觸發一次自動化:

  trigger:
    - platform: time_pattern     
      # /2 表示每2個小時,要每小時就寫 /1
      hours: "/2" 
      # 1 表示在該小時的1分時執行,如06:01、08:01、10:01
      minutes: 1

2. 條件:

在HA設定>裝置與服務>助手>新增助手>"每日定時感測器">設定想要更新的時段,名稱填eink_refresh_time

  condition:
    #在可更新的時段內才更新
    - condition: state
      entity_id: binary_sensor.eink_refresh_time
      state: 'on'

3. 動作:

   action:
   #按下更新螢幕的按鈕,記得更換為自己的實體ID
     - service: button.press
       data:
         entity_id: button.eink_weather_board_screen_refresh

自動化設定完記得至開發工具>YAML>檢查設定

確定都對後在YAML 設定新載入中按下自動化重新載入自動化才會生效

HA template sensor 說明

要先確認在已經將以下程式碼寫在configuration.yaml內,這樣eink_dashboard_sensor_new.yaml檔案放進去才會生效

在HA 2023.12之後,天氣預報改由呼叫service來取得未來的資訊,所以利用此template sensor將想要的資料格式化後再丟給天氣板顯示

由於預設是顯示取得每小時的預報,請先確認目前用的天氣整合有支援小時預報 (內建的met.no有)

以下YAML表示每小時的1分將會呼叫取得"每小時"的天氣預報服務,同時更新內容在sensor.eink_sensors裡面

要注意更新面板的時機要在更新天氣預報之後,不然都會看到前一個小時的預報

  - trigger:
      - platform: time_pattern     
        hours: "/1" 
        minutes: 1
    action:
      - service: weather.get_forecasts
        target:
          entity_id: weather.myhome #replace with your weather forecast entity id
        data:
          type: hourly
        response_variable: hourly  

會使用天氣預報回傳結果的第1組當作這小時的預報,並顯示第2~5組做未來每小時的預報

attributes是將要使用的資訊從天氣預報拆分成出來,分別是:

  • 這小時的氣溫: today_temperature
  • 這小時的濕度: today_humidity
  • 這小時的降雨機率: today_precipitation
  • 未來四小時的時間: forecast_weekday_1, forecast_weekday_2, forecast_weekday_3, forecast_weekday_4
  • 未來四小時的天氣圖示: forecast_condition_1, forecast_condition_2, forecast_condition_3, forecast_condition_4
  • 未來四小時的氣溫: forecast_temperature_1, forecast_temperature_2, forecast_temperature_3, forecast_temperature_4

References

About

e-ink weather forecast by using ESPhome with Home assistant

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published