Is there are any ready solutions for simple battery powered display, for simple information

Hello,

Before Home Assistant I was using simple display.


It can display only time, temperature+humidity inside and outside (433 MHz sensor). Best thing about it — it was sitting on shelf for years without need to change batteries. (I don’t have access to electricity where this display lives)

Now I start using Home Assistant and can’t find any replacement.

  • Current display can receive only information for lower-right part, so 433 MHz radio dongle will not help.
  • Using something like tablet — overkill by functionality, and batteries will die every other day.
  • Make something DIY (e.g. with e-ink) — I am software guy, but struggle with hardware.

Is there any ready to use solution, which will provide battery-powered display which can receive information from Home Assistant (probably by Zigbee or BLE)

1 Like

One thing to consider is an ePaper display as they hold their display content without power. I don’t know of a ready made solution and thought would have to be given as to how to get the content onto the display. There is a thread here…

Have you seen this solution based on a kindle?

2 Likes

Thanks! Already found Kindle 4 for sale…
But looks like I will need to jailbrake it, and jailbrake without 24/7 airplane mode will work only on specific versions of Kindle OS. If device which is selling have incorrect OS version, it will require downgrade. And downgrade will require soldering and connecting to serial port… In this case it will be easier to make solution from scratch, without using Kindle

Thanks! Will look into this solutions. However I did not notice at first sight step-by-step instructions for guy who dose not know anything about hardware DIY projects. But I will reread this tread again more attentively.

Yeah, I about them it in topic:

downgrading a Kindle Paperwhite 1 wasn’t too hard. You just drag/drop the firmware over to the kindle internal storage while connected over USB and then perform the downgrade on the device. After, you can jailbreak it and then upgrade to the “last” system version. Coming from the iPhone jailbreak scene, it took me a bit to realize that I could update the OS without losing the “jailbreak” capabilities. A lot more information is on the MobileRead Forums.

That, combined with @sibbl’s screensaver addon create a pretty capable ePaper display device with a battery that lasts over a month.

Amazon doesn’t really care about these kindles anymore, so you can do a lot with them and not worry about bricking them. Woot ran a $20 sale not too long ago. Keep an eye out on Slickdeals.net for the alert!

1 Like

I also made a ePaper device with ESPHome (& esp8266 microcontroller). I have the Oracle CodeCard in an all-in-one package, but you could also just wire up your own ePaper display from eBay to an esp8266 or buy a badgy

More details here:

My only critique of the ESPHome ePaper experience is that it takes a few seconds to “update” the display and it goes solid black and solid white and then draws the updated text. One way around this is remove the clock, so the information doesn’t get old as quick… ¯\_(ツ)_/¯

1 Like

So, I tried to make e-ink display with ESPhome.
The problem is: if I don’t use deep_sleep, battery will die in one day. But if I use deep sleep, system is not receiving updates from Home Assistant, because they happen when ESP32 sleeps.

Do you have any advice on that?

Example code with deep_sleep:

esphome:
  name: display_eink
  platform: ESP32
  board: esp32dev

wifi:
  ssid: "COVID-19"
  password: "---"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Display Eink Fallback Hotspot"
    password: "-"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "-"

ota:
  password: "-"
  
web_server:
  port: 80

deep_sleep:
  run_duration: 10s
  sleep_duration: 10min

time:
  - platform: homeassistant
    id: homeassistant_time

sensor:
  - platform: homeassistant
    name: "Outside Temperature"
    id: outside_temperature
    entity_id: sensor.outside_temperature
    internal: true
  - platform: homeassistant
    name: "Living Room Temperature"
    id: living_room_temperature
    entity_id: sensor.living_room_temperature
    internal: true
  - platform: homeassistant
    name: "Living Room Humidity"
    id: living_room_humidity
    entity_id: sensor.living_room_humidity
    internal: true

  - platform: homeassistant
    name: "Kitchen Temperature"
    id: kitchen_temperature
    entity_id: sensor.kitchen_temperature
    internal: true
  - platform: homeassistant
    name: "Kitchen Humidity"
    id: kitchen_humidity
    entity_id: sensor.kitchen_humidity
    internal: true

  - platform: homeassistant
    name: "Bedroom Temperature"
    id: bedroom_temperature
    entity_id: sensor.bedroom_temperature
    internal: true
  - platform: homeassistant
    name: "Bedroom Humidity"
    id: bedroom_humidity
    entity_id: sensor.bedroom_humidity
    internal: true

  - platform: homeassistant
    name: "TEST"
    id: test_test
    entity_id: input_number.living_room_amount_of_lights
    force_update: true
    internal: true
    
font:
  - file: "OpenSans-SemiBold.ttf"
    id: main_font
    size: 35  
  - file: "OpenSans-SemiBold.ttf"
    id: outside_font
    size: 70
  - file: "OpenSans-SemiBold.ttf"
    id: humidity_font
    size: 40    
  - file: "OpenSans-SemiBold.ttf"
    id: big_font
    size: 50 
  - file: "OpenSans-SemiBold.ttf"
    id: text_font
    size: 30  
  - file: "OpenSans-SemiBold.ttf"
    id: date_font
    size: 15  
    
spi:
  clk_pin: 13
  mosi_pin: 14

display:
  - platform: waveshare_epaper
    id: main_display
    cs_pin: 15
    busy_pin: 25
    reset_pin: 26
    dc_pin: 27
    model: 4.20in
    #model: 7.50inV2
    #update_interval: 10min
    update_interval: 7s
    #update_interval: 20s
    rotation: 270°
    lambda: |-
      it.printf(300, -20, id(outside_font), TextAlign::TOP_RIGHT,  "%.1f°C", id(outside_temperature).state);
      
      it.strftime(0, 0, id(date_font), "%Y-%m-%d", id(homeassistant_time).now());
      it.strftime(0, 15, id(date_font), "%A", id(homeassistant_time).now());
      
      it.line(0, 74, 300, 74);
      it.line(0, 75, 300, 75);
      it.line(0, 76, 300, 76);
      it.line(0, 77, 300, 77);

      it.print(0, 170, id(text_font), TextAlign::BOTTOM_LEFT, "Living R.");
      it.printf(300, 80, id(big_font), TextAlign::TOP_RIGHT, "%.1f°C", id(living_room_temperature).state);
      it.printf(300, 125, id(humidity_font), TextAlign::TOP_RIGHT, "%.0f%%", id(living_room_humidity).state);
      
      it.line(0, 170, 300, 170);

      it.print(0, 260, id(text_font), TextAlign::BOTTOM_LEFT,  "Kitchen");
      it.printf(300, 170, id(big_font), TextAlign::TOP_RIGHT, "%.1f°C", id(kitchen_temperature).state);
      it.printf(300, 215, id(humidity_font), TextAlign::TOP_RIGHT, "%.0f%%", id(kitchen_humidity).state);
      
      it.line(0, 260, 300, 260);

      it.print(0, 350, id(text_font), TextAlign::BOTTOM_LEFT, "Bedroom");
      it.printf(300, 260, id(big_font), TextAlign::TOP_RIGHT, "%.1f°C", id(bedroom_temperature).state);
      it.printf(300, 305, id(humidity_font), TextAlign::TOP_RIGHT, "%.0f%%", id(bedroom_humidity).state);
      
      it.line(0, 350, 300, 350);

      it.printf(100, 400, id(humidity_font), TextAlign::BOTTOM_LEFT, "%.1f", id(test_test).state);
      

Just was looking for a similar solution and found the M5paper Wifi Display.
Article in german tech magazine: M5Paper: WiFi-Display mit ESP32 und E Ink-Technologie - Notebookcheck.com News
Shop: M5Paper ESP32 Development Kit (960X540, 4.7" eInk display, 235 ppi) | m5stack-store

Before spending some bucks it would be interesting if this will work within HA?

Any luck resolving this?

The problem was that I didn’t give ESP enough time to fetch all changes. Just made it work a little bit longer between sleeps, and everything started to work as expected.