Skip to content

Conversation

@DTTerastar
Copy link
Contributor

@DTTerastar DTTerastar commented Jan 13, 2026

Improve documentation and make it match ESPresense v4.

Summary by CodeRabbit

  • Documentation
    • Added dedicated Hardware and Network configuration pages; removed Initial Settings and Sensors pages.
    • Moved Calibration and Technical guidance into a new Guides section; reorganized Troubleshooting and Settings content.
    • Reworked Settings/Configuration layout and homepage navigation into “Configuration & Setup” and Integrations; updated credits/navigation ordering.
  • Chores
    • Added automated screenshot script and related tooling entry.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 13, 2026

Walkthrough

Documentation reorganization splits settings into distinct hardware and network pages, moves calibration/technical guides into a Guides section, relocates integrations under /integrations, removes sensors and initial-settings pages, adjusts navigation metadata, and adds a Playwright-based screenshot automation script.

Changes

Cohort / File(s) Summary
Settings & Configuration
configuration/settings.md, configuration/configuration.md
Reworks settings content (renames/restructures subsections like "Scanning" → "Querying", adds/rewrites calibration and hardware notes) and updates nav_order/guidance in configuration.md.
New Configuration Pages
configuration/hardware.md, configuration/network.md
Adds hardware.md documenting LEDs, GPIO sensors (PIR, Radar/LD2410), pin types, I2C & sensors, power/debounce notes; adds network.md documenting captive portal, Wi‑Fi, MQTT, and update fields.
Removed Docs
configuration/initial-settings.md, sensors.md, troubleshooting/calibration.md
Deletes initial-settings, sensors, and the old troubleshooting calibration page (content moved/reorganized into new pages).
Guides Reorganization
guides/index.md, guides/calibration.md, guides/technical.md
Adds guides index and moves calibration/technical pages into /guides (updates front matter, image embedding, and adds troubleshooting notes in calibration).
Integrations Restructuring
integrations/index.md, integrations/home_assistant.md, integrations/homebridge.md, integrations/domoticz.md
Adds integrations index and migrates integration pages to /integrations/*, updating permalinks, parent fields, and nav_order values.
Navigation Metadata Updates
index.md, credits.md, troubleshooting/troubleshooting.md, companion/companion.md, devices.md, nodes.md, enclosures.md
Adjusts site nav ordering and reorganizes front matter; index.md content updated to add "Configuration & Setup", "Integrations", and Guides entries.
Screenshot Automation
package.json, scripts/capture-screenshots.js
Adds Playwright devDependency and an npm screenshots script; adds a Node.js script that launches Chromium, navigates local pages (/settings, /calibration wrapper, /hardware, /network), captures screenshots, and writes files with error handling.

Sequence Diagram(s)

sequenceDiagram
    participant Script as scripts/capture-screenshots.js
    participant Browser as Chromium (Playwright)
    participant Server as Local dev server
    participant FS as Filesystem

    Script->>Browser: launch browser (mobile viewport)
    Script->>Server: request /settings
    Browser->>Server: GET /settings
    Server-->>Browser: HTML/CSS/JS
    Browser->>FS: capture full-page screenshot -> `settings_screen.png`
    Script->>Server: request /settings (locate calibration section)
    Browser->>Server: GET /settings (DOM)
    Browser-->>Browser: wrap calibration section (if found)
    Browser->>FS: capture `calibration_screen.png`
    Script->>Server: request /hardware
    Browser->>Server: GET /hardware
    Browser->>FS: capture `hardware_screen.png`
    Script->>Server: request /network
    Browser->>Server: GET /network
    Browser->>FS: capture `network_screen.png`
    Script->>Browser: close browser
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰
Hop, hop, I rewrote the trail,
Pages moved and docs set sail,
LEDs and networks drawn just right,
Snap—screenshots taken in the night,
Carpets of bytes, a tidy trail.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Document ESPresense v4' directly and clearly describes the main objective of the PR—updating documentation to match ESPresense v4, which is confirmed by the PR description and the comprehensive documentation changes across multiple files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
configuration/sensors.md (1)

24-24: "GPIO pin number" is standard technical terminology.

Static analysis flagged "GPIO pin number" as redundant since "PIN" technically stands for "Personal Identification Number". However, in embedded systems and electronics documentation, "GPIO pin number" is widely understood standard terminology that clearly communicates the concept. No change needed.

Also applies to: 37-37, 45-45, 55-55, 65-65

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bc8902f and 78b02d1.

⛔ Files ignored due to path filters (1)
  • images/sensors_screen.png is excluded by !**/*.png
📒 Files selected for processing (2)
  • configuration/sensors.md
  • configuration/settings.md
🧰 Additional context used
🪛 LanguageTool
configuration/sensors.md

[style] ~24-~24: This phrase is redundant (‘N’ stands for ‘number’). Consider using “pin”.
Context: ... etc.) * Pin (-1 to disable) - GPIO pin number for the LED data line, or -1 to disable...

(PIN_NUMBER)


[style] ~37-~37: This phrase is redundant (‘N’ stands for ‘number’). Consider using “pin”.
Context: ...IR motion pin (-1 for disable)** - GPIO pin number for PIR sensor, or -1 to disable * **PI...

(PIN_NUMBER)


[style] ~45-~45: This phrase is redundant (‘N’ stands for ‘number’). Consider using “pin”.
Context: ...ar motion pin (-1 for disable)** - GPIO pin number for radar sensor, or -1 to disable * **...

(PIN_NUMBER)


[style] ~55-~55: This phrase is redundant (‘N’ stands for ‘number’). Consider using “pin”.
Context: ... Switch pin (-1 for disable) - GPIO pin number for the switch, or -1 to disable * **Sw...

(PIN_NUMBER)


[style] ~65-~65: This phrase is redundant (‘N’ stands for ‘number’). Consider using “pin”.
Context: ... Button pin (-1 for disable) - GPIO pin number for the button, or -1 to disable * **Bu...

(PIN_NUMBER)

🔇 Additional comments (3)
configuration/sensors.md (2)

1-73: Excellent documentation structure and content!

The new sensors documentation page is well-organized, comprehensive, and clearly explains all LED and GPIO sensor configuration options. The hierarchical structure, consistent formatting, and helpful tips section make this easy to follow.


13-13: Image file exists and is properly included.

The referenced image sensors_screen.png is present in the images/ directory.

configuration/settings.md (1)

47-47: Good cross-reference to maintain discoverability.

The link to the new sensors page is clear and maintains easy navigation to the relocated LED and GPIO sensor configuration documentation. The relative link format [Sensors](sensors) is correct for Jekyll pages in the same directory.

@DTTerastar DTTerastar force-pushed the main branch 5 times, most recently from f5ebb1e to 7048e05 Compare January 30, 2026 03:43
@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Feb 1, 2026

Deploying espresense with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2cae141
Status: ✅  Deploy successful!
Preview URL: https://5bd82b57.espresense.pages.dev
Branch Preview URL: https://wip.espresense.pages.dev

View logs

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@configuration/sensors.md`:
- Around line 23-26: Update the phrasing for the LED pin field to be more
concise by replacing "GPIO pin number" with "GPIO pin" wherever the Pin entry
appears (e.g., the bullet "* **Pin (-1 to disable)** - GPIO pin number for the
LED data line, or -1 to disable" and the analogous Pin bullets at the other
sections mentioned); keep the surrounding text ("-1 to disable", "for the LED
data line", etc.) unchanged so only the phrase "GPIO pin number" is renamed to
"GPIO pin" for consistency across the document.

Comment on lines +23 to +26
* **LED Type** - Select the type of addressable LED strip (WS2812, SK6812, etc.)
* **Pin (-1 to disable)** - GPIO pin number for the LED data line, or -1 to disable
* **Count (only applies to Addressable LEDs)** - Number of LEDs in the strip
* **LED Control** - Control mode for the LED behavior
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Simplify “pin number” phrasing to reduce redundancy.

Consider replacing “GPIO pin number” with “GPIO pin” for brevity and consistency across the lists.

✏️ Suggested edit
-* **Pin (-1 to disable)** - GPIO pin number for the LED data line, or -1 to disable
+* **Pin (-1 to disable)** - GPIO pin for the LED data line, or -1 to disable
...
-* **PIR motion pin (-1 for disable)** - GPIO pin number for PIR sensor, or -1 to disable
+* **PIR motion pin (-1 for disable)** - GPIO pin for PIR sensor, or -1 to disable
...
-* **Radar motion pin (-1 for disable)** - GPIO pin number for radar sensor, or -1 to disable
+* **Radar motion pin (-1 for disable)** - GPIO pin for radar sensor, or -1 to disable
...
-* **Switch pin (-1 for disable)** - GPIO pin number for the switch, or -1 to disable
+* **Switch pin (-1 for disable)** - GPIO pin for the switch, or -1 to disable
...
-* **Button pin (-1 for disable)** - GPIO pin number for the button, or -1 to disable
+* **Button pin (-1 for disable)** - GPIO pin for the button, or -1 to disable

Also applies to: 36-38, 44-46, 54-56, 64-66

🧰 Tools
🪛 LanguageTool

[style] ~24-~24: This phrase is redundant (‘N’ stands for ‘number’). Consider using “pin”.
Context: ... etc.) * Pin (-1 to disable) - GPIO pin number for the LED data line, or -1 to disable...

(PIN_NUMBER)

🤖 Prompt for AI Agents
In `@configuration/sensors.md` around lines 23 - 26, Update the phrasing for the
LED pin field to be more concise by replacing "GPIO pin number" with "GPIO pin"
wherever the Pin entry appears (e.g., the bullet "* **Pin (-1 to disable)** -
GPIO pin number for the LED data line, or -1 to disable" and the analogous Pin
bullets at the other sections mentioned); keep the surrounding text ("-1 to
disable", "for the LED data line", etc.) unchanged so only the phrase "GPIO pin
number" is renamed to "GPIO pin" for consistency across the document.

@DTTerastar DTTerastar changed the title Add sensors configuration docs Document ESPresense v4 Feb 1, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@configuration/network.md`:
- Around line 11-41: Apply minor copy and capitalization edits across the
Network doc: change "WiFi" -> "Wi‑Fi" in labels ("WiFi SSID", "WiFi Password"),
change "non encrypted mqtt server (SSL is *NOT* supported)" to "non‑encrypted
MQTT server (SSL is NOT supported)", change "Include pre-released versions in
auto-update" to "Include pre‑release versions in auto‑update", and adjust
"Seconds to wait in captive portal before rebooting" to "Seconds to wait in
captive portal before reboot" for concision; verify headings "Room
Configuration", "WiFi Configuration", "MQTT Configuration", and "Updating"
remain consistent and apply these edits to the matching bullet lines shown in
the diff.

In `@configuration/settings.md`:
- Around line 28-41: The "Counting" and "Filtering" sections in
configuration/settings.md contain multiple typos and inconsistent
capitalization; update the headings and bullets to correct spelling and casing
(e.g., change "usecase" to "use case", "gleen" to "glean", "auto discovery" to
"auto-discovery", "less that" to "less than", and capitalize vendor labels like
"apple"→"Apple" and "msft:cdp"→"Microsoft:cdp" or otherwise normalize vendor
naming), ensure consistent punctuation and sentence case across bullets, and
standardize examples such as "exp:20" formatting so both sections read clearly
and consistently under the "Counting" and "Filtering" headings.
🧹 Nitpick comments (4)
scripts/capture-screenshots.js (3)

4-5: Consider making the IP address configurable.

The hardcoded IP 192.168.129.190 limits portability. Other developers or CI environments will have different device addresses.

♻️ Suggested improvement using environment variable
-const IP = '192.168.129.190';
-const BASE_URL = `http://${IP}`;
+const IP = process.env.ESPRESENSE_IP || '192.168.129.190';
+const BASE_URL = `http://${IP}`;
+
+if (!process.env.ESPRESENSE_IP) {
+    console.warn('ESPRESENSE_IP not set, using default:', IP);
+}

21-21: Prefer waiting for specific elements over fixed timeouts.

waitForTimeout(2000) is a Playwright anti-pattern that can cause flaky behavior. Consider waiting for a specific selector that indicates content is loaded.

This also applies to lines 58 and 71.

♻️ Example improvement
-await page.waitForTimeout(2000);
+await page.waitForSelector('h2', { state: 'visible' });

27-46: DOM manipulation logic is brittle.

The Calibration section extraction relies on finding an <h2> with exact text "Calibration" and traversing siblings. If the page structure changes, this will fail silently (just logs an error). Consider adding more defensive checks or documenting the expected DOM structure.

package.json (1)

15-17: Consider pinning Playwright for explicit version control.

The project uses Playwright screenshots (scripts/capture-screenshots.js), and browser binaries change in minor version updates. While package-lock.json currently locks the exact version (1.58.1), the ^1.58.1 constraint allows upgrades when dependencies are reinstalled or regenerated. Pinning explicitly clarifies intent and prevents unintended browser changes affecting screenshot output.

🧷 Suggested pin (optional)
-    "playwright": "^1.58.1",
+    "playwright": "1.58.1",

Comment on lines 11 to 41
The ESP32 will launch a captive browser (under its own SSID) on first normal boot after flashing that will allow you to configure network settings. These settings are accessible from the **Network** page in the device web UI.

<div class="clearfix" markdown=1>

<img src="/images/network_screen.png" alt="Screenshot of ESP32 initial settings interface" style="float:right;margin-left:20px;width:200px">

## Room Configuration
* Room name - This is the name that will identify this sensor in Home Assistant, as well as the state of mqtt_room sensor. Use a upper/lower word and we'll slugify it for the places that need that

## WiFi Configuration
* WiFi SSID - Enter WiFi SSID
* Available Networks - Dynamic list of available networks
* WiFi Password - Enter WiFi Password
* Seconds to wait in captive portal before rebooting
* Ethernet Type - Select your ethernet connection type if applicable

## MQTT Configuration
* Server - MQTT Broker address (e.g. mqtt.example.com) non encrypted mqtt server (SSL is *NOT* supported)
* Port - MQTT Broker port (e.g. 1883)
* Username - Optional. Note: Since MQTT connections are unencrypted, these credentials will be transmitted in plaintext. Consider using these only in trusted networks.
* Password - Optional.
* Send to discovery topic - enables home assistant mqtt topic (/homeassistant)
* Home Assistant discovery topic prefix - customize the discovery topic prefix
* Send to telemetry topic - enables stats about availability also used by counting
* Send to devices topic - instead of all mashed together topic, this adds a device to the path (much easier to understand in mqtt explorer)

## Updating
* Automatically update - If enabled we'll ask github for the latest version and if it's not the same version as current update to it
* Include pre-released versions in auto-update - Modifies the above check to include pre-releases
* Arduino OTA Update - If enabled you can remotely flash this device using the standard (espota/arduino) protocol. Keep disabled for less memory usage, and security.
* Update URL - If set will update from this url on next boot
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Minor copy edits for clarity and capitalization.

A few small tweaks improve readability (Line 18, Line 28, Line 38, Line 40).

✍️ Suggested edits
-* Room name - This is the name that will identify this sensor in Home Assistant, as well as the state of mqtt_room sensor. Use a upper/lower word and we'll slugify it for the places that need that
+* Room name - This is the name that will identify this sensor in Home Assistant, as well as the state of mqtt_room sensor. Use an upper/lower-case word and we'll slugify it where needed

-* Server - MQTT Broker address (e.g. mqtt.example.com) non encrypted mqtt server (SSL is *NOT* supported)
+* Server - MQTT Broker address (e.g. mqtt.example.com) non-encrypted MQTT server (SSL is *NOT* supported)

-* Automatically update - If enabled we'll ask github for the latest version and if it's not the same version as current update to it
+* Automatically update - If enabled we'll ask GitHub for the latest version and if it's not the same version as current update to it

-* Arduino OTA Update - If enabled you can remotely flash this device using the standard (espota/arduino) protocol. Keep disabled for less memory usage, and security.
+* Arduino OTA Update - If enabled you can remotely flash this device using the standard (espota/arduino) protocol. Keep disabled for less memory usage and for security.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
The ESP32 will launch a captive browser (under its own SSID) on first normal boot after flashing that will allow you to configure network settings. These settings are accessible from the **Network** page in the device web UI.
<div class="clearfix" markdown=1>
<img src="/images/network_screen.png" alt="Screenshot of ESP32 initial settings interface" style="float:right;margin-left:20px;width:200px">
## Room Configuration
* Room name - This is the name that will identify this sensor in Home Assistant, as well as the state of mqtt_room sensor. Use a upper/lower word and we'll slugify it for the places that need that
## WiFi Configuration
* WiFi SSID - Enter WiFi SSID
* Available Networks - Dynamic list of available networks
* WiFi Password - Enter WiFi Password
* Seconds to wait in captive portal before rebooting
* Ethernet Type - Select your ethernet connection type if applicable
## MQTT Configuration
* Server - MQTT Broker address (e.g. mqtt.example.com) non encrypted mqtt server (SSL is *NOT* supported)
* Port - MQTT Broker port (e.g. 1883)
* Username - Optional. Note: Since MQTT connections are unencrypted, these credentials will be transmitted in plaintext. Consider using these only in trusted networks.
* Password - Optional.
* Send to discovery topic - enables home assistant mqtt topic (/homeassistant)
* Home Assistant discovery topic prefix - customize the discovery topic prefix
* Send to telemetry topic - enables stats about availability also used by counting
* Send to devices topic - instead of all mashed together topic, this adds a device to the path (much easier to understand in mqtt explorer)
## Updating
* Automatically update - If enabled we'll ask github for the latest version and if it's not the same version as current update to it
* Include pre-released versions in auto-update - Modifies the above check to include pre-releases
* Arduino OTA Update - If enabled you can remotely flash this device using the standard (espota/arduino) protocol. Keep disabled for less memory usage, and security.
* Update URL - If set will update from this url on next boot
The ESP32 will launch a captive browser (under its own SSID) on first normal boot after flashing that will allow you to configure network settings. These settings are accessible from the **Network** page in the device web UI.
<div class="clearfix" markdown=1>
<img src="/images/network_screen.png" alt="Screenshot of ESP32 initial settings interface" style="float:right;margin-left:20px;width:200px">
## Room Configuration
* Room name - This is the name that will identify this sensor in Home Assistant, as well as the state of mqtt_room sensor. Use an upper/lower-case word and we'll slugify it where needed
## WiFi Configuration
* WiFi SSID - Enter WiFi SSID
* Available Networks - Dynamic list of available networks
* WiFi Password - Enter WiFi Password
* Seconds to wait in captive portal before rebooting
* Ethernet Type - Select your ethernet connection type if applicable
## MQTT Configuration
* Server - MQTT Broker address (e.g. mqtt.example.com) non-encrypted MQTT server (SSL is *NOT* supported)
* Port - MQTT Broker port (e.g. 1883)
* Username - Optional. Note: Since MQTT connections are unencrypted, these credentials will be transmitted in plaintext. Consider using these only in trusted networks.
* Password - Optional.
* Send to discovery topic - enables home assistant mqtt topic (/homeassistant)
* Home Assistant discovery topic prefix - customize the discovery topic prefix
* Send to telemetry topic - enables stats about availability also used by counting
* Send to devices topic - instead of all mashed together topic, this adds a device to the path (much easier to understand in mqtt explorer)
## Updating
* Automatically update - If enabled we'll ask GitHub for the latest version and if it's not the same version as current update to it
* Include pre-released versions in auto-update - Modifies the above check to include pre-releases
* Arduino OTA Update - If enabled you can remotely flash this device using the standard (espota/arduino) protocol. Keep disabled for less memory usage and for security.
* Update URL - If set will update from this url on next boot
🧰 Tools
🪛 LanguageTool

[grammar] ~28-~28: Use a hyphen to join words.
Context: ...oker address (e.g. mqtt.example.com) non encrypted mqtt server (SSL is NOT supp...

(QB_NEW_EN_HYPHEN)


[uncategorized] ~38-~38: The official name of this software platform is spelled with a capital “H”.
Context: ...matically update - If enabled we'll ask github for the latest version and if it's not ...

(GITHUB)

🤖 Prompt for AI Agents
In `@configuration/network.md` around lines 11 - 41, Apply minor copy and
capitalization edits across the Network doc: change "WiFi" -> "Wi‑Fi" in labels
("WiFi SSID", "WiFi Password"), change "non encrypted mqtt server (SSL is *NOT*
supported)" to "non‑encrypted MQTT server (SSL is NOT supported)", change
"Include pre-released versions in auto-update" to "Include pre‑release versions
in auto‑update", and adjust "Seconds to wait in captive portal before rebooting"
to "Seconds to wait in captive portal before reboot" for concision; verify
headings "Room Configuration", "WiFi Configuration", "MQTT Configuration", and
"Updating" remain consistent and apply these edits to the matching bullet lines
shown in the diff.

Comment on lines +28 to +41
## Counting
This is a beta feature, it is for the usecase where a device fingerprint doesn't come up with a unique device but you can gleen useful info from the number of unique macs that are currently broadcasting within a certain distance of the base station. This is most useful for exp:20 (covid exposure apps), apple: (apple devices), or msft:cdp (microsoft devices). Once configured auto discovery will add a Count sensor to your ESPresense device.

* Include device ids - ids to count
* Start counting/stop counting (meters) - instead of a HARD line we support allowing a device to "enter" once it gets below a certain distance and only leave when going above a different larger distance. If you set them to the same value you'll get the HARD line
* Include device with age less than - Since we're just getting stateless advertisements we also need the device to "LEAVE" if not seen within a certain amount of time
* Include id prefixes (space separated)
* Start counting devices less than distance (in meters) - "Enter" distance: device counts when closer than this.
* Stop counting devices greater than distance (in meters) - "Leave" distance: device stops counting when further than this. Setting this higher than the start distance creates a hysteresis zone to prevent rapid toggling.
* Include devices with age less than (in ms) - Since we're just getting stateless advertisements we also need the device to "LEAVE" if not seen within a certain amount of time.

## Filtering

* Include only sending these ids to mqtt - Just like it says, if set ONLY ids that match this come to mqtt
* Exclude sending these ids to mqtt - If set will filter out just these ids
* Maximum distance to report - If the distance is over 16 meters, it's probably crap and not worth even including in a trilaterization attempt, so don't bother sending to mqtt
* Skip reporting if not seen (in milliseconds) / report early if beacon has moved more than this distance. The basic logic is if i've reported this recently check out how long it's been and how far we've moved. If it's been > than the distance here it will report. If its over the skip reporting ms then we'll send the report with whatever the current distance is.
* Include only sending these ids to mqtt (eg. apple:iphone10-6 apple:iphone13-2) - If set ONLY ids that match this come to mqtt.
* Exclude sending these ids to mqtt (eg. exp:20 apple:iphone10-6) - If set will filter out just these ids.
* Maximum distance to report (in meters) - If the distance is over this value (default 16m), it's likely inaccurate and not worth including in trilateration.
* Report early if beacon has moved more than this distance (in meters) - If the device moves more than this distance, report immediately.
* Skip reporting if message age is less that this (in milliseconds) - The logic is: if reported recently, check time elapsed and distance moved. If moved > "Report early" distance, report immediately. If time elapsed > "Skip reporting" time, report regardless of movement.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Tighten typos/capitalization in Counting + Filtering.

There are a few spelling/capitalization issues (e.g., “usecase”, “gleen”, “apple”, “auto discovery”, “less that”).

✍️ Suggested cleanup
-This is a beta feature, it is for the usecase where a device fingerprint doesn't come up with a unique device but you can gleen useful info from the number of unique macs that are currently broadcasting within a certain distance of the base station. This is most useful for exp:20 (covid exposure apps), apple: (apple devices), or msft:cdp (microsoft devices). Once configured auto discovery will add a Count sensor to your ESPresense device.
+This is a beta feature. It is for the use case where a device fingerprint doesn't come up with a unique device, but you can glean useful info from the number of unique MACs that are currently broadcasting within a certain distance of the base station. This is most useful for exp:20 (COVID exposure apps), Apple: (Apple devices), or msft:cdp (Microsoft devices). Once configured, auto-discovery will add a Count sensor to your ESPresense device.

-* Skip reporting if message age is less that this (in milliseconds) - The logic is: if reported recently, check time elapsed and distance moved. If moved > "Report early" distance, report immediately. If time elapsed > "Skip reporting" time, report regardless of movement.
+* Skip reporting if message age is less than this (in milliseconds) - The logic is: if reported recently, check time elapsed and distance moved. If moved > "Report early" distance, report immediately. If time elapsed > "Skip reporting" time, report regardless of movement.
🧰 Tools
🪛 LanguageTool

[grammar] ~29-~29: Ensure spelling is correct
Context: ...g This is a beta feature, it is for the usecase where a device fingerprint doesn't come...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~29-~29: Ensure spelling is correct
Context: ...ome up with a unique device but you can gleen useful info from the number of unique m...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[uncategorized] ~29-~29: Did you mean the proper noun “Apple” (= technology company)?
Context: ...r exp:20 (covid exposure apps), apple: (apple devices), or msft:cdp (microsoft device...

(APPLE_PRODUCTS)


[grammar] ~29-~29: Use a hyphen to join words.
Context: ...microsoft devices). Once configured auto discovery will add a Count sensor to you...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
In `@configuration/settings.md` around lines 28 - 41, The "Counting" and
"Filtering" sections in configuration/settings.md contain multiple typos and
inconsistent capitalization; update the headings and bullets to correct spelling
and casing (e.g., change "usecase" to "use case", "gleen" to "glean", "auto
discovery" to "auto-discovery", "less that" to "less than", and capitalize
vendor labels like "apple"→"Apple" and "msft:cdp"→"Microsoft:cdp" or otherwise
normalize vendor naming), ensure consistent punctuation and sentence case across
bullets, and standardize examples such as "exp:20" formatting so both sections
read clearly and consistently under the "Counting" and "Filtering" headings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants