{"id":17648670,"url":"https://github.com/matthias-bs/atc_mithermometer","last_synced_at":"2026-03-03T22:00:33.907Z","repository":{"id":63682608,"uuid":"569851534","full_name":"matthias-bs/ATC_MiThermometer","owner":"matthias-bs","description":"Arduino BLE Client library for receiving ATC_MiThermometer Data (as Advertising Data)","archived":false,"fork":false,"pushed_at":"2026-01-30T08:45:59.000Z","size":314,"stargazers_count":14,"open_issues_count":2,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-01-31T00:23:40.570Z","etag":null,"topics":["arduino","arduino-library","ble","esp32","esp32-arduino","sensors"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matthias-bs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-23T19:00:31.000Z","updated_at":"2026-01-30T08:45:58.000Z","dependencies_parsed_at":"2025-03-10T19:37:34.636Z","dependency_job_id":"0c9c60a8-1d05-4e38-a58d-ec5ef692aa47","html_url":"https://github.com/matthias-bs/ATC_MiThermometer","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/matthias-bs/ATC_MiThermometer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FATC_MiThermometer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FATC_MiThermometer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FATC_MiThermometer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FATC_MiThermometer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthias-bs","download_url":"https://codeload.github.com/matthias-bs/ATC_MiThermometer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FATC_MiThermometer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30063343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-library","ble","esp32","esp32-arduino","sensors"],"created_at":"2024-10-23T11:19:45.032Z","updated_at":"2026-03-03T22:00:33.890Z","avatar_url":"https://github.com/matthias-bs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ATC_MiThermometer\n\n[![CI](https://github.com/matthias-bs/ATC_MiThermometer/actions/workflows/CI.yml/badge.svg)](https://github.com/matthias-bs/ATC_MiThermometer/actions/workflows/CI.yml)\n[![GitHub release](https://img.shields.io/github/release/matthias-bs/ATC_MiThermometer?maxAge=3600)](https://github.com/matthias-bs/ATC_MiThermometer/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://github.com/matthias-bs/ATC_MiThermometer/blob/main/LICENSE)\n\u003c!--\nNot updated correctly any more!\n[![arduino-library-badge](https://www.ardu-badge.com/badge/ATC_MiThermometer.svg?)](https://www.ardu-badge.com/ATC_MiThermometer)\n--\u003e\n\nArduino BLE Client Library based on [NimBLE-Arduino](https://github.com/h2zero/NimBLE-Arduino) for receiving ATC_MiThermometer Data (as Advertising Data) - both the \"custom\" format and the original \"atc1441\" format are supported.\n\nThis project allows to receive data from a battery-powered bluetooth low energy thermometer/hygrometer like the Xiaomi Mijia (LYWSD03MMC) running the custom firmware [ATC_MiThermometer](https://github.com/pvvx/ATC_MiThermometer). The software runs in the Arduino environment on all devices dupported by [NimBLE-Arduino](https://github.com/h2zero/NimBLE-Arduino).\n\nThe [ATC_MiThermometer](https://github.com/pvvx/ATC_MiThermometer) firmware sends the sensor and status data as BLE advertisements, i.e. multiple clients can receive and use the sensor data.\n\nThis project is the successor of [ESP32_ATC_MiThermometer_Library](https://github.com/matthias-bs/ESP32_ATC_MiThermometer_Library) - with all its benefits inherited from [NimBLE-Arduino](https://github.com/h2zero/NimBLE-Arduino).\n\n## Example\n```\n#include \"ATC_MiThermometer.h\"\n\nconst int scanTime = 5; // BLE scan time in seconds\n\n// List of known sensors' BLE addresses\nstd::vector\u003cstd::string\u003e knownBLEAddresses = {\"a4:c1:38:b8:1f:7f\", \"a4:c1:38:bf:e1:bc\"};\n\nATC_MiThermometer miThermometer(knownBLEAddresses);\n\n\nvoid setup() {\n    Serial.begin(115200);\n    \n    // Initialization\n    miThermometer.begin();\n}\n\nvoid loop() {\n    // Set sensor data invalid\n    miThermometer.resetData();\n    \n    // Get sensor data - run BLE scan for \u003cscanTime\u003e\n    unsigned found = miThermometer.getData(scanTime);\n\n    for (int i=0; i \u003c miThermometer.data.size(); i++) {  \n        if (miThermometer.data[i].valid) {\n            Serial.println();\n            Serial.printf(\"Sensor %d: %s\\n\", i, knownBLEAddresses[i].c_str());\n            Serial.printf(\"Name: %s\\n\", miThermometer.data[i].name.c_str());\n            Serial.printf(\"%.2f°C\\n\", miThermometer.data[i].temperature/100.0);\n            Serial.printf(\"%.2f%%\\n\", miThermometer.data[i].humidity/100.0);\n            Serial.printf(\"%.3fV\\n\",  miThermometer.data[i].batt_voltage/1000.0);\n            Serial.printf(\"%d%%\\n\",   miThermometer.data[i].batt_level);\n            Serial.printf(\"%ddBm\\n\",  miThermometer.data[i].rssi);\n            Serial.println();\n         }\n    }\n    Serial.print(\"Devices found: \");\n    Serial.println(found);\n    Serial.println();\n\n    // Delete results from BLEScan buffer to release memory\n    miThermometer.clearScanResults();\n    delay(5000);\n}\n```\n## Source Code Documentation\nhttps://matthias-bs.github.io/ATC_MiThermometer/\n\n## Alternative\nYou might want to have a look at [Theengs Decoder](https://decoder.theengs.io/). It is also built on NimBLE-Arduino, runs on ESP32, seems to decode both variants of the alternative LYWSD03MMC firmware and many devices more.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthias-bs%2Fatc_mithermometer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthias-bs%2Fatc_mithermometer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthias-bs%2Fatc_mithermometer/lists"}