Skip to content

Instantly share code, notes, and snippets.

@rmu75
Forked from Nizzle/shabadge.yaml
Last active October 11, 2025 16:54
Show Gist options
  • Save rmu75/819640248189676b8af0c69075a3dbb5 to your computer and use it in GitHub Desktop.
Save rmu75/819640248189676b8af0c69075a3dbb5 to your computer and use it in GitHub Desktop.
ESPhome config for SHA2017 badge (https://wiki.sha2017.org/w/Projects:Badge)
esphome:
name: shabadge
esp32:
board: esp32-pro
logger:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_pass
ota:
password: !secret ota_pass
api:
id: hassapi
password: !secret api_pass
i2c:
sda: 26
scl: 27
scan: True
mpr121:
id: mpr121_component
address: 0x5A
touch_debounce: 1
release_debounce: 1
touch_threshold: 12
release_threshold: 6
binary_sensor:
- platform: mpr121
id: touch_buttonA
channel: 0
name: "Touch Button A"
- platform: mpr121
id: touch_buttonB
channel: 1
name: "Touch Button B"
- platform: mpr121
id: touch_buttonStart
channel: 2
name: "Touch Button Start"
- platform: mpr121
id: touch_buttonSelect
channel: 3
name: "Touch Button Select"
- platform: mpr121
id: touch_buttonDown
channel: 4
name: "Touch Button Down"
- platform: mpr121
id: touch_buttonRight
channel: 5
name: "Touch Button Right"
- platform: mpr121
id: touch_buttonUp
channel: 6
name: "Touch Button Up"
- platform: mpr121
id: touch_buttonLeft
channel: 7
name: "Touch Button Left"
- platform: mpr121
id: charging_status
channel: 9
name: "Charging Status"
- platform: gpio
name: "Flash Button"
pin: 0
filters:
- invert:
sensor:
- platform: adc
pin: 34
attenuation: 6db
filters:
- multiply: 2.91
name: "USB Voltage"
update_interval: 20s
accuracy_decimals: 1
- platform: adc
pin: 35
attenuation: 6db
#attenuation: 2.5db
filters:
- multiply: 2.91
#- multiply: 1.95
name: "Battery Voltage"
update_interval: 20s
accuracy_decimals: 1
- platform: uptime
name: Uptime Sensor
id: uptime_sensor
update_interval: 1s
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
spi:
clk_pin: 18
mosi_pin: 5
text_sensor:
- platform: version
id: ver
hide_timestamp: true
- platform: template
name: Uptime Human Readable
id: uptime_human
icon: mdi:clock-start
display:
- platform: waveshare_epaper
cs_pin: 19
dc_pin: 21
busy_pin: 22
reset_pin: 23
model: 2.90in-dke
#Partial not working yet so full only
full_update_every: 1
update_interval: 5s
lambda: |-
it.printf(0, 0, id(font40), "%s", id(ver).state.c_str());
it.printf(0, 40, id(font40), "%s", id(uptime_human).state.c_str());
rotation: 270
external_components:
- source:
type: git
url: https://github.com/Nizzle/esphome
ref: dke2.9-epaper
components: [ waveshare_epaper ]
font:
- file: "Fonts/Comfortaa-Regular.ttf"
id: font40
size: 40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment