Commit Graph
21687 Commits
Author SHA1 Message Date
Jason2866 5f3f8c97df Improve safeboot binary fetching logic (#25107)
Enhanced error handling for safeboot binary download and validation.
2026-10-06 12:53:46 +02:00
s-hadinger 33bfcf4578 Fix PWM on CDC GPIO (#25106) 2026-10-05 23:31:09 +02:00
SteWers 25bb0ee2c7 Refresh EQ3 web UI (#25105)
- Rework of the eQ-3 TRV device view to show a compact status row
- Use shared signal-strength indicator styling and remove duplicate CSS from Zigbee and MI BLE pages.
- Extend the MQTT payload with `BattVolt` field
2026-10-05 23:22:36 +02:00
s-hadinger 11ba5be41b Berry fix varname (#25104) 2026-10-05 10:47:33 +02:00
Theo Arends 08792a7aa6 Update change logs 2026-10-04 14:46:43 +02:00
pebl-hankandClaude Opus 5.5 ae80aa82e9 OpenTherm: support the second heating circuit (CH2) (#25098)
The driver could already enable CH2 (ot_flags CH2, master status bit 4)
but never sent the CH2 control setpoint (data-id 8) nor read the CH2 flow
temperature (data-id 31).

- ot_tboiler2: CH2 setpoint, written only while CH2 is enabled and on
  change (same tolerance as ot_tboiler); runtime value, starts with the
  saved CH setpoint after a restart (no Settings change)
- ot_ch2: runtime CH2 enable, counterpart of ot_ch (no flash write)
- telemetry BTMP2 and TB2, web lines for CH2

Both commands reuse the tboiler/ch handlers via the command index.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 14:43:48 +02:00
SteWers 00e65ad4a0 Add support for eQ3 TRV custom firmware advertisements (#25103) 2026-10-04 12:37:42 +02:00
Theo Arends 9e2fd870fa Update change logs 2026-10-04 12:36:56 +02:00
s-hadinger 42be813c79 Matter remove superfluous log (#25101) 2026-10-03 23:39:41 +02:00
s-hadinger 66c8f1ab9d MQTT false connected events when unconfigured (#25100) 2026-10-03 23:39:14 +02:00
s-hadinger 78902044e2 Matter fix non-bridge endpoint topology (#25099) 2026-10-03 23:22:05 +02:00
Theo Arends 4f7706d1d1 Correct way of ICACHE_RAM_ATTR usage 2026-10-03 17:33:06 +02:00
Theo Arends d4cef1cdc6 Fix compile warnings 2026-10-03 17:07:37 +02:00
Theo Arends ab38e799a0 Fix typedef struct compiler warning 2026-10-03 16:10:42 +02:00
protectivedad 952f5c8f91 HLK-LD2402 Fix bitwise operation precedence (#25076)
* HLK-LD2402 Fix bitwise operation precedence

* Fixed issue with code not running because of a mistake in
  the order of some bitwise operations
* Adjusted logic to better conform with HiLink documentation

* HLK-LD2402 increased resilience to uart issues

* Driver is more relaxed with uart communications this allows it to
  continue working where perviously it would become confused.

* Tested on ESP32 and ESP8266 device.
2026-10-03 14:48:32 +02:00
SoWizardands-hadinger 1d16504489 Berry: safely collect partially constructed native closures (#25093)
* Berry: safely collect partially constructed native closures

* Update be_func.py

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-10-03 00:23:09 +02:00
s-hadinger 2692124c3e Berry transpose fix to Python port 2026-10-02 21:39:03 +02:00
SoWizard 3ec4b0308e Berry: release native int64 result allocations (#25092) 2026-10-02 20:57:04 +02:00
SoWizard 001e8d1963 Logging: handle allocation failures without null writes (#25094) 2026-10-02 09:56:33 +02:00
Theo Arends 48da93dca8 Update change logs 2026-10-01 15:48:57 +02:00
s-hadinger b5a73b8a71 Berry fix walrus to not create variable (#25090) 2026-09-30 17:18:28 +02:00
s-hadinger ddc0ae61d9 Matter physical and virtual Garage Door device types with Closure Control cluster (#25089)
* Matter physical and virtual Garage Door device types with Closure Control cluster

* fix CHANGELOG
2026-09-29 22:08:42 +02:00
Theo Arends dfa00bc969 Update change logs 2026-09-29 17:54:40 +02:00
s-hadinger a242811ec8 Matter Soil Sensor device type with Soil Measurement cluster (Matter 1.6.0) (#25088) 2026-09-29 15:50:13 +02:00
s-hadinger 1f543a3374 Matter simplify TLV type with generalized integers (#25087) 2026-09-29 14:36:02 +02:00
s-hadinger 835813e423 Add leftover from previous PR #25086 2026-09-29 12:49:01 +02:00
s-hadinger 4d4dd78be2 Matter v1.6.1 more improvements (#25086) 2026-09-29 12:46:50 +02:00
Ludovic BOUÉ c4327653db feat(matter): Phase 1 - Update Root Node for Matter 1.6.0 (#25078)
* docs(matter): Update to Matter 1.6.0 specification

- Add MATTER_1.6.0_DETAILED_GAP_ANALYSIS.md: Comprehensive spec analysis with 4-phase implementation roadmap covering Closures unified architecture, Energy Management clusters (Commodity Price/Tariff, Device EM), Soil Sensor device type
- Add MATTER_1.4.1_TO_1.6.0_CHANGELOG.md: Version-by-version changelog (1.5.0, 1.5.1, 1.6.0) with CSA spec references and GitHub release links
- Update ROOT_PLUGIN_COMPLIANCE_ANALYSIS.md: Add Matter 1.6.0 delta impact analysis covering DataModelRevision 18→20, Access Control read attributes, Group Key Management rev 2→4 bump
- Explicitly defer Groupcast (0x0006) to v1.6.1+ evaluation; out of scope for current release
- Verified cluster/device type IDs from official CSA PDFs (23-27350 Application Cluster Spec, 23-27351 Device Library Spec)
- Target: Tasmota Matter 1.6.0 compliance (DataModelRevision = 20)

* feat(matter): Phase 1 - Update Root Node for Matter 1.6.0

- Update DataModelRevision: 18 → 20 (Matter 1.4.1 → Matter 1.6.0)
- Add Access Control (0x001F) read_attribute handlers for 3 mandatory attributes:
  - SubjectsPerAccessControlEntry (0x0002) = 4
  - TargetsPerAccessControlEntry (0x0003) = 3
  - AccessControlEntriesPerFabric (0x0004) = 4
- Bump Group Key Management (0x003F) cluster revision: 2 → 4 (Matter 1.6.0)
- Add Group Key Management read_attribute handlers for 3 missing attributes:
  - GroupTable (0x0001) = empty list
  - MaxGroupsPerFabric (0x0002) = 4
  - MaxGroupKeysPerFabric (0x0003) = 3
- Update documentation headers to reflect Matter 1.6.0 target

Fixes ROOT_PLUGIN_COMPLIANCE_ANALYSIS.md high-priority gaps for v1.6.0 compliance.
Effort: Phase 1 complete (~1-2 weeks planned in roadmap, actual implementation ~2 hours).
2026-09-28 21:12:12 +02:00
s-hadinger be0c2e2b63 Clarify solidification for AI (#25085) 2026-09-28 21:10:29 +02:00
s-hadinger f93502ca5f Matter update specs to 1.6.1 (to be used by AI) (#25083) 2026-09-28 19:51:16 +02:00
s-hadinger 1972dab6d4 IR accept raw data in JSON (#25077) 2026-09-27 22:36:03 +02:00
Gustavo Cateim 4ee20e1a0f feat(ir): accept raw IR data as JSON, with a channel (#25062)
IRSend has two shapes: a JSON one, which reads Channel and picks the emitter,
and a plain "IRSend <freq>,<rawdata>" one, which has no channel at all and
always uses the first emitter. A remote whose protocol IRremoteESP8266 does not
recognise is stored as raw by anything that learns codes, so on a board with
several emitters those remotes could only ever be replayed through emitter 1,
silently.

IRSend now also takes raw data as JSON, in the same shape the receiver
publishes it:

  IRSend {"RawData":"+8570-4240+550-1580C-510","Frequency":38000,"Channel":3}

RawData accepts the compact format and a comma separated list, as the plain
form does. Frequency defaults to 38 kHz and Channel to the first emitter, so
the two forms behave the same when nothing is given.

IrRemoteSendRawStandard takes the channel as a parameter rather than a default
argument, because the Arduino builder generates a prototype for a function used
before its definition and a default in both places does not compile.
2026-09-27 22:09:43 +02:00
SteWers 7cd71e06e5 [MI32-BLE] Add age of battery reading to battery icon (#25074)
* [MI32-BLE] Add age of battery reading to battery icon

Add age of battery reading to battery icon

* Change `Rtc.local_time` to `now`
2026-09-27 19:01:51 +02:00
Theo Arends 35bf395e54 Update security policy 2026-09-27 16:47:47 +02:00
Theo Arends 40ed9e48ee Update change logs 2026-09-27 15:39:13 +02:00
c683ec3bce Matter: add Electrical Power Measurement cluster to On/Off Plug-in Unit (#24922)
* Matter: add Electrical Power Measurement cluster to On/Off Plug-in Unit

Adds a new "relay_power" plugin type (Matter_Plugin_OnOff_Power) that extends
the existing relay/OnOff Plug-in Unit (0x010A) with the Electrical Power
Measurement cluster (0x0090), reporting Voltage, Current, ActivePower,
ApparentPower, ReactivePower, Frequency and PowerFactor from Tasmota's ENERGY
sensor JSON, so Matter controllers can display live power usage for smart
plugs with energy monitoring.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Matter: add v_relay_power virtual variant for Electrical Power Measurement

Adds Matter_Plugin_Virt_OnOff_Power ("v_relay_power") so the new
ElectricalPowerMeasurement-enabled plug can be exercised without physical
hardware, driven entirely via `MtrUpdate` (e.g. Voltage/Current/ActivePower/
ApparentPower/ReactivePower/Factor/Frequency).

Also guards Matter_Plugin_OnOff_Power.parse_sensors() against VIRTUAL
instances (it must not read the local ENERGY sensor) and declares
UPDATE_COMMANDS so MtrUpdate accepts the new measurement keys. The wattage
key is named `ActivePower` rather than `Power` since `Power` is already the
inherited On/Off boolean command.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Matter: register new plugin headers in be_matter_module.c

be_matter_module.c maintains an explicit, hand-written list of solidified
Berry header includes (no auto-discovery). The new OnOff_Power and
Virt_OnOff_Power plugin files were missing from that list, so their classes
were never defined, causing the "undeclared" build failures reported by CI
(be_class_Matter_Plugin_OnOff_Power / be_class_Matter_Plugin_Virt_OnOff_Power)
even though matter.plugins_classes referenced them by name.

* Matter: add http_relay_power bridge variant for Electrical Power Measurement

Adds Matter_Plugin_Bridge_OnOff_Power ("http_relay_power") so the
ElectricalPowerMeasurement-enabled plug can also be bridged from a remote
Tasmota device over HTTP (polling `Status 10`), completing the local/virtual/
bridge trio already used by other plugins (relay, relay_power now included).

Refactors the ENERGY-object parsing in Matter_Plugin_OnOff_Power into a
shared `_parse_energy()` helper used by both `parse_sensors()` (local device)
and the new `parse_status()` override (bridge, index 10 / Status 10), and
guards `parse_sensors()` against BRIDGE instances so a bridge endpoint never
reads the local gateway's own ENERGY sensor by mistake.

Registers the new solidified header in be_matter_module.c (missed this for
the previous two plugin files, which broke CI) and adds http_relay_power to
the bridge type dropdown in Matter_UI.be.

Verified with a full PlatformIO build for tasmota32s3 (SUCCESS).

* Matter: auto-detect relay_power on remote bridge devices with an ENERGY sensor

The "Add Remote sensor or device" auto-detection always suggested plain
light0/relay for every detected relay channel, even when the remote device
reports an ENERGY sensor (e.g. a NOUS A5T 4-outlet power strip with a single
shared CSE7766 meter) - so relay+power devices showed up as plain "Light 0
OnOff" with no way to pick relay_power from that screen (the type column is
static text for already-detected rows, only editable for a brand new blank
row).

generate_config_from_status() now tags the first detected relay as
relay_power when ENERGY is present, leaving the rest as plain relays: most
Tasmota energy-monitoring boards have a single meter for the whole device,
not one per relay, so duplicating the cluster across every channel would
misleadingly show the same aggregate reading on each endpoint.

* Matter: compose Electrical Sensor device type onto the power-monitoring plug

Adds device type 0x0510 (Electrical Sensor) alongside 0x010A (On/Off
Plug-in Unit) on the same endpoint for relay_power/v_relay_power/
http_relay_power, plus the mandatory Power Topology cluster (0x009C) with
the NODE feature (this single ENERGY sensor meters the whole device, not a
subset of endpoints - matches Tasmota's non-indexed ENERGY object).

Matches the Matter 1.4.1 Device Library requirement that Electrical Power
Measurement lives on an Electrical Sensor device type, while keeping the
cluster on the plug's own endpoint (composed DeviceTypeList) rather than a
separate endpoint, since controllers only recognize the measurement
capability when the Electrical Sensor device type is actually declared.

Verified on real ESP32-S3 hardware via chip-tool: endpoint 2 now reports
DeviceTypeList = [266 (On/Off Plug-in Unit), 1296/0x0510 (Electrical
Sensor), 19 (Bridged Node)], and Power Topology FeatureMap = 1 (NODE).

---------

Co-authored-by: Ludovic BOUÉ <938089+lboue@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-27 15:35:46 +02:00
John Murfett b0c8e4f53f DALI-2 push button bindings to control gear targets (DaliBind) (#25073)
* DALI: bind DALI-2 push button events to control gear targets

Add command DaliBind<1..8> <device>,<instance>,<target>,<mode> to link
push button events (IEC 62386-301) from an input device instance to a
control gear target. Modes are Toggle, On, Off, Up and Down; Up and Down
start a fade on button press and stop it on release. The first matching
binding is executed. DaliBind<x> 0 removes a binding and DaliBind alone
lists them all.

Bindings are stored in the DALI settings file, packed as one uint32 per
slot, so they survive a restart.

* Describe how start-up brightness stored differently per short addres vs dali groups
2026-09-27 15:33:18 +02:00
Theo Arends cadd9a5612 Update change logs 2026-09-27 15:24:00 +02:00
Jason2866 a622f395d4 fix: be_matter_module.c:280:19: error: #if with no expression (#25075) 2026-09-27 14:37:51 +02:00
Jason2866 300b3bfb9a Platform 2026.09.50 Tasmota Arduino Core 3.3.12 based on IDF 5.5.5 (#25072) 2026-09-26 18:39:45 +02:00
Theo Arends e0ee732bac Bump version v15.6.0.2 2026-09-26 17:24:39 +02:00
Erin of Yukis a3394ba0aa Shutter: Split EnableEndStopTime into OpenEndStopTime and CloseEndStopTime (#25020)
Allows adding the extra 1s recalibration time only when opening or only when
closing, does not make the 1s number configurable.
2026-09-26 16:59:18 +02:00
Bogdan ShatikandClaude Sonnet 5 4bdce61d93 RC522: throttle idle polling and add self-healing watchdog (#25052)
Two independent reliability fixes for the MFRC522 driver, found while
debugging a real device:

- LoadAvg climbing toward its ceiling: idle polling every 250ms was
  hitting the reader's own ~25ms internal REQA timeout every time
  (PCD_CommunicateWithPICC busy-waits synchronously with no yield()
  until TReloadReg's on-chip timer fires), i.e. a permanent ~10% duty
  cycle from polling alone. Throttles idle polling to roughly once a
  second and shortens the on-chip poll timeout via TReloadReg
  (RC522ShortenPollTimeout, ~2.5ms instead of 25ms - still well above
  a real tag's few-hundred-microsecond ISO14443A response time), an
  order of magnitude cheaper without hurting detection reliability.
  Also added exponential backoff as a safety net if a poll is ever
  genuinely slow (e.g. RF noise triggering the anticollision path).

- Reader silently stopping card detection after a few reads, only
  recoverable with a manual reset: traced to MIFARE_Authenticate
  (used by USE_RC522_DATA_FUNCTION) occasionally leaving the crypto1
  cipher engine stuck engaged, which garbles all further card
  communication even though simple register reads keep succeeding.
  Added a 1s watchdog that checks two registers that reveal this
  broken-but-alive state - Status2Reg's MFCrypto1On bit and
  TxControlReg's antenna-field bits - and does a full PCD_Reset()+
  PCD_Init() the moment either looks wrong, rather than waiting for a
  user to notice and run RC522Reset. Toggle with RC522Watchdog 0/1
  (on by default); new RC522Status field, "Healthy", reports the same
  check on demand.

Also stopped calling PCD_PerformSelfTest() at init - it resets the
chip and writes test patterns into several registers, needing a full
re-init to undo (the library's own docs note "self-test blows init").
A plain VersionReg read is already a reliable presence check without
that risk.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 16:58:41 +02:00
s-hadinger a8d91f4acb MQTT tolerate delayed PINGRESP (#25067)
* MQTT tolerate delayed PINGRESP

* Add default MQTT_MAX_PING_OUTSTANDING
2026-09-26 16:37:52 +02:00
s-hadinger 830cb206cc Doc detailed (#25071)
* Draft 1

* Add ESP32C5

* MCUs bold

* Matter protocol
2026-09-26 15:21:28 +02:00
s-hadinger f151ad8145 Fix Matter commissioning mDNS announcements (#25069) 2026-09-26 15:18:39 +02:00
SteWers f79b26cb5d Improve tooltip on touch devices and provide BSSID to Berry (#25057)
* Improve tooltip on touch devices and provide SSID to Berry

* Improve rendering of battery symbol
2026-09-25 20:06:53 +02:00
s-hadinger ad1addfd4e Touch GT911 fix template (#25068) 2026-09-25 15:14:48 +02:00
s-hadinger 5bb6c38cfb Fix Berry parsing from upstream (#25064) 2026-09-24 19:21:33 +02:00
Theo Arends e5d9a568cb Undocumented command DaliRetry 0..64 to test target probe (#25035) 2026-09-22 17:17:25 +02:00