Last active
October 11, 2025 16:54
-
-
Save Nizzle/6971c2cc066e6412740487bcc3b2c62a to your computer and use it in GitHub Desktop.
ESPhome config for SHA2017 badge (https://wiki.sha2017.org/w/Projects:Badge)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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
@polyfloyd
** Edit: have no been able to get the LED's working (config below)
Haven't been able to get the LEDs working yet, unfortunately.
But for reference to add to @Nizzle his git repository, you can use the buzzer if you ever need to. You'd have to give up the is_charging sensor though (channel 9 on the mpr121), because in esphome the mpr121 touch sensors can only be enabled as a range. And the power to the buzzer is channel 8 which i used as GPIO output, similar as channel 10 (apparantly for enabling the power to the LEDstrip).
You might be able to directly access the GPIO in a switch section, or a button section, but I am not that good in writing yaml. In this way you can use automations in home assistant to trigger the buzzer, or even to trigger it when a sensor is too high, via lambda's independent of home assistant.
the following is the code i used for the buzzer
And this is the correct config for the 6 LED's. i guess there is still something to gain by setting up each led as a separate partition to gain full advantage.