Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: modern extend improvements #7239

Merged
merged 40 commits into from
Mar 25, 2024

Conversation

mrskycriper
Copy link
Contributor

@mrskycriper mrskycriper commented Mar 19, 2024

TODO

  • sort Modern Extends roughly according to ZCL documentation chapters
  • update identify extend
  • add linkquality extend
  • add pm25 extend
  • add commandsOnOff extend
  • add commandsLevelCtrl extend
  • add commandsColorCtrl extend
  • add commandsWindowCovering extend
  • add windowCovering extend
  • add deviceTemperature extend
  • add flow extend
  • add soilMoisture extend
  • merge multiple action exposes into one on processing
  • add GET converters to battery extend
  • fix meta in battery extend
  • move identify to inputExtenders
  • add ota extend to definition generator

@mrskycriper mrskycriper marked this pull request as draft March 19, 2024 20:15
@mrskycriper mrskycriper marked this pull request as ready for review March 21, 2024 23:23
src/index.ts Outdated Show resolved Hide resolved
src/index.ts Outdated Show resolved Hide resolved
src/lib/modernExtend.ts Outdated Show resolved Hide resolved
src/lib/modernExtend.ts Outdated Show resolved Hide resolved
src/lib/modernExtend.ts Outdated Show resolved Hide resolved
src/lib/modernExtend.ts Outdated Show resolved Hide resolved
src/lib/modernExtend.ts Outdated Show resolved Hide resolved
src/lib/modernExtend.ts Outdated Show resolved Hide resolved
@mrskycriper
Copy link
Contributor Author

@Koenkk implemented all suggested changes

@Koenkk Koenkk merged commit 8f80a50 into Koenkk:master Mar 25, 2024
2 checks passed
@Koenkk
Copy link
Owner

Koenkk commented Mar 25, 2024

Many thanks for another great refactor 😄

@mrskycriper mrskycriper deleted the modern-extend-improvements branch March 25, 2024 21:23
@burmistrzak

This comment was marked as outdated.

@burmistrzak
Copy link
Contributor

@Koenkk Just realized we have no option to configured reporting for batteryAlarmState, so battery_low probably won't work as expected, i.e. not automatically update?

if (msg.data.hasOwnProperty('batteryAlarmState')) {
const battery1Low = (
msg.data.batteryAlarmState & 1<<0 ||
msg.data.batteryAlarmState & 1<<1 ||
msg.data.batteryAlarmState & 1<<2 ||
msg.data.batteryAlarmState & 1<<3
) > 0;
const battery2Low = (
msg.data.batteryAlarmState & 1<<10 ||
msg.data.batteryAlarmState & 1<<11 ||
msg.data.batteryAlarmState & 1<<12 ||
msg.data.batteryAlarmState & 1<<13
) > 0;
const battery3Low = (
msg.data.batteryAlarmState & 1<<20 ||
msg.data.batteryAlarmState & 1<<21 ||
msg.data.batteryAlarmState & 1<<22 ||
msg.data.batteryAlarmState & 1<<23
) > 0;
if (args.lowStatus) payload.battery_low = battery1Low || battery2Low || battery3Low;
}

Do some devices report batteryAlarmState on their own, or do we need to fix this? 🤔

if (args.percentageReporting || args.voltageReporting) {
const configure: Configure[] = [];
if (args.percentageReporting) {
configure.push(
setupConfigureForReporting(
'genPowerCfg',
'batteryPercentageRemaining',
args.percentageReportingConfig,
ea.STATE_GET,
),
);
}
if (args.voltageReporting) {
configure.push(
setupConfigureForReporting(
'genPowerCfg',
'batteryVoltage',
args.voltageReportingConfig,
ea.STATE_GET,
),
);
}
result.configure = configure;

@Koenkk
Copy link
Owner

Koenkk commented May 28, 2024

Some devices might report it on their own, but the question is wether we want to batteryAlarmState to be reported when we already have the battery %

@burmistrzak
Copy link
Contributor

Some devices might report it on their own, but the question is wether we want to batteryAlarmState to be reported when we already have the battery %

Yea, kinda hard to know which devices actually do report it on their own...
It's probably sensible to just remove battery_low, unless we know for sure the attribute is reported by the device in question. It's better having battery_low not exposed than it always being null.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants