This commit is contained in:
Wolfgang Hottgenroth
2018-05-25 00:08:19 +02:00
parent e413f2871c
commit 4d0b708e4a
4 changed files with 41 additions and 32 deletions

22
dist/SwitchOffAdaptor.js vendored Normal file
View File

@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const AItem_1 = require("./AItem");
const MqttDispatcher_1 = require("./MqttDispatcher");
class SwitchOffAdaptor extends AItem_1.AItem {
constructor(floor, room, item) {
super(floor, room, item);
this.actionStateTopic = `${this.topicFirstPart}/state`;
this.inTopic = `${this.topicFirstPart}/in`;
this.subscribeTopics = [this.inTopic];
}
getInTopic() {
return this.inTopic;
}
processMessage(topic, payload) {
if ((topic == this.inTopic) && (payload == 'SHORT')) {
MqttDispatcher_1.mqttHandler.send(this.actionStateTopic, 'OFF', true);
}
}
}
exports.SwitchOffAdaptor = SwitchOffAdaptor;
//# sourceMappingURL=SwitchOffAdaptor.js.map

16
dist/main.js vendored
View File

@ -8,7 +8,7 @@ const M433SwitchItem_1 = require("./M433SwitchItem");
const HomematicFourButtonThing_1 = require("./HomematicFourButtonThing"); const HomematicFourButtonThing_1 = require("./HomematicFourButtonThing");
const DimmerAdaptor_1 = require("./DimmerAdaptor"); const DimmerAdaptor_1 = require("./DimmerAdaptor");
const TimerAdaptor_1 = require("./TimerAdaptor"); const TimerAdaptor_1 = require("./TimerAdaptor");
const SwitchAdaptor_1 = require("./SwitchAdaptor"); const SwitchOffAdaptor_1 = require("./SwitchOffAdaptor");
const HomematicDimmerItem_1 = require("./HomematicDimmerItem"); const HomematicDimmerItem_1 = require("./HomematicDimmerItem");
const HomematicSwitchItem_1 = require("./HomematicSwitchItem"); const HomematicSwitchItem_1 = require("./HomematicSwitchItem");
const Forwarder_1 = require("./Forwarder"); const Forwarder_1 = require("./Forwarder");
@ -372,7 +372,7 @@ basementSmallLight.on('somethingChanged', () => {
if ((basementLargeLight.getState() == 'OFF') && (basementSmallLight.getState() == 'ON')) { if ((basementLargeLight.getState() == 'OFF') && (basementSmallLight.getState() == 'ON')) {
setTimeout(() => { setTimeout(() => {
MqttDispatcher_1.mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF'); MqttDispatcher_1.mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF');
}, (3 * 1000)); }, (3 * 60 * 1000));
} }
else if ((basementLargeLight.getState() == 'ON') && (basementSmallLight.getState() == 'OFF')) { else if ((basementLargeLight.getState() == 'ON') && (basementSmallLight.getState() == 'OFF')) {
MqttDispatcher_1.mqttHandler.send(basementLargeLight.getStateTopic(), 'OFF'); MqttDispatcher_1.mqttHandler.send(basementLargeLight.getStateTopic(), 'OFF');
@ -391,20 +391,20 @@ basementLargeLight.on('somethingChanged', () => {
} }
}); });
let basementForwarder = new Forwarder_1.Forwarder('Base', 'All', 'Forwarder', 'state', 'BasementForwarder', [ let basementForwarder = new Forwarder_1.Forwarder('Base', 'All', 'Forwarder', 'state', 'BasementForwarder', [
basementLargeLight.getState(), basementLargeLight.getStateTopic(),
basementSmallLight.getState(), basementSmallLight.getStateTopic(),
workshopLight.getState() workshopLight.getStateTopic()
]); ]);
basementForwarder.start(); basementForwarder.start();
let basementForwarderSwitchAdaptor = new SwitchAdaptor_1.SwitchAdaptor('Base', 'All', 'Forwarder'); let basementForwarderSwitchOffAdaptor = new SwitchOffAdaptor_1.SwitchOffAdaptor('Base', 'All', 'Forwarder');
basementForwarderSwitchAdaptor.start(); basementForwarderSwitchOffAdaptor.start();
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let twoLedSignal1 = new TwoLedSignal_1.TwoLedSignal('Gnd', 'Hallway', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', allRelevantLights, "OFF", "ON", allWindows, "CLOSED", "OPEN"); let twoLedSignal1 = new TwoLedSignal_1.TwoLedSignal('Gnd', 'Hallway', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', allRelevantLights, "OFF", "ON", allWindows, "CLOSED", "OPEN");
twoLedSignal1.start(); twoLedSignal1.start();
// MySwitchTHing // MySwitchTHing
let mySwitchThingWolfgang = new MySwitchThing_1.MySwitchThing('1st', 'BedRoom', 'WolfgangsSwitch', [ let mySwitchThingWolfgang = new MySwitchThing_1.MySwitchThing('1st', 'BedRoom', 'WolfgangsSwitch', [
new MySwitchThing_1.MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()), new MySwitchThing_1.MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()),
new MySwitchThing_1.MySwitchSingleItem(basementForwarderSwitchAdaptor.getInTopic()), new MySwitchThing_1.MySwitchSingleItem(basementForwarderSwitchOffAdaptor.getInTopic()),
new MySwitchThing_1.MySwitchSingleItem('IoT/InsLeere/2'), new MySwitchThing_1.MySwitchSingleItem('IoT/InsLeere/2'),
]); ]);
mySwitchThingWolfgang.start(); mySwitchThingWolfgang.start();

View File

@ -2,8 +2,7 @@ import { AItem, HasInTopic } from './AItem'
import * as logger from './log' import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
export class SwitchAdaptor extends AItem implements HasInTopic { export class SwitchOffAdaptor extends AItem implements HasInTopic {
private state: string
private inTopic: string private inTopic: string
private actionStateTopic: string private actionStateTopic: string
@ -12,7 +11,6 @@ export class SwitchAdaptor extends AItem implements HasInTopic {
this.actionStateTopic = `${this.topicFirstPart}/state` this.actionStateTopic = `${this.topicFirstPart}/state`
this.inTopic = `${this.topicFirstPart}/in` this.inTopic = `${this.topicFirstPart}/in`
this.subscribeTopics = [ this.inTopic ] this.subscribeTopics = [ this.inTopic ]
this.state = 'OFF'
} }
getInTopic() : string { getInTopic() : string {
@ -21,19 +19,8 @@ export class SwitchAdaptor extends AItem implements HasInTopic {
processMessage(topic: string, payload: string) : void { processMessage(topic: string, payload: string) : void {
switch (topic) { if ((topic == this.inTopic) && (payload == 'SHORT')) {
case this.inTopic: mqttHandler.send(this.actionStateTopic, 'OFF', true)
switch (payload) {
case 'SHORT':
if (this.state == 'OFF') {
this.state = 'ON'
} else {
this.state = 'OFF'
}
mqttHandler.send(this.actionStateTopic, this.state, true)
break
}
break
} }
} }
} }

View File

@ -10,7 +10,7 @@ import { M433SwitchItem } from './M433SwitchItem'
import { HomematicFourButtonThing, HomematicFourButtonSingleItem } from './HomematicFourButtonThing' import { HomematicFourButtonThing, HomematicFourButtonSingleItem } from './HomematicFourButtonThing'
import { DimmerAdaptor } from './DimmerAdaptor' import { DimmerAdaptor } from './DimmerAdaptor'
import { TimerAdaptor } from './TimerAdaptor' import { TimerAdaptor } from './TimerAdaptor'
import { SwitchAdaptor } from './SwitchAdaptor' import { SwitchOffAdaptor } from './SwitchOffAdaptor'
import { HomematicDimmerItem } from './HomematicDimmerItem' import { HomematicDimmerItem } from './HomematicDimmerItem'
import { HomematicSwitchItem } from './HomematicSwitchItem' import { HomematicSwitchItem } from './HomematicSwitchItem'
import { Forwarder } from './Forwarder' import { Forwarder } from './Forwarder'
@ -463,7 +463,7 @@ basementSmallLight.on('somethingChanged', () => {
if ((basementLargeLight.getState() == 'OFF') && (basementSmallLight.getState() == 'ON')) { if ((basementLargeLight.getState() == 'OFF') && (basementSmallLight.getState() == 'ON')) {
setTimeout(() => { setTimeout(() => {
mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF') mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF')
}, (3 * 1000)) }, (3 * 60 * 1000))
} else if ((basementLargeLight.getState() == 'ON') && (basementSmallLight.getState() == 'OFF')) { } else if ((basementLargeLight.getState() == 'ON') && (basementSmallLight.getState() == 'OFF')) {
mqttHandler.send(basementLargeLight.getStateTopic(), 'OFF') mqttHandler.send(basementLargeLight.getStateTopic(), 'OFF')
} }
@ -483,15 +483,15 @@ basementLargeLight.on('somethingChanged', () => {
let basementForwarder = new Forwarder('Base', 'All', 'Forwarder', 'state', 'BasementForwarder', [ let basementForwarder = new Forwarder('Base', 'All', 'Forwarder', 'state', 'BasementForwarder', [
basementLargeLight.getState(), basementLargeLight.getStateTopic(),
basementSmallLight.getState(), basementSmallLight.getStateTopic(),
workshopLight.getState() workshopLight.getStateTopic()
]) ])
basementForwarder.start() basementForwarder.start()
let basementForwarderSwitchAdaptor = new SwitchAdaptor('Base', 'All', 'Forwarder') let basementForwarderSwitchOffAdaptor = new SwitchOffAdaptor('Base', 'All', 'Forwarder')
basementForwarderSwitchAdaptor.start() basementForwarderSwitchOffAdaptor.start()
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let twoLedSignal1 = new TwoLedSignal('Gnd', 'Hallway', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', let twoLedSignal1 = new TwoLedSignal('Gnd', 'Hallway', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger',
@ -502,7 +502,7 @@ twoLedSignal1.start()
// MySwitchTHing // MySwitchTHing
let mySwitchThingWolfgang = new MySwitchThing('1st', 'BedRoom', 'WolfgangsSwitch', [ let mySwitchThingWolfgang = new MySwitchThing('1st', 'BedRoom', 'WolfgangsSwitch', [
new MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()), new MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()),
new MySwitchSingleItem(basementForwarderSwitchAdaptor.getInTopic()), new MySwitchSingleItem(basementForwarderSwitchOffAdaptor.getInTopic()),
new MySwitchSingleItem('IoT/InsLeere/2'), new MySwitchSingleItem('IoT/InsLeere/2'),
]) ])
mySwitchThingWolfgang.start() mySwitchThingWolfgang.start()