{"id":28394936,"url":"https://github.com/alexiii/weather-node","last_synced_at":"2025-06-27T01:31:30.845Z","repository":{"id":38901010,"uuid":"257308216","full_name":"AlexIII/weather-node","owner":"AlexIII","description":"A small battery-powered BLE temperature and humidity sensor with Android app.","archived":false,"fork":false,"pushed_at":"2023-01-06T03:52:03.000Z","size":3173,"stargazers_count":10,"open_issues_count":15,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-01T06:31:45.887Z","etag":null,"topics":["arduino","dht11","dht22","home-automation","humidity-monitoring","humidity-sensor","nrf24le1","temperature-monitoring","temperature-sensor","weather-station"],"latest_commit_sha":null,"homepage":null,"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/AlexIII.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}},"created_at":"2020-04-20T14:33:55.000Z","updated_at":"2024-10-19T12:12:31.000Z","dependencies_parsed_at":"2022-09-13T18:50:24.645Z","dependency_job_id":null,"html_url":"https://github.com/AlexIII/weather-node","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AlexIII/weather-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexIII%2Fweather-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexIII%2Fweather-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexIII%2Fweather-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexIII%2Fweather-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexIII","download_url":"https://codeload.github.com/AlexIII/weather-node/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexIII%2Fweather-node/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262172427,"owners_count":23270009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","dht11","dht22","home-automation","humidity-monitoring","humidity-sensor","nrf24le1","temperature-monitoring","temperature-sensor","weather-station"],"created_at":"2025-05-31T19:09:14.773Z","updated_at":"2025-06-27T01:31:30.801Z","avatar_url":"https://github.com/AlexIII.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Weather Node\n\n\u003cimg style=\"border-radius: 15px;\" width=\"170\" align=\"right\" src=\"img/wns-icon.png\" /\u003e\n\n**Weather Node** is a small battery-powered temperature and humidity sensor that transmits measurements via Bluetooth LE to your phone.\n\nThe battery is expected to last for 3 - 6 months (depending on battery and ambient temperature).\n\nYou can easily assemble your Weather Node as it requires very few components:\n- MCU board with nRF24LE1 microcontroller;\n- DHT22 (or DTH11) temperature/humidity sensor;\n- battery socket for CR2032;\n- two resistors (10k), two capacitors (0.1uF and 4.7uF), and an LED.\n\nAfter assembling, you could get something like this: \n\n\u003cimg width=\"600\" align=\"center\" src=\"img/wnode1-photo.jpg\" /\u003e\n\nSchematics:\n\n\u003cimg width=\"400\" align=\"center\" src=\"img/wn1-schematic.png\" /\u003e\n\nIn order to upload firmware to the nRF24LE1 board you may also need FT232RL usb-uart convertor or an Arduino. Check out these links for more info on nRF24LE1 flashing options.\n\n- [Program nRF24LE1 with FT232R](https://github.com/jdelfes/nrf24le1_flasher)\n- [Program nRF24LE1 with Arduino](https://github.com/DeanCording/nRF24LE1_Programmer)\n\n## Arduino-based Weather Node\n\n\u003cimg style=\"border-radius: 10px;\" width=\"220\" align=\"right\" src=\"img/wn-ard-photo.jpg\" /\u003e\n\nA version of Weather Node built with Arduino Pro Mini (or any other) and nrf24L01 module.\n\nThis is a reworked version of [BLE_beacon](https://github.com/cbm80amiga/BLE_beacon) project by [cbm80amiga](https://github.com/cbm80amiga) adapted in a way so it would work with [Weather Node Station](https://github.com/AlexIII/weather-node#weather-node-station), an Android app.\n\nThe device can use external DHT11 sensor (humidity + temperature) or internal Arduino sensor (temperature only).\n\nMain changes from the original version:\n- CPU clock is lowered to 8MHz for boards with 16 MHz crystal (for reliable operation from 3v battery);\n- connection of `CE` pin of nrf24L01 moved to Arduino pin `A0`;\n- BLE data format of [Weather Node](https://github.com/AlexIII/weather-node#ble-protocol-details);\n- random MAC generation on power-on;\n- usage of calibration values for the internal Arduino temperature sensor (this should give better temperature precision);\n- longer sleep period.\n\n#### Notes on Arduino power supply\nIf you plan to power the device from CR2032 or another low-capacity power source, add 300uF capacitor in parallel to the battery, as nrf24L01 chip creates a current surge during data transmission that can reset the Arduino. Also, remove the power regulator IC and LEDs from the Arduino board for lower power consumption.\n\n## Weather Node Station\n\u003cimg width=\"300\" align=\"right\" src=\"img/wns-screen.png\" /\u003e\n\n**Weather Node Station** is an app for your phone that receives data from Weather Nodes.\n\nOnly Android version is available now (`.apk`). After installation you will need to give the app permissions to access Bluetooth (on modern Android versions it also requires Location permissions as well). \n\nThe app is developed with react-native framework, so it's possible to compile it for IOS (I'm sure it'll require some fixes though). You're very welcome to try and do that, especially if you have the necessary environment installed.\n\n## How to use with ESPHome and Home Assistant\n\nSee [#8](https://github.com/AlexIII/weather-node/issues/8)\n\n## Project Files\n\n- wnode1-firmware/ - firmware for Weather Node MCU (nRF24LE1). Project for [Code::Blocks](http://www.codeblocks.org/) with [SDCC](http://sdcc.sourceforge.net/)\n- wnode2-arduino-firmware/ - Arduino sketch for Arduino-based Weather Node\n- wnodestation/ - [React Native](http://reactnative.dev) app for phone\n\n## Known Issues\n\n1. DHT22 turned out to be a crappy sensor. It showed very bad stability under freezing temperatures and low voltage power supply. It will be replaced with superior AHT10 the moment I'll get my hands on it.\n\u003cimg width=\"300\" src=\"img/mad-DHT22.png\" /\u003e\nFunny readings from DHT22 after 12 hours in my fridge (~ +5°C).\n\n## BLE Protocol Details\n\nWeather Node emulates BLE advertisement packages. All meaningful data is packed in \"Manufacturer Data\" section. Layout of the section:\n\n| Field       | Offset (bytes) | Size (bytes) | Value                                                        |\n| ----------- | -------------- | ------------ | ------------------------------------------------------------ |\n| UUID        | 0              | 2            | UUID[0] == 0xA9, UUID[1] ==0x53                              |\n| Humidity    | 2              | 2            | Humidity in DHT22 format \u003cbr /\u003eIf (humidity[0] == 0x80 \u0026\u0026 humidity[1] == 0x00) then \u003cbr /\u003ethe channel is inactive. |\n| Temperature | 4              | 2            | Temperature in DHT22 format                                  |\n| Flags       | 6              | 1            | Bits 0, 1: battery level (0 - HIGH, 1 - MED_HIGH, 2 - MED_LOW, 3 - LOW)  \u003cbr /\u003eBit 2: sensor failure flag |\n| Reserved    | 7              | 1            | - |\n\n## License\n\nAll files in this repo, except `./wnode1-firmware/nRF24LE1_SDK` and `./wnode2-arduino-firmware` go by MIT License © github.com/AlexIII\n\n- `wnode1-firmware/nRF24LE1_SDK` is a separate project. It's licensed under LGPL v2.1.\n- `wnode2-arduino-firmware` is a modified fork of [BLE_beacon](https://github.com/cbm80amiga/BLE_beacon) project by [cbm80amiga](https://github.com/cbm80amiga). It's licensed under LGPL v3.0 © 2019 Pawel A. Hernik.\n\nDue to SDK licensing, precompiled firmware (`*.hex`) for nRF24LE1 is under LGPL v2.1.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexiii%2Fweather-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexiii%2Fweather-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexiii%2Fweather-node/lists"}