{"id":47560633,"url":"https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver","last_synced_at":"2026-04-13T10:01:23.178Z","repository":{"id":114713033,"uuid":"597692960","full_name":"matthias-bs/MicroPython-BresserWeatherSensorReceiver","owner":"matthias-bs","description":"Bresser 868 MHz Weather Sensor Radio Receiver for MicroPython","archived":false,"fork":false,"pushed_at":"2026-02-13T08:07:02.000Z","size":255,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-13T19:49:06.048Z","etag":null,"topics":["cc1101","esp32","micropython","sensors","weather"],"latest_commit_sha":null,"homepage":"","language":"Python","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":null,"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":"2023-02-05T10:54:59.000Z","updated_at":"2026-02-13T08:08:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"5cee70d0-740a-4c00-84cc-c26b034414db","html_url":"https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/matthias-bs/MicroPython-BresserWeatherSensorReceiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FMicroPython-BresserWeatherSensorReceiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FMicroPython-BresserWeatherSensorReceiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FMicroPython-BresserWeatherSensorReceiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FMicroPython-BresserWeatherSensorReceiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthias-bs","download_url":"https://codeload.github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FMicroPython-BresserWeatherSensorReceiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31747172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cc1101","esp32","micropython","sensors","weather"],"created_at":"2026-03-29T17:00:22.950Z","updated_at":"2026-04-13T10:01:23.157Z","avatar_url":"https://github.com/matthias-bs.png","language":"Python","readme":"[![formatting: pylint](https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/actions/workflows/pylint.yml/badge.svg)](https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/actions/workflows/pylint.yml)\n[![pytest](https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/actions/workflows/pytest.yml/badge.svg)](https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/actions/workflows/pytest.yml)\n[![GitHub release](https://img.shields.io/github/release/matthias-bs/MicroPython-BresserWeatherSensorReceiver?maxAge=3600)](https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://github.com/matthias-bs/MicroPython-BresserWeatherSensorReceiver/blob/main/LICENSE)\n\n# MicroPython-BresserWeatherSensorReceiver\nBresser 5-in-1/6-in-1/7-in-1 868 MHz Weather Sensor Radio Receiver for MicroPython using [Texas Instruments CC1101](https://www.ti.com/product/CC1101)\n\nTested with [MicroPython](https://micropython.org/) v1.27.0 on ESP32\n\n## Hardware Connection\n\nThe following diagram shows the wiring between the ESP32 and the CC1101 radio module:\n\n```mermaid\ngraph LR\n    subgraph ESP32[\"ESP32 Module\"]\n        ESP32_3V3[\"3.3V\"]\n        ESP32_GND[\"GND\"]\n        ESP32_GPIO23[\"GPIO 23\u003cbr/\u003e(MOSI)\"]\n        ESP32_GPIO19[\"GPIO 19\u003cbr/\u003e(MISO)\"]\n        ESP32_GPIO18[\"GPIO 18\u003cbr/\u003e(SCK)\"]\n        ESP32_GPIO27[\"GPIO 27\u003cbr/\u003e(CS/SS)\"]\n        ESP32_GPIO21[\"GPIO 21\u003cbr/\u003e(GDO0)\"]\n        ESP32_GPIO33[\"GPIO 33\u003cbr/\u003e(GDO2)\"]\n    end\n\n    subgraph CC1101[\"CC1101 Radio Module\"]\n        CC1101_VCC[\"VCC (3.3V)\"]\n        CC1101_GND[\"GND\"]\n        CC1101_MOSI[\"MOSI/SI\"]\n        CC1101_MISO[\"MISO/SO\"]\n        CC1101_SCK[\"SCK/SCLK\"]\n        CC1101_CSN[\"CSn\"]\n        CC1101_GDO0[\"GDO0\"]\n        CC1101_GDO2[\"GDO2\"]\n    end\n\n    ESP32_3V3 --\u003e CC1101_VCC\n    ESP32_GND --\u003e CC1101_GND\n    ESP32_GPIO23 --\u003e CC1101_MOSI\n    ESP32_GPIO19 --\u003e CC1101_MISO\n    ESP32_GPIO18 --\u003e CC1101_SCK\n    ESP32_GPIO27 --\u003e CC1101_CSN\n    ESP32_GPIO21 --\u003e CC1101_GDO0\n    ESP32_GPIO33 --\u003e CC1101_GDO2\n```\n\n**Note:** Pin assignments are defined in [src/config.py](src/config.py) and use the [ESP32's VSPI (SPI ID 2) hardware interface](https://docs.micropython.org/en/latest/esp32/quickref.html#hardware-spi-bus). The SPI pins (MOSI, MISO, SCK) are the hardware-defined defaults for VSPI on ESP32.\n\n## Installation\n\n### Prerequisites\n\n* [MicroPython](https://micropython.org/) v1.27.0 or later installed on your ESP32\n* CC1101 radio module connected to your ESP32 as described in the [Hardware Connection](#hardware-connection) section\n\n### Installation Steps\n\n1. **Copy the source files to your MicroPython device:**\n   \n   Copy all files from the `src/` directory to your ESP32:\n   - `BresserDecoder.py` - Decoder implementations for all supported Bresser sensor types\n   - `cc1101.py` - CC1101 radio module driver\n   - `config.py` - Hardware configuration (pin assignments)\n   - `main.py` - Example implementation\n\n   You can use tools like [mpremote](https://docs.micropython.org/en/latest/reference/mpremote.html), [ampy](https://github.com/scientifichackers/ampy), [rshell](https://github.com/dhylands/rshell), or [Thonny IDE](https://thonny.org/) to transfer files to your device.\n\n2. **Configure hardware pins (if needed):**\n   \n   If your hardware setup differs from the default pin assignments, edit `config.py` on your device to match your wiring.\n\n3. **Customize the implementation:**\n   \n   **Important:** The provided `main.py` is an example implementation that demonstrates how to receive and decode Bresser weather sensor data. It is intended as a starting point for your own application-specific implementation.\n   \n   You should customize `main.py` based on your requirements, such as:\n   - Integration with other sensors or systems\n   - Data logging or storage\n   - Network connectivity (WiFi, MQTT, etc.)\n   - Power management\n   - Error handling and recovery\n\n4. **Run the application:**\n   \n   Once the files are copied and configured, you can run the receiver by executing:\n   ```python\n   import main\n   main.main()\n   ```\n   \n   Or reset your ESP32 if `main.py` is set to run automatically on boot.\n\n## Supported Bresser Sensor Protocols\n\n* **6-in-1 Decoder**\n  * 6-in-1 weather sensors (temperature, humidity, UV, wind, rain)\n  * Soil moisture/temperature sensors\n  * Pool/spa thermometer\n    \n* **5-in-1 Decoder**\n  * 5-in-1 weather sensors\n  * Professional Rain Gauge\n    \n* **7-in-1 Decoder**\n  * 7-in-1/8-in-1 weather sensors\n  * Air Quality (PM) sensor\n  * CO2 sensor\n  * HCHO/VOC sensor\n    \n* **Lightning Sensor Decoder**\n  * Lightning sensor\n    \n* **Leakage Sensor Decoder**\n  * Water Leakage sensor\n\n\n**Sequential Decoder Fallback** -- main.py tries all decoders in sequence until one succeeds\n\n## Example Console Output\n\n```\nTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n--- RSSI: -82.0 dBm ---\nTTTTTTTTTTTTTTTTT\n--- RSSI: -72.5 dBm ---\nSoil Moisture Sensor: ID: 0x52828827  Type: 4  Channel: 1  Battery: OK  Startup: No\n  Temperature: 24.5°C  Moisture: 0%\nTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n```\n\n* Each 'T' marks a message reception timeout\n* RSSI: Received Signal Strength Indicator\n* Common sensor data and sensor type specific measurement values\n* Only an RSSI value without subsequent data: unknown or invalid message (message integrity check failed)\n\n\n## Legal\n\n\u003e This project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Bresser GmbH or any of its affiliates or subsidiaries.\n","funding_links":[],"categories":["Libraries"],"sub_categories":["Communications"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthias-bs%2FMicroPython-BresserWeatherSensorReceiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthias-bs%2FMicroPython-BresserWeatherSensorReceiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthias-bs%2FMicroPython-BresserWeatherSensorReceiver/lists"}