mirror of
https://github.com/arendst/Tasmota.git
synced 2026-10-26 22:11:22 +00:00
* 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>