{"id":24962983,"url":"https://github.com/pixelweatherproject/pwos","last_synced_at":"2026-05-15T22:05:26.307Z","repository":{"id":262901940,"uuid":"736205660","full_name":"PixelWeatherProject/pwos","owner":"PixelWeatherProject","description":"PixelWeatherOS firmware for generic ESP32 microcontrollers.","archived":false,"fork":false,"pushed_at":"2025-03-25T18:00:44.000Z","size":431,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-25T18:36:30.317Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PixelWeatherProject.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}},"created_at":"2023-12-27T09:12:58.000Z","updated_at":"2024-11-23T15:53:37.000Z","dependencies_parsed_at":"2024-11-14T23:23:24.262Z","dependency_job_id":"72828885-b65d-42c1-83c1-40a45eee7802","html_url":"https://github.com/PixelWeatherProject/pwos","commit_stats":null,"previous_names":["pixelweatherproject/pwos"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PixelWeatherProject%2Fpwos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PixelWeatherProject%2Fpwos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PixelWeatherProject%2Fpwos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PixelWeatherProject%2Fpwos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PixelWeatherProject","download_url":"https://codeload.github.com/PixelWeatherProject/pwos/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246114480,"owners_count":20725629,"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":[],"created_at":"2025-02-03T09:54:26.415Z","updated_at":"2026-05-15T22:05:26.298Z","avatar_url":"https://github.com/PixelWeatherProject.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PixelWeatherOS\nThis is a universal firmware for all PixelWeather nodes. It was created using the [esp-idf template](https://github.com/esp-rs/esp-idf-template).\n\nPixelWeather is a weather station network that collects environment data using \"nodes\" (a collection of microcontrollers and sensors). This repository contains the firware for said nodes _(PWOS)_.\n\nSee other repositories for more components of the PixelWeather ecosystem:\n- [Core types of the messaging protocol (`pwmp-msg`)](https://github.com/PixelWeatherProject/pwmp-msg)\n- [Client implementation (`pwmp-client`)](https://github.com/PixelWeatherProject/pwmp-client)\n- [Server implementation (`pwmp-server`)](https://github.com/PixelWeatherProject/pwmp-server)\n\n### Hardware requirements:\n- Espressif ESP32-S3 microcontroller\n    - Classic ESP32 and ESP32-C3 series are **no longer supported**!\n    - 8MB Flash **minimum**\n        - 4MB models are **not** supported.\n        - Read section [Build variants](#build-variants) for details\n    - 512KB SRAM\n    - PSRAM required due to build configuration\n- 2x resistors for measuring battery voltage. Exact values are defined in [`battery.rs`](src/sysc/battery.rs) - `R1` and `R2`.\n- Battery - any generic 18650 will do\n    - Additional protection circuit recommended\n- An environment sensor\n    - Temperature reading support (**required**)\n    - Humidity reading support (**required**)\n    - _Optional_:\n        - Air pressure reading support\n    - I2C interface\n\n### Software requirements (for building):\n- [Rust](https://rustlang.org/)\n- [ESP32 Rust toolchain](https://esp-rs.github.io/book/)\n- [espflash](https://github.com/esp-rs/espflash)\n  - You will need both `espflash` and `cargo-espflash`.\n- [ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/v5.5.4/esp32s3/get-started/linux-macos-setup.html#get-started-prerequisites)\n  - The project currently is version locked to `v5.5.3`.\n- An instance of the PixelWeather Messaging Protocol (PWMP) server.\n  - Repository [here](https://github.com/PixelWeatherProject/pwmp-server).\n\n### Building info\nBuilding was tested on Linux and macOS. Windows has not been tested, and is not supported. You can use a VM or WSL (better) as an alternative.\n\nCompilation time can be quite long, depending on your machine and internet connection. On an older machine it can take 5-10 minutes, while on a newer one it can be as low as 2-3 minutes.\n\nA minimum of 10GB of free disk space is recommended. A fresh copy of the project with a debug and release build can take up to 7GB of space.\nDuring development and after several incremental builds, this can grow up to 10-12GB.\nTo fully clean the project use `cargo clean` and `rm -rf .embuild`.\n\n### Recommended hardware\nFor a generally stable, safe and reliable experience, you should stick to reputable a higher-quality brands. Below are the listed recommendations for all categories of hardware.\n\n#### ESP32S3 boards\nAs of now, this firmware has been tested with:\n- [x] [LILYGO T7 S3 v1.2](https://lilygo.cc/products/t7-s3)\n  - ⭐ Recommended\n- [x] [Arduino Nano ESP32](https://store.arduino.cc/en-sk/products/nano-esp32)\n- [x] [Seeed Studio XIAO ESP32S3](https://wiki.seeedstudio.com/xiao_esp32s3_getting_started/)\n  - ⚠️ Not recommended, see board-specific details.\n\nIt's recommended to use hardware from reputable brands such as Adafruit, SparkFun, DFRobot, etc. These are generally more expensive but also higher quality.\n\n#### Environment sensors\nAs of now, this firmware has been tested with:\n- [Adafruit Si7021 Temperature \u0026 Humidity Sensor](https://www.adafruit.com/product/3251)\n- [HTU21D from SparkFun](https://www.sparkfun.com/products/retired/12064)\n- [BME280 from Bosch](https://www.bosch-sensortec.com/en/products/environmental-sensors/humidity-sensors-bme280)\n\n#### Recommended batteries\n\u003e **⚠️WARNING⚠️**\n\u003e\n\u003e Lithium-ion batteries can be *highly dagerous*, **explosive** and a *fire hazard*!\n\u003e Handle them with care!\n\u003e\n\u003e It's recommended that you use models **with built-in protection**. Note that this does **not make them completely safe**.\n\n- [x] [XTAR 18650 4000mAh (protected) - 10A](https://www.nkon.nl/en/xtar-18650-4000mah-protected-10a.html)\n  - ⭐ Recommended - high capacity, legitimate brand and built-in protection\n\n## Code structure\n- [`src/firmware.rs`](/src/firmware.rs) - This is the entry point for the firmware. If you want to explore this project, you should start from here.\n- [`src/main.rs`](/src/main.rs) - The main entry point, it's responsible for initializing core components.\n- [`src/sysc/`](/src/sysc/) - Contains components of PWOS\n- [`src/config/`](src/config/) - Contains configuration definitions for the firmware.\n\n## Drivers\nAll drivers for external hardware are in [`src/sysc/ext_drivers`](src/sysc/ext_drivers).\n\nCurrently, the following drivers are implemented:\n- [HTU-compatible driver](src/sysc/ext_drivers/htu.rs) - Supports HTU21D, Si7021 and similar sensors. Expects address `0x40`.\n- [BME280 driver](src/sysc/ext_drivers/bme280.rs) - Supports the BME280 sensor only. Expects addresses `0x77` or `0x76`.\n\nYou could also implement your own driver, however the sensor must support temperature **and** humidity measuring at minimum. Your driver then must implement the [`EnvironmentSensor`](src/sysc/ext_drivers/envsensor_trait.rs) trait.\n\nWhen implementing a driver, it is recommended to also implement model detection, so that the firmware can warn the user if they have a potentially incompatible sensor.\n\nUsing multiple environment sensors is **not** supported. The firmware will use the first sensor it finds (which is typically the one with the lowest I2C address). This also means that every I2C hardware must use a different address.\n\n## Other hardware\nThe project currently only supports the ESP32. There are no plans to support any other MCU.\n\n## Power\nConsumption measurements:\n| **Board**        | **Sensor**      | **Test voltage**     | **Running** | **Sleeping** | **Peak**            | **Notes**   |\n| ---------------- | --------------- | -------------------- | ----------- | ------------ | ------------------- | ----------- |\n| LILYGO T7S3 v1.2 | Adafruit Si7021 | 5V\u003csup\u003e*\u003c/sup\u003e (USB) | ~140mA      | 0.75mA       | N/A                 | N/A         |\n| LILYGO T7S3 v1.2 | Adafruit Si7021 | 4.2V\u003csup\u003e**\u003c/sup\u003e    | 112mA       | 904μA        | 438mA\u003csup\u003e***\u003c/sup\u003e | Using PPKII |\n\n\u003cdetails\u003e\n  \u003csummary\u003eNotes\u003c/summary\u003e\n  \n  - `*`: There seems to be a large voltage drop from the USB connector. The measured voltage on the 5V was *4.352V*.\n  - `**`: Powered through the 5V *output* pin, using a [Nordic Semiconductor Power Profiler Kit II](https://www.nordicsemi.com/Products/Development-hardware/Power-Profiler-Kit-2).\n  - `***`: Only during WiFi communication\n\u003c/details\u003e\n\nBattery life measurements:\n| **Board**        | **Sensor**      | **Battery model** | **Capacity** | **Environment**  | **Sleep time** |  **Time**  |\n| ---------------- | --------------- | ----------------- | ------------ | ---------------- | :------------: | :--------: |\n| LILYGO T7S3 v1.2 | Adafruit Si7021 | XTAR 18650        | 4Ah          | Outdoor (2-21°C) |       1m       | 6d/22h/17m |\n| LILYGO T7S3 v1.2 | Adafruit Si7021 | XTAR 18650        | 4Ah          | Outdoor (2-21°C) |       1m       | 7d/8h/23mi |\n\nThe default battery voltage measurement configuration has a measured inaccuracy of ±2-6mV. The inaccuracy is higher at higher input voltages, which is to be expected due to the ESP32S3's ADC not being fully linear.\n\n## Building\n1. Make sure that `sdkconfig.debug` and `sdkconfig.release` are correct for your specific board.\n2. Check if the firmware uses the correct GPIO pins for I2C and on-board LED.\n3. Follow the toolchain setup in [Espressifs Rust Book](https://esp-rs.github.io/book/)\n4. Create a custom `sys.rs` config using the [example](src/config/sys.rs.example).\n5. Use `cargo build` to compile the firmware.\n6. Use the commands below to build an image or flash the firmware.\n\nIf you just want to build the image, use the following command (for example):\n```sh\ncargo espflash save-image --features $BOARD --partition-table partitions.csv --frozen --locked --release --chip esp32s3 --merge -s 16mb image.bin\n```\n\nTo directly flash the firmware, use the command below. **Remember to change the serial port for your machine.**\n```sh\ncargo espflash flash --features $BOARD --partition-table partitions.csv --frozen --locked --release -c esp32s3 -s 16mb--noverify --erase-data-parts otadata -B 921600 -p /dev/ttyXXXX\n```\n\nIf you notice weird/buggy bevaiour, you can erase the entire flash like so:\n```sh\ncargo espflash erase-flash -c esp32s3 -p /dev/ttyACM0 -B 921600\n```\n\u003cdetails\u003e\n  \u003csummary\u003e⚠️ Note for Arduino Nano ESP32\u003c/summary\u003e\n  \n  After erasing the flash you may not be able to flash the board with Arduino IDE. You'll need to re-burn the bootloader.\n\u003c/details\u003e\n\n### Additional arguments\nDepending on which ESP32S3 development board you're using, you may need to add additional arguments to the two example commands above (especially `flash`).\n- `-c esp32s3`\n- `-s 16mb` / `-s 8mb` - For 16MB and 8MB of flash respectively.\n- `--features` - Check section below.\n\nTo build a debug image (or flash it) remove the `--release` flag from the above commands.\n\n### Board-specific configuration\n\u003cdetails\u003e\n  \u003csummary\u003eLILYGO T7 S3 v1.2\u003c/summary\u003e\n\n  ## Note\n  This board has performed well during tests, even when powered over the 5V *output* pin.\n  \n  ### ESP SDK configuration \n  The provided `sdkconfig.debug` and `sdkconfig.release` configurations are designed for this board by default.\n  No changes are needed.\n\n  ### GPIO Pins\n  The default pin configuration of PWOS is designed for this board. No changes are needed. You may also leave out the `--features` flag for `espflash`.\n  \n  - On-board LED: `GPIO_17`\n  - I2C SDA: `GPIO_5`\n  - I2C SCL: `GPIO_8`\n  - Battery measurement: `GPIO_2`\n  \n  ### `espflash` commands\n  - For saving as image:\n    - `cargo espflash save-image --features lilygo-t7s3 --frozen --locked --release --partition-table partitions.csv -s 16mb --chip esp32s3 image.bin`\n  - For flashing:\n    - `cargo espflash flash --features lilygo-t7s3 --frozen --locked --release --partition-table partitions.csv -s 16mb -c esp32s3 -B 921600 -p /dev/ttyXXXX -M --no-verify --erase-data-parts ota`\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eArduino Nano ESP32\u003c/summary\u003e\n  \n  ### ESP SDK configuration \n  In both `sdkconfig.debug` and `sdkconfig.release` uncomment/add the following entries:\n  ```\n  CONFIG_RTC_CLK_SRC_EXT_CRYS=y\n  ```\n\n  ### GPIO Pins\n  The on-board LED is on a different pin.\n  - On-board LED: `GPIO_48`\n  - I2C SDA: `GPIO_5`\n  - I2C SCL: `GPIO_8`\n  - Battery measurement: `GPIO_2`\n  \n  ### `espflash` commands\n  - For saving as image:\n    - `cargo espflash save-image --features arduino-nano-esp32 --frozen --locked --release --partition-table partitions.csv -s 16mb --chip esp32s3 image.bin`\n  - For flashing:\n    - `cargo espflash flash --features arduino-nano-esp32 --frozen --locked --release --partition-table partitions.csv -s 16mb -c esp32s3 -B 921600 -p /dev/ttyXXXX -M --no-verify --erase-data-parts ota`\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eSeeed Studio XIAO ESP32S3\u003c/summary\u003e\n\n  ### Note\n  This board has **not** performed well during tests. It had many connectivity issues as well as many watchdog resets for an unknown reason, even if it was very close to an AP. This behavior did not change regardless if the board was powered over the 5V *output* pin, nor the intended battery input. It's **not** recommended to use this board.\n  \n  ### ESP SDK configuration \n  The provided `sdkconfig.debug` and `sdkconfig.release` configurations are designed for this board by default.\n  No changes are needed.\n\n  ### GPIO Pins\n  The on-board LED is on a different pin, and its negative terminal is connected to the GPIO pin, meaning it works with inverted logic.\n  \n  - On-board LED: `GPIO_21`\n  - I2C SDA: `GPIO_5`\n  - I2C SCL: `GPIO_8`\n  - Battery measurement: `GPIO_2`\n  \n  ### `espflash` commands\n  - For saving as image:\n    - `cargo espflash save-image --features xiao-s3 --frozen --locked --release --partition-table partitions.csv -s 8mb --chip esp32s3 image.bin`\n  - For flashing:\n    - `cargo espflash flash --features xiao-s3 --frozen --locked --release --partition-table partitions.csv -s 8mb -c esp32s3 -B 921600 -p /dev/ttyXXXX -M --no-verify --erase-data-parts ota`\n\u003c/details\u003e\n\n## Build variants\nFirmware size (as of commit `9ad1b07`):\n- Release build: `914,144/4,096,000 bytes, 22.32%`\n- Debug build: `1,159,344/4,096,000 bytes, 28.30%`\n\nDebug builds may be slower and contain a lot of debug messages. As such they are slightly larger.\n\nSome parts of the flash memory are reserved for other data than PWOS itself. 16KB are reserved for [NVS](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/storage/nvs_flash.html?highlight=nvs) storage. Read more [here](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/partition-tables.html#built-in-partition-tables).\n\n## Stability\n__Latest verified stable version: `2.0.8`__\n\nA version is deemed \"stable\" if it runs without interruptions/buggy behaviour for at least 1 month.\n\n## Example logs from runs\n\n\u003cdetails\u003e\n  \u003csummary\u003eRelease build\u003c/summary\u003e\n\n  ```\n  INFO  [pwos] PixelWeatherOS v2.0.2-b8c53b3-devel (04.04.2025 08:46:51)\n  INFO  [pwos] (C) Fábián Varga 2025\n  INFO  [pwos] Staring main\n  WARN  [pwos::firmware] Got empty node settings, using defaults\n  WARN  [pwos::firmware] Battery voltage measurement may be affected by USB power\n  INFO  [pwos::firmware] Battery: 0.43V\n  INFO  [pwos::firmware] 22.83*C / 62%\n  INFO  [pwos::firmware] No update available\n  INFO  [pwos] Tasks completed successfully\n  INFO  [pwos] Tasks completed in 4.45s\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eDebug build\u003c/summary\u003e\n\n  ```\n  INFO  [pwos] PixelWeatherOS v2.0.2-b8c53b3-devel (04.04.2025 08:59:00)\n  INFO  [pwos] (C) Fábián Varga 2025\n  DEBUG [pwos] Using ESP-IDF v5.3.2\n  DEBUG [pwos] Disabling brownout detector\n  DEBUG [pwos] Initializing system peripherals\n  DEBUG [pwos::sysc::periph] Initializing base peripherals\n  DEBUG [pwos::sysc::periph] Initializing System Event Loop\n  DEBUG [pwos] Initializing system LED\n  DEBUG [pwos] Setting panic handle\n  DEBUG [pwos] Initializing OTA system\n  DEBUG [pwos] Reported current version: 2.0.1\n  DEBUG [pwos] Previous installed version: ?\n  DEBUG [pwos] Initializing system Battery\n  DEBUG [pwos] Initializing I2C bus\n  DEBUG [pwos] Initializing app configuration\n  INFO  [pwos] Staring main\n  DEBUG [pwos::firmware] Starting WiFi setup\n  DEBUG [pwos::firmware] Initializing WiFi\n  DEBUG [pwos::sysc::net::wifi] Configuring WiFi interface\n  DEBUG [pwos::sysc::net::wifi] Starting WiFi interface\n  DEBUG [pwos::sysc::net::wifi] Setting country code\n  DEBUG [pwos::firmware] Starting WiFi scan\n  DEBUG [pwos::firmware] Found networks: [\"REDACTED\"] in 2.50s\n  DEBUG [pwos::firmware] Connecting to REDACTED (-50dBm)\n  DEBUG [pwos::sysc::net::wifi] Starting connection to AP\n  DEBUG [pwos::sysc::net::wifi] Waiting for connection result\n  DEBUG [pwos::sysc::net::wifi] Waiting for IP address\n  DEBUG [pwos::firmware] Connected in 1.39s\n  DEBUG [pwos::firmware] IP: 192.168.0.199\n  DEBUG [pwos::firmware] Connecting to PWMP\n  DEBUG [pwos::firmware] Sending handshake request\n  DEBUG [pwos::firmware] Requesting app configuration\n  DEBUG [pwos::firmware] Reading settings\n  WARN  [pwos::firmware] Got empty node settings, using defaults\n  DEBUG [pwos::firmware] Settings updated\n  WARN  [pwos::firmware] Battery voltage measurement may be affected by USB power\n  INFO  [pwos::firmware] Battery: 0.42V\n  DEBUG [pwos::firmware] Found device @ I2C/0x40\n  DEBUG [pwos::firmware] Detected HTU-compatible sensor\n  DEBUG [pwos::sysc::ext_drivers::htu] Loading driver\n  WARN  [pwos::sysc::ext_drivers::htu] Air pressure is not supported\n  INFO  [pwos::firmware] 23.10*C / 59%\n  DEBUG [pwos::firmware] Posting measurements\n  DEBUG [pwos::firmware] Posting stats\n  DEBUG [pwos::firmware] Reset reason (USBPeripheral) is normal\n  DEBUG [pwos::firmware] No error detected from previous run\n  DEBUG [pwos::sysc::ota] Skipping report check on verified firmware\n  DEBUG [pwos::firmware] No update report needed\n  DEBUG [pwos::firmware] Checking for updates\n  INFO  [pwos::firmware] No update available\n  DEBUG [pwos::sysc::net::wifi] Deinitializing WiFi\n  INFO  [pwos] Tasks completed successfully\n  INFO  [pwos] Tasks completed in 4.56s\n  DEBUG [pwos] Sleeping for 60s\n  DEBUG [pwos] Using fake sleep instead of deep sleep\n  ```\n\u003c/details\u003e\n\n## Caveats\nThis section contains information about the current and possible limitations of this firmware. If you are having issues, you should read this.\n\n### Building/Compilation/Deployment\n- If you're planning to flash the firmware and use it \"in production\", you should always use release builds. Just pass `--release` to `cargo build` **and** `cargo espflash`.\n- For troubleshooting, you should use debug builds, as they have more verbose logging.\n- Make sure to use the given partition layout ([`partitions.csv`](partitions.csv)) by passing `--partition-table partitions.csv` to `cargo espflash`. The default partition layout has a way too small `app` partition.\n- Some lower-quality USB cables may require a lower baud rate. Use `115200` if `921600` does not work for you.\n\n### General\n- The maximum battery voltage (with the default resistor values in [`src/sysc/battery.rs`](src/sysc/battery.rs)) should be `969.23mV`.\n- If you change the default resistor values, make sure to also adjust the ADC attenuation value [accordingly](https://docs.espressif.com/projects/esp-idf/en/v4.4/esp32s3/api-reference/peripherals/adc.html#adc-attenuation).\n- While the order in which you connect the `R1` and `R2` resistors (for measuring battery voltage) **matters**, PWOS will detect this and auto-correct the measurement. **It is however recommended that you fix this to prevent potential damage to your MCU.**\n\n### WiFi/Networking/Connectivity\n- Hidden WiFi networks are **not** supported.\n- Unencrypted WiFi networks are **not** supported.\n- It's recommended to ensure that the RSSI (signal strength) is no less than *-70dBm*. Some boards can handle worse scenarios, but others may experience connectivity issues.\n- WiFi credentials are stored in code, instead of NVS because it's design is way too simple and limited to properly store the kind of configuration PWOS needs. This would require some hacky workarounds, and adjusting the OTA system to allow updating the credentials.\n- When scanning for APs, the firmware uses the default scan configuration if ESP-IDF. This configuration has minimal enough to severely limit the maximum scan duration to preserve as much power as possible. However, this comes at a cost - you AP/s might not be detected fast enough. If this is a problem for you, you can try the following:\n  1. Lower the [*Beacon Interval*](https://www.7signal.com/news/blog/controlling-beacons-boosts-wi-fi-performance) in your AP's settings. This is usually set to 100(ms), but you can lower this to (for e.g.) 50. **Don't mess with these settings if you don't know what you're doing!**\n     - In OpenWRT you can find this under *Network* \u003e *Wireless* \u003e *Edit* (your AP) \u003e *Advanced Settings*\n     - In AsusWRT/Merlin you can find this under *Advanced Settings* \u003e *Wireless* \u003e *Professional* \u003e (select 2.4GHz band if needed)\n- Support for *Management Frame Protection* (*IEEE 802.11w-2009*) is disabled to improve connection times.\n\n## Terms\n- *node* - A station that consists of PWOS-compatible hardware and runs PWOS. It collects weather information and sends it over PWMP to a remote server.\n- *sysconfig*/*system configuration* - Board-specific configuration with pin definitions. Should be in `src/config.sys.rs`. For an example configuration, check [`src/config/sys.rs.example`](src/config/sys.rs.example)\n- *appconfig*/*application configuration* - Defines how PWOS behaves, e.g. whether it should check battery voltages, how long should the node sleep, etc. This configuration is defined in the PWMP database.\n- *sBOP*/*software-based battery overdischarge protection* - Permanently shuts down the node if the battery voltage drops below a critical value.\n- *OTA*/*Over-the-Air (updates)* - Firmware updates that are delivered wirelessly to the nodes.\n\n## Emulation\nYou can download prebuilt binaries of Espressif's QEMU fork from [here](https://github.com/espressif/qemu/releases). However as of now, PWOS cannot be emulated. You will get a panic on boot. This is likely due to the emulator not being able to emulate the WiFi hardware.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpixelweatherproject%2Fpwos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpixelweatherproject%2Fpwos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpixelweatherproject%2Fpwos/lists"}