ATC_MiThermometer_Gateway
Python gateway for the custom firmware for the Xiaomi Thermometer LYWSD03MMC.
Roadmap
Done:
- Make in runnable in a docker container (because only cool people are using docker)
- Make docker image smaller. I mean shiiit 1GB D: should be possible to be under 500MB (It's now around 100MB)
- Implement a loop for fetching the data every X seconds
TODOs:
- [WIP] Can run on Raspberry Pi (3, 4, zero w) or any other Linux driven hardware which has BLE and WiFi support
- [WIP] Storing temperature, humidity and battery state as json in a text file
- [TODO] Make a microPython version for using the raspberry pico w or any other microcontroller with BLE and WiFi support
- [TODO] Collect data from multiple devices/gateways
- [TODO] Command line tool for managing the devices
- [TODO] Analyzing tool for making statistics
- [TODO] HomeAssistant integration
- [TODO] MQTT publishing
- [TODO] Maybe... a webinterface. But I suck at web stuff, so I don't know.
- [TODO] Implement other BLE Sensors
Current State
Getting started
First of all, you need to flash the custom firmware on your LYWSD03MMC device. A step-by-step guid is in his youtube channel, the video is linked on his GitHub repo. It's straight forward and does not require any special hardware.
Preconditions
Install bluez. It's needed for bluepy to communicate with the bluetooth adapter.
sudo apt-get install -y bluez
Shell Scripts
build_docker.sh
| Arg | Meaning | Default |
|---|---|---|
| -t | --tag | Set a tag for build | latest |
| -i | --image | Set a image name for build | dasmoorhuhn/atc-mithermometer-gateway |
| -h | --help | Get this help in the CLI |
run_docker.sh
| Arg | Meaning | Default |
|---|---|---|
| -d | Run in Backgrund | false |
| -t | --tag | Set a docker tag | latest |
| -b | --build | Build the image before running the container | false |
| -l | --loop | Start the gateway in looping mode | false (40s fallback) |
| -i | --interactive | Start the container in interactive mode. That means, you can read the console output in real time and abort via STRG+C | false |
| -a | --api | Start with the API | false |
| -v | --volume | Set the volume, where the data from the gateway will be stored. Use relative path like /home/user/gateway/data | data |
| -tz | --timezone | Set the timezone | Europe/Berlin |
| -to | --timeout | Set the timeout for the bluetooth scan | 20 |
| -h | --help | Get this dialog in CLI | |
| --debug | Activate debug mode. Meant for fixing errors or development. | false |
Start Gateway
For getting started, you need to download the run_gateway.sh or build the docker run commands by your own.
Run Gateway
sh run_gateway.sh
Run Gateway with specified volume for persistence data, api, loop interval of 40 seconds and interactive mode
sh run_gateway.sh --volume $PWD/data --loop 40 --interactive --api
Build your own docker container
Build for your current platform (Without parameters, default values will be chosen)
sh build_docker.sh --image you/your-image-name you/your-image-name
For building the docker container for multiple platforms at once, you need to have docker buildx installed. (Without parameters, default values will be chosen)
sh build_docker_multi_platforn.sh --platforms linux/amd64,linux/arm64 --image you/your-image-name you/your-image-name
MicroPython for MicroController
Coming when I develop it...

