diff --git a/dist/HomematicSwitchItem.js b/dist/HomematicSwitchItem.js index 6287f0e..df0a38b 100644 --- a/dist/HomematicSwitchItem.js +++ b/dist/HomematicSwitchItem.js @@ -4,6 +4,12 @@ const MqttDispatcher_1 = require("./MqttDispatcher"); const AHomematicItem_1 = require("./AHomematicItem"); const Export_1 = require("./Export"); class HomematicSwitchItem extends AHomematicItem_1.AHomematicItem { + getStateTopic() { + return this.stateTopic; + } + getStateFeedbackTopic() { + return this.stateFeedbackTopic; + } constructor(floor, room, item, label, hmId, type = 'bulb') { super(floor, room, item, label, hmId); this.stateTopic = `${this.topicFirstPart}/state`; diff --git a/dist/M433SwitchItem.js b/dist/M433SwitchItem.js index 32bbe01..d6492e8 100644 --- a/dist/M433SwitchItem.js +++ b/dist/M433SwitchItem.js @@ -4,6 +4,12 @@ const MqttDispatcher_1 = require("./MqttDispatcher"); const AItem_1 = require("./AItem"); const Export_1 = require("./Export"); class M433SwitchItem extends AItem_1.AItem { + getStateTopic() { + return this.stateTopic; + } + getStateFeedbackTopic() { + return this.stateFeedbackTopic; + } constructor(floor, room, item, label, onCode, offCode, type = 'bulb') { super(floor, room, item, label); this.stateTopic = `${this.topicFirstPart}/state`; diff --git a/dist/main.js b/dist/main.js index addf36d..aadb9d5 100644 --- a/dist/main.js +++ b/dist/main.js @@ -102,37 +102,37 @@ bedRoomWindowLight.start(); allLabeledItems.push(bedRoomWindowLight); // --------------------------------------------------------------------------------------------------------- let morningLightForwarder = new Forwarder_1.Forwarder('Gnd', 'Hallway', 'MorningLight', 'state', 'MorningLight', [ - kitchenWindowLight.stateTopic, - kitchenCeilingLight.stateTopic, - hallwayDeskLight.stateTopic, - hallwayStandLight.stateTopic, - hallwayWardrobeLight.stateTopic + kitchenWindowLight.getStateTopic(), + kitchenCeilingLight.getStateTopic(), + hallwayDeskLight.getStateTopic(), + hallwayStandLight.getStateTopic(), + hallwayWardrobeLight.getStateTopic() ]); morningLightForwarder.start(); let dayLightForwarder = new Forwarder_1.Forwarder('Gnd', 'Hallway', 'DayLight', 'state', 'DayLight', [ - kitchenWindowLight.stateTopic, - kitchenCeilingLight.stateTopic, - hallwayDeskLight.stateTopic, - hallwayStandLight.stateTopic, - hallwayWardrobeLight.stateTopic, - diningRoomSmallLight.stateTopic, - diningRoomStandLight.stateTopic, - diningRoomCupboardLight.stateTopic, - livingRoomLargeLight.stateTopic, - livingRoomSmallLight.stateTopic, - livingRoomStars.stateTopic, - livingRoomStandLight.stateTopic + kitchenWindowLight.getStateTopic(), + kitchenCeilingLight.getStateTopic(), + hallwayDeskLight.getStateTopic(), + hallwayStandLight.getStateTopic(), + hallwayWardrobeLight.getStateTopic(), + diningRoomSmallLight.getStateTopic(), + diningRoomStandLight.getStateTopic(), + diningRoomCupboardLight.getStateTopic(), + livingRoomLargeLight.getStateTopic(), + livingRoomSmallLight.getStateTopic(), + livingRoomStars.getStateTopic(), + livingRoomStandLight.getStateTopic() ]); dayLightForwarder.start(); let ecoLightForwarder = new Forwarder_1.Forwarder('Gnd', 'Hallway', 'EcoLight', 'state', 'EcoLight', [ - kitchenWindowLight.stateTopic, - hallwayDeskLight.stateTopic, - hallwayWardrobeLight.stateTopic, - diningRoomSmallLight.stateTopic, - diningRoomStandLight.stateTopic, - diningRoomCupboardLight.stateTopic, - livingRoomStars.stateTopic, - livingRoomStandLight.stateTopic + kitchenWindowLight.getStateTopic(), + hallwayDeskLight.getStateTopic(), + hallwayWardrobeLight.getStateTopic(), + diningRoomSmallLight.getStateTopic(), + diningRoomStandLight.getStateTopic(), + diningRoomCupboardLight.getStateTopic(), + livingRoomStars.getStateTopic(), + livingRoomStandLight.getStateTopic() ]); ecoLightForwarder.start(); // ---------------------------------------------------------------------------------------------------------- diff --git a/src/AItem.ts b/src/AItem.ts index cd710de..a44c2bf 100644 --- a/src/AItem.ts +++ b/src/AItem.ts @@ -3,6 +3,15 @@ import { mqttHandler } from './MqttDispatcher' import { ExportType } from './Export' + +export interface HasStateTopic { + getStateTopic() : string +} + +export interface HasStateAndFeedbackTopic extends HasStateTopic { + getStateFeedbackTopic() : string +} + export abstract class AItem { protected topicFirstPart: string protected itemId: string diff --git a/src/HomematicSwitchItem.ts b/src/HomematicSwitchItem.ts index bff6eb3..edb4f2e 100644 --- a/src/HomematicSwitchItem.ts +++ b/src/HomematicSwitchItem.ts @@ -2,8 +2,9 @@ import * as logger from './log' import { mqttHandler } from './MqttDispatcher' import { AHomematicItem } from './AHomematicItem' import { SwitchExport, ExportType } from './Export' +import { HasStateAndFeedbackTopic } from './AItem'; -export class HomematicSwitchItem extends AHomematicItem { +export class HomematicSwitchItem extends AHomematicItem implements HasStateAndFeedbackTopic { private oldState: string|undefined private state: string private actionTopic: string @@ -12,6 +13,14 @@ export class HomematicSwitchItem extends AHomematicItem { private stateTopic: string private type: string + getStateTopic() : string { + return this.stateTopic + } + + getStateFeedbackTopic() : string { + return this.stateFeedbackTopic + } + constructor(floor: string, room: string, item: string, label: string, hmId: number, type: string = 'bulb') { super(floor, room, item, label, hmId) this.stateTopic = `${this.topicFirstPart}/state` diff --git a/src/M433SwitchItem.ts b/src/M433SwitchItem.ts index 8062d6c..306bc0d 100644 --- a/src/M433SwitchItem.ts +++ b/src/M433SwitchItem.ts @@ -1,19 +1,27 @@ import * as logger from './log' import { mqttHandler } from './MqttDispatcher' -import { AItem } from './AItem' +import { AItem, HasStateAndFeedbackTopic } from './AItem' import { SwitchExport, ExportType } from './Export' -export class M433SwitchItem extends AItem { +export class M433SwitchItem extends AItem implements HasStateAndFeedbackTopic { private offCode: string private onCode: string private oldState: string|undefined private state: string private actionTopic: string private stateFeedbackTopic: string - public stateTopic: string + private stateTopic: string private type: string + getStateTopic() : string { + return this.stateTopic + } + + getStateFeedbackTopic() : string { + return this.stateFeedbackTopic + } + constructor(floor: string, room: string, item: string, label: string, onCode: string, offCode: string, type: string = 'bulb') { super(floor, room, item, label) this.stateTopic = `${this.topicFirstPart}/state` diff --git a/src/main.ts b/src/main.ts index e3a81a6..c8e19c0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -134,39 +134,39 @@ allLabeledItems.push(bedRoomWindowLight) // --------------------------------------------------------------------------------------------------------- let morningLightForwarder = new Forwarder('Gnd', 'Hallway', 'MorningLight', 'state', 'MorningLight', [ - kitchenWindowLight.stateTopic, - kitchenCeilingLight.stateTopic, - hallwayDeskLight.stateTopic, - hallwayStandLight.stateTopic, - hallwayWardrobeLight.stateTopic + kitchenWindowLight.getStateTopic(), + kitchenCeilingLight.getStateTopic(), + hallwayDeskLight.getStateTopic(), + hallwayStandLight.getStateTopic(), + hallwayWardrobeLight.getStateTopic() ]) morningLightForwarder.start() let dayLightForwarder = new Forwarder('Gnd', 'Hallway', 'DayLight', 'state', 'DayLight', [ - kitchenWindowLight.stateTopic, - kitchenCeilingLight.stateTopic, - hallwayDeskLight.stateTopic, - hallwayStandLight.stateTopic, - hallwayWardrobeLight.stateTopic, - diningRoomSmallLight.stateTopic, - diningRoomStandLight.stateTopic, - diningRoomCupboardLight.stateTopic, - livingRoomLargeLight.stateTopic, - livingRoomSmallLight.stateTopic, - livingRoomStars.stateTopic, - livingRoomStandLight.stateTopic + kitchenWindowLight.getStateTopic(), + kitchenCeilingLight.getStateTopic(), + hallwayDeskLight.getStateTopic(), + hallwayStandLight.getStateTopic(), + hallwayWardrobeLight.getStateTopic(), + diningRoomSmallLight.getStateTopic(), + diningRoomStandLight.getStateTopic(), + diningRoomCupboardLight.getStateTopic(), + livingRoomLargeLight.getStateTopic(), + livingRoomSmallLight.getStateTopic(), + livingRoomStars.getStateTopic(), + livingRoomStandLight.getStateTopic() ]) dayLightForwarder.start() let ecoLightForwarder = new Forwarder('Gnd', 'Hallway', 'EcoLight', 'state', 'EcoLight', [ - kitchenWindowLight.stateTopic, - hallwayDeskLight.stateTopic, - hallwayWardrobeLight.stateTopic, - diningRoomSmallLight.stateTopic, - diningRoomStandLight.stateTopic, - diningRoomCupboardLight.stateTopic, - livingRoomStars.stateTopic, - livingRoomStandLight.stateTopic + kitchenWindowLight.getStateTopic(), + hallwayDeskLight.getStateTopic(), + hallwayWardrobeLight.getStateTopic(), + diningRoomSmallLight.getStateTopic(), + diningRoomStandLight.getStateTopic(), + diningRoomCupboardLight.getStateTopic(), + livingRoomStars.getStateTopic(), + livingRoomStandLight.getStateTopic() ]) ecoLightForwarder.start() // ----------------------------------------------------------------------------------------------------------