Schluggi / AIOsense

ESPHome based all-in-one sensor

Home Page:https://aiosense.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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
IMG_20231115_121508

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.
IMG_20231115_151205

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;"