🔬 MyHOME v2.0.0b16 Pre-Release: having a firm conversation with the firmware #770
Replies: 3 comments 11 replies
|
Thanks for the release! Some feedback from my F454 with five F401 shutters (advanced: true), upgraded from 0.9.4 to 2.0.0b16 yesterday evening. For context, my shutters are 3.75 m tall and have tilting slats. When fully lowered, a short motor movement adjusts the slat angle without raising the shutter, allowing me to fine-tune the amount of light coming in. Small moves: The new 2% minimum works. A set_cover_position: 1 from fully closed was executed as 2%, reported back as 2% about a second later, and tilted the slats as expected. However, on 0.9.4, 1% movements worked reliably (roughly 0.5 seconds of motor movement) and gave me better control over the slat angle. With shutters this tall, the difference is noticeable. I understand the reason for the 2% minimum based on the Somfy measurements in #466, but it seems to depend on the motor and/or shutter heigth. Could min_position_delta be made configurable per cover, as discussed in #708? Keeping 2% as the default while allowing 1% where it works may be ideal. Happy to provide additional information or run additional tests if useful! |
|
Thanks again for the incredible traces @eC0y0te! Both captures have been ingested as verbatim fixtures with deterministic replay tests in #779, and the If you would like to test cd /config/custom_components
git clone -b feat/cover-min-position-delta --depth 1 https://github.com/OpenWebNet-HA/MyHOME.git /tmp/myhome_test \
&& rm -rf myhome.bak \
&& mv myhome myhome.bak \
&& cp -r /tmp/myhome_test/custom_components/myhome ./ \
&& rm -rf /tmp/myhome_testThen in cover:
vr_bureau_xxxxx_terrasse:
where: "21"
name: Volets Roulants Bureau xxxxx Terrasse
advanced: true
min_position_delta: 1Restart Home Assistant and try stepping the cover from fully closed ( (To revert back to your prior version at any time: |


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
🔬 MyHOME v2.0.0b16 is out: having a firm conversation with the firmware
OpenWebNet-HA/MyHOME v2.0.0b16 is tagged and ready for field testing: 83 pull requests since b15, on top of the new OWNd 2.0.0b11.
📦 Release notes and
myhome.zip: v2.0.0b16📚 Docs: openwebnet-ha.github.io/MyHOME/beta/
💬 The theme of b16: we stopped guessing and asked the firmware
For years, most of what we "knew" about OpenWebNet came from PDFs that are incomplete, and from captures on one or two plants. When a manual and a gateway disagreed, we guessed.
In b16 we asked the gateways themselves. OpenWebNet-HA/own-firmware-oracle takes official BTicino/Legrand firmware images, runs the translator programs inside them on an emulated SCS bus, and records what each gateway does with every frame we send it: does it ACK it, NACK it, put it on the bus, or quietly drop it? Only the results are published, never the firmware itself.
Where it stands today:
Then we checked the firmware's answers against real hardware, because an emulator can be wrong too. Some of what that conversation settled:
0Pform reaches an Area 0 light point (feat(light): support 2-digit Area 0 point-to-point addressing (01-09) (#684) #713).And more questions keep coming up. The WHO 13 clock frames are next (OpenWebNet-HA/own-firmware-oracle#54).
🏆 A special thank you to @gdluck
This release would not look anything like it does without @gdluck.
own-firmware-oracle. @gdluck helped along the way: they explained how the firmware images are packaged and pointed us to the MyHomeServer1 image they had used.exposeengine sends to the bus (feat(expose): add declarative HA-to-SCS bus expose engine and virtual actuator LED sync #750).The firmware-first approach, the test bench, the patches and the patience: thank you, @gdluck. 🙏
🔍 Two reviewers who checked every frame: @fedem95 and @Interstellar0verdrive
A firm conversation with the firmware only helps if someone checks the answers. This beta had two reviewers who did exactly that, pull request after pull request.
@fedem95: the OpenWebNet-HA/OWNd reviewer
@fedem95 reviewed 41 of the pull requests that went into OpenWebNet-HA/OWNd 2.0.0b11. Those reviews were never just a quick "LGTM". Each one typically:
WHO_0.pdf,WHO_1.pdf,WHO_3.pdf,WHO_16.pdf,WHO_17.pdfandWHO_18.pdf, and with BTicino'slibqtdevicessource for the compound zone address#23#1(OpenWebNet-HA/OWNd#83);Some of the things that would have shipped without those reviews:
WHO_3.pdf(OpenWebNet-HA/OWNd#104).On the OpenWebNet-HA/MyHOME side, your fresh-install report (#578) is what #742 finally solves: lights are queried on a blank install, and
myhome.yamlsettings are copied into the config entry. Your review of #661 used the #629 log andWHO_18.pdfto confirm why the dimension 1200 polls had to be replaced. And you asked for the MH201 firmware to be catalogued in the oracle (OpenWebNet-HA/own-firmware-oracle#28).@Interstellar0verdrive: the cover reviewer
Most of the cover work in b16 went through @Interstellar0verdrive (#508, #694, #702, #707, #708, #739): five rounds of requested changes, then approvals. Where they could, they replayed each change against their own MyHomeServer1 measurements and probes, and they said plainly when a review was code-only, for example for slat tilt, since they have no tilt hardware. Some of what that caught or proved:
Slat tilt (feat(cover): implement venetian blind slat tilt inching and clarify dimension 11 shutter level (#492) #508):
#001#1frame we were treating as a tilt write is really a relayed level command;All three were fixed before it merged.
Motor floor (feat(cover): per-cover motor start-up floor instead of single constant (#704) #708): setting only
min_motor_pulsewould have wiped a cover's calibrated travel times. Now it leaves them alone.Stop status (fix(cover): end timed runs on stop status instead of stop write (#705) #707): they replayed their own measured 15.2 s run, and the run is now booked as 0.92 s instead of 0.44 s (53 % → 56 %), as predicted.
Stop overtaking (feat(gateway_sessions): let a cover stop overtake unrelated queued frames (#645) #694): they checked that up, stop and down for the same cover still reach the bus in order across workers, even with zero pacing, and that the ordering ticket is released on every failure path they tried.
Cover strategies (feat(cover,light): pluggable CoverKinematicsStrategy hierarchy and low-priority fade step routing (#730) #739): they checked that all the feat(cover): motor start-up floor and full runs at 0/100% (#466) #702 / fix(cover): end timed runs on stop status instead of stop write (#705) #707 / feat(cover): per-cover motor start-up floor instead of single constant (#704) #708 behaviour lives in the new strategies, so nothing was lost in the refactor.
Their MyHomeServer1 latency traces (#645) and their timed-cover RFC (#302) are also where several of these changes started.
Thank you both. Reviews like these are why we can call b16 firm. 🙏
❤️ And thank you to everyone who reported and captured
Every name below changed something in this release.
min_motor_pulse(Covers: per-cover motor start-up floor instead of one 0.4 s constant (#466) #704, feat(cover): per-cover motor start-up floor instead of single constant (#704) #708). Your archive of firmware images helped the oracle get started (Firmware as source of truth: a reproducible analysis pipeline for every gateway (thanks @gdluck!) #613).*#4*3*#14*...instead of `*#4*#3*#14* #697 → fix(climate): zones follow the plant for the standalone default (#697) #698, with your trace in test(trace): add authentic BTicino F454 99-zone central plant trace fixtures (#697) #724), and the central unit was wrongly marked unresponsive (Central unit (WHERE#0) is marked "unresponsive" after two restarts, although it answers a plain status request #629 → fix(energy): align active power queries and dimension 1200 stream lifecycle (#466, #629) #661).advanced: trueon a standard F411 shutter now gets a clear warning (F411 and wrong position reported. #761 → fix(cover,docs): warn and guide when F411 standard shutters set advanced: true (#761) #762).*6*9**##)** #759).Thank you, all of you. 🙏
🌟 What's new
🏠 Expose Home Assistant to the bus (#750)
A declarative
exposeengine puts Home Assistant entities on free SCS addresses:Custom actions run as Home Assistant scripts.
🪟 Covers
slat_tilt,slat_time) (feat(cover): implement venetian blind slat tilt inching and clarify dimension 11 shutter level (#492) #508).min_motor_pulse) (feat(cover): per-cover motor start-up floor instead of single constant (#704) #708), and cover movement models split into pluggable strategies (feat(cover,light): pluggable CoverKinematicsStrategy hierarchy and low-priority fade step routing (#730) #739).💡 Lighting
01–09(feat(light): support 2-digit Area 0 point-to-point addressing (01-09) (#684) #713).🌡️ Thermoregulation (WHO 4)
🔊 Sound system
🔘 Scenarios
🔌 Gateways and setup
myhome.yaml(travel times, feature flags) are copied into the config entry, so they survive if the file is removed (feat(discovery): reusable sweep poll gate, dimmer capability probe, and legacy YAML migration (#733) #742).set_cover_position: 100is now a plain UP (*2*1*WHERE##) and0a plain DOWN, both full runs to the limit switch.0/100send no stop frame and settle on a timer (travel time + 2 s), instead of waiting for a stop status that some gateways never relay.myhome.sync_timenow refuses time zones with a half-hour offset (e.g.Asia/Kolkata) with a clear error. The gateway clock only carries whole hours, and b15 truncated the offset without saying so (fix(services): reject half-hour time zones in sync_time with a translated error #764).advanced: trueon a standard F411 shutter logs a startup warning telling you to remove it (fix(cover,docs): warn and guide when F411 standard shutters set advanced: true (#761) #762).All the details are in the release notes and the cover docs.
🛡️ Under the hood
mypy --strictnow really checks the integration against the OpenWebNet-HA/OWNd 2.0.0b11 types users install. Before, OWNd was invisible to the check (fix(typing): check mypy --strict against the pinned OWNd 2.0.0b11 types #765).📥 How to install / upgrade
HACS: update to v2.0.0b16 (enable Show beta versions).
Terminal & SSH:
Requires Home Assistant 2026.3 or newer.
🧪 What we'd love feedback on
expose: wall controls driving virtual actuators, and their LEDs following Home Assistant.And keep the traces coming in #466. A sweep takes a minute from the bus card (Export Trace) or with
myhome.sweep_bus. Traces go straight into the test suite, and now we can also check them against what the firmware says. 📡Found a bug? Open an issue and link this discussion.
Thank you all, and a firm handshake to the firmware. 🤝🚀
All reactions