[Feature Request] SSD1306 OLED Display Support in V3
lukas-holzner opened this issue · comments
Category
- [ x ] Hardware / PCB
- [ x ] Software / ESPHome
Whats your idea?
I played around with these small and inexpensive OLED Displays (https://esphome.io/components/display/ssd1306) and thought they might be a great addition to AIOSense. I think it would be great to see some of the values of the sensors directly on the AIO Sense without having to set up extra devices with screens.
Some things you could display on the display
- Temperature, Humidity, Pressure,
- Voice Assistant Answers for deaf people
- Notifications from Homeassistant
- Weather
- RSS Feeds (Scrolling text)
- Occupancy status
- House Alarm status (Armed or not armed)
Here is a Picture of the screen showing Sensor Values from ESP Home
I know space is tight on the board. Maybe we can squeeze it onto the IO extensions and release an additional case Verison that can handle the screen on the bottom. That way we don't have to make the PCB bigger.
This is the test code for the display i used:
font:
# gfonts://family[@weight]
- file: "gfonts://Roboto"
id: roboto
size: 12
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
reset_pin: D0
address: 0x3C
lambda: |-
// %% - literal % sign
it.printf(0, 0, id(roboto), "Temperature: %.1f°C", id(temperature).state);
it.printf(0, 15, id(roboto), "Humidity: %.1f%%", id(humidity).state);
it.printf(0, 30, id(roboto), "Pressure: %.1fhPa", id(pressure).state);
The Sensor code also needs to be modified to have an id
Example for the BME280
sensor:
- platform: bme280
id: bme280_sensor
address: "${bmex80_address}"
update_interval: "${bmex80_update_interval}"
temperature:
name: "Temperature"
id: temperature
filters:
- offset: ${temperature_offset}
- lambda: "return x + id(temperature_offset_ui).state;"
humidity:
name: "Humidity"
id: humidity
filters:
- offset: ${humidity_offset}
- lambda: "return x + id(humidity_offset_ui).state;"
pressure:
name: "Pressure"
id: pressure
filters:
- offset: ${pressure_offset}
- lambda: "return x + id(pressure_offset_ui).state;"