If you like to geek out with microcontrollers, Bluetooth Low Energy, and MicroPython, this may be of interest to you.
I was looking for a way to build some DIY sensors with microcontrollers running MicroPython and communicate readings to Home Assistant via Bluetooth. The BTHome integration is perfect for this, but the only examples I could find were written in C++. So I wrote my own MicroPython module that creates the BLE advertisement in BTHome format. This advertising payload can then be used with MicroPython’s aioble (async Bluetooth Low Energy) library to create a BTHome compliant sensor beacon.
The project’s main.py shows how to communicate the mocked-up values used in the BTHome format example. Home Assistant will then show a BTHome sensor named DIY-sensor with a temperature of 25C (77F) and humidity of 50.55%, the same as the example payload used by the BTHome.io format example. The microcontroller then goes to sleep for a little while and wakes up to do it all again.
The example only shows temperature and humidity, but nearly all of the BTHome object IDs are implemented, so you should be able to communicate just about anything you want.