Bump version
This commit is contained in:
1 parent
962189ba74
commit
1883937e4a
22 files changed
+396
-229
No files matched your search
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.isExcluded = isExcluded;
|
||||
exports.buildExcludeRegexps = buildExcludeRegexps;
|
||||
/**
|
||||
* Returns true if entityId matches any of the supplied glob patterns.
|
||||
* Glob syntax: `*` is the only wildcard and matches any sequence of characters
|
||||
* (including dots). All other characters are matched literally (regex
|
||||
* metacharacters are escaped). Matching is case-sensitive and anchored to
|
||||
* the full entity_id.
|
||||
*
|
||||
* An empty patterns array always returns false.
|
||||
*/
|
||||
function isExcluded(entityId, patterns) {
|
||||
if (!patterns?.length) {
|
||||
return false;
|
||||
}
|
||||
for (const pattern of patterns) {
|
||||
if (pattern.test(entityId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
function buildExcludeRegexps(patterns) {
|
||||
if (!patterns?.length) {
|
||||
return [];
|
||||
}
|
||||
return patterns.map(pattern => {
|
||||
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
|
||||
return new RegExp(`^${escaped}$`);
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=entityFilter.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"entityFilter.js","sourceRoot":"","sources":["../../src/lib/entityFilter.ts"],"names":[],"mappings":";;AASA,gCAUC;AAED,kDAQC;AA7BD;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,QAAgB,EAAE,QAAkB;IAC3D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAkB;IAClD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnF,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
||||
+130
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const adapter_core_1 = require("@iobroker/adapter-core");
|
||||
const hass_1 = __importDefault(require("./lib/hass"));
|
||||
const entityFilter_1 = require("./lib/entityFilter");
|
||||
const knownAttributes = {
|
||||
azimuth: { write: false, read: true, unit: '°' },
|
||||
elevation: { write: false, read: true, unit: '°' },
|
||||
@@ -156,6 +157,8 @@ class HassAdapter extends adapter_core_1.Adapter {
|
||||
delayTimeout = null;
|
||||
syncDebounceTimeout = null;
|
||||
stopped = false;
|
||||
excludePatterns = [];
|
||||
initialSyncCompleted = false;
|
||||
constructor(options = {}) {
|
||||
super({
|
||||
...options,
|
||||
@@ -381,11 +384,20 @@ class HassAdapter extends adapter_core_1.Adapter {
|
||||
const objs = [];
|
||||
const states = [];
|
||||
const expectedObjects = new Set();
|
||||
let excludedCount = 0;
|
||||
const excludedIds = [];
|
||||
for (let e = 0; e < entities.length; e++) {
|
||||
const entity = entities[e];
|
||||
if (!entity) {
|
||||
continue;
|
||||
}
|
||||
if ((0, entityFilter_1.isExcluded)(entity.entity_id, this.excludePatterns)) {
|
||||
excludedCount++;
|
||||
if (this.config.verboseFilterLog && !this.initialSyncCompleted) {
|
||||
excludedIds.push(entity.entity_id);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
const name = entity.name || entity.attributes?.friendly_name || entity.entity_id;
|
||||
const desc = entity.attributes?.attribution || undefined;
|
||||
const channelId = `${this.namespace}.entities.${entity.entity_id}`;
|
||||
@@ -555,10 +567,124 @@ class HassAdapter extends adapter_core_1.Adapter {
|
||||
}
|
||||
this.log.info(`Synchronization completed: ${changes.join(', ')}`);
|
||||
}
|
||||
if (excludedCount > 0) {
|
||||
this.log.info(`Entity filter excluded ${excludedCount} entit${excludedCount === 1 ? 'y' : 'ies'} from sync`);
|
||||
}
|
||||
if (excludedIds.length > 0) {
|
||||
for (const id of excludedIds) {
|
||||
this.log.info(`Entity filter excluded: ${id}`);
|
||||
}
|
||||
}
|
||||
this.initialSyncCompleted = true;
|
||||
}
|
||||
async cleanupExcludedObjects() {
|
||||
if (!this.config.cleanupExcludedOnStart) {
|
||||
return;
|
||||
}
|
||||
if (this.excludePatterns.length === 0) {
|
||||
this.log.info('Cleanup skipped: no exclude patterns configured');
|
||||
return;
|
||||
}
|
||||
let allObjects;
|
||||
try {
|
||||
allObjects = await this.getAdapterObjectsAsync();
|
||||
}
|
||||
catch (err) {
|
||||
this.log.error(`Cleanup: failed to load adapter objects: ${err}`);
|
||||
return;
|
||||
}
|
||||
const prefix = `${this.namespace}.entities.`;
|
||||
// Group every object under entities.* by its derived entity_id. We extract
|
||||
// the entity_id from the object id (first two path components after the
|
||||
// prefix) instead of native.entity_id — older objects from previous adapter
|
||||
// versions may have been written as flat states without a parent channel
|
||||
// and without native.entity_id, but their id still encodes the entity.
|
||||
const matchedByEntity = new Map();
|
||||
for (const id in allObjects) {
|
||||
if (!Object.prototype.hasOwnProperty.call(allObjects, id) || !id.startsWith(prefix)) {
|
||||
continue;
|
||||
}
|
||||
const rest = id.substring(prefix.length);
|
||||
const parts = rest.split('.');
|
||||
if (parts.length < 2) {
|
||||
continue;
|
||||
}
|
||||
const entityId = `${parts[0]}.${parts[1]}`;
|
||||
if (!(0, entityFilter_1.isExcluded)(entityId, this.excludePatterns)) {
|
||||
continue;
|
||||
}
|
||||
const ids = matchedByEntity.get(entityId);
|
||||
if (ids) {
|
||||
ids.push(id);
|
||||
}
|
||||
else {
|
||||
matchedByEntity.set(entityId, [id]);
|
||||
}
|
||||
}
|
||||
if (matchedByEntity.size === 0) {
|
||||
this.log.info('Cleanup: no existing objects matched exclude patterns');
|
||||
return;
|
||||
}
|
||||
let deletedEntityCount = 0;
|
||||
let deletedIdCount = 0;
|
||||
let keptForCustomCount = 0;
|
||||
for (const [entityId, ids] of matchedByEntity) {
|
||||
// Custom-config protection: scan all ids of the group; if any holds
|
||||
// common.custom (history/influxdb/sql) keep the whole entity.
|
||||
let hasCustom = false;
|
||||
for (const id of ids) {
|
||||
const custom = allObjects[id].common?.custom;
|
||||
if (custom && Object.keys(custom).length) {
|
||||
hasCustom = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hasCustom) {
|
||||
keptForCustomCount++;
|
||||
this.log.warn(`Cleanup: keeping entity "${entityId}" — has custom adapter config (history/influxdb/sql); remove it manually if you really want to drop it`);
|
||||
continue;
|
||||
}
|
||||
// Delete sub-states first (longest ids), then any parent channel last.
|
||||
const sortedIds = [...ids].sort((a, b) => b.length - a.length);
|
||||
let entityFullyDeleted = true;
|
||||
for (const id of sortedIds) {
|
||||
try {
|
||||
await this.delObjectAsync(id);
|
||||
delete this.hassObjects[id];
|
||||
deletedIdCount++;
|
||||
}
|
||||
catch (err) {
|
||||
entityFullyDeleted = false;
|
||||
this.log.error(`Cleanup: failed to delete "${id}": ${err}`);
|
||||
}
|
||||
}
|
||||
if (entityFullyDeleted) {
|
||||
deletedEntityCount++;
|
||||
if (this.config.verboseFilterLog) {
|
||||
this.log.info(`Cleanup: deleted entity "${entityId}" (${ids.length} object${ids.length === 1 ? '' : 's'})`);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.log.info(`Cleanup: deleted ${deletedEntityCount} excluded entit${deletedEntityCount === 1 ? 'y' : 'ies'} (${deletedIdCount} object${deletedIdCount === 1 ? '' : 's'} total)${keptForCustomCount > 0
|
||||
? `, kept ${keptForCustomCount} entit${keptForCustomCount === 1 ? 'y' : 'ies'} with custom config (see warnings above)`
|
||||
: ''}`);
|
||||
}
|
||||
async main() {
|
||||
this.config.host ||= '127.0.0.1';
|
||||
this.config.port = parseInt(String(this.config.port), 10) || 8123;
|
||||
const rawPatterns = (this.config.excludePatterns || '').toString();
|
||||
const stringPatterns = rawPatterns
|
||||
.split(/\r?\n/)
|
||||
.map(s => s.trim())
|
||||
.filter(line => line.length > 0 && !line.startsWith('#'));
|
||||
this.excludePatterns = (0, entityFilter_1.buildExcludeRegexps)(stringPatterns);
|
||||
if (this.excludePatterns.length === 0) {
|
||||
this.log.info('Entity filter inactive (no exclude patterns configured)');
|
||||
}
|
||||
else {
|
||||
this.log.info(`Entity filter active: ${this.excludePatterns.length} pattern(s) loaded: ${stringPatterns.join(', ')}`);
|
||||
}
|
||||
await this.cleanupExcludedObjects();
|
||||
await this.setStateAsync('info.connection', false, true);
|
||||
this.hass = new hass_1.default(this.config, this.log);
|
||||
this.hass.on('error', err => this.log.error(err));
|
||||
@@ -567,6 +693,10 @@ class HassAdapter extends adapter_core_1.Adapter {
|
||||
if (!entity || typeof entity.entity_id !== 'string') {
|
||||
return;
|
||||
}
|
||||
if ((0, entityFilter_1.isExcluded)(entity.entity_id, this.excludePatterns)) {
|
||||
this.log.debug(`Entity filter: ignored state_changed for ${entity.entity_id}`);
|
||||
return;
|
||||
}
|
||||
const id = `entities.${entity.entity_id}.`;
|
||||
const lc = entity.last_changed ? new Date(entity.last_changed).getTime() : undefined;
|
||||
const ts = entity.last_updated ? new Date(entity.last_updated).getTime() : undefined;
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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 truncated
|
||||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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 truncated
|
||||
Reference in new issue
Block a user