Repository navigation
Releases: nofuturekid/tasmofleet
Release list
0.15.2
Changed
- The first log line at startup is now
tasmofleet starting version=... go=... decoder=..., so the running
version can be read from the log (#73). - The Devices list puts the "Online" filter pill right after "All", before Offline / unknown, Outdated and
Not compliant.
Fixed
- "Refresh identity" now always makes the stored MQTT topic follow the topic the device reports, also for
devices added before 0.15.0 (a topic changed on the device used to stay unmatched, MQTT "Not connected").
A topic another device already has is not taken; the device page and the audit log say so. The change is
audited asdevice.topic_changed(#111). - After "Refresh identity" the Restart confirmation dialog and the offline banner on the device page are
swapped together with the header, so the dialog asks about the new name without a reload (#110, #104,
thanks @Noschvie). - Devices list on a narrow screen: choosing a filter from the scrolling pill row (for example the Chip
dropdown at its far end) no longer sends the row back to its start, so the pills stay where they were
(#116). - After a topic change picked up by "Refresh identity", a device already heard on its old topic showed
MQTT "Not connected" until its next telemetry: it kept the Offline that Tasmota sends on the old topic.
Health now drops what it learned on the old topic and takes the new topic's retained LWT at once (#119).
0.15.1
Fixed
- Device page, Network card: a device added (or deleted and added again, or given its MQTT topic) while
TasmoFleet runs no longer shows MQTT "Not connected" or "other broker" until it next speaks. TasmoFleet
keeps the latest LWT per topic and applies it as soon as a device takes that topic (#105, thanks
@Noschvie). - The Devices list shows the "Online" filter pill at all times, next to Offline / unknown, Outdated and Not
compliant; it used to exist only while the Online filter was active, so it could not be picked again after
switching to All (#102, thanks @Noschvie). - After "Refresh identity" the device page header, breadcrumb and page title show the refreshed name,
address, chip and firmware at once, not only the Identity card (#104, thanks @Noschvie). - A device stored under Tasmota's default name ("Tasmota", filled in when it was added) takes the name the
device reports at the next "Refresh identity", so the header and the list no longer keep "Tasmota"
(#104, thanks @Noschvie).
0.15.0
Fixed
- "Refresh identity" now updates every identity field: device name, hardware, build, chip, firmware,
hostname, MAC and MQTT topic. The hostname and IP are stored with the refresh (they showed Unknown until a
later background read), and name and topic follow the device while they are still what the device
reported before (or, for older devices, the hostname tasmofleet named them after). A name or topic you
chose is kept. A device on our broker that HTTP cannot reach is refreshed over MQTT (Status 5, then
Status 2, one at a time, audited); MQTT never replaces an identity read over HTTP (#91, thanks @Noschvie).
Security
- "Refresh identity" checks the device's MAC first and refuses, audited and explained on the device page,
when the stored address answers with another device's MAC: nothing is overwritten and nothing more is
sent to it. A device stored without a MAC gets the reported MAC bound when a person refreshes it
(audited); automatic refreshes never bind one (#65).
0.14.1
Fixed
- Last seen: an offline device no longer shows a recent "last seen" time (for example "2m ago" in Needs
attention). The broker's retained or last-willOfflinemessage was counted as contact from the device;
it no longer is, so the time is that of the last real message or poll. After a restart the device list,
the dashboard and the device page all fall back to the same stored time of the last successful identity
read (#92, thanks @Noschvie). - Offline devices and actions: the bulk bar of the device list now says how many selected devices are not
online and will be skipped, and switches every action off when none of them is online; Back up now and
Restart in a row's menu, and Restart and Update in the device header, are off for a device that does not
answer, as are Settings and Console (with the reason as their title). "Online" is the health tracker's
answer over every transport, so a device that is reachable over MQTT only stays usable. A device that
is stale (silent for a moment, still being polled) now takes bulk actions like it already took the power
switch (#93, thanks @Noschvie).
0.14.0
Added
- Identity over MQTT: a device on our broker that HTTP cannot identify (unreachable, refused, not yet
probed) now shows its firmware version, taken from theINFO1message it publishes at every boot, read
with the same version grammar asStatus 2. When it still lacks its hardware, tasmofleet asksStatus 2
once over MQTT (neverStatus 0; only online devices, once per device per 10 minutes, at most one per
second on the bus; audited) and gets the full identity. The HTTP probe stays the primary source and always
replaces what MQTT said; update safety checks are unchanged (#87, thanks @Noschvie).
Fixed
- Identity: image tags are now read the way upstream Tasmota builds report them (#85). Official ESP32-S3,
C2, C3, C5, C6 and C61 devices (all reporttasmota32) and ESP32display/irbuilds were refused as a
chip-family mismatch and missing from the fleet; they are now identified and keep their build. ESP32
webcam,bluetooth,lvgl,nspanel,zbbrdgproand ESP8266tasmota-4Mare recognised instead of
unknown. ESP32-S2 and P4 (two builds each with the same tag) stayunknown; after an explicit variant
choice the P4 build follows the chip revision (p4 for v0.1-1.99, p4r3 for v3.1-3.99, others refused) and
ESP32-S2 updates are refused until the build can be chosen, instead of guessing (#85, #45, thanks @Noschvie). - Identity: a firmware version with the core suffix that single-core ESP32 builds append
(16.0.0(solo1)single-core, also the official16.0.0(release-solo1)single-core) no longer aborts the
identity probe and hides the device. The official solo1 build is recognised astasmotaon single-core
ESP32; a self-compiled one keeps variantunknown, so OTA stays refused until a variant is chosen. A
version that still does not parse no longer aborts the probe either: the device keeps its chip and
hardware, the version stays empty and the safety guard refuses every update (#45, thanks @Noschvie).
Security
0.13.1
Fixed
- Discovery: devices seen on MQTT with an address outside the device networks (another LAN, e.g. behind a
VPN) now become proposals as soon as that network is added to Device networks; before, they stayed under
"Seen on MQTT, not identified yet" until a restart. A device later announced inside the networks no longer
keeps its old reason in that list (#45, thanks @Noschvie). - Tests: an audit page test with fixed event dates started failing once they fell out of the default 7-day window; it now uses a fixed test clock (#74, thanks @Noschvie).
Security
0.13.0
Added
- Discovery: with a broker, MQTT is the primary discovery source. Devices that publish no
tasmota/discoveryconfig (SetOption19 1, or a build withoutUSE_TASMOTA_DISCOVERY) are found from
their own topics (LWT, STATE, INFO1..3, using the configured FullTopic): an online topic that is
neither in the inventory nor announced gets oneStatus 5over MQTT for its MAC (neverStatus 0; once
per topic per 10 minutes, at most one per second, never to offline topics, logged and audited as
discovery.identify). Switching MQTT discovery off stops it. HTTP scans stay (#47). - Discovery: "Seen on MQTT, not identified yet" on the Discovered tab lists the topics that could not
become a proposal (offline, no answer, address outside the device networks) with the reason (#47). - Discovery: each discovered device has a direct "Add" that stores it as seen (MAC, topic, address)
without an HTTP probe, also while it is offline; rows show "Offline" from the MQTT LWT. A device added
this way gets its first identity probe when it comes online, after its address answered with its
MAC (#45).
Fixed
-
Devices: requests to a device carry a
Referernaming its address, so devices with Tasmota's default
SetOption128 0accept commands and firmware uploads instead of silently closing the connection (#63, #45). -
Devices: when a device still refuses HTTP API commands (it answers its main page but not
/cm, e.g. when
added by a DNS name other than its hostname), the add flow and the logs say to setSetOption128 1
instead of "No device answered" (#63). -
Discovery: a network scan of a device that MQTT had already proposed overwrote the proposal's topic, so
the accepted device had no MQTT topic. Both sources now resolve to one proposal by MAC: MQTT keeps topic
and source, the scan contributes the HTTP port (#47). -
Discovery: an announced address outside the device networks is logged and listed instead of being
dropped silently (#47). -
Tests: the embedded test broker no longer deadlocks when clients disconnect while it closes (mochi v2.7.9
locks its client map recursively inServer.Close); this hung the first v0.13.0 tag run. It uses its own
listener, which ends and waits for every accepted connection before mochi's shutdown, so mochi's
client counter is no longer raced (race detector). A seed-timing flake
of the pinned-columns e2e check is quarantined (#69).
Security
- Discovery: the identity probe that a device without identity gets when it comes online (an MQTT
trigger) no longer sends a stored web password to an address that cannot prove the device's MAC; it is
audited asdiscovery.identify_unverifiedand retried every 10 minutes. The probe of a device without a
stored MAC is audited with the MAC that answered (discovery.reprobe) and binds none (#47). - Discovery: accepting a device without MAC proof is audited with
mac_unverified; for an offline device
the fleet default password is withheld (default_password_withheld). ASTATUS5reply counts only for
the topic discovery asked and only within 30 s (#47).
0.12.3
Fixed
- Backup: the downloaded backup file is named after the device instead of a generic name (#55).
- Backup: a Status 9 "Command Error" from a device without energy monitoring no longer marks a snapshot
incomplete (#55). - Devices: a device's name defaults to Tasmota's DeviceName (labelled "Device name") instead of the
hostname, in a scan, Discovery and the add flow. Names already stored are kept (#52). - Devices: the MQTT topic is the resolved one (
tasmota_2BE970), not the settingtasmota_%06X. The
unresolved topic never matched a message, so such a device showed "MQTT: Not connected" while it was
online. A refresh repairs stored topics that still hold a placeholder (#52). - Devices: the upgrade resolves a stored
tasmota_%06Xtopic from the device's MAC (Tasmota uses the last 6
hex digits of the Wi-Fi MAC), so existing devices show their MQTT state without a manual refresh. Other
placeholders are repaired by the next identity refresh. A topic or DeviceName read from a device is
validated (no wildcards,/,%, control characters) before it is stored (#52). - Devices: self-compiled builds that report
16.0.0(tasmota32)show "tasmota32 (self-compiled)" as Build instead
of "unknown". The variant stays unknown, so OTA still needs an explicit variant choice (#52). - Devices: Ethernet boards show their Ethernet IP, gateway and MAC; the Wi-Fi card becomes an Ethernet card
(#52). - Devices: the Network card no longer repeats the address as "IP address" (#52).
0.12.2
Fixed
- Start: a data directory the container user (UID 65532) cannot write to, typically a bind mount that Docker
created as root, now stops withdata dir /data is not writable by uid 65532: see README (bind mounts)
instead of an opaque secretbox error. The README explainschown -R 65532:65532/user:for bind
mounts and showsTZin the Compose example (#33). - Settings: the MQTT connection test no longer reloads the page and blanks the password field. A password
typed there passed the test, but the Save that followed saw an empty field and kept the old password, so
the bus could not connect (#44). The test button now updates only its result line. - Devices: a device accepted from Discovery is probed right away, and every stored probe result (identity
refresh, background network read) tells open pages to reload the table. Firmware, module and IP of a new
device now show up on the open fleet page without a manual refresh (#46).
Changed
- Devices: the tooltip of "HTTP –" in the MQTT · HTTP column says the channel is on standby while MQTT delivers
("only polled when MQTT goes quiet"), so the dash no longer reads as "HTTP is down"; screen readers hear
"standby". The column itself looks the same.
0.12.1
Fixed
- Policy page: a long value (an
OtaUrl) no longer squeezes the device name to one letter per line or pushes
the value out of the card, in the live preview and in the "Make compliant" dialog. The name keeps a readable
width and the value wraps below it, breaking inside the URL. - Policy page: two chip-family-limited rules for the same setting (e.g.
OtaUrlfor ESP8266 and for ESP32) no
longer claim to overlap on devices of unknown chip family, which neither rule can judge. - CI:
TestDevenvDesignFixtureno longer flakes ("Kitchen Ceiling Light (unknown) answers on 127.0.0.1:…"):
devenv puts devices that never answer on a privileged loopback port (127.0.0.1:1,:2, …) instead of a
released ephemeral port that a simulator started right after it could get again (#39).