Repository navigation
MyHOME Integration Release v0.5.0
Installation
HACS (recommended)
- Add this repository as a custom repository in HACS
- Install the MyHOME integration
- Restart Home Assistant
Manual installation
- Download
myhome.zipfrom the assets below - Extract it into
custom_components/myhome/in your Home Assistant
configuration directory (the archive holds the integration's files
themselves, with no top-level folder) - Restart Home Assistant
Changelog
A basic shutter can now be calibrated from a dialog instead of from a stopwatch, a tape measure and two action calls. Settings → Devices & services → MyHOME → Configure → "Calibrate a cover" drives the shutter, times its runs from the actuator's own status frames, asks for three tape readings and stores the result where the shutter reads it. Nothing changes for a cover that is not calibrated this way, and nothing is ever written to myhome.yaml.
Added
- Guided calibration of a basic cover, under Configure → "Calibrate a cover". Three ways in: (A) the first shutter of a kind — three button presses and three tape readings, about four minutes, ending on a named profile every similar shutter can inherit; (B) a shutter similar to one already measured — pick the profile, measure the curtain travel, with an optional check at half of it; (C) a shutter that has a profile and stops in the wrong place — its own run times, its own roll coefficients if it needs them, or the thorough calibration on its own: no timed run at all, four tape readings and a check, on the times the shutter already moves on, of which it stores the two roll coefficients and nothing else. A correction measures some of the model and leaves the shutter following its profile for the rest, which is what
profile <name>, adjustedsays. There is no stopwatch anywhere: the integration knows when the motor started (the actuator says so itself), so a press marks only the end of a run, which halves the human error and leaves the tape as the only tool. The ascent is measured by two runs of one press each: the first ends on the press that marks the bottom edge leaving its base — the dialog stops the shutter there, so the press can be checked by looking at it and, where it went in late, corrected with the tape — and the second runs the whole travel for the press at the top. Path A and a correction can both be followed by the thorough calibration: four more readings at a quarter and three quarters of the travel in each direction, which fit a scale factor on the times as well as the rolls — the tape corrects the finger — and a fifth at 40 %, a position nothing was fitted to, whose gap is what the summary reports as the accuracy. Expect 1–2 cm at the end stops and 2–4 cm at intermediate positions afterwards. The readings taken with a tape are a phase of their own: one screen warns that the shutter is about to move by itself, and from there the runs chain without a button between them, each naming itself on the progress bar. They are taken in the order that spares a run — the timed descent leaves the shutter at the bottom, so the ascent is read first and the shutter is opened completely once instead of twice. Nothing moves before a screen announces it and nothing is written before the last one; every measurement can be repeated on its own, and closing the dialog leaves the configuration untouched. The full page is docs/guided-calibration.md. - Screens that manage what was measured, in the same dialog. Profiles and covers: one selector per basic cover to assign a profile (and a follow-up form for the curtain travels nobody knows yet), plus view, hand-edit and delete for each profile — the delete names the shutters that lose it. Calibrations: per shutter, view the stored values, correct them by hand, measure again, or delete them and go back to the configuration file. A profile written in
cover_profiles:is shown and never rewritten. Calibration sourceandCalibratingattributes on basic covers: where the travel model that is loaded came from, and whether a calibration step owns the shutter right now (cover.set_cover_positionis refused while it does).- Spanish, German and Portuguese translations of the whole integration, beside the existing English, French, Italian and Dutch.
- Diagrams in the calibration screens — what "the bottom edge leaves the base" and "measure from the base" mean, drawn rather than described. They are served by the integration itself, from
custom_components/myhome/images.
Changed
- Configure opens a menu. The connection settings are behind its last item, "Gateway and connection", with exactly the same fields: address, port, password, configuration file path, command sessions, the event option and the session tunables. The other items are the calibration and what it stored. Saving that form still reloads the integration; the calibration screens rebuild the entry once, when the dialog is closed, and only if something was really stored.
Calibration sourcetells a measurement from an inheritance, and both from the mixture of the two. It saysguidedfor a shutter running on nothing but its own measured (or hand-edited) values,profile <name>for one that follows a profile and was never measured itself,profile <name>, adjustedwhen some keys were measured on it and the profile still answers for the rest — which is what a correction of the run times alone leaves behind — andyamlwhen nothing is stored for it and the numbers come from the configuration file or the defaults. The distinction matters because a profile assigned from the dialog ranks above the keys the cover's own configuration-file entry writes — it is a statement about that cover made after the file — while aprofile:the file names itself does not, and a measurement of the cover always wins over either.- Where a cover's values come from, on the screens and not only in an attribute. The Calibrations list, the action menu and View the values under it, Give each cover a profile, the three screens that close a calibration and a profile's list of followers all say it in words: Measured, Inherited from profile "name", Adjusted from profile "name", From the file, Defaults. They are decided in the same place as the
Calibration sourcetoken, so a screen and the attribute can never disagree about one shutter; the fifth exists becauseyamlcovers both "the file writes these times" and "nobody ever said", which is one word for two pieces of news. - One name per thing, on every screen and in the documentation. The second level is the thorough calibration everywhere (it had been "the precise level", "refine" and "improve the accuracy" in different places), path C is the correction, a movement the user times is a timed run, and the distance the bottom edge runs between the end stops is the curtain travel — never "height", which had survived on thirteen screens that were not the ones measuring it, the path menu's "(height only)" among them. The
height:key and theHeightattribute keep their spelling, and the height of the bottom edge above its rest keeps its name, because it is a position and not the travel. In French the feature is la calibration throughout: the correction screen used to offer le calibrage approfondi two lines under corriger la calibration. myhome.cover_calibration_runmarks the coverCalibratingwhile it runs, socover.set_cover_positionis refused for the half minute it takes. It is built out of the same primitives as the guided steps, and two things timing one motor would each measure a run the other one stopped. The action already refused to start on a cover that was moving.- The wording of the dialog, read through in all seven languages. An outside review of every string produced 414 proposals; those that still describe the screens are in, in the impersonal Italian the rest of the flow uses, with the glossary each language settled on — bottom edge, curtain, slat opening time, takes precedence over, and their equivalents. Buttons keep Home Assistant's own imperative. The counts and the claims were then checked against the code rather than against the review: the correction asks for three tape readings and not two, the thorough calibration for five and not four,
Calibration sourceis named as holding the origin and not the numbers, what is saved is applied when the dialog closes rather than at once, and the accuracy on the thorough summary is the verification's own answer — the gap at the one position nothing was fitted to — with the percentage the screen quotes taken from the run that produced it instead of a constant. - The deletion of a profile counts every shutter that follows it. The count and the list on "Eliminare questo profilo?" came from the assignments this dialog makes, so a profile several shutters follow through the
profile:key ofmyhome.yamlannounced "0 covers" on the very screen that was about to remove it. Both sources are counted now, and named apart, because the deletion reaches them differently: the assignment is stripped from the stored record, while theprofile:line stays in the file and goes back to naming thecover_profiles:entry it had been shadowing.