diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 3440309..e1d62d4 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,23 +1,13 @@ name: Bug/Issue report -description: Report a issue related to the Roborock Local Server stack +description: Report an issue related to the Roborock Local Server stack labels: ["bug/issue"] body: - type: markdown attributes: value: >- - Thanks for taking the time to file a bug/issue! If instead you just want to - confirm the server/onboarding works (or does not work) on your device, please use - the [Compatibility Discussions - category](https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility) - rather than opening an issue. - - - type: checkboxes - id: confirm-issue - attributes: - label: This is a real issue? - options: - - label: I have confirmed this is a issue, not a report that the project works on my device. - required: true + Use this form for a problem you need help investigating. To share a + compatibility result, use the + [compatibility report form](https://github.com/Python-roborock/local_roborock_server/issues/new?template=compatibility.yml). - type: textarea id: what-happened diff --git a/.github/ISSUE_TEMPLATE/compatibility.yml b/.github/ISSUE_TEMPLATE/compatibility.yml new file mode 100644 index 0000000..567cdcb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/compatibility.yml @@ -0,0 +1,68 @@ +name: Device compatibility report +description: Share a tested vacuum model, firmware, and certificate result +title: "Compatibility report: " +body: + - type: markdown + attributes: + value: >- + Check the [tested vacuums list](https://github.com/Python-roborock/local_roborock_server/blob/main/docs/tested_vacuums.md) + for existing results. Share what you tested so we can update it. + If you need help investigating a failure, use the bug report form instead. + + - type: input + id: vacuum + attributes: + label: Vacuum model + description: Include the model identifier if available. + placeholder: Roborock S8 / roborock.vacuum.a51 + validations: + required: true + + - type: input + id: firmware + attributes: + label: Firmware version + description: Copy the exact version shown for the vacuum, or say if it is unknown. + placeholder: "02.17.42" + validations: + required: true + + - type: input + id: version + attributes: + label: Server version + description: Include the release or image tag and any custom changes. + placeholder: v1.1.0, Home Assistant add-on + validations: + required: true + + - type: input + id: certificate + attributes: + label: Certificate issuer and chain + description: >- + For example, ZeroSSL, Actalis, Let's Encrypt, or SSL.com. Include the chain + if known. Cloudflare DNS or ACME alone does not identify the issuer; + say unknown if you cannot check it. + validations: + required: true + + - type: textarea + id: result + attributes: + label: What worked or failed? + description: >- + Describe whether onboarding completed and whether you could control the + vacuum from Home Assistant or the Roborock app. Include any limitations. + validations: + required: true + + - type: textarea + id: setup + attributes: + label: Setup and workarounds + description: >- + Mention Docker or the Home Assistant add-on, any reverse proxy, and any + changes needed to make it work. Link an existing issue or PR if relevant. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index f6f5e90..fafb1b3 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,7 @@ blank_issues_enabled: false contact_links: - - name: Device compatibility report - url: https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility + - name: Tested vacuums + url: https://github.com/Python-roborock/local_roborock_server/blob/main/docs/tested_vacuums.md about: >- - Confirming the server works (or does not work) on your vacuum? That goes in - the Compatibility Discussions category, not in Issues. Please share your - model, firmware, and which certificate chain you used so others can benefit. + Check reported models, firmware versions, and certificate results before + submitting a compatibility report. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d1e7f78..2365cbd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,14 +8,14 @@ If you would like to contribute there are a few ways that would be great! ## Where does my report go? -To keep Issues focused and actionable, there are three destinations depending on what you have: +Choose the form that matches your contribution: - **Found a bug?** → Open an [Issue](https://github.com/Python-roborock/local_roborock_server/issues/new/choose). - Use the bug report form and confirm it is a real issue, not a "works on my device" note. -- **Confirming (or ruling out) that the server runs on your vacuum?** → Post in the - [Compatibility Discussions category](https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility). - Please include your model, firmware, and which certificate chain you used. These reports do **not** - belong in Issues. + Use the bug report form for a problem you need help investigating. +- **Confirming (or ruling out) that the server runs on your vacuum?** → Open a + [compatibility report](https://github.com/Python-roborock/local_roborock_server/issues/new?template=compatibility.yml). + Include your exact model, firmware, server version, certificate issuer, and what worked or failed. + Mention any workarounds needed for the result. - **Have a confirmed, reproducible result to record?** → Open a pull request adding a row to [Tested Vacuums.md](/docs/tested_vacuums.md) so the next person can find it quickly. diff --git a/docs/tested_vacuums.md b/docs/tested_vacuums.md index 0f44994..031821f 100644 --- a/docs/tested_vacuums.md +++ b/docs/tested_vacuums.md @@ -2,7 +2,7 @@ Check this page alongside [Installation](installation.md) and [Onboarding](onboarding.md) if you are trying to confirm whether your model is expected to work. -For most users, start with ZeroSSL. Actalis is mainly recommended for older vacuums or for models that already have reports showing better compatibility with the Actalis chain. Some newer vacuums can also handle any cert you throw at it! +For most users, start with ZeroSSL. Actalis is mainly recommended for older vacuums or for models that already have reports showing better compatibility with the Actalis chain. Results below apply to the reported firmware and certificate chain; other versions or chains may behave differently. ## Buying a New Vacuum? @@ -22,13 +22,22 @@ These models have not yet been confirmed working. Version `1.1.0` adds V2 onboarding support; please report your model, firmware, and certificate chain if you try one. -- Roborock Qrevo Curv 2 Pro -- Saros 20 -- Roborock Qrevo S Pro +- [Roborock Qrevo Curv 2 Pro](https://github.com/Python-roborock/local_roborock_server/issues/47) +- [Saros 20 / Saros 20X](https://github.com/Python-roborock/local_roborock_server/issues/47) +- [Roborock Qrevo S Pro](https://github.com/Python-roborock/local_roborock_server/issues/67) - Qrevo Curv 2 Flow -- Qrevo CurvX - Saros Z70 +Failing reports made before `1.1.0` need retesting on those devices and firmware versions. + +## Known Failures + +These reports remain unresolved: + +| Vacuum | Firmware | Result | Report | +|---|---|---|---| +| Roborock Q7 TF+ | Not reported | Onboarding fails; uses a different protocol from the V2 models supported in `1.1.0`. | [#48](https://github.com/Python-roborock/local_roborock_server/issues/48) | + ## Supported Vacuums The following vacuums are confirmed working: @@ -36,30 +45,59 @@ The following vacuums are confirmed working: Legend: - Check mark: reported working -- Cross: reported not working -- Question mark: not reported yet - -| Vacuum | Firmware | ZeroSSL / Cloudflare | Actalis | Let's Encrypt | SSL.com | -|---|---:|---:|---:|---:|---:| -| Roborock S5 Max | Not reported | ❌ | ✅ | ❌ | ❓ | -| Roborock S7 | Not reported | ❓ | ✅ | ❌ | ✅ | -| Roborock S7 MaxV | Not reported | ✅ | ❓ | ✅ | ❓ | -| Roborock S8 | Not reported | ❓ | ❓ | ❓ | ❓ | -| Roborock S8 MaxV Ultra | Not reported | ✅ | ❓ | ❓ | ❓ | -| Roborock S8 Pro Ultra (a70) | Not reported | ❓ | ❓ | ❓ | ❓ | -| Roborock Saros 10R | `02.52.32` | ✅ | ❓ | ✅ | ❓ | -| [Roborock Saros 20 Sonic (a279)](https://github.com/Python-roborock/local_roborock_server/pull/84#issuecomment-5701936113) | `02.42.52` | ✅ | ❓ | ❓ | ❓ | -| [QRevo Edge 2 Set (a298)](https://github.com/Python-roborock/local_roborock_server/pull/84#issuecomment-5684924538) | `02.15.44` | ❓ | ❓ | ✅ | ❓ | -| Roborock G30U | `02.52.32` | ✅ | ❓ | ❓ | ❓ | -| Roborock Qrevo S5V | Not reported | ❓ | ❓ | ❓ | ❓ | -| QRevo MaxV | Not reported | ✅ | ❓ | ✅ | ❓ | -| QRevo Master | `02.28.26` | ❓ | ❓ | ✅ | ❓ | -| QRevo Plus | Not reported | ✅ | ❓ | ❓ | ❓ | +- Cross: reported not working with that certificate setup +- Question mark: certificate result not reported + +Cloudflare can provide DNS validation for several certificate issuers. Its use alone does not establish which issuer was tested. Working reports without a named issuer retain question marks in the certificate columns. + +| Vacuum | Firmware | ZeroSSL | Actalis | Let's Encrypt | SSL.com | Reports | +|---|---:|---:|---:|---:|---:|---| +| Roborock S5 Max | Not reported | ❌ | ❓ | ❌ | ❓ | [#3](https://github.com/Python-roborock/local_roborock_server/issues/3) | +| Roborock S5 Max | `02.16.62` | ❓ | ✅ | ❓ | ❓ | [#3](https://github.com/Python-roborock/local_roborock_server/issues/3#issuecomment-5450368775) | +| Roborock S7 | Not reported | ❓ | ✅ | ❌ | ✅ | [#3](https://github.com/Python-roborock/local_roborock_server/issues/3) | +| Roborock S7 MaxV | Not reported | ❓ | ❓ | ✅ | ❓ | — | +| Roborock S7 MaxV | `2.59.36` | ✅ | ❓ | ❓ | ❓ | [#49](https://github.com/Python-roborock/local_roborock_server/issues/49) | +| Roborock S7 Max Ultra | `02.26.80` | ❓ | ❓ | ✅ | ❓ | [#79](https://github.com/Python-roborock/local_roborock_server/issues/79#issuecomment-5637657592) | +| Roborock S7 Pro Ultra (a62) | Not reported | ❓ | ✅ | ❌ | ❓ | [#65](https://github.com/Python-roborock/local_roborock_server/pull/65) | +| Roborock S8 (a51) | `02.14.48` | ❌ | ❓ | ✅ | ❌ | [#46](https://github.com/Python-roborock/local_roborock_server/issues/46#issuecomment-5456737057) | +| Roborock S8 (a51) | `02.17.42` | ✅ | ❓ | ✅ | ❓ | [#46](https://github.com/Python-roborock/local_roborock_server/issues/46) | +| Roborock S8+ (a51) | `02.17.42` | ❓ | ❓ | ✅ | ❓ | [#66](https://github.com/Python-roborock/local_roborock_server/pull/66#issuecomment-5401631314) | +| Roborock S8 MaxV Ultra | `02.37.38` | ✅ | ❓ | ❓ | ❓ | [#49](https://github.com/Python-roborock/local_roborock_server/issues/49) | +| Roborock S8 Pro Ultra (a70) | Not reported | ❓ | ❓ | ❓ | ❓ | — | +| Roborock Saros 10R | `02.50.56` | ❓ | ❓ | ❓ | ❓ | [#78](https://github.com/Python-roborock/local_roborock_server/issues/78) | +| Roborock Saros 10R | `02.52.32` | ✅ | ❓ | ✅ | ❓ | — | +| Roborock Saros 10R (a144) | `02.52.86` | ❓ | ❓ | ✅ | ❓ | [#57](https://github.com/Python-roborock/local_roborock_server/issues/57), [#61](https://github.com/Python-roborock/local_roborock_server/issues/61) | +| Roborock Saros 20 Sonic (a279) | `02.42.52` | ✅ | ❓ | ❓ | ❓ | [#84](https://github.com/Python-roborock/local_roborock_server/pull/84#issuecomment-5701936113) | +| Roborock G30U | `02.52.32` | ✅ | ❓ | ❓ | ❓ | — | +| Roborock Q5 Pro | `2.04.06` | ❓ | ❓ | ✅ | ❓ | [#56](https://github.com/Python-roborock/local_roborock_server/issues/56) | +| Roborock Q8 Max | `02.06.86` | ❓ | ❓ | ✅ | ❓ | [#70](https://github.com/Python-roborock/local_roborock_server/issues/70) | +| QRevo | `02.20.60` | ❓ | ❓ | ✅ | ❓ | [#75](https://github.com/Python-roborock/local_roborock_server/pull/75) | +| QRevo Curv | `02.28.60` | ❓ | ❓ | ✅ | ❓ | [#60](https://github.com/Python-roborock/local_roborock_server/issues/60) | +| QRevo CurvX | `02.35.88` | ✅ | ❓ | ❓ | ❓ | [#64](https://github.com/Python-roborock/local_roborock_server/issues/64) | +| QRevo Edge | `02.22.52` | ❓ | ❓ | ✅ | ❓ | [#90](https://github.com/Python-roborock/local_roborock_server/issues/90) | +| QRevo Edge 2 Set (a298) | `02.15.44` | ❓ | ❓ | ✅ | ❓ | [#84](https://github.com/Python-roborock/local_roborock_server/pull/84#issuecomment-5684924538) | +| QRevo MaxV | Not reported | ✅ | ❓ | ✅ | ❓ | — | +| QRevo Master (a117) | `02.28.26` | ❓ | ❓ | ✅ | ✅ | [#57](https://github.com/Python-roborock/local_roborock_server/issues/57), [#82](https://github.com/Python-roborock/local_roborock_server/pull/82) | +| QRevo Plus | Not reported | ✅ | ❓ | ❓ | ❓ | — | +| QRevo S5V (a170) | `02.09.70` | ❓ | ❓ | ❓ | ❓ | [#52](https://github.com/Python-roborock/local_roborock_server/issues/52#issuecomment-4826867624) | +| QRevo S5V (a170) | `02.16.64` | ❓ | ❓ | ✅ | ❓ | [#52](https://github.com/Python-roborock/local_roborock_server/issues/52) | +| QX Revo Plus (Costco version) | Not reported | ❓ | ❓ | ✅ | ❓ | [#89](https://github.com/Python-roborock/local_roborock_server/pull/89) | + +Setup notes: + +- S7 Pro Ultra: the Actalis success used an RSA-2048 certificate. The Let's Encrypt failure was reported with an R3/E1 chain. +- Saros 10R `02.50.56`: the reported pfSense/HAProxy setup used provided certificates and the MITM redirect fix in [PR #77](https://github.com/Python-roborock/local_roborock_server/pull/77). +- QRevo Curv: the reporter worked around an app redirect port issue, also tracked by [PR #77](https://github.com/Python-roborock/local_roborock_server/pull/77). +- QRevo Master: the SSL.com result used a Sectigo Public Server Authentication CA DV R36 chain and a workaround for the proxy MQTT onboarding issue in [#83](https://github.com/Python-roborock/local_roborock_server/issues/83). ## Unlisted Vacuums If your model is not listed, start with ZeroSSL unless it is an older model that is likely to need a different trusted chain. If onboarding fails after the DNS and server checks pass, try Actalis or a provided certificate and report the result. +## Report Your Result + +Use the [compatibility report form](https://github.com/Python-roborock/local_roborock_server/issues/new?template=compatibility.yml) to share your exact model, firmware, server version, certificate issuer, and what worked or failed. Include any workarounds. You can also open a pull request updating this page with a link to your report. + ## Related Docs - [Installation](installation.md)