1 Commits

Author SHA1 Message Date
ceeecf5009 fix SimpleTopic and remove homekit and openhab stuff 2018-07-11 20:35:55 +02:00
6 changed files with 46 additions and 182 deletions

View File

@ -31,6 +31,7 @@ class HomematicSwitchItem extends AHomegearItem_1.AHomegearItem {
this.deviceFeedbackTopic
];
this.state = 'OFF';
this.oldState = undefined;
this.type = type;
}
exportItem() {
@ -41,11 +42,14 @@ class HomematicSwitchItem extends AHomegearItem_1.AHomegearItem {
case this.stateTopic:
this.state = payload;
MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state);
if (this.state == 'ON') {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'true');
}
else {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'false');
if (this.state != this.oldState) {
if (this.state == 'ON') {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'true');
}
else {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'false');
}
this.oldState = this.state;
}
break;
case this.deviceFeedbackTopic:
@ -55,6 +59,7 @@ class HomematicSwitchItem extends AHomegearItem_1.AHomegearItem {
else {
this.state = 'OFF';
}
this.oldState = this.state;
MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state);
break;
}

View File

@ -26,6 +26,7 @@ class M433SwitchItem extends AItem_1.AItem {
this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`;
this.actionTopic = 'IoT/Mqtt433Gateway/Message';
this.state = 'OFF';
this.oldState = undefined;
this.onCode = onCode;
this.offCode = offCode;
this.type = type;
@ -36,11 +37,14 @@ class M433SwitchItem extends AItem_1.AItem {
processMessage(topic, payload) {
this.state = payload;
MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state);
if (this.state == 'ON') {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, this.onCode);
}
else {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, this.offCode);
if (this.state != this.oldState) {
if (this.state == 'ON') {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, this.onCode);
}
else {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, this.offCode);
}
this.oldState = this.state;
}
}
}

84
dist/main.js vendored
View File

@ -409,58 +409,13 @@ let mySwitchThingWolfgang = new MySwitchThing_1.MySwitchThing('1st', 'Schlafzimm
]);
mySwitchThingWolfgang.start();
// ----------------------------------------------------------------------------------------------------------
let hardButton = new HomematicFourButtonThing_1.HomematicFourButtonThing('Gnd', 'Flur', 'HardButton', 9, [
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/HardButtonState/NextState'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/2'),
let testFourButton = new HomematicFourButtonThing_1.HomematicFourButtonThing('Gnd', 'Flur', 'TestButton', 9, [
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/Testlight/dimmerIn'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/DeskLight/timerIn'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/3'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/4')
]);
hardButton.start();
let hardButtonState = 0;
MqttDispatcher_1.mqttHandler.register(['dispatcher_ng/items/Gnd/Flur/HardButtonState/NextState'], (topic, payload) => {
switch (hardButtonState) {
case 0:
if (payload == 'SHORT') {
hardButtonState = 1;
}
if (payload == 'LONG_END') {
hardButtonState = 0;
}
break;
case 1:
if (payload == 'SHORT') {
hardButtonState = 2;
}
if (payload == 'LONG_END') {
hardButtonState = 0;
}
break;
case 2:
if (payload == 'SHORT') {
hardButtonState = 0;
}
if (payload == 'LONG_END') {
hardButtonState = 0;
}
break;
default:
hardButtonState = 0;
}
switch (hardButtonState) {
case 0:
MqttDispatcher_1.mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/DayLight/state', 'OFF');
MqttDispatcher_1.mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/EcoLight/state', 'OFF');
break;
case 1:
MqttDispatcher_1.mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/DayLight/state', 'ON');
MqttDispatcher_1.mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/EcoLight/state', 'OFF');
break;
case 2:
MqttDispatcher_1.mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/DayLight/state', 'OFF');
MqttDispatcher_1.mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/EcoLight/state', 'ON');
break;
}
}, () => { });
testFourButton.start();
let testDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('Gnd', 'Flur', 'Testlight');
testDimmerAdaptor.start();
let testTimerAdaptor = new TimerAdaptor_1.TimerAdaptor('Gnd', 'Flur', 'DeskLight', 10);
@ -522,36 +477,7 @@ let watchdogTimer = setInterval(() => {
watchdogCounter += 1;
MqttDispatcher_1.mqttHandler.send(config.dict.watchdogTopic, `${config.dict.watchdogMessage} ${watchdogCounter}`);
}, config.dict.watchdogInterval);
// // ----------------------------------------------------------------------------------------------------------
// // Homekit export
// let homekitObject : { [key:string]:{} } = {}
// let openhabList : string[] = []
// // logger.info("allLabeledItems")
// // logger.info(JSON.stringify(allLabeledItems))
// allLabeledItems.forEach((item: AItem) => {
// let exportData : ExportType|null = item.exportItem()
// if (exportData != null) {
// if ('id' in exportData['homekit']) {
// homekitObject[exportData['homekit']['id']] = exportData['homekit']['object']
// }
// if (exportData['openhab'] instanceof Array) {
// let da : string[] = exportData['openhab'] as string[]
// da.forEach((o: string) => openhabList.push(o))
// } else {
// let da : string = exportData['openhab'] as string
// openhabList.push(da)
// }
// // logger.info("openHabList")
// // logger.info(JSON.stringify(openhabList))
// }
// })
// let heatingMainSwitchExport : ExportType|null = MaxThermostat.exportHeatingMainSwitchItem()
// if (heatingMainSwitchExport != null) {
// let da : string = heatingMainSwitchExport['openhab'] as string
// openhabList.push(da)
// }
// fs.writeFileSync(config.dict.homekitFile, JSON.stringify(homekitObject, null, 4))
// fs.writeFileSync(config.dict.openhabItemFile, openhabList.join('\n'))
// ----------------------------------------------------------------------------------------------------------
let roomSwitches = {};
allLights.forEach((item) => {
let switchItem = { 'label': item.getLabel(), 'actionTopic': item.getStateTopic(), 'feedbackTopic': item.getStateFeedbackTopic() };

View File

@ -46,6 +46,7 @@ export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFee
this.deviceFeedbackTopic
]
this.state = 'OFF'
this.oldState = undefined
this.type = type
}
@ -58,10 +59,13 @@ export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFee
case this.stateTopic:
this.state = payload
mqttHandler.send(this.stateFeedbackTopic, this.state)
if (this.state == 'ON') {
mqttHandler.send(this.actionTopic, 'true')
} else {
mqttHandler.send(this.actionTopic, 'false')
if (this.state != this.oldState) {
if (this.state == 'ON') {
mqttHandler.send(this.actionTopic, 'true')
} else {
mqttHandler.send(this.actionTopic, 'false')
}
this.oldState = this.state
}
break
case this.deviceFeedbackTopic:
@ -70,6 +74,7 @@ export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFee
} else {
this.state = 'OFF'
}
this.oldState = this.state
mqttHandler.send(this.stateFeedbackTopic, this.state)
break
}

View File

@ -41,6 +41,7 @@ export class M433SwitchItem extends AItem implements HasStateAndFeedbackTopicAnd
this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`
this.actionTopic = 'IoT/Mqtt433Gateway/Message'
this.state = 'OFF'
this.oldState = undefined
this.onCode = onCode
this.offCode = offCode
this.type = type
@ -53,10 +54,13 @@ export class M433SwitchItem extends AItem implements HasStateAndFeedbackTopicAnd
processMessage(topic: string, payload: string) {
this.state = payload;
mqttHandler.send(this.stateFeedbackTopic, this.state);
if (this.state == 'ON') {
mqttHandler.send(this.actionTopic, this.onCode);
} else {
mqttHandler.send(this.actionTopic, this.offCode);
if (this.state != this.oldState) {
if (this.state == 'ON') {
mqttHandler.send(this.actionTopic, this.onCode);
} else {
mqttHandler.send(this.actionTopic, this.offCode);
}
this.oldState = this.state;
}
}
}

View File

@ -496,59 +496,13 @@ mySwitchThingWolfgang.start()
// ----------------------------------------------------------------------------------------------------------
let hardButton = new HomematicFourButtonThing('Gnd', 'Flur', 'HardButton', 9, [
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/HardButtonState/NextState'),
new HomematicFourButtonSingleItem('test/button/2'),
let testFourButton = new HomematicFourButtonThing('Gnd', 'Flur', 'TestButton', 9, [
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/Testlight/dimmerIn'),
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/DeskLight/timerIn'),
new HomematicFourButtonSingleItem('test/button/3'),
new HomematicFourButtonSingleItem('test/button/4')
])
hardButton.start()
let hardButtonState : number = 0
mqttHandler.register(['dispatcher_ng/items/Gnd/Flur/HardButtonState/NextState'],
(topic: string, payload: string) : void => {
switch (hardButtonState) {
case 0:
if (payload == 'SHORT') {
hardButtonState = 1
}
if (payload == 'LONG_END') {
hardButtonState = 0
}
break
case 1:
if (payload == 'SHORT') {
hardButtonState = 2
}
if (payload == 'LONG_END') {
hardButtonState = 0
}
break
case 2:
if (payload == 'SHORT') {
hardButtonState = 0
}
if (payload == 'LONG_END') {
hardButtonState = 0
}
break
default:
hardButtonState = 0
}
switch (hardButtonState) {
case 0:
mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/AllLights/state', 'OFF')
break
case 1:
mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/DayLight/state', 'ON')
break
case 2:
mqttHandler.send('dispatcher_ng/items/Gnd/Szenen/EcoLight/state', 'ON')
break
}
}, () => {})
testFourButton.start()
let testDimmerAdaptor = new DimmerAdaptor('Gnd', 'Flur', 'Testlight')
testDimmerAdaptor.start()
@ -643,41 +597,7 @@ let watchdogTimer = setInterval(() => {
// // ----------------------------------------------------------------------------------------------------------
// // Homekit export
// let homekitObject : { [key:string]:{} } = {}
// let openhabList : string[] = []
// // logger.info("allLabeledItems")
// // logger.info(JSON.stringify(allLabeledItems))
// allLabeledItems.forEach((item: AItem) => {
// let exportData : ExportType|null = item.exportItem()
// if (exportData != null) {
// if ('id' in exportData['homekit']) {
// homekitObject[exportData['homekit']['id']] = exportData['homekit']['object']
// }
// if (exportData['openhab'] instanceof Array) {
// let da : string[] = exportData['openhab'] as string[]
// da.forEach((o: string) => openhabList.push(o))
// } else {
// let da : string = exportData['openhab'] as string
// openhabList.push(da)
// }
// // logger.info("openHabList")
// // logger.info(JSON.stringify(openhabList))
// }
// })
// let heatingMainSwitchExport : ExportType|null = MaxThermostat.exportHeatingMainSwitchItem()
// if (heatingMainSwitchExport != null) {
// let da : string = heatingMainSwitchExport['openhab'] as string
// openhabList.push(da)
// }
// fs.writeFileSync(config.dict.homekitFile, JSON.stringify(homekitObject, null, 4))
// fs.writeFileSync(config.dict.openhabItemFile, openhabList.join('\n'))
// ----------------------------------------------------------------------------------------------------------
let roomSwitches: any = {}
allLights.forEach((item: HasStateAndFeedbackTopicAndLabelAndRoom) => {