{"id":17648694,"url":"https://github.com/matthias-bs/bresserweathersensorreceiver","last_synced_at":"2026-02-21T22:22:01.911Z","repository":{"id":38284517,"uuid":"495332787","full_name":"matthias-bs/BresserWeatherSensorReceiver","owner":"matthias-bs","description":"Bresser 5-in-1/6-in-1/7-in-1 868 MHz Weather Sensor Radio Receiver for Arduino based on CC1101, SX1276/RFM95W, SX1262 or LR1121","archived":false,"fork":false,"pushed_at":"2026-01-11T19:29:28.000Z","size":6375,"stargazers_count":161,"open_issues_count":10,"forks_count":31,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-11T19:47:29.890Z","etag":null,"topics":["868mhz","arduino","arduino-library","arduino-pico","cc1101","data-logger","environmental-monitoring","esp32","esp32-arduino","esp8266","esp8266-arduino","lr1121","mqtt","radiolib","rp2040","sensor-data","sx1262","sx1276","weather"],"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-05-23T09:02:08.000Z","updated_at":"2026-01-11T16:58:17.000Z","dependencies_parsed_at":"2023-02-15T11:01:34.537Z","dependency_job_id":"abe3f696-63c3-484c-a697-c4d2ce690c45","html_url":"https://github.com/matthias-bs/BresserWeatherSensorReceiver","commit_stats":null,"previous_names":[],"tags_count":85,"template":false,"template_full_name":null,"purl":"pkg:github/matthias-bs/BresserWeatherSensorReceiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FBresserWeatherSensorReceiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FBresserWeatherSensorReceiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FBresserWeatherSensorReceiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FBresserWeatherSensorReceiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matthias-bs","download_url":"https://codeload.github.com/matthias-bs/BresserWeatherSensorReceiver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matthias-bs%2FBresserWeatherSensorReceiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28565001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T08:53:44.001Z","status":"ssl_error","status_checked_at":"2026-01-19T08:52:40.245Z","response_time":67,"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":["868mhz","arduino","arduino-library","arduino-pico","cc1101","data-logger","environmental-monitoring","esp32","esp32-arduino","esp8266","esp8266-arduino","lr1121","mqtt","radiolib","rp2040","sensor-data","sx1262","sx1276","weather"],"created_at":"2024-10-23T11:19:50.757Z","updated_at":"2026-02-21T22:22:01.902Z","avatar_url":"https://github.com/matthias-bs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BresserWeatherSensorReceiver\n[![CI](https://github.com/matthias-bs/BresserWeatherSensorReceiver/actions/workflows/CI.yml/badge.svg)](https://github.com/matthias-bs/BresserWeatherSensorReceiver/actions/workflows/CI.yml)\u003c!--[![Build Status](https://app.travis-ci.com/matthias-bs/BresserWeatherSensorReceiver.svg?branch=main)](https://app.travis-ci.com/matthias-bs/BresserWeatherSensorReceiver)--\u003e\n[![CppUTest](https://github.com/matthias-bs/BresserWeatherSensorReceiver/actions/workflows/CppUTest.yml/badge.svg)](https://github.com/matthias-bs/BresserWeatherSensorReceiver/actions/workflows/CppUTest.yml)\n[![GitHub release](https://img.shields.io/github/release/matthias-bs/BresserWeatherSensorReceiver?maxAge=3600)](https://github.com/matthias-bs/BresserWeatherSensorReceiver/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/LICENSE)\n\u003c!--\nBadge is not updated any more!\n[![arduino-library-badge](https://www.ardu-badge.com/badge/BresserWeatherSensorReceiver.svg?)](https://www.ardu-badge.com/BresserWeatherSensorReceiver)\n--\u003e\n\nBresser 5-in-1/6-in-1/7-in-1 868 MHz Weather Sensor Radio Receiver for Arduino based on [RadioLib](https://github.com/jgromes/RadioLib) using CC1101, SX1276/RFM95W, SX1262 or LR1121\n\n**See the [Wiki](https://github.com/matthias-bs/BresserWeatherSensorReceiver/wiki) for additional information.**\n\nTo allow automatic handling of all Bresser weather station variants, the decoders are tried in the following order until decoding succeeded:\n1. 7-in-1-Decoder \n2. 6-in-1-Decoder\n3. 5-in-1 Decoder\n4. Lightning Sensor Decoder\n5. Water Leakage Sensor Decoder\n\n(The Bresser 5-in-1 Weather Stations seem to use two different protocols - 5-in-1 and 6-in-1.)\n\n| Model         | Type | Decoder Function                |\n| ------------- | ---- | ------------------------------- |\n| 7002510..12, 9602510   | Weather Station | decodeBresser**5In1**Payload()  |\n| 7902510..12   | Weather Station (Base) | decodeBresser**5In1**Payload()  |\n| 7002530       | Professional Rain Gauge | decodeBresser**7In1**Payload() |\n| 7002531       | 3-in-1 Professional Wind Gauge / Anemometer | decodeBresser**6In1**Payload() **1)** |\n| 7002585       | Weather Station | decodeBresser**6In1**Payload()  |\n| 7009999       | Thermo-/Hygrometer Sensor | decodeBresser**6in1**Payload() |\n| 7009970       | Air Quality Sensor PM 2.5 / PM 10 | decodeBresser**7In1**Payload() |\n| 7009972       | Soil Moisture/Temperature Sensor | decodeBresser**6In1**Payload() |\n| 7009973       | Pool / Spa Thermometer           | decodeBresser**6In1**Payload() |\n| 7009975       | Water Leakage Sensor             | decodeBresser**Leakage**Payload() |\n| 7009976       | Lightning Sensor | decodeBresser**Lightning**Payload() |\n| 7009977       | CO\u003csub\u003e2\u003c/sub\u003e Sensor | decodeBresser**7In1**Payload() **2)** |\n| 7009978       | Air Quality Sensor HCHO / VOC | decodeBresser**7In1**Payload() **3)** |\n| 7003600 and WSX3001 | Weather Station | decodeBresser**7In1**Payload() **4)** |\n| 7003210       | Weather Station | decodeBresser**7In1**Payload()  |\n| 7803200       | Weather Sensor  | decodeBresser**7In1**Payload()  |\n| 7003300       | Weather Station | decodeBresser**7In1**Payload()  |\n| 7803300       | Weather Sensor  | decodeBresser**7In1**Payload()  |\n| 7003150       | 8-in-1 Weather Station | decodeBresser**7In1**Payload() **5)** |\n\nSome guesswork:\n\n| Numbering Scheme | Type |\n| ---------------- | ---- |\n| 700[25\\|31\\|32\\|33\\|36]*   | Weather Station, Base + Sensor |\n| 780[25\\|31\\|32\\|33]*   | Weather Station Sensor (Replacement) |\n| 790*             | Weather Station Base (Replacement) |\n| 700[99]*         | Accessory Sensor |\n\n**1)** The flag `DATA_COMPLETE` must not be set in `getData()`, otherwise the return value would always indicate a timeout. (I.e. use `#define RX_STRATEGY 0` in some of the example sketches.)\n\n**2)** Request for testing, see https://github.com/matthias-bs/BresserWeatherSensorReceiver/issues/138\n\n**3)** Request for testing, see https://github.com/matthias-bs/BresserWeatherSensorReceiver/issues/139\n\n**4)** The part number is specific to the actual variant, i.e. some more characters are appended\n\n**5)** The value `tglobe_c` is preliminary, see https://github.com/matthias-bs/BresserWeatherSensorReceiver/issues/220\n\n\u003e [!NOTE]\n\u003e Weather sensors which are using the 6-in-1 protocol are actually transmitting two different kind of messages alternately:\n\u003e 1. Temperature, Humidity, Wind and Battery status\n\u003e 2. Wind and Rain\n\u003e \n\u003e All other sensors/protocols are transmitting a single type of message which contains a complete set of data.\n\u003e\n\u003e The behavior described above can be observed with [BresserWeatherSensorBasic](examples/BresserWeatherSensorBasic), which just shows each message as it is received by using the function [`getMessage()`](https://matthias-bs.github.io/BresserWeatherSensorReceiver/class_weather_sensor.html#a05fbfc16fb2e13543591cb0b3cd8baaf).\n\u003e \n\u003e The other examples are using the function [`getData()`](https://matthias-bs.github.io/BresserWeatherSensorReceiver/class_weather_sensor.html#a558191760f9d9b9bf12f79f6f3e5370a), \nwhich buffers and combines messages from the 6-in-1 protocol until a complete set of data \u0026mdash; with some configuration options regarding *completeness*, see [BresserWeatherSensorOptions](examples/BresserWeatherSensorOptions) \u0026mdash; is available.\n\n## Contents\n\n* [Configuration](#configuration)\n  * [Predefined Board Configurations](#predefined-board-configurations)\n  * [User-Defined Configuration](#user-defined-configuration)\n* [Rain Statistics](#rain-statistics)\n* [Lightning Sensor Post-Processing](#lightning-Sensor-post-processing)\n* [SW Examples](#sw-examples)\n  * [BresserWeatherSensorBasic](#bresserweathersensorbasic)\n  * [BresserWeatherSensorWaiting](#bresserweathersensorwaiting)\n  * [BresserWeatherSensorCallback](#bresserweathersensorcallback)\n  * [BresserWeatherSensorOptions](#bresserweathersensoroptions)\n  * [BresserWeatherSensorOLED](#bresserweathersensoroled)\n  * [BresserWeatherSensorMQTT](#bresserweathersensormqtt)\n  * [BresserWeatherSensorMQTTCustom](#bresserweathersensormqttcustom)\n  * [BresserWeatherSensorMQTTWiFiMgr](#bresserweathersensormqttwifimgr)\n  * [BresserWeatherSensorDomoticz](#bresserweathersensordomoticz)\n  * [BresserWeatherSensorM5Core2](#bresserweathersensorm5core2)\n  * [BresserWeatherSensorCanvasGauges](#bresserweathersensorcanvasgauges)\n  * [BresserWeatherSensorSDCard](#bresserweathersensorsdcard)\n  * [BresserWeatherSensorFreqTest](#bresserweathersensorfreqtest)\n* [MQTT Integrations](#mqtt-integrations)\n  * [Home Assistant](#home-assistant)\n  * [Datacake](#datacake)\n* [Debug Output Configuration](#debug-output-configuration)\n* [HW Examples](#hw-examples)\n  * [ESP8266 D1 Mini with CC1101](#esp8266-d1-mini-with-cc1101)\n  * [Adafruit Feather ESP32S2 with Adafruit LoRa Radio FeatherWing](#adafruit-feather-esp32s2-with-adafruit-lora-radio-featherwing)\n  * [Adafruit Feather ESP32 or ThingPulse ePulse Feather with Adafruit LoRa Radio FeatherWing](#adafruit-feather-esp32-or-thingpulse-epulse-feather-with-adafruit-lora-radio-featherwing)\n  * [Adafruit RFM95W LoRa Radio Transceiver Breakout](#adafruit-rfm95w-lora-radio-transceiver-breakout)\n  * [DFRobot FireBeetle ESP32 with FireBeetle Cover LoRa Radio 868MHz](#dfrobot-firebeetle-esp32-with-firebeetle-cover-lora-radio-868mhz)\n* [Antennas and RF Connectors](#antennas-and-rf-connectors)\n* [Software Build Tutorial](#software-build-tutorial)\n* [Source Documentation](#source-documentation)\n* [Legal](#legal)\n\n## Configuration\n\n### Predefined Board Configurations\n\nBy selecting a Board and a Board Revision in the Arduino IDE, a define is passed to the preprocessor/compiler. For the boards in the table below, the default configuration is assumed based on this define. I.e. you could could use an Adafruit Feather ESP32-S2 with a CC1101 connected to the pins of your choice of course, but the code assumes you are using it with a LoRa Radio Featherwing with the wiring given below. In some cases (**bold** entries in the table below) an additional define has to be enabled manually in `WeatherSensorCfg.h`.\n\nIf you are not using the Arduino IDE, you can use the defines in the table below with your specific tool chain to get the same result.\n\nIf this is not what you need, you have to switch to **Manual Configuration**\n\n   | Setup                                                          | Board              | Board Revision               | Defines\u003cbr\u003ebold: to be enabled manually in `WeatherSensorCfg.h` | Radio Module | Notes    |\n   | -------------------------------------------------------------- | ------------------ | ---------------------------- | ---------------------- | -------- | ------- |\n   | [LILYGO®TTGO-LORA32 V1](https://github.com/Xinyuan-LilyGo/TTGO-LoRa-Series) | \"TTGO LoRa32-OLED\" | \"TTGO LoRa32 V1 (No TFCard)\" | ARDUINO_TTGO_LORA32_V1 | SX1276 (HPD13A) | -   |\n   | [LILYGO®TTGO-LORA32 V2](https://github.com/LilyGO/TTGO-LORA32) | \"TTGO LoRa32-OLED\" | \"TTGO LoRa32 V2\"             | ARDUINO_TTGO_LoRa32_V2 | SX1276 (HPD13A) | Only needed for LMIC: Wire DIO1 to GPIO33 |\n   | [LILYGO®TTGO-LORA32 V2.1](https://www.lilygo.cc/products/lora3?variant=42272562282677) | \"TTGO LoRa32-OLED\" | \"TTGO LoRa32 V2.1 (1.6.1)\" | ARDUINO_TTGO_LoRa32_v21new |  SX1276 (HPD13A) | - |\n   | [LILYGO®T3 S3 SX1262](https://lilygo.cc/products/t3s3-v1-0?variant=42586879721653) | \"LilyGo T3-S3\" | \"Radio-SX1262\"                    | ARDUINO_LILYGO_T3S3_SX1262 | SX1262 | - |\n   | [LILYGO®T3 S3 LR1121](https://lilygo.cc/products/t3-s3-lr1121) | \"LilyGo T3-S3\" | \"Radio-LR1121\"                    | ARDUINO_LILYGO_T3S3_LR1121 | LR1121 | - |\n   | [Heltec Wireless Stick](https://heltec.org/project/wireless-stick/) | \"Heltec Wireless Stick\"   | n.a.             | ARDUINO_HELTEC_WIRELESS_STICK | SX1276 | - |\n   | [Heltec Wireless Stick V3](https://heltec.org/project/wireless-stick-v3/) | \"Heltec Wireless Stick\"   | n.a.             | ARDUINO_HELTEC_WIRELESS_STICK_V3 | SX1262 | - |\n   | [Heltec WiFi LoRa 32 V2](https://heltec.org/project/wifi-lora-32/)  | \"Heltec WiFi LoRa 32(V2)\" | n.a.             | ARDUINO_HELTEC_WIFI_LORA_32_V2 | SX1276 | - |\n   | [Heltec WiFi LoRa 32 V3](https://heltec.org/project/wifi-lora-32-v3/)  | \"Heltec WiFi LoRa 32(V3)\" | n.a.             | ARDUINO_HELTEC_WIFI_LORA_32_V3 | SX1262 | - |\n   | [Adafruit Feather ESP32S2 with Adafruit LoRa Radio FeatherWing](https://github.com/matthias-bs/BresserWeatherSensorReceiver#adafruit-feather-esp32s2-with-adafruit-lora-radio-featherwing)                                | \"Adafruit Feather ESP32-S2\" | n.a.               | ARDUINO_ADAFRUIT_FEATHER_ESP32S2   | SX1276 (RFM95W) | Wiring on the Featherwing:\u003cbr\u003eE to IRQ\u003cbr\u003eD to CS\u003cbr\u003eC to RST\u003cbr\u003eA to DI01 |\n   | [Adafruit Feather ESP32 or Adafruit Feather ESP32 V2 with Adafruit LoRa Radio FeatherWing](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/README.md#adafruit-feather-esp32-or-thingpulse-epulse-feather-with-adafruit-lora-radio-featherwing)                                | \"Adafruit ESP32 Feather\"\u003cbr\u003e\"Adafruit Feather ESP32 V2\" | n.a.               | ARDUINO_FEATHER_ESP32   | SX1276 (RFM95W) | Wiring on the Featherwing:\u003cbr\u003eA to RST\u003cbr\u003eB to DIO1\u003cbr\u003eD to IRQ\u003cbr\u003eE to CS |\n | [ThingPulse ePulse Feather with Adafruit LoRa Radio FeatherWing](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/README.md#adafruit-feather-esp32-or-thingpulse-epulse-feather-with-adafruit-lora-radio-featherwing)                                | \"Thingpulse ePulse Feather\" | n.a.               | ARDUINO_THINGPULSE_EPULSE_FEATHER   | SX1276 (RFM95W) | Wiring on the Featherwing:\u003cbr\u003eA to RST\u003cbr\u003eB to DIO1\u003cbr\u003eD to IRQ\u003cbr\u003eE to CS |\n | [DFRobot FireBeetle with FireBeetle Cover LoRa Radio 868MHz](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/README.md#dfrobot-firebeetle-esp32-with-firebeetle-cover-lora-radio-868mhz)                               | \"FireBeetle-ESP32\" | n.a.               | ARDUINO_DFROBOT_FIREBEETLE_ESP32 \u0026 **DFROBOT_COVER_LORA**   | SX1276 (LoRa1276) | Wiring on the cover: \u003cbr\u003eD2 to RESET\u003cbr\u003eD3 to DIO0\u003cbr\u003eD4 to CS\u003cbr\u003eD5 to DIO1\u003cbr\u003e\u003cbr\u003eAdditional connections required for battery voltage measurement. |\n | [M5Stack Core2](https://docs.m5stack.com/en/core/core2) with [M5Stack Module LoRa868](https://docs.m5stack.com/en/module/lora868)   | \"M5Core2\" | n.a.               | ARDUINO_M5STACK_CORE2   | SX1276\u003cbr\u003e(RA-01H) | Only needed for LMIC - wiring on the LoRa868 Module: \u003cbr\u003eDIO1 to GPIO35\u003cbr\u003e\u003cbr\u003e\"M5Unified\" must be installed \u003cbr\u003e`M5.begin()`is called to control power management |\n | [ESP32-S3 PowerFeather](https://www.powerfeather.dev/) with [Adafruit LoRa Radio FeatherWing](https://www.adafruit.com/product/3231) | \"ESP32-S3 PowerFeather\" | n.a.            | ARDUINO_ESP32S3_POWERFEATHER   | SX1276 (RFM95W) | Wiring on the Featherwing:\u003cbr\u003eA to RST\u003cbr\u003eB to DIO1\u003cbr\u003eD to IRQ\u003cbr\u003eE to CS\u003cbr\u003e\u003cbr\u003e\"PowerFeather-SDK\" must be installed\u003cbr\u003e`Board.init();` is called to control power management |\n | [Seeed Studio XIAO ESP32S3 \u0026 Wio-SX1262 Kit](https://wiki.seeedstudio.com/wio_sx1262_with_xiao_esp32s3_kit_class) | \"XIAO_ESP32S3\" | n.a. | ARDUINO_XIAO_ESP32S3 | SX1262 | (B2B connector) |\n | [Adafruit Feather RP2040 with Adafruit LoRa Radio FeatherWing](https://www.adafruit.com/product/4884)                                | \"Adafruit Feather RP2040\" | n.a.               | ARDUINO_ADAFRUIT_FEATHER_RP2040   | SX1276 (RFM95W) | Wiring on the Featherwing:\u003cbr\u003eA to RST\u003cbr\u003eB to DIO1\u003cbr\u003eD to IRQ\u003cbr\u003eE to CS\u003cbr\u003e\u003cbr\u003eExternal voltage divider required for battery voltage measurement. |\n\n\nThe preprocessor will provide some output regarding the selected configuration if enabled in the Arduino IDE's Preferences (\"Verbose Output\"), e.g. \n```\nARDUINO_ADAFRUIT_FEATHER_ESP32S2 defined; assuming RFM95W FeatherWing will be used\n[...]\nReceiver chip: [SX1276]\nPin config: RST-\u003e0 , CS-\u003e6 , GD0/G0/IRQ-\u003e5 , GDO2/G1/GPIO-\u003e11\n```\n\n\u003e [!NOTE]\n\u003e The AVR architecture \u0026mdash; including Adafruit Feather 32u4 RFM95 LoRa Radio \u0026mdash; is no longer supported due to code size.\n\n### User-Defined Configuration\n\nSee `WeatherSensorCfg.h` for configuration options.\n\n* Set the desired radio module by (un-)commenting `USE_CC1101`, `USE_SX1262`, `USE_SX1276` or `LR1121`.\n\n  RFM95W, HPD13A and RA-01H are compatible with SX1276.\n\n* Set the I/O pinning according to your hardware\n\n   | Define                     | Radio Module    | Configuration                                                    |\n   | -------------------------- | --------------- | ---------------------------------------------------------------- |\n   | ESP32                      | user-defined    | generic, used for ESP32 boards if none of the above is defined   |\n   | ESP8266                    | user-defined    | generic, used for ESP8266 boards if none of the above is defined |\n\n* Data from multiple sensors can be received by setting `MAX_SENSORS_DEFAULT` to an appropriate value in `WeatherSensorCfg.h`.\n\n   e.g. `#define MAX_SENSORS_DEFAULT 1`\n\n* The sensors to be handled can be configured by two ways:\n   * Add any unwanted sensor IDs to the exclude list `SENSOR_IDS_EXC`\n\n     e.g. `#define SENSOR_IDS_EXC { 0x39582376 }`\n  \n   * Specify the wanted sensors explicitly in the include list `SENSOR_IDS_EXC` - if empty, all sensors will be used\n\n     e.g. `#define SENSOR_IDS_INC { 0x83750871 }`\n\n* Unused decoders can be disabled to save computation time/power by commenting out:\n\n     e.g. `//#define BRESSER_LEAKAGE`\n\nSee [How Sensor Reception works](https://github.com/matthias-bs/BresserWeatherSensorReceiver/wiki/02.-How-Sensor-Reception-works) for a detailed description.\n\n## Rain Statistics\n\nThe weather sensors transmit the accumulated rainfall since the last battery change or reset. This raw value is provided as `rain_mm`. To provide the same functionality as the original weather stations, the class `RainGauge` (see \n[RainGauge.h](src/RainGauge.h)) \nis used to calculate\n* hourly (past 60 minutes) rainfall,\n* daily rainfall, \n* weekly rainfall, \n* and monthly rainfall.\n\nThese values are named `rain_h`, `rain_d`, `rain_w` and `rain_m` in the MQTT software examples.\n\n\u003e [!NOTE]\n\u003e Time and date must be set correctly in order to reset the daily, weekly and monthly rain values correctly.\n\u003e This is achieved by setting the real time clock (RTC) from an available time source, e.g. via SNTP from a network time server if the device has internet connection via WiFi.\n\u003e The user must set the appropriate time zone (`TZ_INFO`) in the sketch.\n\nSee \n[Implementing Rain Gauge Statistics](https://github.com/matthias-bs/BresserWeatherSensorReceiver/wiki/04.-Implementing-Rain-Gauge-Statistics) for more details. \n\n## Lightning Sensor Post-Processing\n\nThe lightning sensor transmits the accumulated number of strikes and the estimated distance from the storm front (at the time of the last strike) at an interval. The post-processing algorithm implemented in the class `Lightning` (see\n[Lightning.h](src/Lightning.h)) calculates the number of events during the past 60 minutes \u0026mdash; using the same algorithm as the rain statistics \u0026mdash; and stores information of the last event:\n* Timestamp (UTC), \n* Estimated distance and\n* Number of strikes since the previous event.\n\n\u003e [!NOTE]\n\u003e Time and date must be set correctly in order to store the timestamp. \n\u003e This is achieved by setting the real time clock (RTC) from an available time source, e.g. via SNTP from a network time server if the device has internet connection via WiFi.\n\n## SW Examples\n\n### [BresserWeatherSensorBasic](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorBasic)\n\nUses default configuration [src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)\n\nReally a very basic example. Good for testing the SW build, wiring and sensor reception/decoding. Output is printed to the serial console ([example](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorBasic/example.log)).\nData is provided by the `getMessage()`-method, which returns almost immediately (i.e. after a small multiple of expected time-on-air), even if no data has been received.\n\n### [BresserWeatherSensorWaiting](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorWaiting)\n\nUses default configuration [src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)\n\nVery similar to [BresserWeatherSensorBasic](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorBasic), but data is provided by the `getData()`-method, which waits until a complete set of data has been received or a timeout occurred. Output is printed to the serial console ([example](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorWaiting/example.log)).\n\n### [BresserWeatherSensorCallback](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorCallback)\n\nUses default configuration [src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)\n\nBased on [BresserWeatherSensorWaiting](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorWaiting), but repeatedly invokes a callback function while waiting for data. In this example, in each iteration of the wait-loop, a dot is printed. Output is printed to the serial console ([example](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorCallback/example.log)).\n\n### [BresserWeatherSensorOptions](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorOptions)\n\nUses default configuration [src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)\n\nBased on [BresserWeatherSensorWaiting](https://github.com/matthias-bs/BresserWeatherSensorReceiver/tree/main/examples/BresserWeatherSensorWaiting), but demonstrates the different options of the `getData()`-method which defined if enough sensor data has been received before returning. Output is printed to the serial console ([example](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorOptions/example.log)).\n\n\n### [BresserWeatherSensorOLED](BresserWeatherSensorReceiver/examples/BresserWeatherSensorOLED)\n\nUses default configuration [src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)\n\nPrints the received weather sensor values to the on-board OLED display. See [Adafruit_SSD1306/examples](https://github.com/adafruit/Adafruit_SSD1306/tree/master/examples) for text style options and scrolling.\n\n\u003cimg width=\"500\" height=\"433\" alt=\"Lilygo TTGO LoRa32 OLED\" src=\"https://github.com/user-attachments/assets/3623b1bb-2130-4ca1-b0e9-333c89d83c67\"\u003e\n\n\u003e [!NOTE]\n\u003e Currently only the LILYGO boards listed in [Predefined Board Configurations](#predefined-board-configurations) are supported.\n\n### [BresserWeatherSensorMQTT](https://github.com/matthias-bs/BresserWeatherSensorReceiver/examples/BresserWeatherSensorMQTT)\n\nUses default configuration [src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)\n\nThis is finally a useful application.\n\nAt startup, first a WiFi connection and then a connection to the MQTT broker is established. (Edit `secrets.h` accordingly!) Then receiving data of all sensors (as defined in NUM_SENSORS, see WeatherSensorCfg.h) is tried periodically. If successful, sensor data is published as MQTT messages, one message per sensor.\nIf the sensor ID can be mapped to a name (edit `sensor_map[]`), this name is used as the MQTT topic, otherwise the ID is used. From the sensor data, some additional data is calculated and published with the _extra_ topic.\n\nThe data topics are published at an interval of \u003e`DATA_INTERVAL`. The _status_ and the _radio_ topics are published at an interval of `STATUS_INTERVAL`.\n\nFurthermore, Home Assistant MQTT discovery messages are published at an interval of DISCOVERY_INTERVAL. See section [Home Assistant](#home-assistant) for more details.\n\nIf sleep mode is enabled (`SLEEP_EN`), the device goes into deep sleep mode after data has been published. If `AWAKE_TIMEOUT` is reached before data has been published, deep sleep is entered, too. After `SLEEP_INTERVAL`, the controller is restarted. \n\nMQTT publications:\n\n`\u003cbase_topic\u003e/data/\u003cID|name\u003e`    sensor data as JSON string - see `publishWeatherdata()`\n\n`\u003cbase_topic\u003e/extra`             calculated data\n\n`\u003cbase_topic\u003e/radio`             radio transceiver info as JSON string - see `publishRadio()`\n     \n`\u003cbase_topic\u003e/status`            \"online\"|\"offline\"|\"dead\"$\n\n`homeassistant/sensor/\u003csensor_id\u003e_\u003cjson_ele\u003e/config`   Home Assistand auto discovery for sensor data\n`homeassistant/sensor/\u003chostname\u003e_\u003cjson_ele\u003e/config`    Home Assistand auto discovery for receiver control/status\n\nMQTT subscriptions:\n`\u003cbase_topic\u003e/reset \u003cflags\u003e`                           reset rain counters (see RainGauge.h for `\u003cflags\u003e`) and lightning post-processing (`flags \u0026 0x10`)\n`\u003cbase_topic\u003e/get_sensors_inc`                         get sensors include list\n`\u003cbase_topic\u003e/get_sensors_exc`                         get sensors exclude list\n`\u003cbase_topic\u003e/set_sensors_inc {\"ids\": [\u003cid0\u003e, ... ]}`  set sensors include list, e.g. `{\"ids\": [\"0x89ABCDEF\"]}`\n`\u003cbase_topic\u003e/set_sensors_exc {\"ids\": [\u003cid0\u003e, ... ]}`  set sensors exclude list, e.g. `{\"ids\": [\"0x89ABCDEF\"]}`\n\n\\$ via LWT\n\n`\u003cbase_topic\u003e` is set by `#define HOSTNAME ...`\n\n`\u003cbase_topic\u003e/data` JSON Example:\n```\n{\"sensor_id\":12345678,\"ch\":0,\"battery_ok\":true,\"humidity\":44,\"wind_gust\":1.2,\"wind_avg\":1.2,\"wind_dir\":150,\"rain\":146}\n```\n\n**Dashboard with [IoT MQTT Panel](https://snrlab.in/iot/iot-mqtt-panel-user-guide) (Example)**\n\n\u003cimg src=\"https://user-images.githubusercontent.com/83612361/158457786-516467f9-2eec-4726-a9bd-36e9dc9eec5c.png\" alt=\"IoTMQTTPanel_Bresser_5-in-1\" width=\"400\"\u003e\n\n### [BresserWeatherSensorMQTTCustom](https://github.com/matthias-bs/BresserWeatherSensorReceiver/examples/BresserWeatherSensorMQTTCustom)\n\nCustomized version of the example [BresserWeatherSensorMQTT](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorMQTT/BresserWeatherSensorMQTT.ino)\n\nThe file [BresserWeatherSensorReceiver/examples/BresserWeatherSensorMQTTCustom/src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorMQTTCustom/src/WeatherSensorCfg.h) has been customized \n(from [BresserWeatherSensorReceiver/src/WeatherSensorCfg.h](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/src/WeatherSensorCfg.h)).\n\nSee [examples/BresserWeatherSensorMQTTCustom/Readme.md](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorMQTTCustom/Readme.md) for details.\n\n### [BresserWeatherSensorMQTTWiFiMgr](https://github.com/matthias-bs/BresserWeatherSensorReceiver/examples/BresserWeatherSensorMQTTWiFiMgr)\n\nSame core functionality as [BresserWeatherSensorMQTT](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/examples/BresserWeatherSensorMQTT/BresserWeatherSensorMQTT.ino), but instead of using static WiFi- and MQTT-connection data, [WiFiManager](https://github.com/tzapu/WiFiManager) is used instead.\n\n\u003e [!NOTE]\n\u003e When using the sketch on a device for the first time, you must format the flash file system (SPIFFS) first, otherwise the configuration cannot be saved.\n\n**Configuration:**\n\n* Access Point SSID: ESPWeather-\u003cchip_id\u003e\n* Access Point Password: password\n* Configuration URL: http://192.168.4.1/ (The browser must be connected to the access point above!)\n\nPlease refer to the [WiFiManager](https://github.com/tzapu/WiFiManager) documentation for details!\n\nAfter a successful setup, you can perform two consecutive resets (within 10 seconds) to enable WiFiManager for changing the configuration. This is achieved by using [ESP_DoubleResetDetector](https://github.com/khoih-prog/ESP_DoubleResetDetector).\n\n\u003cimg src=\"https://github.com/matthias-bs/BresserWeatherSensorReceiver/assets/83612361/86a3f629-276d-48ac-8eff-acda051e7a2b\" alt=\"WiFiManager Start Screen\" width=\"300\"\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://github.com/matthias-bs/BresserWeatherSensorReceiver/assets/83612361/a1055ec5-dcc0-44ac-89fc-6a18497cce6e\" alt=\"WiFiManager Configuration Screen\" width=\"300\"\u003e \n\n\n### [BresserWeatherSensorDomoticz](https://github.com/matthias-bs/BresserWeatherSensorReceiver/examples/BresserWeatherSensorDomoticz)\n\nBased on [BresserWeatherSensorMQTT](https://github.com/matthias-bs/BresserWeatherSensorReceiver/examples/BresserWeatherSensorMQTT). Provides sensor data as MQTT messages via WiFi to Domoticz (https://domoticz.com/) (MQTT plugin for Domoticz required). The MQTT topics are designed for using with Domoticz virtual sensors (see https://www.domoticz.com/wiki/Managing_Devices#Temperature and https://www.domoticz.com/wiki/Managing_Devices#Weather).\n\n### [BresserWeatherSensorM5Core2](https://github.com/matthias-bs/BresserWeatherSensorReceiver/examples/BresserWeatherSensorM5Core2)\n\nExample for BresserWeatherSensorReceiver on [M5Stack Core2](https://docs.m5stack.com/en/core/core2) with [M5Stack Module LoRa868](https://docs.m5stack.com/en/module/lora868) (and optionally [M5Go Bottom2](http://docs.m5stack.com/en/base/m5go_bottom2)). Using getData() for sensor data reception.\n\nWeather sensor data is presented on the display and logged as CSV files to SD card (if present at startup). The integrated blue LED is used to indicate SD card activity (short flash)\n\nLogging requires proper timestamps. Time and date are provided by the integrated RTC chip with backup battery. The RTC must be set initially via WiFi and SNTP or manually (see [M5Unified/examples/Basic/Rtc/Rtc.ino](https://github.com/m5stack/M5Unified/blob/master/examples/Basic/Rtc/Rtc.ino)).\n\n![BresserWeatherSensorM5Core2](https://github.com/matthias-bs/BresserWeatherSensorReceiver/assets/83612361/12edec14-83fc-4f94-b2cb-0190a14357db)\n\n### [BresserWeatherSensorCanvasGauges](examples/BresserWeatherSensorCanvasGauges/)\n\n\u003cimg width=\"1200\" height=\"756\" alt=\"BresserWeatherSensorDashboard\" src=\"https://github.com/user-attachments/assets/d6fa41b9-102e-43bc-9359-4d9f2db9a281\" /\u003e\n\nThis sketch provides a web server to display sensor readings in gauges. Two different types of\ngauges are used: linear and radial. The gauges are implemented using the JavaScript library\n[canvas-gauges](https://github.com/Mikhus/canvas-gauges).\n\nThe web server serves a simple HTML page with CSS and embedded JavaScript stored in the ESP\nLittleFS file system to fetch the sensor readings. The readings are updated automatically on\nthe web page using Server-Sent Events (SSE). \nSee [ESP32 Web Server: Display Sensor Readings in Gauges](https://randomnerdtutorials.com/esp32-web-server-gauges/) by Rui Santos on Random Nerd Tutorials for details.\n\n#### Notes\n\n* Set your WiFi credentials in [secrets.h](examples/BresserWeatherSensorCanvasGauges/secrets.h)\n* Upload the contents of [examples/BresserWeatherSensorCanvasGauges/data/](examples/BresserWeatherSensorCanvasGauges/data/) to the board's Flash memory using [earlephilhower/arduino-littlefs-upload](https://github.com/earlephilhower/arduino-littlefs-upload)\n* Enable WiFi Access Point mode by uncommenting WIFI_AP_MODE if desired\\\n  https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/60028b578836d372931b117c1e8ed4a78aaaa70d/examples/BresserWeatherSensorCanvasGauges/BresserWeatherSensorCanvasGauges.ino#L91\n* Open http://weatherdashboard.local (or the IP address shown in the serial monitor) in your web browser to access the web page\n* Press the on-board button during power-up to reset rain gauge data\n* Rain values are limited to prevent overflow of the linear gauges\n\n### [BresserWeatherSensorSDCard](examples/BresserWeatherSensorSDCard/)\n\nThis sketch logs the received sensor data as CSV files to an SD card. The SD card must be formatted as FAT32 file system.\n\nTo provide a timestamps for each data set, there are two options:\n\n* ESP32 built-in RTC\n\n   The RTC is set to compile-time automatically after flashing the sketch, but will be lost power off (or power failure) or reset.\n   The internal RTC is also not very accurate.\n\n* M5Stack Core2 integrated RTC\n\n   The integrated RTC chip with backup battery retains operation independently of the node's power supply. It must be set initially via WiFi and SNTP or manually (see [M5Unified/examples/Basic/Rtc/Rtc.ino](https://github.com/m5stack/M5Unified/blob/master/examples/Basic/Rtc/Rtc.ino)).\n\n* External RTC module with battery backup\n\n  Connect an external RTC module (supported by [RTClib](https://github.com/adafruit/RTClib)) via I²C interface. Use [RTCSet](https://github.com/matthias-bs/BresserWeatherSensorLW/tree/main/extras/RTCSet) for initially setting the RTC.\n\nThe on-board LED is used to indicate SD card activity (short flash) and failure (permanent on - see debug output in IDE).\n\n\u003e [!TIP]\n\u003e See [SD library](https://github.com/espressif/arduino-esp32/tree/master/libraries/SD) for more information.\n\n\u003e [!NOTE]\n\u003e Currently only the LILYGO boards with on-board SD card slot listed in [Predefined Board Configurations](#predefined-board-configurations) and the M5Stack Core2 are supported by this example.\n\n### [BresserWeatherSensorFreqTest](examples/BresserWeatherSensorFreqTest/)\n\nThis example helps you find the optimal carrier frequency offset for your CC1101 (or other) transceiver module. Different modules can have slight frequency deviations from the nominal 868.3 MHz, and finding the optimal offset can improve reception reliability.\n\n## MQTT Integrations\n\n### Home Assistant\n\n#### MQTT Discovery\n\nHome Assistant [MQTT Discovery](https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery) is available.\n\nMQTT topic schemes:\n\n* `homeassistant/sensor/\u003chostname\u003e_\u003cjson_ele\u003e/config` \u0026ndash; weather sensor receiver configuration status\n* `homeassistant/button/\u003chostname\u003e_\u003cjson_ele\u003e/config` \u0026ndash; weather sensor receiver command\n* `homeassistant/sensor/\u003csensor_id\u003e_\u003cjson_ele\u003e/config` \u0026ndash; sensor data\n  * `\u003csensor_id\u003e`: Sensor ID as hex number\n  * `\u003cjson_ele\u003e`: JSON element as in `data` message, e.g. `temp_c`.\n\n\u003e [!NOTE]\n\u003e The sensors transmit the battery status as binary value (`battery_ok`), but Home Assistant expects a percentage. Therefore the battery status is converted to 0\\% or 100\\%.\n\n\nCustomization of MQTT discovery messages can be done in `haAutoDiscovery()` in the sketches' `mqtt_comm.cpp` if desired.\n\n[weather_sensor_receiver_config.yml](weather_sensor_receiver_config.yml) allows to configure sensor include/exclude lists.\n\n#### Manual Configuration\n\nManual configuration of Home Assistant can be done using a file template provided by [Shadowpost](https://github.com/Shadowpost):\u003cbr\u003e\n[Bresser_HA_MQTT_custom_config.yaml](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/Bresser_HA_MQTT_custom_config.yaml)\n\n### Datacake\n\nSee [Datacake MQTT Integration Documentation](https://docs.datacake.de/integrations/mqtt).\n\n[datacake_uplink_decoder.js](scripts/datacake_uplink_decoder.js) is an example [payload decoder](https://docs.datacake.de/integrations/mqtt#write-payload-decoder). Change `device_id` and the MQTT topic variables as required. \n\n## Debug Output Configuration\n\nSee [Debug Output Configuration in Arduino IDE](DEBUG_OUTPUT.md)\n\n## HW Examples\n\n\u003e [!NOTE]\n\u003e The SX1276/RFM95W also supports FSK modulation and thus can be used to receive the weather sensor data.\n\n### ESP8266 D1 Mini with CC1101\n\n\u003cimg src=\"https://user-images.githubusercontent.com/83612361/158458191-b5cabad3-3515-45d0-98e3-94b0fa13b8ef.jpg\" alt=\"Bresser5in1_CC1101_D1-Mini\" width=\"400\"\u003e\n\n[Pinout ESP8266 WeMos D1-Mini with cc1101](https://github.com/matthias-bs/BresserWeatherSensorReceiver/blob/main/ESP8266_WeMos_D1-Mini_pinout_cc1101_v2.pdf)\n\n#### CC1101\n\n[Texas Instruments CC1101 Product Page](https://www.ti.com/product/CC1101)\n\n\u003e [!NOTE]\n\u003e CC1101 Module Connector Pitch is 2.0mm!!!**\n\nUnlike most modules/breakout boards, most (if not all) CC1101 modules sold on common e-commerce platforms have a pitch (distance between pins) of 2.0mm. To connect it to breadboards or jumper wires with 2.54mm/100mil pitch (standard), the following options exist:\n\n* solder wires directly to the module\n* use a 2.0mm pin header and make/buy jumper wires with 2.54mm at one end and 2.0mm at the other (e.g. [Adafruit Female-Female 2.54 to 2.0mm Jumper Wires](https://www.adafruit.com/product/1919))\n* use a [2.0mm to 2.54 adapter PCB](https://www.amazon.de/Lazmin-1-27MM-2-54MM-Adapter-Platten-Brett-drahtlose-default/dp/B07V873N52)\n\n\u003e [!NOTE]\n\u003e Make sure to use the 868MHz version!\n\n### Adafruit Feather ESP32S2 with Adafruit LoRa Radio FeatherWing\n\n\u003e [!NOTE]\n\u003e Make sure to use the 868MHz version!\n* [ADA3231](https://www.adafruit.com/product/3231) - Adafruit LoRa Radio FeatherWing - RFM95W 900 MHz - RadioFruit\n* [ADA3232](https://www.adafruit.com/product/3232) - Adafruit LoRa Radio FeatherWing - RFM95W 433 MHz - RadioFruit\n* [ADA5303](https://www.adafruit.com/product/5303) - Adafruit ESP32-S2 Feather with BME280 Sensor - STEMMA QT - 4MB Flash + 2 MB PSRAM\n* [ADA5400](https://www.adafruit.com/product/5400) - Adafruit ESP32 Feather V2 - 8MB Flash + 2 MB PSRAM - STEMMA QT\n\nSolder-Bridges on the Module/Wing:\n* E to IRQ\n* D to CS\n* C to RST\n* A to DI01\n\n### Adafruit Feather ESP32 or ThingPulse ePulse Feather with Adafruit LoRa Radio FeatherWing\n![ePulse_Feather+FeatherWing](https://user-images.githubusercontent.com/83612361/228173195-f13fe4c4-7f86-4e73-b485-d5d553034554.jpg)\n\n\u003e [!NOTE]\n\u003e Make sure to use the 868MHz version!\n* [ADA3231](https://www.adafruit.com/product/3231) - Adafruit LoRa Radio FeatherWing - RFM95W 900 MHz - RadioFruit\n* [ADA3232](https://www.adafruit.com/product/3232) - Adafruit LoRa Radio FeatherWing - RFM95W 433 MHz - RadioFruit\n* [ADA3405](https://www.adafruit.com/product/3405) - Adafruit HUZZAH32 – ESP32 Feather Board\n* [B0BSC1PVL4](https://thingpulse.com/product/epulse-feather-low-power-esp32-development-board/) - ThingPulse ePulse Feather\n\nSolder-Bridges on the Module/Wing:\n* A to RST\n* B to DIO1 \n* D to IRQ\n* E to CS\n\n### Adafruit RFM95W LoRa Radio Transceiver Breakout\n\n\u003e [!NOTE]\n\u003e Make sure to use the 868MHz version!\n* [ADA3072](https://www.adafruit.com/product/3072) - 868/915 MHz version\n* [ADA3073](https://www.adafruit.com/product/3073) - 433 MHz version\n* RF connector\n* Antenna\n\nSee [Adafruit RFM69HCW and RFM9X LoRa Packet Radio Breakouts - Pinouts](https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-breakouts/pinouts).\n\n\n### DFRobot FireBeetle ESP32 with FireBeetle Cover LoRa Radio 868MHz\n![firebeetle_esp32+cover_lora](https://user-images.githubusercontent.com/83612361/233463592-e99a9d1c-5100-4ac2-9b33-bcfc974406f0.jpg)\n\u003e [!NOTE]\n\u003e Stacking headers were included with TEL0125.\n\n\u003e [!NOTE]\n\u003e Make sure to use the 868MHz version!**\n* [DFR0478](https://www.dfrobot.com/product-1590.html) - FireBeetle ESP32 IoT Microcontroller\n* [TEL0125](https://www.dfrobot.com/product-1831.html) - LoRa Radio 868MHz - FireBeetle Covers\n\n\nSolder-Bridges on the Cover:\n* D2 to RESET\n* D3 to DIO0\n* D4 to CS\n* D5 to DIO1\n\n## Antennas and RF Connectors\n\nThe required antenna depends on the signal path between weather sensor and receiver. \n\nSome options are:\n* wire antenna\n* spring antenna (helical wire coil)\n* rubber antenna\n\nSee [Adafruit Tutorial - Antenna Options](https://learn.adafruit.com/adafruit-feather-32u4-radio-with-lora-radio-module/antenna-options) for wire antenna lengths and uFL connector soldering.\n\nThe [Data Alliance](https://www.data-alliance.net/mhf-series-mhf1-mhf2-mhf3-mhf4/) website helped to sort out my RF connector confusion:\n\n\u003e Applications of MHF Connectors \u0026 Cables\n\u003e\n\u003e The MHF series of RF micro-connectors (mating heights listed below are the maximum):\n\u003e * MHF1 (also known as MHF) has a Mating Height of 2.5mm\n\u003e * MHF2 has a Mating Height of 2.1mm\n\u003e * MHF3 has a Mating Height of 1.6mm\n\u003e * MHF4 has a Mating Height of 1.2mm\n\u003e\n\u003e MHF3 connector is compatible with a W.FL connector while MHF2 connector is equivalent of U.FL connector. The MHF4 cable connector is the smallest while MHF1 connector is the largest which is comparable to a U.FL connector.\n\nPersonally I prefer the SMA connector over the uFL connector -  but be aware of the (usual) male/female connector types and the normal/reverse polarity types. See [SMA vs RP-SMA what is the difference?](https://forum.digikey.com/t/sma-vs-rp-sma-what-is-the-difference/550) by Digikey.\n\n## Software Build Tutorial\n\nSee [BUILD](BUILD.md)\n\n\n## Source Documentation\n\nhttps://matthias-bs.github.io/BresserWeatherSensorReceiver/\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthias-bs%2Fbresserweathersensorreceiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatthias-bs%2Fbresserweathersensorreceiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatthias-bs%2Fbresserweathersensorreceiver/lists"}