The firmware update no longer fails on a board with many values (#663, @elRadix, fix by @ppuetsch in #692). An update from the web page could restart the board in the middle of the upload, with "crash" as the cause, and the old firmware came back. The cause: a poll of the heat pump fell due during the upload, and publishing its values needs more memory than the upload leaves, the more so with many values selected (138 on the reporter's board). The polls and their publishes now wait while the firmware is written, and start again 15 s after the last block if an upload is cut. Checked on an M5StickC with a poll due in the middle of the upload: it did not run, and the usable memory stayed between 75 and 80 KB.
This takes effect from the update after this one, since the firmware doing the update is the one you run. If the update to beta.30 fails on your board: set Read every to 600 s in the settings, update, and set it back.
M5 boards: the counters of the day survive a restart (#663, @elRadix, fix by @ppuetsch in #694). Starts, defrosts, running time and energy of the Today card went back to zero at every restart or update of an M5StickC, Plus, Plus2 or Tough. Two causes, both fixed: the first reading after a start came before the clock was set and was taken for a new day; and the M5 library set the clock at each start from the board's clock chip, which nothing ever sets, so the date could be any. The counters of the last hour (Starts last hour) also no longer empty at midnight (#675).
Web page and API.
- A page of another site, open in the same browser, can no longer ask the board for a change: a request whose
Originis not the board's own address is refused (403). If you reach the board through a reverse proxy that rewritesHost, make it sendX-Forwarded-Host. Home Assistant, scripts andcurlsend noOriginand are not concerned. - The search for the MQTT broker on the network asks for the admin password when one is set, like the other requests that make the board do something.
- A settings backup (
/api/config) no longer carries what the board records for itself: the curve of the unit from before the first target, a held target, the state of the power limit, the detected model. Restoring a backup, also an older one, leaves these as the board has them (#682). Saving the settings while the board writes one of them no longer loses it. - A JSON body that is too large gets a 413 instead of being cut (#678).
- DebugSerial and the time server apply when saved, without a restart (#685).
Controls.
- Power limit: the control only gets ready when the unit's own values make sense (limitation 0, 1 or 2, a limit of 1 to 25 kW or 4 to 75 A). A hydro board that had just powered up answered with zeros, which were read as a limit in amperes (#672). After a start together with the heat pump, the limit is tried again after 30 s, then less and less often, instead of 10 minutes later (#673).
MQTT and Home Assistant.
- The device in Home Assistant shows the firmware version and has a link to the board's page (#687). The Smart Grid entity names the board it runs on, it said "M5StickC PLUS" on all of them (#686).
- A selection of values too long for one message was cut into invalid JSON. The message is now dropped as a whole, the event history says so, and the Values page tells how to shorten the selection or switch to one topic per value (#684).
Readings.
- Altherma HT hydrobox: the saturation temperatures follow R134a again. They were computed with the R32 curve since beta.16 ("High Pressure(T)" read 13 °C where the stage condenses at 47 °C).
- A poll that failed after all its retries could still hand a partial or wrong reply to the values when its first bytes matched (#666). A reply ending exactly at its deadline was refused, and the deadline was wrong for a moment every 49 days of uptime (#676).
- A survey report too long for its buffer was sent cut. It is dropped, with an event (#677). No outdoor part number is made from a reply of zeros.
Memory. 5 KB more at rest (88 KB of usable memory on an M5StickC, 84 KB on beta.29): three buffers were kept for good for a use of a moment (the MQTT test, the save of the event history, the survey). The trace of every converted value on the serial port is only in a build made for it.
For contributors. data/catalog_names.txt lists the name of every value per definition, and CI fails when a change renames one: these names are the MQTT keys and the Home Assistant entity ids.
Thanks to @ppuetsch for a review of the whole firmware (#657) and the 18 pull requests of his in this release.
Update: System → Firmware update → Check for an update, or the web installer. Card: 1.0.36, unchanged.