@@ -1678,7 +1678,7 @@ type MeterType = "electricity" | "gas"; // water, etc
1678
1678
interface MeterArgs {
1679
1679
type ?: MeterType ;
1680
1680
cluster ?: "both" | "metering" | "electrical" ;
1681
- power ?: false | ( MultiplierDivisor & Partial < ReportingConfigWithoutAttribute > ) ;
1681
+ power ?: false | ( MultiplierDivisor & Partial < ReportingConfigWithoutAttribute > & { cluster ?: "metering" | "electrical" } ) ;
1682
1682
energy ?: false | ( MultiplierDivisor & Partial < ReportingConfigWithoutAttribute > ) ;
1683
1683
status ?: boolean ;
1684
1684
extendedStatus ?: boolean ;
@@ -1951,17 +1951,23 @@ function genericMeter(args?: MeterArgs) {
1951
1951
if ( args . energy !== false ) exposes . push ( e . energy ( ) . withAccess ( ea . STATE_GET ) ) ;
1952
1952
if ( args . producedEnergy !== false ) exposes . push ( e . produced_energy ( ) . withAccess ( ea . STATE_GET ) ) ;
1953
1953
fromZigbee = [ args . fzElectricalMeasurement ?? fz . electrical_measurement , args . fzMetering ?? fz . metering ] ;
1954
+ const useMeteringForPower = args . power !== false && args . power ?. cluster === "metering" ;
1954
1955
toZigbee = [
1955
- tz . electrical_measurement_power ,
1956
+ useMeteringForPower ? tz . metering_power : tz . electrical_measurement_power ,
1956
1957
tz . acvoltage ,
1957
1958
tz . accurrent ,
1958
1959
tz . currentsummdelivered ,
1959
1960
tz . currentsummreceived ,
1960
1961
tz . frequency ,
1961
1962
tz . powerfactor ,
1962
1963
] ;
1963
- // biome-ignore lint/performance/noDelete: ignored using `--suppress`
1964
- delete configureLookup . seMetering . power ;
1964
+ if ( useMeteringForPower ) {
1965
+ // biome-ignore lint/performance/noDelete: ignored using `--suppress`
1966
+ delete configureLookup . haElectricalMeasurement . power ;
1967
+ } else {
1968
+ // biome-ignore lint/performance/noDelete: ignored using `--suppress`
1969
+ delete configureLookup . seMetering . power ;
1970
+ }
1965
1971
} else if ( args . cluster === "metering" && args . type === "electricity" ) {
1966
1972
if ( args . power !== false ) exposes . push ( e . power ( ) . withAccess ( ea . STATE_GET ) ) ;
1967
1973
if ( args . energy !== false ) exposes . push ( e . energy ( ) . withAccess ( ea . STATE_GET ) ) ;
0 commit comments