Download your data from Oura

The OuraRing is a sleep and activity tracker in the form factor of a ring.
I have a black one since end of 2020 and I am very happy with the insights about my sleep.

At the end of October 2021 Oura announced a new OuraRing (Gen3) - but this time with a subscription requirement.
The old rings have no monthly fee (all Gen1+Gen2 rings won't require a subscription in the future).
Every old customer gets a free lifetime subscription, but is forced to buy a new Gen3 ring until 2021-11-09.
I don't want to be forced into replacing a perfectly working device. So no thanks!

I cannot trust Oura anymore after this move so I decided it is time to write a downloader for the past days I used my Oura ring.
My plan is to use the ring until it breaks and than search for an alternative. But no OuraRing for sure.

Thanks to python-ouraring the downloader was easy to bootstrap.
My code downloads the daily data for sleep, activity, readiness and ideal bedtime.
This data is written into a sqlite database for future analysis.

The repo with the downloader: https://github.com/mfa/oura-to-sqlite.
The only thing needed is a personal access token from Oura.

Reparing AKG 702 cable break

My beloved AKG 702 went silent on the right side. This is a known problem for quite some time now. AKG hopefully will replace the wires on newer headphones. My headphones are only about a year old so I could probably get it repaired but after watching a repair video I had to do this small fix myself.

broken_wire

I soldered the white cable back into the correct place and taped the wire a bit.
But I will probably fix this issue again until removing the wire as shown in the videos below here:

and another one:

Challenge Alias for Letsencrypt

To update my letsencrypt certificates I migrated most of them from http(s)-based update to DNS-based.
The best tool for this is imho acme.sh.

But be careful: They changed their default to ZeroSSL.
So first set the default to letsencrypt:
acme.sh --set-default-ca --server letsencrypt

Now to the best feature with DNS challenge update: Update via API with one DNS provider for another DNS provider.

For example: I use the Hetzner DNS API-tokens with acme.sh. I can generate a new token for every domain.
But I have domains on INWX. Here I have to use username and password to use acme.sh -- and this feels wrong - so I don't do this.
I added for my domain at INWX this _acme-challenge.meinsack.click. CNAME _acme-challenge.meinsack.click.madflex.de.
And now I can use the Hetzner API to update the certificate for meinsack.click via meinsack.click.madflex.de
The command for this:
acme.sh --issue --dns dns_hetzner --challenge-alias meinsack.click.madflex.de -d meinsack.click