Skip to content

Instantly share code, notes, and snippets.

@Nizzle
Last active April 26, 2024 08:47
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nizzle/6971c2cc066e6412740487bcc3b2c62a to your computer and use it in GitHub Desktop.
Save Nizzle/6971c2cc066e6412740487bcc3b2c62a 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
@morris2009
Copy link

Very nice to see someone create a use for this badge. I just found mine in old shoebox and wanted to try the above, but can't get the newer versions of ESPhome to build it with the config above.
Did you manage to have the latest ESPhome version running on it?

@Nizzle
Copy link
Author

Nizzle commented Apr 20, 2024 via email

@polyfloyd
Copy link

Hi, I'm still waiting for someone from the esphome project to review the code. But in the meantime you could use the rebased patch in my fork

@polyfloyd
Copy link

Oki, support for the SHA badge display is now upstream

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment