garmin eink
This commit is contained in:
@@ -2,18 +2,18 @@
|
|||||||
title: "{{ replace .Name "-" " " | title }}"
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
date: {{ .Date }}
|
date: {{ .Date }}
|
||||||
draft: true
|
draft: true
|
||||||
image: "featured.jpg"
|
image: /{{ .File.Dir }}featured.png
|
||||||
summary: "A 1-2 sentence hook for the project box."
|
summary: "A 1-2 sentence hook for the project box."
|
||||||
tags: ["LXC", "Self-Hosting"]
|
tags: ["LXC", "Self-Hosting"]
|
||||||
---
|
---
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.post-content img {
|
section img, .content img, article img {
|
||||||
width: 50%;
|
max-width: 50% !important;
|
||||||
height: auto;
|
height: auto !important;
|
||||||
display: block;
|
display: block;
|
||||||
margin: 2rem auto;
|
margin: 2rem auto;
|
||||||
border-radius: 8px; /* Optional: makes them look a bit cleaner */
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 696 KiB |
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: "Garmin Eink"
|
||||||
|
date: 2026-02-20T15:42:06Z
|
||||||
|
draft: false
|
||||||
|
image: /projects/garmin-eink/featured.jpg
|
||||||
|
summary: "Using an Eink display with an ESP32 to track and motivate me for a virtual running challenge"
|
||||||
|
tags: ["ESP32", "Self-Hosting"]
|
||||||
|
---
|
||||||
|
|
||||||
|
<style>
|
||||||
|
section img, .content img, article img {
|
||||||
|
max-width: 50% !important;
|
||||||
|
height: auto !important;
|
||||||
|
display: block;
|
||||||
|
margin: 2rem auto;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
### 📋 Project Highlights
|
||||||
|
* **Goal:** Show my running progress on my desk
|
||||||
|
* **Tech Stack:** Python, ESP32, C#
|
||||||
|
* **Outcome:** A clean and simple setup that works reliably
|
||||||
|
|
||||||
|
For christmas my wife got me a virtual running challenge. I have to run 80km with a smart watch and at the end I get a nice Scooby-Doo medal. The issue is, now that everything requires its own app I forget to open it. My Garmin watch tracks all my running and syncs it to the running app but I wanted a way see my progress, clearly on my desk in the hope it will motivate me to get out and run more.
|
||||||
|
|
||||||
|
I had a waveshare 4.2" eink display in my drawer that ive been looking to find a good use for. A quick search only and I found a python wrapper that can pull data from Garmin connect and suddenly I had all the pieces to put this project together.
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 1 - Getting the Garmin Data
|
||||||
|
|
||||||
|
I found this brilliant tool online called [Python Garmin Connect](https://github.com/cyberjunky/python-garminconnect) that allows you to input your Garmin account details and pull specific data from their API. The tool was installed and setup up as a system service on my server and the results servered with a Caddy web server.
|
||||||
|
|
||||||
|
### Step 2 - Displaying data on the eink screen
|
||||||
|
|
||||||
|
In VS Code I installed platform IO and connected my ESP32. The code was written to connect to wifi, grab the data from the web server and display it to the eink. I gave it a title and a progress bar with percentage to clearly show how much I have completed. I also added a Last Updated time stamp and logic to put the ESP to deep sleep and only update each morning after my typical workout time slot.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
I later decided it made more sense to show todays date at the botton my the page, making it double as a basic daily calender.
|
||||||
|
|
||||||
|
One of the greatest challenges was my desicion to include an image. An easier option would have been to buy an ESP32 with a micro SD card slot to give me an easier way of storing the image. Wanted to make this work without buying anything new I decided to stream the image from my Caddy server directly ro the display. With some AI magic I had a bash script that would convert any image I gave it to a resized monochrome bitmap suitable for the basic eink display. The great thing about using this approach is it makes changing the image for a different future challenge much easier.
|
||||||
|
|
||||||
|
The case comes from [printables](https://www.printables.com/model/495094-waveshare-42-e-paper-stand/comments) and felt like the cleanest option.
|
||||||
|
|
||||||
|
### 🏁 Summary & Lessons Learned
|
||||||
|
Wrap up your project here. What would you do differently next time? This provides that "closing" feel for a future employer.
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Smart Home"
|
|
||||||
date: 2022-12-09T19:53:33+05:30
|
|
||||||
draft: false
|
|
||||||
author: "Ash Marlow"
|
|
||||||
tags:
|
|
||||||
- Smart Home
|
|
||||||
- Home Assistant
|
|
||||||
- Zigbee
|
|
||||||
image: /img/projects/smart-home/medal.webp
|
|
||||||
description: "Some stuff about my smart home!"
|
|
||||||
summary: "A brief overview of my Proxmox-based home automation lab."
|
|
||||||
---
|
|
||||||
|
|
||||||
This is the short, punchy sentence that will show up in the box on the projects page.
|
|
||||||
It shouldn't be more than a line or two.
|
|
||||||
|
|
||||||
This part of the text will ONLY show up once someone clicks into the
|
|
||||||
actual project page. You can put your full deep dive here.
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.post-content img {
|
|
||||||
max-width: 500px;
|
|
||||||
height: auto;
|
|
||||||
display: block;
|
|
||||||
margin: 0 auto; /* This centers it */
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
this is my amazing smart home!
|
|
||||||
|
|
||||||
test image
|
|
||||||

|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 MiB |
Reference in New Issue
Block a user