2 Commits

Author SHA1 Message Date
8c6c89aa18 fix in state machine 2018-09-23 17:24:54 +02:00
a5e3d53d50 state machine for hard button 2018-09-23 17:19:50 +02:00
2 changed files with 99 additions and 8 deletions

53
dist/main.js vendored
View File

@ -409,13 +409,58 @@ let mySwitchThingWolfgang = new MySwitchThing_1.MySwitchThing('1st', 'Schlafzimm
]);
mySwitchThingWolfgang.start();
// ----------------------------------------------------------------------------------------------------------
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'),
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'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/3'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/4')
]);
testFourButton.start();
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;
}
}, () => { });
let testDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('Gnd', 'Flur', 'Testlight');
testDimmerAdaptor.start();
let testTimerAdaptor = new TimerAdaptor_1.TimerAdaptor('Gnd', 'Flur', 'DeskLight', 10);

View File

@ -496,13 +496,59 @@ mySwitchThingWolfgang.start()
// ----------------------------------------------------------------------------------------------------------
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'),
let hardButton = new HomematicFourButtonThing('Gnd', 'Flur', 'HardButton', 9, [
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/HardButtonState/NextState'),
new HomematicFourButtonSingleItem('test/button/2'),
new HomematicFourButtonSingleItem('test/button/3'),
new HomematicFourButtonSingleItem('test/button/4')
])
testFourButton.start()
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
}
}, () => {})
let testDimmerAdaptor = new DimmerAdaptor('Gnd', 'Flur', 'Testlight')
testDimmerAdaptor.start()