diff --git a/.gitignore b/.gitignore index 4fa16834..ace9070d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ admin/i18n/flat.txt admin/i18n/*/flat.txt remove.sh result + + +# ioBroker dev-server +.dev-server/ diff --git a/build/lib/devicemgmt.d.ts b/build/lib/devicemgmt.d.ts new file mode 100644 index 00000000..680135f2 --- /dev/null +++ b/build/lib/devicemgmt.d.ts @@ -0,0 +1,15 @@ +import { ActionContext, DeviceDetails, DeviceInfo, DeviceManagement, DeviceRefresh, InstanceDetails } from '@jey-cee/dm-utils'; +import { HomematicRpc } from '../main'; +export declare class dmHmRpc extends DeviceManagement { + protected getInstanceInfo(): InstanceDetails; + protected handleRefresh(context: object): Promise<{ + refresh: boolean; + }>; + protected listDevices(): Promise; + protected getDeviceDetails(id: string, context: ActionContext): Promise; + handleRenameDevice(id: string, context: ActionContext): Promise<{ + refresh: DeviceRefresh; + } | undefined>; +} diff --git a/build/lib/devicemgmt.js b/build/lib/devicemgmt.js new file mode 100644 index 00000000..b0cf9f22 --- /dev/null +++ b/build/lib/devicemgmt.js @@ -0,0 +1,190 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.dmHmRpc = void 0; +const dm_utils_1 = require("@jey-cee/dm-utils"); +class dmHmRpc extends dm_utils_1.DeviceManagement { + getInstanceInfo() { + const data = { + ...super.getInstanceInfo(), + apiVersion: 'v1', + actions: [ + { + id: 'refresh', + icon: 'fas fa-redo-alt', + title: '', + description: { + en: 'Refresh device list', + de: 'Geräteliste aktualisieren', + ru: 'Обновить список устройств', + pt: 'Atualizar lista de dispositivos', + nl: 'Vernieuw apparaatlijst', + fr: 'Actualiser la liste des appareils', + it: 'Aggiorna elenco dispositivi', + es: 'Actualizar lista de dispositivos', + pl: 'Odśwież listę urządzeń', + 'zh-cn': '刷新设备列表', + // @ts-ignore + uk: 'Оновити список пристроїв' + }, + handler: this.handleRefresh.bind(this) + } + ], + }; + return data; + } + async handleRefresh(context) { + this.adapter.log.info('handleRefresh'); + return { refresh: true }; + } + async listDevices() { + const devices = await this.adapter.getDevicesAsync(); + const arrDevices = []; + for (const i in devices) { + const status = {}; + let hasDetails = false; + if (devices[i].native.AVAILABLE_FIRMWARE || devices[i].native.FIRMWARE) { + hasDetails = true; + } + const connected = await this.adapter.getStateAsync(`${devices[i]._id}.0.UNREACH`); + if (connected !== null && connected !== undefined) { + status.connection = connected.val ? 'disconnected' : 'connected'; + } + const rssi = await this.adapter.getStateAsync(`${devices[i]._id}.0.RSSI_DEVICE`); + if (rssi !== null && rssi !== undefined) { + // @ts-ignore + status.rssi = `${rssi.val} dBm`; + } + const lowbat = await this.adapter.getStateAsync(`${devices[i]._id}.0.LOWBAT`); + if (lowbat !== null && lowbat !== undefined && (lowbat === null || lowbat === void 0 ? void 0 : lowbat.val) !== 0) { + // @ts-ignore + status.battery = !lowbat.val; + } + const res = { + id: devices[i]._id, + name: devices[i].common.name, + icon: devices[i].common.icon ? `/adapter/hm-rpc${devices[i].common.icon}` : null, + manufacturer: 'EQ-3 AG', + model: devices[i].native.TYPE ? devices[i].native.TYPE : null, + status: status, + hasDetails: hasDetails, + actions: [ + { + id: 'rename', + icon: 'fa-solid fa-pen', + description: { + en: 'Rename this device', + de: 'Gerät umbenennen', + ru: 'Переименовать это устройство', + pt: 'Renomear este dispositivo', + nl: 'Hernoem dit apparaat', + fr: 'Renommer cet appareil', + it: 'Rinomina questo dispositivo', + es: 'Renombrar este dispositivo', + pl: 'Zmień nazwę tego urządzenia', + 'zh-cn': '重命名此设备', + uk: 'Перейменуйте цей пристрій' + }, + handler: this.handleRenameDevice.bind(this) + } + ] + }; + arrDevices.push(res); + } + // @ts-ignore + return arrDevices; + } + // @ts-ignore + async getDeviceDetails(id, context) { + const devices = await this.adapter.getDevicesAsync(); + const device = devices.find(d => d._id === id); + if (!device) { + return { error: 'Device not found' }; + } + const data = { + id: device._id, + schema: { + type: 'panel', + items: {} + } + }; + if (device.native.FIRMWARE) { + // @ts-ignore + data.schema.items.firmwareLabel = { + type: 'staticText', + text: `Installed firmware:`, + style: { fontWeight: 'bold' }, + newLine: false + }; + // @ts-ignore + data.schema.items.firmware = { + type: 'staticText', + text: `${device.native.FIRMWARE}`, + newLine: false + }; + } + if (device.native.AVAILABLE_FIRMWARE) { + // @ts-ignore + data.schema.items.labelAvailableFirmware = { + type: 'staticText', + text: `Available firmware:`, + style: { fontWeight: 'bold' }, + newLine: true + }; + // @ts-ignore + data.schema.items.availableFirmware = { + type: 'staticText', + text: `${device.native.AVAILABLE_FIRMWARE}`, + newLine: false + }; + } + return data; + } + async handleRenameDevice(id, context) { + const result = await context.showForm({ + type: 'panel', + items: { + newName: { + type: 'text', + trim: false, + placeholder: '', + } + } + }, { + data: { + newName: '' + }, + // @ts-ignore + title: { + en: 'Enter new name', + de: 'Neuen Namen eingeben', + ru: 'Введите новое имя', + pt: 'Digite um novo nome', + nl: 'Voer een nieuwe naam in', + fr: 'Entrez un nouveau nom', + it: 'Inserisci un nuovo nome', + es: 'Ingrese un nuevo nombre', + pl: 'Wpisz nowe imię', + 'zh-cn': '输入新名称', + uk: 'Введіть нове ім\'я' + } + }); + if ((result === null || result === void 0 ? void 0 : result.newName) === undefined || (result === null || result === void 0 ? void 0 : result.newName) === '') { + return { refresh: false }; + } + const obj = { + common: { + name: result.newName + } + }; + const res = await this.adapter.extendObjectAsync(id, obj); + if (res === null) { + //@ts-ignore + this.adapter.log.warn(`Can not rename device ${context.id}: ${JSON.stringify(res)}`); + return { refresh: false }; + } + //@ts-ignore + return { refresh: true }; + } +} +exports.dmHmRpc = dmHmRpc; +//# sourceMappingURL=devicemgmt.js.map \ No newline at end of file diff --git a/build/lib/devicemgmt.js.map b/build/lib/devicemgmt.js.map new file mode 100644 index 00000000..d2fdeaa3 --- /dev/null +++ b/build/lib/devicemgmt.js.map @@ -0,0 +1 @@ +{"version":3,"file":"devicemgmt.js","sourceRoot":"","sources":["../../src/lib/devicemgmt.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/main.d.ts b/build/main.d.ts index cb0ff5c3..f94f8637 100644 --- a/build/main.d.ts +++ b/build/main.d.ts @@ -1 +1,133 @@ -export {}; +import * as utils from '@iobroker/adapter-core'; +export declare class HomematicRpc extends utils.Adapter { + /** On failed rpc call retry in X ms */ + private readonly RETRY_DELAY_MS; + private readonly metaValues; + private readonly dpTypes; + private lastEvent; + private eventInterval; + private connInterval; + private connTimeout; + private daemonURL; + private daemonProto; + private homematicPath; + private readonly COMMON_TYPE_MAPPING; + private readonly deviceManagement; + private readonly methods; + constructor(options?: Partial); + /** + * Is called when databases are connected and adapter received configuration. + */ + private onReady; + /** + * Is called when adapter shuts down - callback has to be called under any circumstances! + * + * @param callback call this in any case, it is necessary to clean up the adapter correctly + */ + private onUnload; + /** + * Is called if a subscribed state changes + * + * @param id the state id + * @param state the actual state, nullish if deleted + */ + private onStateChange; + /** + * Handle messages send to this instance + * @param obj the message object + */ + private onMessage; + /** + * Connect to the CCU + * + * @param isFirst if it's the initial connection + */ + private connect; + /** + * Send ping to API, if error response, set status disconnected and try reconnect + */ + private sendPing; + /** + * Keeps connection alive by pinging or reconnecting if ping is too old + */ + private keepAlive; + /** + * Sends init to RPC server + */ + private sendInit; + /** + * Inits the RPC server + */ + private initRpcServer; + /** + * Adds the paramset objects of the given paramset to the given channel + * + * @param channel - channel object with at least "_id" property + * @param paramset - paramset object retrived by CCU + */ + private addParamsetObjects; + /** + * This method just performs an async rpc method call + * + * @param method the method name + * @param params the method specific parameters + */ + private rpcMethodCallAsyncHelper; + /** + * Async variant of method call which also performs a retry on first error of "setValue" + * + * @param method the method name + * @param params the method specific parameters + */ + private rpcMethodCallAsync; + /** + * Control the EPAPER display + * + * @param id + * @param data + */ + private controlEPaper; + /** + * Read signal from EPAPER display + * + * @param id + */ + private readSignals; + /** + * Read the settings from EPAPER display + * + * @param id + */ + private readSettings; + /** + * Get value paramsets and add them + * + * @param valueParamsets + */ + private getValueParamsets; + /** + * Add EPAPER to meta objects + */ + private addEPaperToMeta; + /** + * Create the devices delivered in the device array + * + * @param deviceArr - array of devices + */ + private createDevices; + /** + * Get all CuxD devices + */ + private getCuxDevices; + /** + * Update the connection indicator and ensure ping interval is running + */ + private updateConnection; + /** + * Derives the common properties of a Paramset SPECIAL attribute + * + * @param paramObj Paramset Object with SPECIAL property + * @param obj ioBroker state object which will be extended + */ + private addCommonSpecial; +} diff --git a/build/main.js b/build/main.js index 8b18df15..f94b5757 100644 --- a/build/main.js +++ b/build/main.js @@ -23,12 +23,14 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); +exports.HomematicRpc = void 0; const utils = __importStar(require("@iobroker/adapter-core")); const images_1 = require("./lib/images"); const tools = __importStar(require("./lib/tools")); const roles_1 = require("./lib/roles"); const crypto_1 = require("crypto"); const promises_1 = require("timers/promises"); +const devicemgmt_1 = require("./lib/devicemgmt"); let connected = false; const displays = {}; let clientId; @@ -117,6 +119,7 @@ class HomematicRpc extends utils.Adapter { this.on('stateChange', this.onStateChange.bind(this)); this.on('message', this.onMessage.bind(this)); this.on('unload', this.onUnload.bind(this)); + this.deviceManagement = new devicemgmt_1.dmHmRpc(this); } /** * Is called when databases are connected and adapter received configuration. @@ -422,6 +425,9 @@ class HomematicRpc extends utils.Adapter { */ async onMessage(obj) { this.log.debug(`[MSSG] Received: ${JSON.stringify(obj)}`); + if (obj.command.startsWith('dm:')) { + return; + } if (obj.command === undefined || obj.command === null || typeof obj.message !== 'object' || @@ -1635,6 +1641,7 @@ class HomematicRpc extends utils.Adapter { } } } +exports.HomematicRpc = HomematicRpc; if (require.main !== module) { // Export the constructor in compact mode module.exports = (options) => new HomematicRpc(options); diff --git a/build/main.js.map b/build/main.js.map index cec23f14..0050d382 100644 --- a/build/main.js.map +++ b/build/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 03ae2d0f..e974a4ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@iobroker/adapter-core": "^3.0.3", + "@jey-cee/dm-utils": "^0.0.1", "binrpc": "^3.3.1", "homematic-xmlrpc": "^1.0.2" }, @@ -423,6 +424,22 @@ "node": ">=12.0.0" } }, + "node_modules/@jey-cee/dm-utils": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@jey-cee/dm-utils/-/dm-utils-0.0.1.tgz", + "integrity": "sha512-efX6og/CuHIpojLWQNdF88XcMnEcI/1tjZHKZU2rFJjL9ALvajZxWQl/uNc4lQ/rMCrSpqxfmfUs9c0JdMMapg==", + "dependencies": { + "@iobroker/adapter-core": "^2.6.8" + } + }, + "node_modules/@jey-cee/dm-utils/node_modules/@iobroker/adapter-core": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.8.tgz", + "integrity": "sha512-xrqtH5RYZ6BvEcDyfuPkajd9el4R6p0VLRYKlnfMafAbxybIN+zfeHvjGI4l8OAHkyP2tcv6boX2Vu0KnMFOHw==", + "dependencies": { + "@types/iobroker": "^4.0.5" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", @@ -598,6 +615,14 @@ "@types/chai": "*" } }, + "node_modules/@types/iobroker": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/iobroker/-/iobroker-4.0.5.tgz", + "integrity": "sha512-D1tJwuDQEQQQ/cZVFjFjFUhUuMxJbfrz5U2UooiZwhgs69D/t8IowMvBI6Lk4ZR8HnCSxYwWHVRKyQnEMNgJPA==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -613,8 +638,7 @@ "node_modules/@types/node": { "version": "20.6.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", - "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==", - "dev": true + "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" }, "node_modules/@types/semver": { "version": "7.5.1", @@ -5053,6 +5077,24 @@ "integrity": "sha512-H96EQbum1mUVxO8gklWoW+G8R3sJLo2OOrGQHsjPrtKvmYU+UCLOjOMh9TjsYMvwGhPz86Bp8xlZSp5WifmbUA==", "peer": true }, + "@jey-cee/dm-utils": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@jey-cee/dm-utils/-/dm-utils-0.0.1.tgz", + "integrity": "sha512-efX6og/CuHIpojLWQNdF88XcMnEcI/1tjZHKZU2rFJjL9ALvajZxWQl/uNc4lQ/rMCrSpqxfmfUs9c0JdMMapg==", + "requires": { + "@iobroker/adapter-core": "^2.6.8" + }, + "dependencies": { + "@iobroker/adapter-core": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-2.6.8.tgz", + "integrity": "sha512-xrqtH5RYZ6BvEcDyfuPkajd9el4R6p0VLRYKlnfMafAbxybIN+zfeHvjGI4l8OAHkyP2tcv6boX2Vu0KnMFOHw==", + "requires": { + "@types/iobroker": "^4.0.5" + } + } + } + }, "@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", @@ -5214,6 +5256,14 @@ "@types/chai": "*" } }, + "@types/iobroker": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/iobroker/-/iobroker-4.0.5.tgz", + "integrity": "sha512-D1tJwuDQEQQQ/cZVFjFjFUhUuMxJbfrz5U2UooiZwhgs69D/t8IowMvBI6Lk4ZR8HnCSxYwWHVRKyQnEMNgJPA==", + "requires": { + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -5229,8 +5279,7 @@ "@types/node": { "version": "20.6.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", - "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==", - "dev": true + "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" }, "@types/semver": { "version": "7.5.1", diff --git a/package.json b/package.json index 356af9dc..bdb0b263 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "@iobroker/adapter-core": "^3.0.3", + "@jey-cee/dm-utils": "^0.0.1", "binrpc": "^3.3.1", "homematic-xmlrpc": "^1.0.2" }, diff --git a/src/lib/devicemgmt.ts b/src/lib/devicemgmt.ts new file mode 100644 index 00000000..c713ed96 --- /dev/null +++ b/src/lib/devicemgmt.ts @@ -0,0 +1,200 @@ +import { ActionContext, DeviceDetails, DeviceInfo, DeviceManagement, DeviceRefresh, InstanceDetails, DeviceStatus } from '@jey-cee/dm-utils'; +import { HomematicRpc } from '../main'; + +export class dmHmRpc extends DeviceManagement{ + + protected getInstanceInfo(): InstanceDetails { + const data: InstanceDetails = { + ...super.getInstanceInfo(), + apiVersion: 'v1', + actions: [ + { + id: 'refresh', + icon: 'fas fa-redo-alt', + title: '', + description: { + en: 'Refresh device list', + de: 'Geräteliste aktualisieren', + ru: 'Обновить список устройств', + pt: 'Atualizar lista de dispositivos', + nl: 'Vernieuw apparaatlijst', + fr: 'Actualiser la liste des appareils', + it: 'Aggiorna elenco dispositivi', + es: 'Actualizar lista de dispositivos', + pl: 'Odśwież listę urządzeń', + 'zh-cn': '刷新设备列表', + // @ts-ignore + uk: 'Оновити список пристроїв' + }, + handler: this.handleRefresh.bind(this) + } + ], + }; + return data; + } + + protected async handleRefresh(context: object) { + this.adapter.log.info('handleRefresh'); + return { refresh: true }; + } + + protected async listDevices(): Promise { + const devices = await this.adapter.getDevicesAsync(); + const arrDevices = []; + for (const i in devices) { + const status: {connection?: string, rssi?: string, lowbat?: string | number | boolean} = {}; + + let hasDetails = false; + if(devices[i].native.AVAILABLE_FIRMWARE || devices[i].native.FIRMWARE) { + hasDetails = true; + } + const connected = await this.adapter.getStateAsync(`${devices[i]._id}.0.UNREACH`); + if(connected !== null && connected !== undefined) { + status.connection = connected.val ? 'disconnected' : 'connected'; + } + const rssi = await this.adapter.getStateAsync(`${devices[i]._id}.0.RSSI_DEVICE`); + if(rssi !== null && rssi !== undefined) { + // @ts-ignore + status.rssi = `${rssi.val} dBm`; + } + const lowbat = await this.adapter.getStateAsync(`${devices[i]._id}.0.LOWBAT`); + if(lowbat !== null && lowbat !== undefined && lowbat?.val !== 0) { + // @ts-ignore + status.battery = !lowbat.val; + } + + const res = { + id: devices[i]._id, + name: devices[i].common.name, + icon: devices[i].common.icon ? `/adapter/hm-rpc${devices[i].common.icon}` : null, + manufacturer: 'EQ-3 AG', + model: devices[i].native.TYPE ? devices[i].native.TYPE : null, + status: status, + hasDetails: hasDetails, + actions: [ + { + id: 'rename', + icon: 'fa-solid fa-pen', + description: { + en: 'Rename this device', + de: 'Gerät umbenennen', + ru: 'Переименовать это устройство', + pt: 'Renomear este dispositivo', + nl: 'Hernoem dit apparaat', + fr: 'Renommer cet appareil', + it: 'Rinomina questo dispositivo', + es: 'Renombrar este dispositivo', + pl: 'Zmień nazwę tego urządzenia', + 'zh-cn': '重命名此设备', + uk: 'Перейменуйте цей пристрій' + }, + handler: this.handleRenameDevice.bind(this) + } + ] + }; + + arrDevices.push(res); + } + // @ts-ignore + return arrDevices; + } + + // @ts-ignore + protected async getDeviceDetails(id: string, context: ActionContext): Promise { + const devices = await this.adapter.getDevicesAsync(); + const device = devices.find(d => d._id === id); + if(!device) { + return {error: 'Device not found'}; + } + const data = { + id: device._id, + schema: { + type: 'panel', + items: { + } + } + + }; + + if(device.native.FIRMWARE) { + // @ts-ignore + data.schema.items.firmwareLabel = { + type: 'staticText', + text: `Installed firmware:`, + style: { fontWeight: 'bold' }, + newLine: false + } + // @ts-ignore + data.schema.items.firmware = { + type: 'staticText', + text: `${device.native.FIRMWARE}`, + newLine: false + } + } + + if(device.native.AVAILABLE_FIRMWARE) { + // @ts-ignore + data.schema.items.labelAvailableFirmware = { + type: 'staticText', + text: `Available firmware:`, + style: { fontWeight: 'bold' }, + newLine: true + } + // @ts-ignore + data.schema.items.availableFirmware = { + type: 'staticText', + text: `${device.native.AVAILABLE_FIRMWARE}`, + newLine: false + } + } + + return data; + } + + async handleRenameDevice(id: string, context: ActionContext): Promise<{ refresh: DeviceRefresh } | undefined> { + + const result = await context.showForm({ + type : 'panel', + items: { + newName: { + type: 'text', + trim: false, + placeholder: '', + } + }}, { + data: { + newName: '' + }, + // @ts-ignore + title: { + en: 'Enter new name', + de: 'Neuen Namen eingeben', + ru: 'Введите новое имя', + pt: 'Digite um novo nome', + nl: 'Voer een nieuwe naam in', + fr: 'Entrez un nouveau nom', + it: 'Inserisci un nuovo nome', + es: 'Ingrese un nuevo nombre', + pl: 'Wpisz nowe imię', + 'zh-cn': '输入新名称', + uk: 'Введіть нове ім\'я' + } + }); + if(result?.newName === undefined || result?.newName === '') { + return {refresh: false}; + } + const obj = { + common: { + name: result.newName + } + }; + const res = await this.adapter.extendObjectAsync(id, obj); + if(res === null) { + //@ts-ignore + this.adapter.log.warn(`Can not rename device ${context.id}: ${JSON.stringify(res)}`); + return {refresh: false}; + } + //@ts-ignore + return {refresh: true}; + } +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index f7975f0e..75fb5f19 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,6 +12,8 @@ import type { ListDevicesEntry } from './lib/_types'; +import { dmHmRpc } from './lib/devicemgmt'; + let connected = false; const displays: Record = {}; @@ -22,14 +24,14 @@ let rpcClient: any; let rpcServer: any; -class HomematicRpc extends utils.Adapter { +export class HomematicRpc extends utils.Adapter { /** On failed rpc call retry in X ms */ private readonly RETRY_DELAY_MS = 150; private readonly metaValues: Record = {}; private readonly dpTypes: Record = {}; private lastEvent = 0; - private eventInterval: NodeJS.Timer | undefined; - private connInterval: NodeJS.Timer | undefined; + private eventInterval: NodeJS.Timeout | undefined; + private connInterval: NodeJS.Timeout | undefined; private connTimeout: NodeJS.Timeout | undefined; private daemonURL = ''; private daemonProto = ''; @@ -49,6 +51,8 @@ class HomematicRpc extends utils.Adapter { EPAPER_TONE_REPETITIONS: 'number' } as const; + private readonly deviceManagement: dmHmRpc; + private readonly methods = { event: (err: any, params: any) => { if (err) { @@ -122,6 +126,8 @@ class HomematicRpc extends utils.Adapter { this.on('stateChange', this.onStateChange.bind(this)); this.on('message', this.onMessage.bind(this)); this.on('unload', this.onUnload.bind(this)); + + this.deviceManagement = new dmHmRpc(this); } /** @@ -454,6 +460,10 @@ class HomematicRpc extends utils.Adapter { private async onMessage(obj: ioBroker.Message): Promise { this.log.debug(`[MSSG] Received: ${JSON.stringify(obj)}`); + if (obj.command.startsWith('dm:')) { + return; + } + if ( obj.command === undefined || obj.command === null ||