18 Commits

33 changed files with 1392 additions and 595 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
node_modules node_modules
*.map *.map
mylogfile.log mylogfile.log
dispatcher_ng.log dispatcher_ng.log*

View File

@ -7,7 +7,7 @@ After=network-online.target
[Service] [Service]
Type=simple Type=simple
GuessMainPID=yes GuessMainPID=yes
ExecStart=/usr/bin/npm start -- -c dispatcher_ng.conf ExecStart=/usr/bin/npm start -- -c dispatcher_ng.conf
ExecStop=kill -SIGINT $mainpid ExecStop=kill -SIGINT $mainpid
Restart=on-failure Restart=on-failure
WorkingDirectory=/opt/services/dispatcher_ng WorkingDirectory=/opt/services/dispatcher_ng

View File

@ -8,5 +8,10 @@
"smtpSender": "dispatcher@hottis.de", "smtpSender": "dispatcher@hottis.de",
"smtpReceiver": "woho@hottis.de", "smtpReceiver": "woho@hottis.de",
"homekitFile": "homekit.json", "homekitFile": "homekit.json",
"openhabItemFile": "openhab.items" "openhabItemFile": "openhab.items",
"heartbeatTopic": "dispatcher_ng/i/am/alive",
"heartbeatInterval": 10000,
"watchdogTopic": "IoT/Watchdog",
"watchdogInterval": 1000,
"watchdogMessage": "WauWau!"
} }

4
dist/AItem.js vendored
View File

@ -1,8 +1,10 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const MqttDispatcher_1 = require("./MqttDispatcher"); const MqttDispatcher_1 = require("./MqttDispatcher");
class AItem { const Events = require("events");
class AItem extends Events.EventEmitter {
constructor(floor, room, item, label = '') { constructor(floor, room, item, label = '') {
super();
this.floor = floor; this.floor = floor;
this.room = room; this.room = room;
this.item = item; this.item = item;

3
dist/Forwarder.js vendored
View File

@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
const AItem_1 = require("./AItem"); const AItem_1 = require("./AItem");
const MqttDispatcher_1 = require("./MqttDispatcher"); const MqttDispatcher_1 = require("./MqttDispatcher");
class Forwarder extends AItem_1.AItem { class Forwarder extends AItem_1.AItem {
getInTopic() {
return this.inTopic;
}
constructor(floor, room, item, topicLastPart, label, targetTopics) { constructor(floor, room, item, topicLastPart, label, targetTopics) {
super(floor, room, item, label); super(floor, room, item, label);
this.inTopic = `${this.topicFirstPart}/${topicLastPart}`; this.inTopic = `${this.topicFirstPart}/${topicLastPart}`;

View File

@ -4,18 +4,28 @@ const MqttDispatcher_1 = require("./MqttDispatcher");
const AHomegearItem_1 = require("./AHomegearItem"); const AHomegearItem_1 = require("./AHomegearItem");
const Export_1 = require("./Export"); const Export_1 = require("./Export");
class HomematicSwitchItem extends AHomegearItem_1.AHomegearItem { class HomematicSwitchItem extends AHomegearItem_1.AHomegearItem {
getLabel() {
return this.label;
}
getRoom() {
return this.room;
}
getStateTopic() { getStateTopic() {
return this.stateTopic; return this.stateTopic;
} }
getStateFeedbackTopic() { getStateFeedbackTopic() {
return this.stateFeedbackTopic; return this.stateFeedbackTopic;
} }
constructor(floor, room, item, label, hmId, type = 'bulb') { getState() {
return this.state;
}
constructor(floor, room, item, label, hmId, partId = 1, type = 'bulb') {
super(floor, room, item, label, hmId); super(floor, room, item, label, hmId);
this.partId = partId;
this.stateTopic = `${this.topicFirstPart}/state`; this.stateTopic = `${this.topicFirstPart}/state`;
this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`; this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`;
this.deviceFeedbackTopic = `${this.deviceTopicPre}/1/STATE`; this.deviceFeedbackTopic = `${this.deviceTopicPre}/${this.partId}/STATE`;
this.actionTopic = `${this.actionTopicPre}/1/STATE`; this.actionTopic = `${this.actionTopicPre}/${this.partId}/STATE`;
this.subscribeTopics = [ this.subscribeTopics = [
this.stateTopic, this.stateTopic,
this.deviceFeedbackTopic this.deviceFeedbackTopic
@ -53,6 +63,7 @@ class HomematicSwitchItem extends AHomegearItem_1.AHomegearItem {
MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state); MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state);
break; break;
} }
this.emit('somethingChanged');
} }
} }
exports.HomematicSwitchItem = HomematicSwitchItem; exports.HomematicSwitchItem = HomematicSwitchItem;

View File

@ -47,6 +47,12 @@ class HueColorBulbItem extends AHomegearItem_1.AHomegearItem {
this.hue = 0; this.hue = 0;
this.saturation = 0; this.saturation = 0;
} }
getLabel() {
return this.label;
}
getRoom() {
return this.room;
}
getStateTopic() { getStateTopic() {
return this.stateTopic; return this.stateTopic;
} }

View File

@ -4,6 +4,12 @@ const MqttDispatcher_1 = require("./MqttDispatcher");
const AItem_1 = require("./AItem"); const AItem_1 = require("./AItem");
const Export_1 = require("./Export"); const Export_1 = require("./Export");
class M433SwitchItem extends AItem_1.AItem { class M433SwitchItem extends AItem_1.AItem {
getLabel() {
return this.label;
}
getRoom() {
return this.room;
}
getStateTopic() { getStateTopic() {
return this.stateTopic; return this.stateTopic;
} }

View File

@ -7,6 +7,9 @@ class MaxWindowContact extends AHomegearItem_1.AHomegearItem {
getStateFeedbackTopic() { getStateFeedbackTopic() {
return this.stateFeedbackTopic; return this.stateFeedbackTopic;
} }
getLabel() {
return this.label;
}
transform(payload) { transform(payload) {
let res; let res;
if (payload == 'OPEN') { if (payload == 'OPEN') {

View File

@ -8,6 +8,7 @@ class MqttHandler {
constructor() { constructor() {
this.mqttOptions = {}; this.mqttOptions = {};
this.mqttBrokerUrl = config.dict.brokerUrl; this.mqttBrokerUrl = config.dict.brokerUrl;
this.mqttOptions.clientId = 'dispatcher';
if (config.dict.brokerUser && config.dict.brokerPass) { if (config.dict.brokerUser && config.dict.brokerPass) {
this.mqttOptions.username = config.dict.brokerUser; this.mqttOptions.username = config.dict.brokerUser;
this.mqttOptions.password = config.dict.brokerPass; this.mqttOptions.password = config.dict.brokerPass;

View File

@ -12,11 +12,11 @@ class MySwitchSingleItem {
case 'PRESS_SHORT': case 'PRESS_SHORT':
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'SHORT', true); MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'SHORT', true);
break; break;
case 'PRESS_LONG': case 'PRESS_LONG_START':
case 'PRESS_CONT': case 'PRESS_LONG_CONT':
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'LONG_HOLD', true); MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'LONG_HOLD', true);
break; break;
case 'PRESS_LONG_RELEASE': case 'PRESS_LONG_END':
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'LONG_END', true); MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'LONG_END', true);
break; break;
default: default:

6
dist/Scene.js vendored
View File

@ -4,6 +4,12 @@ const AItem_1 = require("./AItem");
const MqttDispatcher_1 = require("./MqttDispatcher"); const MqttDispatcher_1 = require("./MqttDispatcher");
const Export_1 = require("./Export"); const Export_1 = require("./Export");
class LightScene extends AItem_1.AItem { class LightScene extends AItem_1.AItem {
getLabel() {
return this.label;
}
getRoom() {
return this.room;
}
getStateTopic() { getStateTopic() {
return this.stateTopic; return this.stateTopic;
} }

56
dist/SimpleTopicSwitchItem.js vendored Normal file
View File

@ -0,0 +1,56 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const MqttDispatcher_1 = require("./MqttDispatcher");
const AItem_1 = require("./AItem");
const Export_1 = require("./Export");
class SimpleTopicSwitchItem extends AItem_1.AItem {
getLabel() {
return this.label;
}
getRoom() {
return this.room;
}
getStateTopic() {
return this.stateTopic;
}
getStateFeedbackTopic() {
return this.stateFeedbackTopic;
}
getState() {
return this.state;
}
constructor(floor, room, item, label, actionTopic) {
super(floor, room, item, label);
this.stateTopic = `${this.topicFirstPart}/state`;
this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`;
this.actionTopic = actionTopic;
this.subscribeTopics = [
this.stateTopic
];
this.state = 'OFF';
this.oldState = undefined;
}
exportItem() {
return Export_1.SwitchExport(this.itemId, this.label, this.stateTopic, this.stateFeedbackTopic, this.type);
}
processMessage(topic, payload) {
switch (topic) {
case this.stateTopic:
this.state = payload;
MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state);
if (this.state != this.oldState) {
if (this.state == 'ON') {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'ON');
}
else {
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'OFF');
}
this.oldState = this.state;
}
break;
}
this.emit('somethingChanged');
}
}
exports.SimpleTopicSwitchItem = SimpleTopicSwitchItem;
//# sourceMappingURL=SimpleTopicSwitchItem.js.map

35
dist/SwitchAdaptor.js vendored Normal file
View File

@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const AItem_1 = require("./AItem");
const MqttDispatcher_1 = require("./MqttDispatcher");
class SwitchAdaptor 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];
this.state = 'OFF';
}
getInTopic() {
return this.inTopic;
}
processMessage(topic, payload) {
switch (topic) {
case this.inTopic:
switch (payload) {
case 'SHORT':
if (this.state == 'OFF') {
this.state = 'ON';
}
else {
this.state = 'OFF';
}
MqttDispatcher_1.mqttHandler.send(this.actionStateTopic, this.state, true);
break;
}
break;
}
}
}
exports.SwitchAdaptor = SwitchAdaptor;
//# sourceMappingURL=SwitchAdaptor.js.map

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/UrlSwitchItem.js vendored
View File

@ -1,5 +1,6 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const logger = require("./log");
const MqttDispatcher_1 = require("./MqttDispatcher"); const MqttDispatcher_1 = require("./MqttDispatcher");
const AItem_1 = require("./AItem"); const AItem_1 = require("./AItem");
const Export_1 = require("./Export"); const Export_1 = require("./Export");
@ -30,13 +31,18 @@ class UrlSwitchItem extends AItem_1.AItem {
this.state = payload; this.state = payload;
MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state); MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state);
if (this.state != this.oldState) { if (this.state != this.oldState) {
if (this.state == 'ON') { try {
http.get(this.onUrl); if (this.state == 'ON') {
http.get(this.onUrl);
}
else {
http.get(this.offUrl);
}
this.oldState = this.state;
} }
else { catch (_a) {
http.get(this.offUrl); logger.error(`Failed to handle ${this.onUrl} or ${this.offUrl}`);
} }
this.oldState = this.state;
} }
} }
} }

333
dist/main.js vendored
View File

@ -8,6 +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 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");
@ -15,7 +16,6 @@ const Scene_1 = require("./Scene");
const MaxEcoSwitch_1 = require("./MaxEcoSwitch"); const MaxEcoSwitch_1 = require("./MaxEcoSwitch");
const MaxThermostat_1 = require("./MaxThermostat"); const MaxThermostat_1 = require("./MaxThermostat");
const MaxWindowContact_1 = require("./MaxWindowContact"); const MaxWindowContact_1 = require("./MaxWindowContact");
const UrlSwitchItem_1 = require("./UrlSwitchItem");
const Cron_1 = require("./Cron"); const Cron_1 = require("./Cron");
const HueColorBulbItem_1 = require("./HueColorBulbItem"); const HueColorBulbItem_1 = require("./HueColorBulbItem");
const TouchSwitchMultiButtonThing_1 = require("./TouchSwitchMultiButtonThing"); const TouchSwitchMultiButtonThing_1 = require("./TouchSwitchMultiButtonThing");
@ -23,14 +23,17 @@ const RelayBox_1 = require("./RelayBox");
const HeatingScene_1 = require("./HeatingScene"); const HeatingScene_1 = require("./HeatingScene");
const TwoLedSignal_1 = require("./TwoLedSignal"); const TwoLedSignal_1 = require("./TwoLedSignal");
const MySwitchThing_1 = require("./MySwitchThing"); const MySwitchThing_1 = require("./MySwitchThing");
const SimpleTopicSwitchItem_1 = require("./SimpleTopicSwitchItem");
logger.info("Dispatcher starting"); logger.info("Dispatcher starting");
let allLabeledItems = new Array(); let allLabeledItems = new Array();
let allThermostatItems = new Array(); let allThermostatItems = new Array();
let allWindows = new Array(); let allWindows = new Array();
let allRelevantLights = new Array(); let allRelevantLights = new Array();
let allLights = new Array();
let allLightScenes = new Array();
// Anna ----------------------------------------------------------------------------------------------------- // Anna -----------------------------------------------------------------------------------------------------
// Anna Aquarium 14665044 24 1 14665041 24 1 // Anna Aquarium 14665044 24 1 14665041 24 1
let aquariumLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Anna', 'AquariumLight', 'Aquariumlicht', '14665044 24 1', '14665041 24 1'); let aquariumLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Anna', 'AquariumLight', 'Aquarium', '14665044 24 1', '14665041 24 1');
aquariumLight.start(); aquariumLight.start();
allLabeledItems.push(aquariumLight); allLabeledItems.push(aquariumLight);
let aquariumLightCron = new Cron_1.Cron('aquariumLightCron', aquariumLight, [ let aquariumLightCron = new Cron_1.Cron('aquariumLightCron', aquariumLight, [
@ -42,11 +45,12 @@ let aquariumLightCron = new Cron_1.Cron('aquariumLightCron', aquariumLight, [
]); ]);
aquariumLightCron.start(); aquariumLightCron.start();
// Anna Bett 14668116 24 1 14668113 24 1 // Anna Bett 14668116 24 1 14668113 24 1
let annaBedLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Anna', 'BedLight', 'Bettlicht Anna', '14668116 24 1', '14668113 24 1'); let annaBedLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Anna', 'BedLight', 'Bettlicht', '14668116 24 1', '14668113 24 1');
annaBedLight.start(); annaBedLight.start();
allLabeledItems.push(annaBedLight); allLabeledItems.push(annaBedLight);
allRelevantLights.push(annaBedLight); allRelevantLights.push(annaBedLight);
let windowContactAnna1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Anna', 'WindowContact', 'Fenster Anna', 20); allLights.push(annaBedLight);
let windowContactAnna1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Anna', 'WindowContact', 'Anna', 20);
windowContactAnna1st.start(); windowContactAnna1st.start();
allLabeledItems.push(windowContactAnna1st); allLabeledItems.push(windowContactAnna1st);
allWindows.push(windowContactAnna1st); allWindows.push(windowContactAnna1st);
@ -68,177 +72,191 @@ let thermostatAnna1stCron = new Cron_1.Cron('thermostatAnna1stCron', thermostatA
thermostatAnna1stCron.start(); thermostatAnna1stCron.start();
// Matthias ------------------------------------------------------------------------------------------------- // Matthias -------------------------------------------------------------------------------------------------
// Matthias Stehlampen 7 24 1 6 24 1 // Matthias Stehlampen 7 24 1 6 24 1
let matthiasStandLights = new M433SwitchItem_1.M433SwitchItem('1st', 'Matthias', 'StandLight', 'Stehlampen Matthias', '7 24 1', '6 24 1'); let matthiasStandLights = new M433SwitchItem_1.M433SwitchItem('1st', 'Matthias', 'StandLight', 'Stehlampen', '7 24 1', '6 24 1');
matthiasStandLights.start(); matthiasStandLights.start();
allLabeledItems.push(matthiasStandLights); allLabeledItems.push(matthiasStandLights);
allRelevantLights.push(matthiasStandLights); allRelevantLights.push(matthiasStandLights);
allLights.push(matthiasStandLights);
// Matthias Bett 15 24 1 14 24 1 // Matthias Bett 15 24 1 14 24 1
let matthiasBedLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Matthias', 'BedLight', 'Bettlicht Matthias', '15 24 1', '14 24 1'); let matthiasBedLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Matthias', 'BedLight', 'Bettlicht', '15 24 1', '14 24 1');
matthiasBedLight.start(); matthiasBedLight.start();
allLabeledItems.push(matthiasBedLight); allLabeledItems.push(matthiasBedLight);
allRelevantLights.push(matthiasBedLight); allRelevantLights.push(matthiasBedLight);
allLights.push(matthiasBedLight);
// Matthias Lautsprecher 11 24 1 10 24 1 // Matthias Lautsprecher 11 24 1 10 24 1
let matthiasSpeaker = new M433SwitchItem_1.M433SwitchItem('1st', 'Matthias', 'Speaker', 'Lautsprecher Matthias', '11 24 1', '10 24 1', 'outlet'); let matthiasSpeaker = new M433SwitchItem_1.M433SwitchItem('1st', 'Matthias', 'Speaker', 'Lautsprecher', '11 24 1', '10 24 1', 'outlet');
matthiasSpeaker.start(); matthiasSpeaker.start();
allLabeledItems.push(matthiasSpeaker); allLabeledItems.push(matthiasSpeaker);
allRelevantLights.push(matthiasSpeaker); allRelevantLights.push(matthiasSpeaker);
let windowContactMatthias = new MaxWindowContact_1.MaxWindowContact('1st', 'Matthias', 'WindowContact', 'Fenster Matthias', 24); allLights.push(matthiasSpeaker);
let windowContactMatthias = new MaxWindowContact_1.MaxWindowContact('1st', 'Matthias', 'WindowContact', 'Matthias', 24);
windowContactMatthias.start(); windowContactMatthias.start();
allLabeledItems.push(windowContactMatthias); allLabeledItems.push(windowContactMatthias);
allWindows.push(windowContactMatthias); allWindows.push(windowContactMatthias);
// Esszimmer ------------------------------------------------------------------------------------------------ // Esszimmer ------------------------------------------------------------------------------------------------
// Esszimmer kleine Lampe 69653 24 1 69652 24 1 // Esszimmer kleine Lampe 69653 24 1 69652 24 1
let diningRoomSmallLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'DiningRoom', 'SmallLight', 'kleine Lampe Esszimmer', '69653 24 1', '69652 24 1'); let diningRoomSmallLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Esszimmer', 'SmallLight', 'kleine Lampe', '69653 24 1', '69652 24 1');
diningRoomSmallLight.start(); diningRoomSmallLight.start();
allLabeledItems.push(diningRoomSmallLight); allLabeledItems.push(diningRoomSmallLight);
allRelevantLights.push(diningRoomSmallLight); allRelevantLights.push(diningRoomSmallLight);
allLights.push(diningRoomSmallLight);
// Esszimmer Stehlampe 86037 24 1 86036 24 1 // Esszimmer Stehlampe 86037 24 1 86036 24 1
let diningRoomStandLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'DiningRoom', 'StandLight', 'Stehlampe Esszimmer', '86037 24 1', '86036 24 1'); let diningRoomStandLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Esszimmer', 'StandLight', 'Stehlampe', '86037 24 1', '86036 24 1');
diningRoomStandLight.start(); diningRoomStandLight.start();
allLabeledItems.push(diningRoomStandLight); allLabeledItems.push(diningRoomStandLight);
allRelevantLights.push(diningRoomStandLight); allRelevantLights.push(diningRoomStandLight);
allLights.push(diningRoomStandLight);
// Esszimmer Schranklicht 65813 24 1 65812 24 1 // Esszimmer Schranklicht 65813 24 1 65812 24 1
let diningRoomCupboardLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'DiningRoom', 'CupboardLight', 'Schranklicht Esszimmer', '65813 24 1', '65812 24 1'); let diningRoomCupboardLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Esszimmer', 'CupboardLight', 'Schranklicht', '65813 24 1', '65812 24 1');
diningRoomCupboardLight.start(); diningRoomCupboardLight.start();
allLabeledItems.push(diningRoomCupboardLight); allLabeledItems.push(diningRoomCupboardLight);
allRelevantLights.push(diningRoomCupboardLight); allRelevantLights.push(diningRoomCupboardLight);
allLights.push(diningRoomCupboardLight);
// Esszimmer Regallicht // Esszimmer Regallicht
let diningRoomShelfLight = new UrlSwitchItem_1.UrlSwitchItem('Gnd', 'DiningRoom', 'ShelfLight', 'Regallicht Esszimmer', 'http://regallampe/dv?dv=1023', 'http://regallampe/dv?dv=0'); let diningRoomShelfLight = new SimpleTopicSwitchItem_1.SimpleTopicSwitchItem('Gnd', 'Esszimmer', 'ShelfLight', 'Regallicht', 'IoT/WifiRelay1/State');
diningRoomShelfLight.start(); diningRoomShelfLight.start();
allLabeledItems.push(diningRoomShelfLight); allLabeledItems.push(diningRoomShelfLight);
allRelevantLights.push(diningRoomShelfLight); allRelevantLights.push(diningRoomShelfLight);
let diningRoomNaehkaestchenLight = new HueColorBulbItem_1.HueColorBulbItem('Gnd', 'DiningRoom', 'NaehkaestchenLight', 'Lampe Naehkaestchen', 15); allLights.push(diningRoomShelfLight);
let diningRoomNaehkaestchenLight = new HueColorBulbItem_1.HueColorBulbItem('Gnd', 'Esszimmer', 'NaehkaestchenLight', 'Nähkästchen', 15);
diningRoomNaehkaestchenLight.start(); diningRoomNaehkaestchenLight.start();
allLabeledItems.push(diningRoomNaehkaestchenLight); allLabeledItems.push(diningRoomNaehkaestchenLight);
allRelevantLights.push(diningRoomNaehkaestchenLight); allRelevantLights.push(diningRoomNaehkaestchenLight);
let windowContactDiningRoom1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'DiningRoom', 'WindowContact1', 'Fenster Esszimmer Straße links', 26); allLights.push(diningRoomNaehkaestchenLight);
let windowContactDiningRoom1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact1', 'Essz. links', 26);
windowContactDiningRoom1.start(); windowContactDiningRoom1.start();
allLabeledItems.push(windowContactDiningRoom1); allLabeledItems.push(windowContactDiningRoom1);
allWindows.push(windowContactDiningRoom1); allWindows.push(windowContactDiningRoom1);
let windowContactDiningRoom2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'DiningRoom', 'WindowContact2', 'Fenster Esszimmer Straße rechts', 27); let windowContactDiningRoom2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact2', 'Essz. rechts', 27);
windowContactDiningRoom2.start(); windowContactDiningRoom2.start();
allLabeledItems.push(windowContactDiningRoom2); allLabeledItems.push(windowContactDiningRoom2);
allWindows.push(windowContactDiningRoom2); allWindows.push(windowContactDiningRoom2);
let thermostatDiningRoom = new MaxThermostat_1.MaxThermostat('Gnd', 'DiningRoom', 'Thermostat', 'Thermostat Esszimmer', 31, [windowContactDiningRoom1, windowContactDiningRoom2]); let thermostatDiningRoom = new MaxThermostat_1.MaxThermostat('Gnd', 'Esszimmer', 'Thermostat', 'Thermostat Esszimmer', 31, [windowContactDiningRoom1, windowContactDiningRoom2]);
thermostatDiningRoom.start(); thermostatDiningRoom.start();
thermostatDiningRoom.setPresetTemperature(21.0); thermostatDiningRoom.setPresetTemperature(21.0);
allLabeledItems.push(thermostatDiningRoom); allLabeledItems.push(thermostatDiningRoom);
allThermostatItems.push(thermostatDiningRoom); allThermostatItems.push(thermostatDiningRoom);
// Wohnzimmer ----------------------------------------------------------------------------------------------- // Wohnzimmer -----------------------------------------------------------------------------------------------
// Wohnzimmer grosse Lampe 65557 24 1 65556 24 1 // Wohnzimmer grosse Lampe 65557 24 1 65556 24 1
let livingRoomLargeLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'LivingRoom', 'LargeLight', 'große Lampe Wohnzimmer', '65557 24 1', '65556 24 1'); let livingRoomLargeLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Wohnzimmer', 'LargeLight', 'große Lampe', '65557 24 1', '65556 24 1');
livingRoomLargeLight.start(); livingRoomLargeLight.start();
allLabeledItems.push(livingRoomLargeLight); allLabeledItems.push(livingRoomLargeLight);
allRelevantLights.push(livingRoomLargeLight); allRelevantLights.push(livingRoomLargeLight);
allLights.push(livingRoomLargeLight);
// Wohnzimmer kleine Lampe 87061 24 1 87060 24 1 // Wohnzimmer kleine Lampe 87061 24 1 87060 24 1
let livingRoomSmallLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'LivingRoom', 'SmallLight', 'kleine Lampe Wohnzimmer', '87061 24 1', '87060 24 1'); let livingRoomSmallLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Wohnzimmer', 'SmallLight', 'kleine Lampe', '87061 24 1', '87060 24 1');
livingRoomSmallLight.start(); livingRoomSmallLight.start();
allLabeledItems.push(livingRoomSmallLight); allLabeledItems.push(livingRoomSmallLight);
allRelevantLights.push(livingRoomSmallLight); allRelevantLights.push(livingRoomSmallLight);
allLights.push(livingRoomSmallLight);
// Wohnzimmer Sterne 69909 24 1 69908 24 1 // Wohnzimmer Sterne 69909 24 1 69908 24 1
let livingRoomStars = new M433SwitchItem_1.M433SwitchItem('Gnd', 'LivingRoom', 'Stars', 'Sterne Wohnzimmer', '69909 24 1', '69908 24 1'); let livingRoomStars = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Wohnzimmer', 'Stars', 'Sterne', '69909 24 1', '69908 24 1');
livingRoomStars.start(); livingRoomStars.start();
allLabeledItems.push(livingRoomStars); allLabeledItems.push(livingRoomStars);
allRelevantLights.push(livingRoomStars); allRelevantLights.push(livingRoomStars);
allLights.push(livingRoomStars);
// Wohnzimmer kleine Stehlampe 81941 24 1 81940 24 1 // Wohnzimmer kleine Stehlampe 81941 24 1 81940 24 1
let livingRoomStandLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'LivingRoom', 'StandLight', 'Stehlampe Wohnzimmer', '81941 24 1', '81940 24 1'); let livingRoomStandLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Wohnzimmer', 'StandLight', 'Stehlampe', '81941 24 1', '81940 24 1');
livingRoomStandLight.start(); livingRoomStandLight.start();
allLabeledItems.push(livingRoomStandLight); allLabeledItems.push(livingRoomStandLight);
allRelevantLights.push(livingRoomStandLight); allRelevantLights.push(livingRoomStandLight);
let windowContactLivingRoom1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'LivingRoom', 'WindowContact1', 'Fenster Wohnzimmer Garten rechts', 28); allLights.push(livingRoomStandLight);
let windowContactLivingRoom1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact1', 'Wohnz. rechts', 28);
windowContactLivingRoom1.start(); windowContactLivingRoom1.start();
allLabeledItems.push(windowContactLivingRoom1); allLabeledItems.push(windowContactLivingRoom1);
allWindows.push(windowContactLivingRoom1); allWindows.push(windowContactLivingRoom1);
let windowContactLivingRoom2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'LivingRoom', 'WindowContact2', 'Fenster Wohnzimmer Garten links', 29); let windowContactLivingRoom2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact2', 'Wohnz. links', 29);
windowContactLivingRoom2.start(); windowContactLivingRoom2.start();
allLabeledItems.push(windowContactLivingRoom2); allLabeledItems.push(windowContactLivingRoom2);
allWindows.push(windowContactLivingRoom2); allWindows.push(windowContactLivingRoom2);
let thermostatLivingRoom = new MaxThermostat_1.MaxThermostat('Gnd', 'LivingRoom', 'Thermostat', 'Thermostat Wohnzimmer', 30, [windowContactLivingRoom1, windowContactLivingRoom2]); let thermostatLivingRoom = new MaxThermostat_1.MaxThermostat('Gnd', 'Wohnzimmer', 'Thermostat', 'Thermostat Wohnzimmer', 30, [windowContactLivingRoom1, windowContactLivingRoom2]);
thermostatLivingRoom.start(); thermostatLivingRoom.start();
thermostatLivingRoom.setPresetTemperature(21.0); thermostatLivingRoom.setPresetTemperature(21.0);
allLabeledItems.push(thermostatLivingRoom); allLabeledItems.push(thermostatLivingRoom);
allThermostatItems.push(thermostatLivingRoom); allThermostatItems.push(thermostatLivingRoom);
// Flur ----------------------------------------------------------------------------------------------------- // Flur -----------------------------------------------------------------------------------------------------
// Flur Schreibtisch 83221 24 1 83220 24 1 // Flur Schreibtisch 83221 24 1 83220 24 1
let hallwayDeskLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Hallway', 'DeskLight', 'Schreibtischlampe Flur', '83221 24 1', '83220 24 1'); let hallwayDeskLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Flur', 'DeskLight', 'Schreibtischlampe', '83221 24 1', '83220 24 1');
hallwayDeskLight.start(); hallwayDeskLight.start();
allLabeledItems.push(hallwayDeskLight); allLabeledItems.push(hallwayDeskLight);
allRelevantLights.push(hallwayDeskLight); allRelevantLights.push(hallwayDeskLight);
allLights.push(hallwayDeskLight);
// Flur Stehlampe 8704914 24 5 8793154 24 5 // Flur Stehlampe 8704914 24 5 8793154 24 5
let hallwayStandLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Hallway', 'StandLight', 'Stehlampe Flur', '8704914 24 5', '8793154 24 5'); let hallwayStandLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Flur', 'StandLight', 'Stehlampe', '8704914 24 5', '8793154 24 5');
hallwayStandLight.start(); hallwayStandLight.start();
allLabeledItems.push(hallwayStandLight); allLabeledItems.push(hallwayStandLight);
allRelevantLights.push(hallwayStandLight); allRelevantLights.push(hallwayStandLight);
allLights.push(hallwayStandLight);
// Flur Schranklicht 66581 24 1 66580 24 1 // Flur Schranklicht 66581 24 1 66580 24 1
let hallwayWardrobeLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Hallway', 'WardrobeLight', 'Schranklicht Flur', '66581 24 1', '66580 24 1'); let hallwayWardrobeLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Flur', 'WardrobeLight', 'Schranklicht', '66581 24 1', '66580 24 1');
hallwayWardrobeLight.start(); hallwayWardrobeLight.start();
allLabeledItems.push(hallwayWardrobeLight); allLabeledItems.push(hallwayWardrobeLight);
allRelevantLights.push(hallwayWardrobeLight); allRelevantLights.push(hallwayWardrobeLight);
let windowContactHallway = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Hallway', 'WindowContact', 'Fenster Flur', 25); allLights.push(hallwayWardrobeLight);
let windowContactHallway = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Flur', 'WindowContact', 'Flur', 25);
windowContactHallway.start(); windowContactHallway.start();
allLabeledItems.push(windowContactHallway); allLabeledItems.push(windowContactHallway);
allWindows.push(windowContactHallway); allWindows.push(windowContactHallway);
let thermostatHallway1 = new MaxThermostat_1.MaxThermostat('Gnd', 'Hallway', 'Thermostat1', 'Thermostat Flur vorne', 32, []); let thermostatHallway1 = new MaxThermostat_1.MaxThermostat('Gnd', 'Flur', 'Thermostat1', 'Thermostat Flur vorne', 32, []);
thermostatHallway1.start(); thermostatHallway1.start();
thermostatHallway1.setPresetTemperature(19.0); thermostatHallway1.setPresetTemperature(19.0);
allLabeledItems.push(thermostatHallway1); allLabeledItems.push(thermostatHallway1);
allThermostatItems.push(thermostatHallway1); allThermostatItems.push(thermostatHallway1);
let thermostatHallway2 = new MaxThermostat_1.MaxThermostat('Gnd', 'Hallway', 'Thermostat2', 'Thermostat Flur hinten', 33, []); let thermostatHallway2 = new MaxThermostat_1.MaxThermostat('Gnd', 'Flur', 'Thermostat2', 'Thermostat Flur hinten', 33, []);
thermostatHallway2.start(); thermostatHallway2.start();
thermostatHallway2.setPresetTemperature(5.0); thermostatHallway2.setPresetTemperature(5.0);
allLabeledItems.push(thermostatHallway2); allLabeledItems.push(thermostatHallway2);
allThermostatItems.push(thermostatHallway2); allThermostatItems.push(thermostatHallway2);
// Küche ---------------------------------------------------------------------------------------------------- // Küche ----------------------------------------------------------------------------------------------------
// Küche Fensterbank 66837 24 1 66836 24 1 // Küche Fensterbank 66837 24 1 66836 24 1
let kitchenWindowLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Kitchen', 'WindowLight', 'Fensterbanklicht Küche', '66837 24 1', '66836 24 1'); let kitchenWindowLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Kueche', 'WindowLight', 'Fensterbanklicht', '66837 24 1', '66836 24 1');
kitchenWindowLight.start(); kitchenWindowLight.start();
allLabeledItems.push(kitchenWindowLight); allLabeledItems.push(kitchenWindowLight);
allRelevantLights.push(kitchenWindowLight); allRelevantLights.push(kitchenWindowLight);
allLights.push(kitchenWindowLight);
// Küche Deckenlampe 82197 24 1 82196 24 1 // Küche Deckenlampe 82197 24 1 82196 24 1
let kitchenCeilingLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Kitchen', 'CeilingLight', 'Deckenlampe Küche', '82197 24 1', '82196 24 1'); let kitchenCeilingLight = new M433SwitchItem_1.M433SwitchItem('Gnd', 'Kueche', 'CeilingLight', 'Deckenlampe', '82197 24 1', '82196 24 1');
kitchenCeilingLight.start(); kitchenCeilingLight.start();
allLabeledItems.push(kitchenCeilingLight); allLabeledItems.push(kitchenCeilingLight);
allRelevantLights.push(kitchenCeilingLight); allRelevantLights.push(kitchenCeilingLight);
allLights.push(kitchenCeilingLight);
// Schlafzimmer --------------------------------------------------------------------------------------------- // Schlafzimmer ---------------------------------------------------------------------------------------------
// Schlafzimmer Wolfgangs Seite 13976916 24 1 13976913 24 1 // Schlafzimmer Wolfgangs Seite 13976916 24 1 13976913 24 1
let bedRoomWolfgangsSide = new M433SwitchItem_1.M433SwitchItem('1st', 'BedRoom', 'WolfgangsSide', 'Wolfgangs Seite Schlafzimmer', '13976916 24 1', '13976913 24 1'); let bedRoomWolfgangsSide = new M433SwitchItem_1.M433SwitchItem('1st', 'Schlafzimmer', 'WolfgangsSide', 'Wolfgangs Seite', '13976916 24 1', '13976913 24 1');
bedRoomWolfgangsSide.start(); bedRoomWolfgangsSide.start();
allLabeledItems.push(bedRoomWolfgangsSide); allLabeledItems.push(bedRoomWolfgangsSide);
allRelevantLights.push(bedRoomWolfgangsSide); allRelevantLights.push(bedRoomWolfgangsSide);
let bedRoomWolfgangBedLight = new HueColorBulbItem_1.HueColorBulbItem('1st', 'BedRoom', 'WolfgangBedLight', 'Bettlicht', 16); allLights.push(bedRoomWolfgangsSide);
let bedRoomWolfgangBedLight = new HueColorBulbItem_1.HueColorBulbItem('1st', 'Schlafzimmer', 'WolfgangBedLight', 'Wolfgangs Bettlicht', 16);
bedRoomWolfgangBedLight.start(); bedRoomWolfgangBedLight.start();
allLabeledItems.push(bedRoomWolfgangBedLight); allLabeledItems.push(bedRoomWolfgangBedLight);
allRelevantLights.push(bedRoomWolfgangBedLight); allRelevantLights.push(bedRoomWolfgangBedLight);
let bedRoomWolfgangBedLightDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('1st', 'BedRoom', 'WolfgangBedLight'); allLights.push(bedRoomWolfgangBedLight);
let bedRoomWolfgangBedLightDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('1st', 'Schlafzimmer', 'WolfgangBedLight');
bedRoomWolfgangBedLightDimmerAdaptor.start(); bedRoomWolfgangBedLightDimmerAdaptor.start();
let touchSwitchMultiButtonThing = new TouchSwitchMultiButtonThing_1.TouchSwitchMultiButtonThing('1st', 'Bedroom', 'Wolfgang', [new TouchSwitchMultiButtonThing_1.TouchSwitchButtonSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic())]); let touchSwitchMultiButtonThing = new TouchSwitchMultiButtonThing_1.TouchSwitchMultiButtonThing('1st', 'Bedroom', 'Wolfgang', [new TouchSwitchMultiButtonThing_1.TouchSwitchButtonSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic())]);
touchSwitchMultiButtonThing.start(); touchSwitchMultiButtonThing.start();
// Schlafzimmer Pattys Seite 13980756 24 1 13980753 24 1 // Schlafzimmer Pattys Seite 13980756 24 1 13980753 24 1
let bedRoomPattysSide = new M433SwitchItem_1.M433SwitchItem('1st', 'BedRoom', 'PattysSide', 'Pattys Seite Schlafzimmer', '13980756 24 1', '13980753 24 1'); let bedRoomPattysSide = new M433SwitchItem_1.M433SwitchItem('1st', 'Schlafzimmer', 'PattysSide', 'Pattys Seite', '13980756 24 1', '13980753 24 1');
bedRoomPattysSide.start(); bedRoomPattysSide.start();
allLabeledItems.push(bedRoomPattysSide); allLabeledItems.push(bedRoomPattysSide);
allRelevantLights.push(bedRoomPattysSide); allRelevantLights.push(bedRoomPattysSide);
allLights.push(bedRoomPattysSide);
// Schlafzimmer Fensterbank 13979988 24 1 13979985 24 1 // Schlafzimmer Fensterbank 13979988 24 1 13979985 24 1
let bedRoomWindowLight = new M433SwitchItem_1.M433SwitchItem('1st', 'BedRoom', 'WindowLight', 'Fensterbanklicht Schlafzimmer', '13979988 24 1', '13979985 24 1'); let bedRoomWindowLight = new M433SwitchItem_1.M433SwitchItem('1st', 'Schlafzimmer', 'WindowLight', 'Fensterbanklicht', '13979988 24 1', '13979985 24 1');
bedRoomWindowLight.start(); bedRoomWindowLight.start();
allLabeledItems.push(bedRoomWindowLight); allLabeledItems.push(bedRoomWindowLight);
allRelevantLights.push(bedRoomWindowLight); allRelevantLights.push(bedRoomWindowLight);
// MySwitchTHing allLights.push(bedRoomWindowLight);
let mySwitchThingWolfgang = new MySwitchThing_1.MySwitchThing('1st', 'BedRoom', 'WolfgangsSwitch', [ let windowContactBedroomStreet1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContactStreet', 'Schlafz. Strasse', 17);
new MySwitchThing_1.MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()),
new MySwitchThing_1.MySwitchSingleItem('IoT/InsLeere/1'),
new MySwitchThing_1.MySwitchSingleItem('IoT/InsLeere/2'),
]);
mySwitchThingWolfgang.start();
let windowContactBedroomStreet1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContactStreet', 'Fenster Schlafzimmer Strasse', 17);
windowContactBedroomStreet1st.start(); windowContactBedroomStreet1st.start();
allLabeledItems.push(windowContactBedroomStreet1st); allLabeledItems.push(windowContactBedroomStreet1st);
allWindows.push(windowContactBedroomStreet1st); allWindows.push(windowContactBedroomStreet1st);
let windowContact1BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Fenster Schlafzimmer 1 Garten', 18); let windowContact1BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Schlafz. Garten 1', 18);
windowContact1BedroomGarden1st.start(); windowContact1BedroomGarden1st.start();
allLabeledItems.push(windowContact1BedroomGarden1st); allLabeledItems.push(windowContact1BedroomGarden1st);
allWindows.push(windowContact1BedroomGarden1st); allWindows.push(windowContact1BedroomGarden1st);
let windowContact2BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Fenster Schlafzimmer 2 Garten', 22); let windowContact2BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Schlafz. Garten 2', 22);
windowContact2BedroomGarden1st.start(); windowContact2BedroomGarden1st.start();
allLabeledItems.push(windowContact2BedroomGarden1st); allLabeledItems.push(windowContact2BedroomGarden1st);
allWindows.push(windowContact2BedroomGarden1st); allWindows.push(windowContact2BedroomGarden1st);
@ -257,36 +275,7 @@ let thermostatBedroom1stCron = new Cron_1.Cron('thermostatBedroom1stCron', therm
]); ]);
thermostatBedroom1stCron.start(); thermostatBedroom1stCron.start();
// --------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------
let dayLightScene = new Scene_1.LightScene('Gnd', 'Hallway', 'DayLight', 'DayLight', [ let windowContactBathroomGnd = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Bathroom', 'WindowContact', 'Bad unten', 7);
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayStandLight, hallwayWardrobeLight,
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomLargeLight, livingRoomSmallLight, livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
], []);
dayLightScene.start();
allLabeledItems.push(dayLightScene);
let ecoLightScene = new Scene_1.LightScene('Gnd', 'Hallway', 'EcoLight', 'EcoLight', [
kitchenWindowLight, hallwayDeskLight, hallwayWardrobeLight,
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
], [
kitchenCeilingLight, hallwayStandLight,
livingRoomLargeLight, livingRoomSmallLight
]);
ecoLightScene.start();
allLabeledItems.push(ecoLightScene);
let ecoSwitch = new MaxEcoSwitch_1.MaxEcoSwitch('Gnd', 'Hallway', 'EcoSwitch', 'EcoSwitch', 6, dayLightScene, ecoLightScene);
ecoSwitch.start();
let morningLightScene = new Scene_1.LightScene('Gnd', 'Hallway', 'MorningLight', 'MorningLight', [
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayWardrobeLight,
hallwayStandLight
], [
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, livingRoomLargeLight, livingRoomSmallLight, diningRoomNaehkaestchenLight
]);
morningLightScene.start();
allLabeledItems.push(morningLightScene);
// ----------------------------------------------------------------------------------------------------------
let windowContactBathroomGnd = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Bathroom', 'WindowContact', 'Fenster Bad unten', 7);
windowContactBathroomGnd.start(); windowContactBathroomGnd.start();
allLabeledItems.push(windowContactBathroomGnd); allLabeledItems.push(windowContactBathroomGnd);
allWindows.push(windowContactBathroomGnd); allWindows.push(windowContactBathroomGnd);
@ -303,7 +292,7 @@ let thermostatBathroomGndCron = new Cron_1.Cron('thermostatBathroomGndCron', the
{ cronTime: '00 00 23 * * *', output: 'OFF' } { cronTime: '00 00 23 * * *', output: 'OFF' }
]); ]);
thermostatBathroomGndCron.start(); thermostatBathroomGndCron.start();
let windowContactBathroom1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bathroom', 'WindowContact', 'Fenster Bad oben', 2); let windowContactBathroom1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bathroom', 'WindowContact', 'Bad oben', 2);
windowContactBathroom1st.start(); windowContactBathroom1st.start();
allLabeledItems.push(windowContactBathroom1st); allLabeledItems.push(windowContactBathroom1st);
allWindows.push(windowContactBathroom1st); allWindows.push(windowContactBathroom1st);
@ -320,23 +309,23 @@ let thermostatBathroom1stCron = new Cron_1.Cron('thermostatBathroom1stCron', the
{ cronTime: '00 00 23 * * *', output: 'OFF' } { cronTime: '00 00 23 * * *', output: 'OFF' }
]); ]);
thermostatBathroom1stCron.start(); thermostatBathroom1stCron.start();
let windowContactKitchen1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact1', 'Fenster Küche Garten', 11); let windowContactKitchen1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kueche', 'WindowContact1', 'Küche Garten', 11);
windowContactKitchen1.start(); windowContactKitchen1.start();
allLabeledItems.push(windowContactKitchen1); allLabeledItems.push(windowContactKitchen1);
allWindows.push(windowContactKitchen1); allWindows.push(windowContactKitchen1);
let windowContactKitchen2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact2', 'Fenster Küche Terassentür Garten', 10); let windowContactKitchen2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kueche', 'WindowContact2', 'Küche Terassentür', 10);
windowContactKitchen2.start(); windowContactKitchen2.start();
allLabeledItems.push(windowContactKitchen2); allLabeledItems.push(windowContactKitchen2);
allWindows.push(windowContactKitchen2); allWindows.push(windowContactKitchen2);
let windowContactKitchen3 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact3', 'Fenster Küche Straße 1', 12); let windowContactKitchen3 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kueche', 'WindowContact3', 'Küche Straße 1', 12);
windowContactKitchen3.start(); windowContactKitchen3.start();
allLabeledItems.push(windowContactKitchen3); allLabeledItems.push(windowContactKitchen3);
allWindows.push(windowContactKitchen3); allWindows.push(windowContactKitchen3);
let windowContactKitchen4 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact4', 'Fenster Küche Straße 2', 13); let windowContactKitchen4 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kueche', 'WindowContact4', 'Küche Straße 2', 13);
windowContactKitchen4.start(); windowContactKitchen4.start();
allLabeledItems.push(windowContactKitchen4); allLabeledItems.push(windowContactKitchen4);
allWindows.push(windowContactKitchen4); allWindows.push(windowContactKitchen4);
let thermostatKitchen = new MaxThermostat_1.MaxThermostat('Gnd', 'Kitchen', 'Thermostat', 'Thermostat Küche', 14, [ let thermostatKitchen = new MaxThermostat_1.MaxThermostat('Gnd', 'Kueche', 'Thermostat', 'Thermostat Küche', 14, [
windowContactKitchen1, windowContactKitchen2, windowContactKitchen3, windowContactKitchen4 windowContactKitchen1, windowContactKitchen2, windowContactKitchen3, windowContactKitchen4
]); ]);
thermostatKitchen.start(); thermostatKitchen.start();
@ -352,7 +341,7 @@ let thermostatKitchenCron = new Cron_1.Cron('thermostatKitchenCron', thermostatK
]); ]);
thermostatKitchenCron.start(); thermostatKitchenCron.start();
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let windowContactFrontdoor = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Hallway', 'FrontdoorContact', 'Haustür', 23); let windowContactFrontdoor = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Flur', 'FrontdoorContact', 'Haustür', 23);
windowContactFrontdoor.start(); windowContactFrontdoor.start();
allLabeledItems.push(windowContactFrontdoor); allLabeledItems.push(windowContactFrontdoor);
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
@ -365,63 +354,159 @@ allLabeledItems.push(relayBox);
let heatingSceneAll = new HeatingScene_1.HeatingScene('Gnd', 'House', 'Heatings', 'Alle Heizungen', allThermostatItems); let heatingSceneAll = new HeatingScene_1.HeatingScene('Gnd', 'House', 'Heatings', 'Alle Heizungen', allThermostatItems);
heatingSceneAll.start(); heatingSceneAll.start();
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let twoLedSignal1 = new TwoLedSignal_1.TwoLedSignal('Gnd', 'Hallway', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', allRelevantLights, "OFF", "ON", allWindows, "CLOSED", "OPEN"); // Basement
twoLedSignal1.start(); let workshopLight = new HomematicSwitchItem_1.HomematicSwitchItem('Base', 'Keller', 'Light', 'Werkstatt', 5);
workshopLight.start();
allLabeledItems.push(workshopLight);
allRelevantLights.push(workshopLight);
allLights.push(workshopLight);
let basementSmallLight = new HomematicSwitchItem_1.HomematicSwitchItem('Base', 'Keller', 'SmallLight', 'Licht einfach', 35, 1);
basementSmallLight.start();
allLabeledItems.push(basementSmallLight);
allRelevantLights.push(basementSmallLight);
allLights.push(basementSmallLight);
basementSmallLight.on('somethingChanged', () => {
if (basementSmallLight.getState() == 'ON') {
setTimeout(() => {
if (basementLargeLight.getState() == 'OFF') {
MqttDispatcher_1.mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF');
}
}, (3 * 60 * 1000));
}
if ((basementLargeLight.getState() == 'ON') && (basementSmallLight.getState() == 'OFF')) {
MqttDispatcher_1.mqttHandler.send(basementLargeLight.getStateTopic(), 'OFF');
}
});
let basementLargeLight = new HomematicSwitchItem_1.HomematicSwitchItem('Base', 'Keller', 'LargeLight', 'Licht hell', 35, 2);
basementLargeLight.start();
allLabeledItems.push(basementLargeLight);
allRelevantLights.push(basementLargeLight);
allLights.push(basementLargeLight);
basementLargeLight.on('somethingChanged', () => {
if (basementLargeLight.getState() == 'ON') {
MqttDispatcher_1.mqttHandler.send(basementSmallLight.getStateTopic(), 'ON');
}
else if (basementLargeLight.getState() == 'OFF') {
MqttDispatcher_1.mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF');
}
});
let basementForwarder = new Forwarder_1.Forwarder('Base', 'All', 'Forwarder', 'state', 'BasementForwarder', [
basementLargeLight.getStateTopic(),
basementSmallLight.getStateTopic(),
workshopLight.getStateTopic()
]);
basementForwarder.start();
let basementForwarderSwitchOffAdaptor = new SwitchOffAdaptor_1.SwitchOffAdaptor('Base', 'All', 'Forwarder');
basementForwarderSwitchOffAdaptor.start();
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let testFourButton = new HomematicFourButtonThing_1.HomematicFourButtonThing('Gnd', 'Hallway', 'TestButton', 9, [ let twoLedSignal1 = new TwoLedSignal_1.TwoLedSignal('Gnd', 'Flur', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', allRelevantLights, "OFF", "ON", allWindows, "CLOSED", "OPEN");
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/Testlight/dimmerIn'), twoLedSignal1.start();
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/DeskLight/timerIn'), // MySwitchTHing
let mySwitchThingWolfgang = new MySwitchThing_1.MySwitchThing('1st', 'Schlafzimmer', 'WolfgangsSwitch', [
new MySwitchThing_1.MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()),
new MySwitchThing_1.MySwitchSingleItem(basementForwarderSwitchOffAdaptor.getInTopic()),
new MySwitchThing_1.MySwitchSingleItem('IoT/InsLeere/2'),
]);
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'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/3'), new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/3'),
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/4') new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('test/button/4')
]); ]);
testFourButton.start(); testFourButton.start();
let testDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('Gnd', 'Hallway', 'Testlight'); let testDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('Gnd', 'Flur', 'Testlight');
testDimmerAdaptor.start(); testDimmerAdaptor.start();
let testTimerAdaptor = new TimerAdaptor_1.TimerAdaptor('Gnd', 'Hallway', 'DeskLight', 10); let testTimerAdaptor = new TimerAdaptor_1.TimerAdaptor('Gnd', 'Flur', 'DeskLight', 10);
testTimerAdaptor.start(); testTimerAdaptor.start();
let testLight = new HomematicDimmerItem_1.HomematicDimmerItem('Gnd', 'Hallway', 'Testlight', 'Testlampe mit Dimmer', 8); let testLight = new HomematicDimmerItem_1.HomematicDimmerItem('Gnd', 'Flur', 'Testlight', 'Testlampe mit Dimmer', 8);
testLight.start(); testLight.start();
let testLight2 = new HomematicSwitchItem_1.HomematicSwitchItem('Gnd', 'Hallway', 'Testlight2', 'Testlampe ohne Dimmer', 5); let testForwarder = new Forwarder_1.Forwarder('Gnd', 'Flur', 'TestForwarder', 'state', 'TestForwarder', [
testLight2.start(); 'dispatcher_ng/items/Gnd/Flur/Testlight2/state',
let testForwarder = new Forwarder_1.Forwarder('Gnd', 'Hallway', 'TestForwarder', 'state', 'TestForwarder', [ 'dispatcher_ng/items/Gnd/Flur/DeskLight/state'
'dispatcher_ng/items/Gnd/Hallway/Testlight2/state',
'dispatcher_ng/items/Gnd/Hallway/DeskLight/state'
]); ]);
testForwarder.start(); testForwarder.start();
let testScene = new Scene_1.LightScene('Gnd', 'Hallway', 'TestScene', 'TestScene', [aquariumLight, annaBedLight], [matthiasStandLights, matthiasBedLight]); let testScene = new Scene_1.LightScene('Gnd', 'Flur', 'TestScene', 'TestScene', [aquariumLight, annaBedLight], [matthiasStandLights, matthiasBedLight]);
testScene.start(); testScene.start();
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
// Homekit export let dayLightScene = new Scene_1.LightScene('Gnd', 'Szenen', 'DayLight', 'DayLight', [
let homekitObject = {}; kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayStandLight, hallwayWardrobeLight,
let openhabList = []; diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
// logger.info("allLabeledItems") livingRoomLargeLight, livingRoomSmallLight, livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
// logger.info(JSON.stringify(allLabeledItems)) ], []);
allLabeledItems.forEach((item) => { dayLightScene.start();
let exportData = item.exportItem(); allLabeledItems.push(dayLightScene);
if (exportData != null) { allLightScenes.push(dayLightScene);
if ('id' in exportData['homekit']) { let ecoLightScene = new Scene_1.LightScene('Gnd', 'Szenen', 'EcoLight', 'EcoLight', [
homekitObject[exportData['homekit']['id']] = exportData['homekit']['object']; kitchenWindowLight, hallwayDeskLight, hallwayWardrobeLight,
} diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
if (exportData['openhab'] instanceof Array) { livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
let da = exportData['openhab']; ], [
da.forEach((o) => openhabList.push(o)); kitchenCeilingLight, hallwayStandLight,
} livingRoomLargeLight, livingRoomSmallLight
else { ]);
let da = exportData['openhab']; ecoLightScene.start();
openhabList.push(da); allLabeledItems.push(ecoLightScene);
} allLightScenes.push(ecoLightScene);
// logger.info("openHabList") let ecoSwitch = new MaxEcoSwitch_1.MaxEcoSwitch('Gnd', 'Szenen', 'EcoSwitch', 'EcoSwitch', 6, dayLightScene, ecoLightScene);
// logger.info(JSON.stringify(openhabList)) ecoSwitch.start();
let morningLightScene = new Scene_1.LightScene('Gnd', 'Szenen', 'MorningLight', 'MorningLight', [
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayWardrobeLight,
hallwayStandLight
], [
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, livingRoomLargeLight, livingRoomSmallLight, diningRoomNaehkaestchenLight
]);
morningLightScene.start();
allLabeledItems.push(morningLightScene);
allLightScenes.push(morningLightScene);
let sceneOfAllLights = new Scene_1.LightScene('Gnd', 'Szenen', 'AllLights', 'Alle Lampen', allLights, []);
sceneOfAllLights.start();
allLightScenes.push(sceneOfAllLights);
// ----------------------------------------------------------------------------------------------------------
// heartbeat
let heartbeatCounter = 0;
let heartbeatTimer = setInterval(() => {
heartbeatCounter += 1;
MqttDispatcher_1.mqttHandler.send(config.dict.heartbeatTopic, `${heartbeatCounter}`);
}, config.dict.heartbeatInterval);
// watchdog
let watchdogCounter = 0;
let watchdogTimer = setInterval(() => {
watchdogCounter += 1;
MqttDispatcher_1.mqttHandler.send(config.dict.watchdogTopic, `${config.dict.watchdogMessage} ${watchdogCounter}`);
}, config.dict.watchdogInterval);
// ----------------------------------------------------------------------------------------------------------
let roomSwitches = {};
allLights.forEach((item) => {
let switchItem = { 'label': item.getLabel(), 'actionTopic': item.getStateTopic(), 'feedbackTopic': item.getStateFeedbackTopic() };
if (item.getRoom() in roomSwitches) {
roomSwitches[item.getRoom()].push(switchItem);
}
else {
roomSwitches[item.getRoom()] = [switchItem];
} }
}); });
let heatingMainSwitchExport = MaxThermostat_1.MaxThermostat.exportHeatingMainSwitchItem(); let smartClientConfiguration = {};
if (heatingMainSwitchExport != null) { smartClientConfiguration['switches'] = [];
let da = heatingMainSwitchExport['openhab']; for (let key in roomSwitches) {
openhabList.push(da); let item = { 'room': key, 'switches': roomSwitches[key] };
smartClientConfiguration['switches'].push(item);
} }
fs.writeFileSync(config.dict.homekitFile, JSON.stringify(homekitObject, null, 4)); smartClientConfiguration['scenes'] = [];
fs.writeFileSync(config.dict.openhabItemFile, openhabList.join('\n')); allLightScenes.forEach((scene) => {
let item = { 'label': scene.getLabel(), 'actionTopic': scene.getStateTopic() };
smartClientConfiguration['scenes'].push(item);
});
smartClientConfiguration['windows'] = [];
allWindows.forEach((window) => {
let item = { 'label': window.getLabel(), 'topic': window.getStateFeedbackTopic() };
smartClientConfiguration['windows'].push(item);
});
fs.writeFileSync('smartclient.json', JSON.stringify(smartClientConfiguration, null, 4));
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
MqttDispatcher_1.mqttHandler.exec(); MqttDispatcher_1.mqttHandler.exec();
logger.info("Dispatcher running"); logger.info("Dispatcher running");
MqttDispatcher_1.mqttHandler.send('smartclient/configuration', JSON.stringify(smartClientConfiguration, null, 4));
//# sourceMappingURL=main.js.map //# sourceMappingURL=main.js.map

View File

@ -1,7 +1,7 @@
{ {
"1st_Anna_AquariumLight": { "1st_Anna_AquariumLight": {
"id": "1st_Anna_AquariumLight", "id": "1st_Anna_AquariumLight",
"name": "Aquariumlicht", "name": "Aquarium",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/Anna/AquariumLight/state", "setOn": "dispatcher_ng/items/1st/Anna/AquariumLight/state",
@ -18,7 +18,7 @@
}, },
"1st_Anna_BedLight": { "1st_Anna_BedLight": {
"id": "1st_Anna_BedLight", "id": "1st_Anna_BedLight",
"name": "Bettlicht Anna", "name": "Bettlicht",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/Anna/BedLight/state", "setOn": "dispatcher_ng/items/1st/Anna/BedLight/state",
@ -35,7 +35,7 @@
}, },
"1st_Anna_WindowContact": { "1st_Anna_WindowContact": {
"id": "1st_Anna_WindowContact", "id": "1st_Anna_WindowContact",
"name": "Fenster Anna", "name": "Anna",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/1st/Anna/WindowContact/state/feedback" "statusContactSensorState": "dispatcher_ng/items/1st/Anna/WindowContact/state/feedback"
@ -57,7 +57,7 @@
}, },
"1st_Matthias_StandLight": { "1st_Matthias_StandLight": {
"id": "1st_Matthias_StandLight", "id": "1st_Matthias_StandLight",
"name": "Stehlampen Matthias", "name": "Stehlampen",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/Matthias/StandLight/state", "setOn": "dispatcher_ng/items/1st/Matthias/StandLight/state",
@ -74,7 +74,7 @@
}, },
"1st_Matthias_BedLight": { "1st_Matthias_BedLight": {
"id": "1st_Matthias_BedLight", "id": "1st_Matthias_BedLight",
"name": "Bettlicht Matthias", "name": "Bettlicht",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/Matthias/BedLight/state", "setOn": "dispatcher_ng/items/1st/Matthias/BedLight/state",
@ -91,7 +91,7 @@
}, },
"1st_Matthias_Speaker": { "1st_Matthias_Speaker": {
"id": "1st_Matthias_Speaker", "id": "1st_Matthias_Speaker",
"name": "Lautsprecher Matthias", "name": "Lautsprecher",
"service": "Outlet", "service": "Outlet",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/Matthias/Speaker/state", "setOn": "dispatcher_ng/items/1st/Matthias/Speaker/state",
@ -105,7 +105,7 @@
}, },
"1st_Matthias_WindowContact": { "1st_Matthias_WindowContact": {
"id": "1st_Matthias_WindowContact", "id": "1st_Matthias_WindowContact",
"name": "Fenster Matthias", "name": "Matthias",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/1st/Matthias/WindowContact/state/feedback" "statusContactSensorState": "dispatcher_ng/items/1st/Matthias/WindowContact/state/feedback"
@ -114,13 +114,13 @@
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_DiningRoom_SmallLight": { "Gnd_Esszimmer_SmallLight": {
"id": "Gnd_DiningRoom_SmallLight", "id": "Gnd_Esszimmer_SmallLight",
"name": "kleine Lampe Esszimmer", "name": "kleine Lampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/DiningRoom/SmallLight/state", "setOn": "dispatcher_ng/items/Gnd/Esszimmer/SmallLight/state",
"statusOn": "dispatcher_ng/items/Gnd/DiningRoom/SmallLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Esszimmer/SmallLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -131,13 +131,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_DiningRoom_StandLight": { "Gnd_Esszimmer_StandLight": {
"id": "Gnd_DiningRoom_StandLight", "id": "Gnd_Esszimmer_StandLight",
"name": "Stehlampe Esszimmer", "name": "Stehlampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/DiningRoom/StandLight/state", "setOn": "dispatcher_ng/items/Gnd/Esszimmer/StandLight/state",
"statusOn": "dispatcher_ng/items/Gnd/DiningRoom/StandLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Esszimmer/StandLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -148,13 +148,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_DiningRoom_CupboardLight": { "Gnd_Esszimmer_CupboardLight": {
"id": "Gnd_DiningRoom_CupboardLight", "id": "Gnd_Esszimmer_CupboardLight",
"name": "Schranklicht Esszimmer", "name": "Schranklicht",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/DiningRoom/CupboardLight/state", "setOn": "dispatcher_ng/items/Gnd/Esszimmer/CupboardLight/state",
"statusOn": "dispatcher_ng/items/Gnd/DiningRoom/CupboardLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Esszimmer/CupboardLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -165,40 +165,23 @@
}, },
"config": {} "config": {}
}, },
"Gnd_DiningRoom_ShelfLight": { "Gnd_Esszimmer_NaehkaestchenLight": {
"id": "Gnd_DiningRoom_ShelfLight", "id": "Gnd_Esszimmer_NaehkaestchenLight",
"name": "Regallicht Esszimmer", "name": "Nähkästchen",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/DiningRoom/ShelfLight/state",
"statusOn": "dispatcher_ng/items/Gnd/DiningRoom/ShelfLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_DiningRoom_NaehkaestchenLight": {
"id": "Gnd_DiningRoom_NaehkaestchenLight",
"name": "Lampe Naehkaestchen",
"service": "Lightbulb", "service": "Lightbulb",
"manufacturer": "hue2mqtt - Hue", "manufacturer": "hue2mqtt - Hue",
"model": "color light", "model": "color light",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/state", "setOn": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/state",
"statusOn": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/state/feedback", "statusOn": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/state/feedback",
"setBrightness": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/bright", "setBrightness": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/bright",
"statusBrightness": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/bright/feedback", "statusBrightness": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/bright/feedback",
"setHue": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/hue", "setHue": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/hue",
"statusHue": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/bright/hue", "statusHue": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/bright/hue",
"setSaturation": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/saturation", "setSaturation": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/saturation",
"statusSaturation": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/bright/saturation", "statusSaturation": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/bright/saturation",
"setColorTemperature": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/colorTemperature", "setColorTemperature": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/colorTemperature",
"statusColorTemperature": "dispatcher_ng/items/Gnd/DiningRoom/NaehkaestchenLight/colorTemperature/feedback" "statusColorTemperature": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/colorTemperature/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -208,46 +191,46 @@
"saturationFactor": 1 "saturationFactor": 1
} }
}, },
"Gnd_DiningRoom_WindowContact1": { "Gnd_Esszimmer_WindowContact1": {
"id": "Gnd_DiningRoom_WindowContact1", "id": "Gnd_Esszimmer_WindowContact1",
"name": "Fenster Esszimmer Straße links", "name": "Essz. links",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/DiningRoom/WindowContact1/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Esszimmer/WindowContact1/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_DiningRoom_WindowContact2": { "Gnd_Esszimmer_WindowContact2": {
"id": "Gnd_DiningRoom_WindowContact2", "id": "Gnd_Esszimmer_WindowContact2",
"name": "Fenster Esszimmer Straße rechts", "name": "Essz. rechts",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/DiningRoom/WindowContact2/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Esszimmer/WindowContact2/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_DiningRoom_Thermostat": { "Gnd_Esszimmer_Thermostat": {
"id": "Gnd_DiningRoom_Thermostat", "id": "Gnd_Esszimmer_Thermostat",
"name": "Thermostat Esszimmer", "name": "Thermostat Esszimmer",
"service": "Thermostat", "service": "Thermostat",
"topic": { "topic": {
"setTargetTemperature": "dispatcher_ng/items/Gnd/DiningRoom/Thermostat/temperature", "setTargetTemperature": "dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature",
"statusTargetTemperature": "dispatcher_ng/items/Gnd/DiningRoom/Thermostat/temperature/feedback", "statusTargetTemperature": "dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature/feedback",
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/DiningRoom/Thermostat/temperature/feedback" "statusCurrentTemperature": "dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature/feedback"
}, },
"payload": {} "payload": {}
}, },
"Gnd_LivingRoom_LargeLight": { "Gnd_Wohnzimmer_LargeLight": {
"id": "Gnd_LivingRoom_LargeLight", "id": "Gnd_Wohnzimmer_LargeLight",
"name": "große Lampe Wohnzimmer", "name": "große Lampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/LivingRoom/LargeLight/state", "setOn": "dispatcher_ng/items/Gnd/Wohnzimmer/LargeLight/state",
"statusOn": "dispatcher_ng/items/Gnd/LivingRoom/LargeLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Wohnzimmer/LargeLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -258,13 +241,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_LivingRoom_SmallLight": { "Gnd_Wohnzimmer_SmallLight": {
"id": "Gnd_LivingRoom_SmallLight", "id": "Gnd_Wohnzimmer_SmallLight",
"name": "kleine Lampe Wohnzimmer", "name": "kleine Lampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/LivingRoom/SmallLight/state", "setOn": "dispatcher_ng/items/Gnd/Wohnzimmer/SmallLight/state",
"statusOn": "dispatcher_ng/items/Gnd/LivingRoom/SmallLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Wohnzimmer/SmallLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -275,13 +258,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_LivingRoom_Stars": { "Gnd_Wohnzimmer_Stars": {
"id": "Gnd_LivingRoom_Stars", "id": "Gnd_Wohnzimmer_Stars",
"name": "Sterne Wohnzimmer", "name": "Sterne",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/LivingRoom/Stars/state", "setOn": "dispatcher_ng/items/Gnd/Wohnzimmer/Stars/state",
"statusOn": "dispatcher_ng/items/Gnd/LivingRoom/Stars/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Wohnzimmer/Stars/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -292,13 +275,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_LivingRoom_StandLight": { "Gnd_Wohnzimmer_StandLight": {
"id": "Gnd_LivingRoom_StandLight", "id": "Gnd_Wohnzimmer_StandLight",
"name": "Stehlampe Wohnzimmer", "name": "Stehlampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/LivingRoom/StandLight/state", "setOn": "dispatcher_ng/items/Gnd/Wohnzimmer/StandLight/state",
"statusOn": "dispatcher_ng/items/Gnd/LivingRoom/StandLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Wohnzimmer/StandLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -309,46 +292,46 @@
}, },
"config": {} "config": {}
}, },
"Gnd_LivingRoom_WindowContact1": { "Gnd_Wohnzimmer_WindowContact1": {
"id": "Gnd_LivingRoom_WindowContact1", "id": "Gnd_Wohnzimmer_WindowContact1",
"name": "Fenster Wohnzimmer Garten rechts", "name": "Wohnz. rechts",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/LivingRoom/WindowContact1/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact1/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_LivingRoom_WindowContact2": { "Gnd_Wohnzimmer_WindowContact2": {
"id": "Gnd_LivingRoom_WindowContact2", "id": "Gnd_Wohnzimmer_WindowContact2",
"name": "Fenster Wohnzimmer Garten links", "name": "Wohnz. links",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/LivingRoom/WindowContact2/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact2/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_LivingRoom_Thermostat": { "Gnd_Wohnzimmer_Thermostat": {
"id": "Gnd_LivingRoom_Thermostat", "id": "Gnd_Wohnzimmer_Thermostat",
"name": "Thermostat Wohnzimmer", "name": "Thermostat Wohnzimmer",
"service": "Thermostat", "service": "Thermostat",
"topic": { "topic": {
"setTargetTemperature": "dispatcher_ng/items/Gnd/LivingRoom/Thermostat/temperature", "setTargetTemperature": "dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature",
"statusTargetTemperature": "dispatcher_ng/items/Gnd/LivingRoom/Thermostat/temperature/feedback", "statusTargetTemperature": "dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature/feedback",
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/LivingRoom/Thermostat/temperature/feedback" "statusCurrentTemperature": "dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature/feedback"
}, },
"payload": {} "payload": {}
}, },
"Gnd_Hallway_DeskLight": { "Gnd_Flur_DeskLight": {
"id": "Gnd_Hallway_DeskLight", "id": "Gnd_Flur_DeskLight",
"name": "Schreibtischlampe Flur", "name": "Schreibtischlampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/Hallway/DeskLight/state", "setOn": "dispatcher_ng/items/Gnd/Flur/DeskLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Hallway/DeskLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Flur/DeskLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -359,13 +342,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_Hallway_StandLight": { "Gnd_Flur_StandLight": {
"id": "Gnd_Hallway_StandLight", "id": "Gnd_Flur_StandLight",
"name": "Stehlampe Flur", "name": "Stehlampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/Hallway/StandLight/state", "setOn": "dispatcher_ng/items/Gnd/Flur/StandLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Hallway/StandLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Flur/StandLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -376,13 +359,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_Hallway_WardrobeLight": { "Gnd_Flur_WardrobeLight": {
"id": "Gnd_Hallway_WardrobeLight", "id": "Gnd_Flur_WardrobeLight",
"name": "Schranklicht Flur", "name": "Schranklicht",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/Hallway/WardrobeLight/state", "setOn": "dispatcher_ng/items/Gnd/Flur/WardrobeLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Hallway/WardrobeLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Flur/WardrobeLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -393,46 +376,46 @@
}, },
"config": {} "config": {}
}, },
"Gnd_Hallway_WindowContact": { "Gnd_Flur_WindowContact": {
"id": "Gnd_Hallway_WindowContact", "id": "Gnd_Flur_WindowContact",
"name": "Fenster Flur", "name": "Flur",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Hallway/WindowContact/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Flur/WindowContact/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_Hallway_Thermostat1": { "Gnd_Flur_Thermostat1": {
"id": "Gnd_Hallway_Thermostat1", "id": "Gnd_Flur_Thermostat1",
"name": "Thermostat Flur vorne", "name": "Thermostat Flur vorne",
"service": "Thermostat", "service": "Thermostat",
"topic": { "topic": {
"setTargetTemperature": "dispatcher_ng/items/Gnd/Hallway/Thermostat1/temperature", "setTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature",
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Hallway/Thermostat1/temperature/feedback", "statusTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature/feedback",
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Hallway/Thermostat1/temperature/feedback" "statusCurrentTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature/feedback"
}, },
"payload": {} "payload": {}
}, },
"Gnd_Hallway_Thermostat2": { "Gnd_Flur_Thermostat2": {
"id": "Gnd_Hallway_Thermostat2", "id": "Gnd_Flur_Thermostat2",
"name": "Thermostat Flur hinten", "name": "Thermostat Flur hinten",
"service": "Thermostat", "service": "Thermostat",
"topic": { "topic": {
"setTargetTemperature": "dispatcher_ng/items/Gnd/Hallway/Thermostat2/temperature", "setTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature",
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Hallway/Thermostat2/temperature/feedback", "statusTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature/feedback",
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Hallway/Thermostat2/temperature/feedback" "statusCurrentTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature/feedback"
}, },
"payload": {} "payload": {}
}, },
"Gnd_Kitchen_WindowLight": { "Gnd_Kueche_WindowLight": {
"id": "Gnd_Kitchen_WindowLight", "id": "Gnd_Kueche_WindowLight",
"name": "Fensterbanklicht Küche", "name": "Fensterbanklicht",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/Kitchen/WindowLight/state", "setOn": "dispatcher_ng/items/Gnd/Kueche/WindowLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Kitchen/WindowLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Kueche/WindowLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -443,13 +426,13 @@
}, },
"config": {} "config": {}
}, },
"Gnd_Kitchen_CeilingLight": { "Gnd_Kueche_CeilingLight": {
"id": "Gnd_Kitchen_CeilingLight", "id": "Gnd_Kueche_CeilingLight",
"name": "Deckenlampe Küche", "name": "Deckenlampe",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/Gnd/Kitchen/CeilingLight/state", "setOn": "dispatcher_ng/items/Gnd/Kueche/CeilingLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Kitchen/CeilingLight/state/feedback" "statusOn": "dispatcher_ng/items/Gnd/Kueche/CeilingLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -460,13 +443,13 @@
}, },
"config": {} "config": {}
}, },
"1st_BedRoom_WolfgangsSide": { "1st_Schlafzimmer_WolfgangsSide": {
"id": "1st_BedRoom_WolfgangsSide", "id": "1st_Schlafzimmer_WolfgangsSide",
"name": "Wolfgangs Seite Schlafzimmer", "name": "Wolfgangs Seite",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/BedRoom/WolfgangsSide/state", "setOn": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangsSide/state",
"statusOn": "dispatcher_ng/items/1st/BedRoom/WolfgangsSide/state/feedback" "statusOn": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangsSide/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -477,23 +460,23 @@
}, },
"config": {} "config": {}
}, },
"1st_BedRoom_WolfgangBedLight": { "1st_Schlafzimmer_WolfgangBedLight": {
"id": "1st_BedRoom_WolfgangBedLight", "id": "1st_Schlafzimmer_WolfgangBedLight",
"name": "Bettlicht", "name": "Wolfgangs Bettlicht",
"service": "Lightbulb", "service": "Lightbulb",
"manufacturer": "hue2mqtt - Hue", "manufacturer": "hue2mqtt - Hue",
"model": "color light", "model": "color light",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/state", "setOn": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/state",
"statusOn": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/state/feedback", "statusOn": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/state/feedback",
"setBrightness": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/bright", "setBrightness": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/bright",
"statusBrightness": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/bright/feedback", "statusBrightness": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/bright/feedback",
"setHue": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/hue", "setHue": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/hue",
"statusHue": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/bright/hue", "statusHue": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/bright/hue",
"setSaturation": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/saturation", "setSaturation": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/saturation",
"statusSaturation": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/bright/saturation", "statusSaturation": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/bright/saturation",
"setColorTemperature": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/colorTemperature", "setColorTemperature": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/colorTemperature",
"statusColorTemperature": "dispatcher_ng/items/1st/BedRoom/WolfgangBedLight/colorTemperature/feedback" "statusColorTemperature": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/colorTemperature/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -503,13 +486,13 @@
"saturationFactor": 1 "saturationFactor": 1
} }
}, },
"1st_BedRoom_PattysSide": { "1st_Schlafzimmer_PattysSide": {
"id": "1st_BedRoom_PattysSide", "id": "1st_Schlafzimmer_PattysSide",
"name": "Pattys Seite Schlafzimmer", "name": "Pattys Seite",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/BedRoom/PattysSide/state", "setOn": "dispatcher_ng/items/1st/Schlafzimmer/PattysSide/state",
"statusOn": "dispatcher_ng/items/1st/BedRoom/PattysSide/state/feedback" "statusOn": "dispatcher_ng/items/1st/Schlafzimmer/PattysSide/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -520,13 +503,13 @@
}, },
"config": {} "config": {}
}, },
"1st_BedRoom_WindowLight": { "1st_Schlafzimmer_WindowLight": {
"id": "1st_BedRoom_WindowLight", "id": "1st_Schlafzimmer_WindowLight",
"name": "Fensterbanklicht Schlafzimmer", "name": "Fensterbanklicht",
"service": "Lightbulb", "service": "Lightbulb",
"topic": { "topic": {
"setOn": "dispatcher_ng/items/1st/BedRoom/WindowLight/state", "setOn": "dispatcher_ng/items/1st/Schlafzimmer/WindowLight/state",
"statusOn": "dispatcher_ng/items/1st/BedRoom/WindowLight/state/feedback" "statusOn": "dispatcher_ng/items/1st/Schlafzimmer/WindowLight/state/feedback"
}, },
"payload": { "payload": {
"onTrue": "ON", "onTrue": "ON",
@ -539,7 +522,7 @@
}, },
"1st_Bedroom_WindowContactStreet": { "1st_Bedroom_WindowContactStreet": {
"id": "1st_Bedroom_WindowContactStreet", "id": "1st_Bedroom_WindowContactStreet",
"name": "Fenster Schlafzimmer Strasse", "name": "Schlafz. Strasse",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/1st/Bedroom/WindowContactStreet/state/feedback" "statusContactSensorState": "dispatcher_ng/items/1st/Bedroom/WindowContactStreet/state/feedback"
@ -550,7 +533,7 @@
}, },
"1st_Bedroom_WindowContact1Garden": { "1st_Bedroom_WindowContact1Garden": {
"id": "1st_Bedroom_WindowContact1Garden", "id": "1st_Bedroom_WindowContact1Garden",
"name": "Fenster Schlafzimmer 1 Garten", "name": "Schlafz. Garten 1",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/1st/Bedroom/WindowContact1Garden/state/feedback" "statusContactSensorState": "dispatcher_ng/items/1st/Bedroom/WindowContact1Garden/state/feedback"
@ -561,7 +544,7 @@
}, },
"1st_Bedroom_WindowContact2Garden": { "1st_Bedroom_WindowContact2Garden": {
"id": "1st_Bedroom_WindowContact2Garden", "id": "1st_Bedroom_WindowContact2Garden",
"name": "Fenster Schlafzimmer 2 Garten", "name": "Schlafz. Garten 2",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/1st/Bedroom/WindowContact2Garden/state/feedback" "statusContactSensorState": "dispatcher_ng/items/1st/Bedroom/WindowContact2Garden/state/feedback"
@ -581,60 +564,9 @@
}, },
"payload": {} "payload": {}
}, },
"Gnd_Hallway_DayLight": {
"id": "Gnd_Hallway_DayLight",
"name": "DayLight",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/Hallway/DayLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Hallway/DayLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_Hallway_EcoLight": {
"id": "Gnd_Hallway_EcoLight",
"name": "EcoLight",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/Hallway/EcoLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Hallway/EcoLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_Hallway_MorningLight": {
"id": "Gnd_Hallway_MorningLight",
"name": "MorningLight",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/Hallway/MorningLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Hallway/MorningLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_Bathroom_WindowContact": { "Gnd_Bathroom_WindowContact": {
"id": "Gnd_Bathroom_WindowContact", "id": "Gnd_Bathroom_WindowContact",
"name": "Fenster Bad unten", "name": "Bad unten",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Bathroom/WindowContact/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Bathroom/WindowContact/state/feedback"
@ -656,7 +588,7 @@
}, },
"1st_Bathroom_WindowContact": { "1st_Bathroom_WindowContact": {
"id": "1st_Bathroom_WindowContact", "id": "1st_Bathroom_WindowContact",
"name": "Fenster Bad oben", "name": "Bad oben",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/1st/Bathroom/WindowContact/state/feedback" "statusContactSensorState": "dispatcher_ng/items/1st/Bathroom/WindowContact/state/feedback"
@ -676,71 +608,173 @@
}, },
"payload": {} "payload": {}
}, },
"Gnd_Kitchen_WindowContact1": { "Gnd_Kueche_WindowContact1": {
"id": "Gnd_Kitchen_WindowContact1", "id": "Gnd_Kueche_WindowContact1",
"name": "Fenster Küche Garten", "name": "Küche Garten",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Kitchen/WindowContact1/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Kueche/WindowContact1/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_Kitchen_WindowContact2": { "Gnd_Kueche_WindowContact2": {
"id": "Gnd_Kitchen_WindowContact2", "id": "Gnd_Kueche_WindowContact2",
"name": "Fenster Küche Terassentür Garten", "name": "Küche Terassentür",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Kitchen/WindowContact2/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Kueche/WindowContact2/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_Kitchen_WindowContact3": { "Gnd_Kueche_WindowContact3": {
"id": "Gnd_Kitchen_WindowContact3", "id": "Gnd_Kueche_WindowContact3",
"name": "Fenster Küche Straße 1", "name": "Küche Straße 1",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Kitchen/WindowContact3/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Kueche/WindowContact3/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_Kitchen_WindowContact4": { "Gnd_Kueche_WindowContact4": {
"id": "Gnd_Kitchen_WindowContact4", "id": "Gnd_Kueche_WindowContact4",
"name": "Fenster Küche Straße 2", "name": "Küche Straße 2",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Kitchen/WindowContact4/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Kueche/WindowContact4/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"Gnd_Kitchen_Thermostat": { "Gnd_Kueche_Thermostat": {
"id": "Gnd_Kitchen_Thermostat", "id": "Gnd_Kueche_Thermostat",
"name": "Thermostat Küche", "name": "Thermostat Küche",
"service": "Thermostat", "service": "Thermostat",
"topic": { "topic": {
"setTargetTemperature": "dispatcher_ng/items/Gnd/Kitchen/Thermostat/temperature", "setTargetTemperature": "dispatcher_ng/items/Gnd/Kueche/Thermostat/temperature",
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Kitchen/Thermostat/temperature/feedback", "statusTargetTemperature": "dispatcher_ng/items/Gnd/Kueche/Thermostat/temperature/feedback",
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Kitchen/Thermostat/temperature/feedback" "statusCurrentTemperature": "dispatcher_ng/items/Gnd/Kueche/Thermostat/temperature/feedback"
}, },
"payload": {} "payload": {}
}, },
"Gnd_Hallway_FrontdoorContact": { "Gnd_Flur_FrontdoorContact": {
"id": "Gnd_Hallway_FrontdoorContact", "id": "Gnd_Flur_FrontdoorContact",
"name": "Haustür", "name": "Haustür",
"service": "ContactSensor", "service": "ContactSensor",
"topic": { "topic": {
"statusContactSensorState": "dispatcher_ng/items/Gnd/Hallway/FrontdoorContact/state/feedback" "statusContactSensorState": "dispatcher_ng/items/Gnd/Flur/FrontdoorContact/state/feedback"
}, },
"payload": { "payload": {
"onContactDetected": "CLOSED" "onContactDetected": "CLOSED"
} }
}, },
"": {} "": {},
"Base_Keller_Light": {
"id": "Base_Keller_Light",
"name": "Werkstatt",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Base/Keller/Light/state",
"statusOn": "dispatcher_ng/items/Base/Keller/Light/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Base_Keller_SmallLight": {
"id": "Base_Keller_SmallLight",
"name": "Licht einfach",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Base/Keller/SmallLight/state",
"statusOn": "dispatcher_ng/items/Base/Keller/SmallLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Base_Keller_LargeLight": {
"id": "Base_Keller_LargeLight",
"name": "Licht hell",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Base/Keller/LargeLight/state",
"statusOn": "dispatcher_ng/items/Base/Keller/LargeLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_Szenen_DayLight": {
"id": "Gnd_Szenen_DayLight",
"name": "DayLight",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/Szenen/DayLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Szenen/DayLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_Szenen_EcoLight": {
"id": "Gnd_Szenen_EcoLight",
"name": "EcoLight",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/Szenen/EcoLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Szenen/EcoLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
},
"Gnd_Szenen_MorningLight": {
"id": "Gnd_Szenen_MorningLight",
"name": "MorningLight",
"service": "Lightbulb",
"topic": {
"setOn": "dispatcher_ng/items/Gnd/Szenen/MorningLight/state",
"statusOn": "dispatcher_ng/items/Gnd/Szenen/MorningLight/state/feedback"
},
"payload": {
"onTrue": "ON",
"onFalse": "OFF",
"brightnessFactor": "",
"hueFactor": "",
"saturationFactor": ""
},
"config": {}
}
} }

View File

@ -1,68 +1,70 @@
Switch 1st_Anna_AquariumLight "Aquariumlicht"{mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/AquariumLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/AquariumLight/state/feedback:state:default]"} Switch 1st_Anna_AquariumLight "Aquarium"{mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/AquariumLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/AquariumLight/state/feedback:state:default]"}
Switch 1st_Anna_BedLight "Bettlicht Anna"{mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/BedLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/BedLight/state/feedback:state:default]"} Switch 1st_Anna_BedLight "Bettlicht"{mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/BedLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/BedLight/state/feedback:state:default]"}
Contact 1st_Anna_WindowContact "Fenster Anna" {mqtt="<[localbroker:dispatcher_ng/items/1st/Anna/WindowContact/state/feedback:state:default]"} Contact 1st_Anna_WindowContact "Anna" {mqtt="<[localbroker:dispatcher_ng/items/1st/Anna/WindowContact/state/feedback:state:default]"}
Number 1st_Anna_Thermostat "Thermostat Anna [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/temperature/feedback:state:default]"} Number 1st_Anna_Thermostat "Thermostat Anna [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/temperature/feedback:state:default]"}
Number Preset_1st_Anna_Thermostat "Preset_Thermostat Anna [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_1st_Anna_Thermostat "Preset_Thermostat Anna [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Anna/Thermostat/presetTemperature/feedback:state:default]"}
Switch 1st_Matthias_StandLight "Stehlampen Matthias"{mqtt=">[localbroker:dispatcher_ng/items/1st/Matthias/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Matthias/StandLight/state/feedback:state:default]"} Switch 1st_Matthias_StandLight "Stehlampen"{mqtt=">[localbroker:dispatcher_ng/items/1st/Matthias/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Matthias/StandLight/state/feedback:state:default]"}
Switch 1st_Matthias_BedLight "Bettlicht Matthias"{mqtt=">[localbroker:dispatcher_ng/items/1st/Matthias/BedLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Matthias/BedLight/state/feedback:state:default]"} Switch 1st_Matthias_BedLight "Bettlicht"{mqtt=">[localbroker:dispatcher_ng/items/1st/Matthias/BedLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Matthias/BedLight/state/feedback:state:default]"}
Switch 1st_Matthias_Speaker "Lautsprecher Matthias"{mqtt=">[localbroker:dispatcher_ng/items/1st/Matthias/Speaker/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Matthias/Speaker/state/feedback:state:default]"} Switch 1st_Matthias_Speaker "Lautsprecher"{mqtt=">[localbroker:dispatcher_ng/items/1st/Matthias/Speaker/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Matthias/Speaker/state/feedback:state:default]"}
Contact 1st_Matthias_WindowContact "Fenster Matthias" {mqtt="<[localbroker:dispatcher_ng/items/1st/Matthias/WindowContact/state/feedback:state:default]"} Contact 1st_Matthias_WindowContact "Matthias" {mqtt="<[localbroker:dispatcher_ng/items/1st/Matthias/WindowContact/state/feedback:state:default]"}
Switch Gnd_DiningRoom_SmallLight "kleine Lampe Esszimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/SmallLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/SmallLight/state/feedback:state:default]"} Switch Gnd_Esszimmer_SmallLight "kleine Lampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Esszimmer/SmallLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/SmallLight/state/feedback:state:default]"}
Switch Gnd_DiningRoom_StandLight "Stehlampe Esszimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/StandLight/state/feedback:state:default]"} Switch Gnd_Esszimmer_StandLight "Stehlampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Esszimmer/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/StandLight/state/feedback:state:default]"}
Switch Gnd_DiningRoom_CupboardLight "Schranklicht Esszimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/CupboardLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/CupboardLight/state/feedback:state:default]"} Switch Gnd_Esszimmer_CupboardLight "Schranklicht"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Esszimmer/CupboardLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/CupboardLight/state/feedback:state:default]"}
Switch Gnd_DiningRoom_ShelfLight "Regallicht Esszimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/ShelfLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/ShelfLight/state/feedback:state:default]"}
Contact Gnd_DiningRoom_WindowContact1 "Fenster Esszimmer Straße links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/WindowContact1/state/feedback:state:default]"} Contact Gnd_Esszimmer_WindowContact1 "Essz. links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/WindowContact1/state/feedback:state:default]"}
Contact Gnd_DiningRoom_WindowContact2 "Fenster Esszimmer Straße rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/WindowContact2/state/feedback:state:default]"} Contact Gnd_Esszimmer_WindowContact2 "Essz. rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/WindowContact2/state/feedback:state:default]"}
Number Gnd_DiningRoom_Thermostat "Thermostat Esszimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/Thermostat/temperature/feedback:state:default]"} Number Gnd_Esszimmer_Thermostat "Thermostat Esszimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature/feedback:state:default]"}
Number Preset_Gnd_DiningRoom_Thermostat "Preset_Thermostat Esszimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_Gnd_Esszimmer_Thermostat "Preset_Thermostat Esszimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Esszimmer/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/Thermostat/presetTemperature/feedback:state:default]"}
Switch Gnd_LivingRoom_LargeLight "große Lampe Wohnzimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/LivingRoom/LargeLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/LargeLight/state/feedback:state:default]"} Switch Gnd_Wohnzimmer_LargeLight "große Lampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/LargeLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/LargeLight/state/feedback:state:default]"}
Switch Gnd_LivingRoom_SmallLight "kleine Lampe Wohnzimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/LivingRoom/SmallLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/SmallLight/state/feedback:state:default]"} Switch Gnd_Wohnzimmer_SmallLight "kleine Lampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/SmallLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/SmallLight/state/feedback:state:default]"}
Switch Gnd_LivingRoom_Stars "Sterne Wohnzimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/LivingRoom/Stars/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/Stars/state/feedback:state:default]"} Switch Gnd_Wohnzimmer_Stars "Sterne"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/Stars/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/Stars/state/feedback:state:default]"}
Switch Gnd_LivingRoom_StandLight "Stehlampe Wohnzimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/LivingRoom/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/StandLight/state/feedback:state:default]"} Switch Gnd_Wohnzimmer_StandLight "Stehlampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/StandLight/state/feedback:state:default]"}
Contact Gnd_LivingRoom_WindowContact1 "Fenster Wohnzimmer Garten rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/WindowContact1/state/feedback:state:default]"} Contact Gnd_Wohnzimmer_WindowContact1 "Wohnz. rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact1/state/feedback:state:default]"}
Contact Gnd_LivingRoom_WindowContact2 "Fenster Wohnzimmer Garten links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/WindowContact2/state/feedback:state:default]"} Contact Gnd_Wohnzimmer_WindowContact2 "Wohnz. links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact2/state/feedback:state:default]"}
Number Gnd_LivingRoom_Thermostat "Thermostat Wohnzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/LivingRoom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/Thermostat/temperature/feedback:state:default]"} Number Gnd_Wohnzimmer_Thermostat "Thermostat Wohnzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature/feedback:state:default]"}
Number Preset_Gnd_LivingRoom_Thermostat "Preset_Thermostat Wohnzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/LivingRoom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/LivingRoom/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_Gnd_Wohnzimmer_Thermostat "Preset_Thermostat Wohnzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/presetTemperature/feedback:state:default]"}
Switch Gnd_Hallway_DeskLight "Schreibtischlampe Flur"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/DeskLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/DeskLight/state/feedback:state:default]"} Switch Gnd_Flur_DeskLight "Schreibtischlampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/DeskLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/DeskLight/state/feedback:state:default]"}
Switch Gnd_Hallway_StandLight "Stehlampe Flur"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/StandLight/state/feedback:state:default]"} Switch Gnd_Flur_StandLight "Stehlampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/StandLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/StandLight/state/feedback:state:default]"}
Switch Gnd_Hallway_WardrobeLight "Schranklicht Flur"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/WardrobeLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/WardrobeLight/state/feedback:state:default]"} Switch Gnd_Flur_WardrobeLight "Schranklicht"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/WardrobeLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/WardrobeLight/state/feedback:state:default]"}
Contact Gnd_Hallway_WindowContact "Fenster Flur" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Hallway/WindowContact/state/feedback:state:default]"} Contact Gnd_Flur_WindowContact "Flur" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Flur/WindowContact/state/feedback:state:default]"}
Number Gnd_Hallway_Thermostat1 "Thermostat Flur vorne [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat1/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat1/temperature/feedback:state:default]"} Number Gnd_Flur_Thermostat1 "Thermostat Flur vorne [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature/feedback:state:default]"}
Number Preset_Gnd_Hallway_Thermostat1 "Preset_Thermostat Flur vorne [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat1/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat1/presetTemperature/feedback:state:default]"} Number Preset_Gnd_Flur_Thermostat1 "Preset_Thermostat Flur vorne [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat1/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat1/presetTemperature/feedback:state:default]"}
Number Gnd_Hallway_Thermostat2 "Thermostat Flur hinten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat2/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat2/temperature/feedback:state:default]"} Number Gnd_Flur_Thermostat2 "Thermostat Flur hinten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature/feedback:state:default]"}
Number Preset_Gnd_Hallway_Thermostat2 "Preset_Thermostat Flur hinten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat2/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/Thermostat2/presetTemperature/feedback:state:default]"} Number Preset_Gnd_Flur_Thermostat2 "Preset_Thermostat Flur hinten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat2/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Flur/Thermostat2/presetTemperature/feedback:state:default]"}
Switch Gnd_Kitchen_WindowLight "Fensterbanklicht Küche"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kitchen/WindowLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kitchen/WindowLight/state/feedback:state:default]"} Switch Gnd_Kueche_WindowLight "Fensterbanklicht"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kueche/WindowLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kueche/WindowLight/state/feedback:state:default]"}
Switch Gnd_Kitchen_CeilingLight "Deckenlampe Küche"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kitchen/CeilingLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kitchen/CeilingLight/state/feedback:state:default]"} Switch Gnd_Kueche_CeilingLight "Deckenlampe"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kueche/CeilingLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kueche/CeilingLight/state/feedback:state:default]"}
Switch 1st_BedRoom_WolfgangsSide "Wolfgangs Seite Schlafzimmer"{mqtt=">[localbroker:dispatcher_ng/items/1st/BedRoom/WolfgangsSide/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/BedRoom/WolfgangsSide/state/feedback:state:default]"} Switch 1st_Schlafzimmer_WolfgangsSide "Wolfgangs Seite"{mqtt=">[localbroker:dispatcher_ng/items/1st/Schlafzimmer/WolfgangsSide/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Schlafzimmer/WolfgangsSide/state/feedback:state:default]"}
Switch 1st_BedRoom_PattysSide "Pattys Seite Schlafzimmer"{mqtt=">[localbroker:dispatcher_ng/items/1st/BedRoom/PattysSide/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/BedRoom/PattysSide/state/feedback:state:default]"} Switch 1st_Schlafzimmer_PattysSide "Pattys Seite"{mqtt=">[localbroker:dispatcher_ng/items/1st/Schlafzimmer/PattysSide/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Schlafzimmer/PattysSide/state/feedback:state:default]"}
Switch 1st_BedRoom_WindowLight "Fensterbanklicht Schlafzimmer"{mqtt=">[localbroker:dispatcher_ng/items/1st/BedRoom/WindowLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/BedRoom/WindowLight/state/feedback:state:default]"} Switch 1st_Schlafzimmer_WindowLight "Fensterbanklicht"{mqtt=">[localbroker:dispatcher_ng/items/1st/Schlafzimmer/WindowLight/state:command:*:default],<[localbroker:dispatcher_ng/items/1st/Schlafzimmer/WindowLight/state/feedback:state:default]"}
Contact 1st_Bedroom_WindowContactStreet "Fenster Schlafzimmer Strasse" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bedroom/WindowContactStreet/state/feedback:state:default]"} Contact 1st_Bedroom_WindowContactStreet "Schlafz. Strasse" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bedroom/WindowContactStreet/state/feedback:state:default]"}
Contact 1st_Bedroom_WindowContact1Garden "Fenster Schlafzimmer 1 Garten" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bedroom/WindowContact1Garden/state/feedback:state:default]"} Contact 1st_Bedroom_WindowContact1Garden "Schlafz. Garten 1" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bedroom/WindowContact1Garden/state/feedback:state:default]"}
Contact 1st_Bedroom_WindowContact2Garden "Fenster Schlafzimmer 2 Garten" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bedroom/WindowContact2Garden/state/feedback:state:default]"} Contact 1st_Bedroom_WindowContact2Garden "Schlafz. Garten 2" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bedroom/WindowContact2Garden/state/feedback:state:default]"}
Number 1st_Bedroom_Thermostat "Thermostat Schlafzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/temperature/feedback:state:default]"} Number 1st_Bedroom_Thermostat "Thermostat Schlafzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/temperature/feedback:state:default]"}
Number Preset_1st_Bedroom_Thermostat "Preset_Thermostat Schlafzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_1st_Bedroom_Thermostat "Preset_Thermostat Schlafzimmer [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bedroom/Thermostat/presetTemperature/feedback:state:default]"}
Switch Gnd_Hallway_DayLight "DayLight"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/DayLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/DayLight/state/feedback:state:default]"} Contact Gnd_Bathroom_WindowContact "Bad unten" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Bathroom/WindowContact/state/feedback:state:default]"}
Switch Gnd_Hallway_EcoLight "EcoLight"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/EcoLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/EcoLight/state/feedback:state:default]"}
Switch Gnd_Hallway_MorningLight "MorningLight"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Hallway/MorningLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Hallway/MorningLight/state/feedback:state:default]"}
Contact Gnd_Bathroom_WindowContact "Fenster Bad unten" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Bathroom/WindowContact/state/feedback:state:default]"}
Number Gnd_Bathroom_Thermostat "Thermostat Bad unten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/temperature/feedback:state:default]"} Number Gnd_Bathroom_Thermostat "Thermostat Bad unten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/temperature/feedback:state:default]"}
Number Preset_Gnd_Bathroom_Thermostat "Preset_Thermostat Bad unten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_Gnd_Bathroom_Thermostat "Preset_Thermostat Bad unten [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Bathroom/Thermostat/presetTemperature/feedback:state:default]"}
Contact 1st_Bathroom_WindowContact "Fenster Bad oben" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bathroom/WindowContact/state/feedback:state:default]"} Contact 1st_Bathroom_WindowContact "Bad oben" {mqtt="<[localbroker:dispatcher_ng/items/1st/Bathroom/WindowContact/state/feedback:state:default]"}
Number 1st_Bathroom_Thermostat "Thermostat Bad oben [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/temperature/feedback:state:default]"} Number 1st_Bathroom_Thermostat "Thermostat Bad oben [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/temperature/feedback:state:default]"}
Number Preset_1st_Bathroom_Thermostat "Preset_Thermostat Bad oben [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_1st_Bathroom_Thermostat "Preset_Thermostat Bad oben [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/1st/Bathroom/Thermostat/presetTemperature/feedback:state:default]"}
Contact Gnd_Kitchen_WindowContact1 "Fenster Küche Garten" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kitchen/WindowContact1/state/feedback:state:default]"} Contact Gnd_Kueche_WindowContact1 "Küche Garten" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kueche/WindowContact1/state/feedback:state:default]"}
Contact Gnd_Kitchen_WindowContact2 "Fenster Küche Terassentür Garten" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kitchen/WindowContact2/state/feedback:state:default]"} Contact Gnd_Kueche_WindowContact2 "Küche Terassentür" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kueche/WindowContact2/state/feedback:state:default]"}
Contact Gnd_Kitchen_WindowContact3 "Fenster Küche Straße 1" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kitchen/WindowContact3/state/feedback:state:default]"} Contact Gnd_Kueche_WindowContact3 "Küche Straße 1" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kueche/WindowContact3/state/feedback:state:default]"}
Contact Gnd_Kitchen_WindowContact4 "Fenster Küche Straße 2" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kitchen/WindowContact4/state/feedback:state:default]"} Contact Gnd_Kueche_WindowContact4 "Küche Straße 2" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Kueche/WindowContact4/state/feedback:state:default]"}
Number Gnd_Kitchen_Thermostat "Thermostat Küche [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kitchen/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kitchen/Thermostat/temperature/feedback:state:default]"} Number Gnd_Kueche_Thermostat "Thermostat Küche [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kueche/Thermostat/temperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kueche/Thermostat/temperature/feedback:state:default]"}
Number Preset_Gnd_Kitchen_Thermostat "Preset_Thermostat Küche [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kitchen/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kitchen/Thermostat/presetTemperature/feedback:state:default]"} Number Preset_Gnd_Kueche_Thermostat "Preset_Thermostat Küche [%.1f °C]" {mqtt=">[localbroker:dispatcher_ng/items/Gnd/Kueche/Thermostat/presetTemperature:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Kueche/Thermostat/presetTemperature/feedback:state:default]"}
Contact Gnd_Hallway_FrontdoorContact "Haustür" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Hallway/FrontdoorContact/state/feedback:state:default]"} Contact Gnd_Flur_FrontdoorContact "Haustür" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Flur/FrontdoorContact/state/feedback:state:default]"}
Switch base_labor_relaybox0 "Küche" {mqtt=">[localbroker:dispatcher_ng/items/base/labor/relaybox/state/0:command:*:default],<[localbroker:dispatcher_ng/items/base/labor/relaybox/feedback/0:state:default]"} Switch base_labor_relaybox0 "Küche" {mqtt=">[localbroker:dispatcher_ng/items/base/labor/relaybox/state/0:command:*:default],<[localbroker:dispatcher_ng/items/base/labor/relaybox/feedback/0:state:default]"}
String base_labor_relaybox0Conflict "Küche [%s]" {mqtt="<[localbroker:dispatcher_ng/items/base/labor/relaybox/conflict/0:state:default]"} String base_labor_relaybox0Conflict "Küche [%s]" {mqtt="<[localbroker:dispatcher_ng/items/base/labor/relaybox/conflict/0:state:default]"}
Switch base_labor_relaybox1 "Herd" {mqtt=">[localbroker:dispatcher_ng/items/base/labor/relaybox/state/1:command:*:default],<[localbroker:dispatcher_ng/items/base/labor/relaybox/feedback/1:state:default]"} Switch base_labor_relaybox1 "Herd" {mqtt=">[localbroker:dispatcher_ng/items/base/labor/relaybox/state/1:command:*:default],<[localbroker:dispatcher_ng/items/base/labor/relaybox/feedback/1:state:default]"}
String base_labor_relaybox1Conflict "Herd [%s]" {mqtt="<[localbroker:dispatcher_ng/items/base/labor/relaybox/conflict/1:state:default]"} String base_labor_relaybox1Conflict "Herd [%s]" {mqtt="<[localbroker:dispatcher_ng/items/base/labor/relaybox/conflict/1:state:default]"}
Switch base_labor_relaybox2 "Waschküche" {mqtt=">[localbroker:dispatcher_ng/items/base/labor/relaybox/state/2:command:*:default],<[localbroker:dispatcher_ng/items/base/labor/relaybox/feedback/2:state:default]"} Switch base_labor_relaybox2 "Waschküche" {mqtt=">[localbroker:dispatcher_ng/items/base/labor/relaybox/state/2:command:*:default],<[localbroker:dispatcher_ng/items/base/labor/relaybox/feedback/2:state:default]"}
String base_labor_relaybox2Conflict "Waschküche [%s]" {mqtt="<[localbroker:dispatcher_ng/items/base/labor/relaybox/conflict/2:state:default]"} String base_labor_relaybox2Conflict "Waschküche [%s]" {mqtt="<[localbroker:dispatcher_ng/items/base/labor/relaybox/conflict/2:state:default]"}
Switch Base_Keller_Light "Werkstatt"{mqtt=">[localbroker:dispatcher_ng/items/Base/Keller/Light/state:command:*:default],<[localbroker:dispatcher_ng/items/Base/Keller/Light/state/feedback:state:default]"}
Switch Base_Keller_SmallLight "Licht einfach"{mqtt=">[localbroker:dispatcher_ng/items/Base/Keller/SmallLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Base/Keller/SmallLight/state/feedback:state:default]"}
Switch Base_Keller_LargeLight "Licht hell"{mqtt=">[localbroker:dispatcher_ng/items/Base/Keller/LargeLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Base/Keller/LargeLight/state/feedback:state:default]"}
Switch Gnd_Szenen_DayLight "DayLight"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Szenen/DayLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Szenen/DayLight/state/feedback:state:default]"}
Switch Gnd_Szenen_EcoLight "EcoLight"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Szenen/EcoLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Szenen/EcoLight/state/feedback:state:default]"}
Switch Gnd_Szenen_MorningLight "MorningLight"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/Szenen/MorningLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/Szenen/MorningLight/state/feedback:state:default]"}
Switch HeatingMainSwitch "Heizung Hauptschalter" {mqtt=">[localbroker:dispatcher_ng/items/heatingMainSwitch:command:*:default],<[localbroker:dispatcher_ng/items/heatingMainSwitch:state:default]"} Switch HeatingMainSwitch "Heizung Hauptschalter" {mqtt=">[localbroker:dispatcher_ng/items/heatingMainSwitch:command:*:default],<[localbroker:dispatcher_ng/items/heatingMainSwitch:state:default]"}

253
smartclient.json Normal file
View File

@ -0,0 +1,253 @@
{
"switches": [
{
"room": "Anna",
"switches": [
{
"label": "Bettlicht",
"actionTopic": "dispatcher_ng/items/1st/Anna/BedLight/state",
"feedbackTopic": "dispatcher_ng/items/1st/Anna/BedLight/state/feedback"
}
]
},
{
"room": "Matthias",
"switches": [
{
"label": "Stehlampen",
"actionTopic": "dispatcher_ng/items/1st/Matthias/StandLight/state",
"feedbackTopic": "dispatcher_ng/items/1st/Matthias/StandLight/state/feedback"
},
{
"label": "Bettlicht",
"actionTopic": "dispatcher_ng/items/1st/Matthias/BedLight/state",
"feedbackTopic": "dispatcher_ng/items/1st/Matthias/BedLight/state/feedback"
},
{
"label": "Lautsprecher",
"actionTopic": "dispatcher_ng/items/1st/Matthias/Speaker/state",
"feedbackTopic": "dispatcher_ng/items/1st/Matthias/Speaker/state/feedback"
}
]
},
{
"room": "Esszimmer",
"switches": [
{
"label": "kleine Lampe",
"actionTopic": "dispatcher_ng/items/Gnd/Esszimmer/SmallLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Esszimmer/SmallLight/state/feedback"
},
{
"label": "Stehlampe",
"actionTopic": "dispatcher_ng/items/Gnd/Esszimmer/StandLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Esszimmer/StandLight/state/feedback"
},
{
"label": "Schranklicht",
"actionTopic": "dispatcher_ng/items/Gnd/Esszimmer/CupboardLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Esszimmer/CupboardLight/state/feedback"
},
{
"label": "Regallicht",
"actionTopic": "dispatcher_ng/items/Gnd/Esszimmer/ShelfLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Esszimmer/ShelfLight/state/feedback"
},
{
"label": "Nähkästchen",
"actionTopic": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Esszimmer/NaehkaestchenLight/state/feedback"
}
]
},
{
"room": "Wohnzimmer",
"switches": [
{
"label": "große Lampe",
"actionTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/LargeLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/LargeLight/state/feedback"
},
{
"label": "kleine Lampe",
"actionTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/SmallLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/SmallLight/state/feedback"
},
{
"label": "Sterne",
"actionTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/Stars/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/Stars/state/feedback"
},
{
"label": "Stehlampe",
"actionTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/StandLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Wohnzimmer/StandLight/state/feedback"
}
]
},
{
"room": "Flur",
"switches": [
{
"label": "Schreibtischlampe",
"actionTopic": "dispatcher_ng/items/Gnd/Flur/DeskLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Flur/DeskLight/state/feedback"
},
{
"label": "Stehlampe",
"actionTopic": "dispatcher_ng/items/Gnd/Flur/StandLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Flur/StandLight/state/feedback"
},
{
"label": "Schranklicht",
"actionTopic": "dispatcher_ng/items/Gnd/Flur/WardrobeLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Flur/WardrobeLight/state/feedback"
}
]
},
{
"room": "Kueche",
"switches": [
{
"label": "Fensterbanklicht",
"actionTopic": "dispatcher_ng/items/Gnd/Kueche/WindowLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Kueche/WindowLight/state/feedback"
},
{
"label": "Deckenlampe",
"actionTopic": "dispatcher_ng/items/Gnd/Kueche/CeilingLight/state",
"feedbackTopic": "dispatcher_ng/items/Gnd/Kueche/CeilingLight/state/feedback"
}
]
},
{
"room": "Schlafzimmer",
"switches": [
{
"label": "Wolfgangs Seite",
"actionTopic": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangsSide/state",
"feedbackTopic": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangsSide/state/feedback"
},
{
"label": "Wolfgangs Bettlicht",
"actionTopic": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/state",
"feedbackTopic": "dispatcher_ng/items/1st/Schlafzimmer/WolfgangBedLight/state/feedback"
},
{
"label": "Pattys Seite",
"actionTopic": "dispatcher_ng/items/1st/Schlafzimmer/PattysSide/state",
"feedbackTopic": "dispatcher_ng/items/1st/Schlafzimmer/PattysSide/state/feedback"
},
{
"label": "Fensterbanklicht",
"actionTopic": "dispatcher_ng/items/1st/Schlafzimmer/WindowLight/state",
"feedbackTopic": "dispatcher_ng/items/1st/Schlafzimmer/WindowLight/state/feedback"
}
]
},
{
"room": "Keller",
"switches": [
{
"label": "Werkstatt",
"actionTopic": "dispatcher_ng/items/Base/Keller/Light/state",
"feedbackTopic": "dispatcher_ng/items/Base/Keller/Light/state/feedback"
},
{
"label": "Licht einfach",
"actionTopic": "dispatcher_ng/items/Base/Keller/SmallLight/state",
"feedbackTopic": "dispatcher_ng/items/Base/Keller/SmallLight/state/feedback"
},
{
"label": "Licht hell",
"actionTopic": "dispatcher_ng/items/Base/Keller/LargeLight/state",
"feedbackTopic": "dispatcher_ng/items/Base/Keller/LargeLight/state/feedback"
}
]
}
],
"scenes": [
{
"label": "DayLight",
"actionTopic": "dispatcher_ng/items/Gnd/Szenen/DayLight/state"
},
{
"label": "EcoLight",
"actionTopic": "dispatcher_ng/items/Gnd/Szenen/EcoLight/state"
},
{
"label": "MorningLight",
"actionTopic": "dispatcher_ng/items/Gnd/Szenen/MorningLight/state"
},
{
"label": "Alle Lampen",
"actionTopic": "dispatcher_ng/items/Gnd/Szenen/AllLights/state"
}
],
"windows": [
{
"label": "Anna",
"topic": "dispatcher_ng/items/1st/Anna/WindowContact/state/feedback"
},
{
"label": "Matthias",
"topic": "dispatcher_ng/items/1st/Matthias/WindowContact/state/feedback"
},
{
"label": "Essz. links",
"topic": "dispatcher_ng/items/Gnd/Esszimmer/WindowContact1/state/feedback"
},
{
"label": "Essz. rechts",
"topic": "dispatcher_ng/items/Gnd/Esszimmer/WindowContact2/state/feedback"
},
{
"label": "Wohnz. rechts",
"topic": "dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact1/state/feedback"
},
{
"label": "Wohnz. links",
"topic": "dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact2/state/feedback"
},
{
"label": "Flur",
"topic": "dispatcher_ng/items/Gnd/Flur/WindowContact/state/feedback"
},
{
"label": "Schlafz. Strasse",
"topic": "dispatcher_ng/items/1st/Bedroom/WindowContactStreet/state/feedback"
},
{
"label": "Schlafz. Garten 1",
"topic": "dispatcher_ng/items/1st/Bedroom/WindowContact1Garden/state/feedback"
},
{
"label": "Schlafz. Garten 2",
"topic": "dispatcher_ng/items/1st/Bedroom/WindowContact2Garden/state/feedback"
},
{
"label": "Bad unten",
"topic": "dispatcher_ng/items/Gnd/Bathroom/WindowContact/state/feedback"
},
{
"label": "Bad oben",
"topic": "dispatcher_ng/items/1st/Bathroom/WindowContact/state/feedback"
},
{
"label": "Küche Garten",
"topic": "dispatcher_ng/items/Gnd/Kueche/WindowContact1/state/feedback"
},
{
"label": "Küche Terassentür",
"topic": "dispatcher_ng/items/Gnd/Kueche/WindowContact2/state/feedback"
},
{
"label": "Küche Straße 1",
"topic": "dispatcher_ng/items/Gnd/Kueche/WindowContact3/state/feedback"
},
{
"label": "Küche Straße 2",
"topic": "dispatcher_ng/items/Gnd/Kueche/WindowContact4/state/feedback"
}
]
}

View File

@ -1,6 +1,7 @@
import * as logger from './log' import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { ExportType } from './Export' import { ExportType } from './Export'
import * as Events from 'events'
@ -12,6 +13,15 @@ export interface HasStateAndFeedbackTopic extends HasStateTopic {
getStateFeedbackTopic() : string getStateFeedbackTopic() : string
} }
export interface HasStateAndFeedbackTopicAndLabel extends HasFeedbackTopic {
getLabel() : string
}
export interface HasStateAndFeedbackTopicAndLabelAndRoom extends HasStateAndFeedbackTopic {
getLabel() : string
getRoom() : string
}
export interface HasFeedbackTopic { export interface HasFeedbackTopic {
getStateFeedbackTopic() : string getStateFeedbackTopic() : string
} }
@ -20,7 +30,7 @@ export interface HasInTopic {
getInTopic() : string getInTopic() : string
} }
export abstract class AItem { export abstract class AItem extends Events.EventEmitter {
protected topicFirstPart: string protected topicFirstPart: string
protected itemId: string protected itemId: string
protected label: string protected label: string
@ -31,6 +41,7 @@ export abstract class AItem {
constructor(floor: string, room: string, item: string, label: string = '') { constructor(floor: string, room: string, item: string, label: string = '') {
super()
this.floor = floor this.floor = floor
this.room = room this.room = room
this.item = item this.item = item

View File

@ -1,12 +1,18 @@
import { AItem } from './AItem' import { AItem } from './AItem'
import * as logger from './log' import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { HasInTopic } from './AItem';
export class Forwarder extends AItem { export class Forwarder extends AItem implements HasInTopic {
private targetTopics: string[] private targetTopics: string[]
private inTopic: string private inTopic: string
getInTopic() : string {
return this.inTopic
}
constructor(floor: string, room: string, item: string, topicLastPart: string, label: string, targetTopics: string[]) { constructor(floor: string, room: string, item: string, topicLastPart: string, label: string, targetTopics: string[]) {
super(floor, room, item, label) super(floor, room, item, label)
this.inTopic = `${this.topicFirstPart}/${topicLastPart}` this.inTopic = `${this.topicFirstPart}/${topicLastPart}`

View File

@ -2,9 +2,9 @@ import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { AHomegearItem } from './AHomegearItem' import { AHomegearItem } from './AHomegearItem'
import { SwitchExport, ExportType } from './Export' import { SwitchExport, ExportType } from './Export'
import { HasStateAndFeedbackTopic } from './AItem'; import { HasStateAndFeedbackTopicAndLabelAndRoom } from './AItem';
export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFeedbackTopic { export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFeedbackTopicAndLabelAndRoom {
private oldState: string|undefined private oldState: string|undefined
private state: string private state: string
private actionTopic: string private actionTopic: string
@ -12,6 +12,15 @@ export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFee
private stateFeedbackTopic: string private stateFeedbackTopic: string
private stateTopic: string private stateTopic: string
private type: string private type: string
private partId: number
getLabel(): string {
return this.label
}
getRoom() : string {
return this.room
}
getStateTopic() : string { getStateTopic() : string {
return this.stateTopic return this.stateTopic
@ -21,12 +30,17 @@ export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFee
return this.stateFeedbackTopic return this.stateFeedbackTopic
} }
constructor(floor: string, room: string, item: string, label: string, hmId: number, type: string = 'bulb') { getState() : string {
return this.state
}
constructor(floor: string, room: string, item: string, label: string, hmId: number, partId: number = 1, type: string = 'bulb') {
super(floor, room, item, label, hmId) super(floor, room, item, label, hmId)
this.partId = partId
this.stateTopic = `${this.topicFirstPart}/state` this.stateTopic = `${this.topicFirstPart}/state`
this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback` this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`
this.deviceFeedbackTopic = `${this.deviceTopicPre}/1/STATE` this.deviceFeedbackTopic = `${this.deviceTopicPre}/${this.partId}/STATE`
this.actionTopic = `${this.actionTopicPre}/1/STATE` this.actionTopic = `${this.actionTopicPre}/${this.partId}/STATE`
this.subscribeTopics = [ this.subscribeTopics = [
this.stateTopic, this.stateTopic,
this.deviceFeedbackTopic this.deviceFeedbackTopic
@ -64,5 +78,6 @@ export class HomematicSwitchItem extends AHomegearItem implements HasStateAndFee
mqttHandler.send(this.stateFeedbackTopic, this.state) mqttHandler.send(this.stateFeedbackTopic, this.state)
break break
} }
this.emit('somethingChanged')
} }
} }

View File

@ -2,9 +2,9 @@ import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { AHomegearItem } from './AHomegearItem' import { AHomegearItem } from './AHomegearItem'
import { HueColorLightExport, ExportType } from './Export' import { HueColorLightExport, ExportType } from './Export'
import { HasStateAndFeedbackTopic, HasInTopic } from './AItem' import { HasStateAndFeedbackTopic, HasInTopic, HasStateAndFeedbackTopicAndLabelAndRoom } from './AItem'
export class HueColorBulbItem extends AHomegearItem implements HasStateAndFeedbackTopic{ export class HueColorBulbItem extends AHomegearItem implements HasStateAndFeedbackTopicAndLabelAndRoom {
private readonly BRIGHT_FACTOR: number = 2.54 private readonly BRIGHT_FACTOR: number = 2.54
private readonly HUE_FACTOR: number = (65535 / 360) private readonly HUE_FACTOR: number = (65535 / 360)
private readonly SATURATION_FACTOR: number = 2.54 private readonly SATURATION_FACTOR: number = 2.54
@ -34,6 +34,14 @@ export class HueColorBulbItem extends AHomegearItem implements HasStateAndFeedba
private hueDeviceTopic: string private hueDeviceTopic: string
private saturationDeviceTopic: string private saturationDeviceTopic: string
getLabel() : string {
return this.label
}
getRoom() : string {
return this.room
}
getStateTopic() : string { getStateTopic() : string {
return this.stateTopic return this.stateTopic
} }

View File

@ -1,10 +1,10 @@
import * as logger from './log' import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { AItem, HasStateAndFeedbackTopic, HasInTopic } from './AItem' import { AItem, HasStateAndFeedbackTopicAndLabelAndRoom, HasInTopic, HasStateAndFeedbackTopic } from './AItem'
import { SwitchExport, ExportType } from './Export' import { SwitchExport, ExportType } from './Export'
export class M433SwitchItem extends AItem implements HasStateAndFeedbackTopic { export class M433SwitchItem extends AItem implements HasStateAndFeedbackTopicAndLabelAndRoom {
private offCode: string private offCode: string
private onCode: string private onCode: string
private oldState: string|undefined private oldState: string|undefined
@ -14,6 +14,14 @@ export class M433SwitchItem extends AItem implements HasStateAndFeedbackTopic {
private stateTopic: string private stateTopic: string
private type: string private type: string
getLabel() : string {
return this.label
}
getRoom() : string {
return this.room
}
getStateTopic() : string { getStateTopic() : string {
return this.stateTopic return this.stateTopic
} }

View File

@ -3,9 +3,9 @@ import { mqttHandler } from './MqttDispatcher'
import { AHomegearItem } from './AHomegearItem' import { AHomegearItem } from './AHomegearItem'
import { ContactExport, ExportType } from './Export' import { ContactExport, ExportType } from './Export'
import { Disabler } from './Disabler' import { Disabler } from './Disabler'
import { HasFeedbackTopic } from './AItem' import { HasFeedbackTopic, HasStateAndFeedbackTopicAndLabel } from './AItem'
export class MaxWindowContact extends AHomegearItem implements Disabler, HasFeedbackTopic { export class MaxWindowContact extends AHomegearItem implements Disabler, HasStateAndFeedbackTopicAndLabel {
private deviceFeedbackTopic: string private deviceFeedbackTopic: string
private stateFeedbackTopic: string private stateFeedbackTopic: string
private stateTopic: string private stateTopic: string
@ -15,6 +15,10 @@ export class MaxWindowContact extends AHomegearItem implements Disabler, HasFeed
return this.stateFeedbackTopic return this.stateFeedbackTopic
} }
getLabel() {
return this.label
}
transform(payload: string) : string { transform(payload: string) : string {
let res: string let res: string
if (payload == 'OPEN') { if (payload == 'OPEN') {

View File

@ -25,6 +25,7 @@ class MqttHandler {
constructor() { constructor() {
this.mqttBrokerUrl = config.dict.brokerUrl this.mqttBrokerUrl = config.dict.brokerUrl
this.mqttOptions.clientId = 'dispatcher'
if (config.dict.brokerUser && config.dict.brokerPass) { if (config.dict.brokerUser && config.dict.brokerPass) {
this.mqttOptions.username = config.dict.brokerUser this.mqttOptions.username = config.dict.brokerUser
this.mqttOptions.password = config.dict.brokerPass this.mqttOptions.password = config.dict.brokerPass

View File

@ -14,11 +14,11 @@ export class MySwitchSingleItem {
case 'PRESS_SHORT': case 'PRESS_SHORT':
mqttHandler.send(this.actionTopic, 'SHORT', true) mqttHandler.send(this.actionTopic, 'SHORT', true)
break break
case 'PRESS_LONG': case 'PRESS_LONG_START':
case 'PRESS_CONT': case 'PRESS_LONG_CONT':
mqttHandler.send(this.actionTopic, 'LONG_HOLD', true) mqttHandler.send(this.actionTopic, 'LONG_HOLD', true)
break break
case 'PRESS_LONG_RELEASE': case 'PRESS_LONG_END':
mqttHandler.send(this.actionTopic, 'LONG_END', true) mqttHandler.send(this.actionTopic, 'LONG_END', true)
break break
default: default:

View File

@ -1,9 +1,9 @@
import { AItem, HasStateAndFeedbackTopic } from './AItem' import { AItem, HasStateAndFeedbackTopic, HasStateAndFeedbackTopicAndLabelAndRoom } from './AItem'
import * as logger from './log' import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { ExportType, SwitchExport } from './Export' import { ExportType, SwitchExport } from './Export'
export class LightScene extends AItem implements HasStateAndFeedbackTopic { export class LightScene extends AItem implements HasStateAndFeedbackTopicAndLabelAndRoom {
private onFeedbackTopics: string[] private onFeedbackTopics: string[]
private offFeedbackTopics: string[] private offFeedbackTopics: string[]
private onTopics: string[] private onTopics: string[]
@ -17,6 +17,14 @@ export class LightScene extends AItem implements HasStateAndFeedbackTopic {
private onItems: HasStateAndFeedbackTopic[] private onItems: HasStateAndFeedbackTopic[]
private myLastFeedbackState: string private myLastFeedbackState: string
getLabel() {
return this.label
}
getRoom() {
return this.room
}
getStateTopic() { getStateTopic() {
return this.stateTopic return this.stateTopic
} }

View File

@ -0,0 +1,70 @@
import * as logger from './log'
import { mqttHandler } from './MqttDispatcher'
import { AItem } from './AItem'
import { SwitchExport, ExportType } from './Export'
import { HasStateAndFeedbackTopicAndLabelAndRoom } from './AItem';
export class SimpleTopicSwitchItem extends AItem implements HasStateAndFeedbackTopicAndLabelAndRoom {
private oldState: string|undefined
private state: string
private actionTopic: string
private deviceFeedbackTopic: string
private stateFeedbackTopic: string
private stateTopic: string
private type: string
private partId: number
getLabel(): string {
return this.label
}
getRoom() : string {
return this.room
}
getStateTopic() : string {
return this.stateTopic
}
getStateFeedbackTopic() : string {
return this.stateFeedbackTopic
}
getState() : string {
return this.state
}
constructor(floor: string, room: string, item: string, label: string, actionTopic: string) {
super(floor, room, item, label)
this.stateTopic = `${this.topicFirstPart}/state`
this.stateFeedbackTopic = `${this.topicFirstPart}/state/feedback`
this.actionTopic = actionTopic
this.subscribeTopics = [
this.stateTopic
]
this.state = 'OFF'
this.oldState = undefined
}
exportItem() : ExportType|null {
return SwitchExport(this.itemId, this.label, this.stateTopic, this.stateFeedbackTopic, this.type)
}
processMessage(topic: string, payload: string) : void {
switch (topic) {
case this.stateTopic:
this.state = payload
mqttHandler.send(this.stateFeedbackTopic, this.state)
if (this.state != this.oldState) {
if (this.state == 'ON') {
mqttHandler.send(this.actionTopic, 'ON')
} else {
mqttHandler.send(this.actionTopic, 'OFF')
}
this.oldState = this.state
}
break
}
this.emit('somethingChanged')
}
}

28
src/SwitchOffAdaptor.ts Normal file
View File

@ -0,0 +1,28 @@
import { AItem, HasInTopic } from './AItem'
import * as logger from './log'
import { mqttHandler } from './MqttDispatcher'
export class SwitchOffAdaptor extends AItem implements HasInTopic {
private inTopic: string
private actionStateTopic: string
constructor(floor: string, room: string, item: string) {
super(floor, room, item)
this.actionStateTopic = `${this.topicFirstPart}/state`
this.inTopic = `${this.topicFirstPart}/in`
this.subscribeTopics = [ this.inTopic ]
}
getInTopic() : string {
return this.inTopic
}
processMessage(topic: string, payload: string) : void {
if ((topic == this.inTopic) && (payload == 'SHORT')) {
mqttHandler.send(this.actionStateTopic, 'OFF', true)
}
}
}

View File

@ -44,12 +44,16 @@ export class UrlSwitchItem extends AItem implements HasStateAndFeedbackTopic {
this.state = payload; this.state = payload;
mqttHandler.send(this.stateFeedbackTopic, this.state); mqttHandler.send(this.stateFeedbackTopic, this.state);
if (this.state != this.oldState) { if (this.state != this.oldState) {
try {
if (this.state == 'ON') { if (this.state == 'ON') {
http.get(this.onUrl,) http.get(this.onUrl,)
} else { } else {
http.get(this.offUrl) http.get(this.offUrl)
} }
this.oldState = this.state; this.oldState = this.state;
} catch {
logger.error(`Failed to handle ${this.onUrl} or ${this.offUrl}`)
}
} }
} }
} }

View File

@ -4,12 +4,13 @@ import * as config from './config'
import * as logger from './log' import * as logger from './log'
import { mqttHandler } from './MqttDispatcher' import { mqttHandler } from './MqttDispatcher'
import { AItem, HasInTopic, HasFeedbackTopic, HasStateAndFeedbackTopic } from './AItem' import { AItem, HasInTopic, HasFeedbackTopic, HasStateAndFeedbackTopic, HasStateAndFeedbackTopicAndLabelAndRoom, HasStateAndFeedbackTopicAndLabel } from './AItem'
import { HomekitExportType, ExportType } from './Export' import { HomekitExportType, ExportType } from './Export'
import { M433SwitchItem } from './M433SwitchItem' 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 { 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'
@ -25,6 +26,8 @@ import { RelayBoxThing } from './RelayBox'
import { HeatingScene } from './HeatingScene' import { HeatingScene } from './HeatingScene'
import { TwoLedSignal } from './TwoLedSignal' import { TwoLedSignal } from './TwoLedSignal'
import { MySwitchThing, MySwitchSingleItem } from './MySwitchThing' import { MySwitchThing, MySwitchSingleItem } from './MySwitchThing'
import { SimpleTopicSwitchItem } from './SimpleTopicSwitchItem'
logger.info("Dispatcher starting") logger.info("Dispatcher starting")
@ -33,11 +36,11 @@ let allLabeledItems : Array<AItem> = new Array()
let allThermostatItems : Array<HasInTopic> = new Array() let allThermostatItems : Array<HasInTopic> = new Array()
let allWindows : Array<HasFeedbackTopic> = new Array() let allWindows : Array<HasFeedbackTopic> = new Array()
let allRelevantLights: Array<HasFeedbackTopic> = new Array() let allRelevantLights: Array<HasFeedbackTopic> = new Array()
let allLights: Array<HasStateAndFeedbackTopicAndLabelAndRoom> = new Array();
let allLightScenes: Array<HasStateAndFeedbackTopicAndLabelAndRoom> = new Array();
// Anna ----------------------------------------------------------------------------------------------------- // Anna -----------------------------------------------------------------------------------------------------
// Anna Aquarium 14665044 24 1 14665041 24 1 // Anna Aquarium 14665044 24 1 14665041 24 1
let aquariumLight = new M433SwitchItem('1st', 'Anna', 'AquariumLight', 'Aquariumlicht', '14665044 24 1', '14665041 24 1') let aquariumLight = new M433SwitchItem('1st', 'Anna', 'AquariumLight', 'Aquarium', '14665044 24 1', '14665041 24 1')
aquariumLight.start() aquariumLight.start()
allLabeledItems.push(aquariumLight) allLabeledItems.push(aquariumLight)
@ -53,12 +56,13 @@ aquariumLightCron.start()
// Anna Bett 14668116 24 1 14668113 24 1 // Anna Bett 14668116 24 1 14668113 24 1
let annaBedLight = new M433SwitchItem('1st', 'Anna', 'BedLight', 'Bettlicht Anna', '14668116 24 1', '14668113 24 1') let annaBedLight = new M433SwitchItem('1st', 'Anna', 'BedLight', 'Bettlicht', '14668116 24 1', '14668113 24 1')
annaBedLight.start() annaBedLight.start()
allLabeledItems.push(annaBedLight) allLabeledItems.push(annaBedLight)
allRelevantLights.push(annaBedLight) allRelevantLights.push(annaBedLight)
allLights.push(annaBedLight)
let windowContactAnna1st = new MaxWindowContact('1st', 'Anna', 'WindowContact', 'Fenster Anna', 20) let windowContactAnna1st = new MaxWindowContact('1st', 'Anna', 'WindowContact', 'Anna', 20)
windowContactAnna1st.start() windowContactAnna1st.start()
allLabeledItems.push(windowContactAnna1st) allLabeledItems.push(windowContactAnna1st)
allWindows.push(windowContactAnna1st) allWindows.push(windowContactAnna1st)
@ -84,25 +88,28 @@ thermostatAnna1stCron.start()
// Matthias ------------------------------------------------------------------------------------------------- // Matthias -------------------------------------------------------------------------------------------------
// Matthias Stehlampen 7 24 1 6 24 1 // Matthias Stehlampen 7 24 1 6 24 1
let matthiasStandLights = new M433SwitchItem('1st', 'Matthias', 'StandLight', 'Stehlampen Matthias', '7 24 1', '6 24 1') let matthiasStandLights = new M433SwitchItem('1st', 'Matthias', 'StandLight', 'Stehlampen', '7 24 1', '6 24 1')
matthiasStandLights.start() matthiasStandLights.start()
allLabeledItems.push(matthiasStandLights) allLabeledItems.push(matthiasStandLights)
allRelevantLights.push(matthiasStandLights) allRelevantLights.push(matthiasStandLights)
allLights.push(matthiasStandLights)
// Matthias Bett 15 24 1 14 24 1 // Matthias Bett 15 24 1 14 24 1
let matthiasBedLight = new M433SwitchItem('1st', 'Matthias', 'BedLight', 'Bettlicht Matthias', '15 24 1', '14 24 1') let matthiasBedLight = new M433SwitchItem('1st', 'Matthias', 'BedLight', 'Bettlicht', '15 24 1', '14 24 1')
matthiasBedLight.start() matthiasBedLight.start()
allLabeledItems.push(matthiasBedLight) allLabeledItems.push(matthiasBedLight)
allRelevantLights.push(matthiasBedLight) allRelevantLights.push(matthiasBedLight)
allLights.push(matthiasBedLight)
// Matthias Lautsprecher 11 24 1 10 24 1 // Matthias Lautsprecher 11 24 1 10 24 1
let matthiasSpeaker = new M433SwitchItem('1st', 'Matthias', 'Speaker', 'Lautsprecher Matthias', '11 24 1', '10 24 1', 'outlet') let matthiasSpeaker = new M433SwitchItem('1st', 'Matthias', 'Speaker', 'Lautsprecher', '11 24 1', '10 24 1', 'outlet')
matthiasSpeaker.start() matthiasSpeaker.start()
allLabeledItems.push(matthiasSpeaker) allLabeledItems.push(matthiasSpeaker)
allRelevantLights.push(matthiasSpeaker) allRelevantLights.push(matthiasSpeaker)
allLights.push(matthiasSpeaker)
let windowContactMatthias = new MaxWindowContact('1st', 'Matthias', 'WindowContact', 'Fenster Matthias', 24) let windowContactMatthias = new MaxWindowContact('1st', 'Matthias', 'WindowContact', 'Matthias', 24)
windowContactMatthias.start() windowContactMatthias.start()
allLabeledItems.push(windowContactMatthias) allLabeledItems.push(windowContactMatthias)
allWindows.push(windowContactMatthias) allWindows.push(windowContactMatthias)
@ -111,44 +118,49 @@ allWindows.push(windowContactMatthias)
// Esszimmer ------------------------------------------------------------------------------------------------ // Esszimmer ------------------------------------------------------------------------------------------------
// Esszimmer kleine Lampe 69653 24 1 69652 24 1 // Esszimmer kleine Lampe 69653 24 1 69652 24 1
let diningRoomSmallLight = new M433SwitchItem('Gnd', 'DiningRoom', 'SmallLight', 'kleine Lampe Esszimmer', '69653 24 1', '69652 24 1') let diningRoomSmallLight = new M433SwitchItem('Gnd', 'Esszimmer', 'SmallLight', 'kleine Lampe', '69653 24 1', '69652 24 1')
diningRoomSmallLight.start() diningRoomSmallLight.start()
allLabeledItems.push(diningRoomSmallLight) allLabeledItems.push(diningRoomSmallLight)
allRelevantLights.push(diningRoomSmallLight) allRelevantLights.push(diningRoomSmallLight)
allLights.push(diningRoomSmallLight)
// Esszimmer Stehlampe 86037 24 1 86036 24 1 // Esszimmer Stehlampe 86037 24 1 86036 24 1
let diningRoomStandLight = new M433SwitchItem('Gnd', 'DiningRoom', 'StandLight', 'Stehlampe Esszimmer', '86037 24 1', '86036 24 1') let diningRoomStandLight = new M433SwitchItem('Gnd', 'Esszimmer', 'StandLight', 'Stehlampe', '86037 24 1', '86036 24 1')
diningRoomStandLight.start() diningRoomStandLight.start()
allLabeledItems.push(diningRoomStandLight) allLabeledItems.push(diningRoomStandLight)
allRelevantLights.push(diningRoomStandLight) allRelevantLights.push(diningRoomStandLight)
allLights.push(diningRoomStandLight)
// Esszimmer Schranklicht 65813 24 1 65812 24 1 // Esszimmer Schranklicht 65813 24 1 65812 24 1
let diningRoomCupboardLight = new M433SwitchItem('Gnd', 'DiningRoom', 'CupboardLight', 'Schranklicht Esszimmer', '65813 24 1', '65812 24 1') let diningRoomCupboardLight = new M433SwitchItem('Gnd', 'Esszimmer', 'CupboardLight', 'Schranklicht', '65813 24 1', '65812 24 1')
diningRoomCupboardLight.start() diningRoomCupboardLight.start()
allLabeledItems.push(diningRoomCupboardLight) allLabeledItems.push(diningRoomCupboardLight)
allRelevantLights.push(diningRoomCupboardLight) allRelevantLights.push(diningRoomCupboardLight)
allLights.push(diningRoomCupboardLight)
// Esszimmer Regallicht // Esszimmer Regallicht
let diningRoomShelfLight = new UrlSwitchItem('Gnd', 'DiningRoom', 'ShelfLight', 'Regallicht Esszimmer', 'http://regallampe/dv?dv=1023', 'http://regallampe/dv?dv=0') let diningRoomShelfLight = new SimpleTopicSwitchItem('Gnd', 'Esszimmer', 'ShelfLight', 'Regallicht', 'IoT/WifiRelay1/State')
diningRoomShelfLight.start() diningRoomShelfLight.start()
allLabeledItems.push(diningRoomShelfLight) allLabeledItems.push(diningRoomShelfLight)
allRelevantLights.push(diningRoomShelfLight) allRelevantLights.push(diningRoomShelfLight)
allLights.push(diningRoomShelfLight)
let diningRoomNaehkaestchenLight = new HueColorBulbItem('Gnd', 'DiningRoom', 'NaehkaestchenLight', 'Lampe Naehkaestchen', 15) let diningRoomNaehkaestchenLight = new HueColorBulbItem('Gnd', 'Esszimmer', 'NaehkaestchenLight', 'Nähkästchen', 15)
diningRoomNaehkaestchenLight.start() diningRoomNaehkaestchenLight.start()
allLabeledItems.push(diningRoomNaehkaestchenLight) allLabeledItems.push(diningRoomNaehkaestchenLight)
allRelevantLights.push(diningRoomNaehkaestchenLight) allRelevantLights.push(diningRoomNaehkaestchenLight)
allLights.push(diningRoomNaehkaestchenLight)
let windowContactDiningRoom1 = new MaxWindowContact('Gnd', 'DiningRoom', 'WindowContact1', 'Fenster Esszimmer Straße links', 26) let windowContactDiningRoom1 = new MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact1', 'Essz. links', 26)
windowContactDiningRoom1.start() windowContactDiningRoom1.start()
allLabeledItems.push(windowContactDiningRoom1) allLabeledItems.push(windowContactDiningRoom1)
allWindows.push(windowContactDiningRoom1) allWindows.push(windowContactDiningRoom1)
let windowContactDiningRoom2 = new MaxWindowContact('Gnd', 'DiningRoom', 'WindowContact2', 'Fenster Esszimmer Straße rechts', 27) let windowContactDiningRoom2 = new MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact2', 'Essz. rechts', 27)
windowContactDiningRoom2.start() windowContactDiningRoom2.start()
allLabeledItems.push(windowContactDiningRoom2) allLabeledItems.push(windowContactDiningRoom2)
allWindows.push(windowContactDiningRoom2) allWindows.push(windowContactDiningRoom2)
let thermostatDiningRoom = new MaxThermostat('Gnd', 'DiningRoom', 'Thermostat', 'Thermostat Esszimmer', 31, [windowContactDiningRoom1, windowContactDiningRoom2]) let thermostatDiningRoom = new MaxThermostat('Gnd', 'Esszimmer', 'Thermostat', 'Thermostat Esszimmer', 31, [windowContactDiningRoom1, windowContactDiningRoom2])
thermostatDiningRoom.start() thermostatDiningRoom.start()
thermostatDiningRoom.setPresetTemperature(21.0) thermostatDiningRoom.setPresetTemperature(21.0)
allLabeledItems.push(thermostatDiningRoom) allLabeledItems.push(thermostatDiningRoom)
@ -156,39 +168,43 @@ allThermostatItems.push(thermostatDiningRoom)
// Wohnzimmer ----------------------------------------------------------------------------------------------- // Wohnzimmer -----------------------------------------------------------------------------------------------
// Wohnzimmer grosse Lampe 65557 24 1 65556 24 1 // Wohnzimmer grosse Lampe 65557 24 1 65556 24 1
let livingRoomLargeLight = new M433SwitchItem('Gnd', 'LivingRoom', 'LargeLight', 'große Lampe Wohnzimmer', '65557 24 1', '65556 24 1') let livingRoomLargeLight = new M433SwitchItem('Gnd', 'Wohnzimmer', 'LargeLight', 'große Lampe', '65557 24 1', '65556 24 1')
livingRoomLargeLight.start() livingRoomLargeLight.start()
allLabeledItems.push(livingRoomLargeLight) allLabeledItems.push(livingRoomLargeLight)
allRelevantLights.push(livingRoomLargeLight) allRelevantLights.push(livingRoomLargeLight)
allLights.push(livingRoomLargeLight)
// Wohnzimmer kleine Lampe 87061 24 1 87060 24 1 // Wohnzimmer kleine Lampe 87061 24 1 87060 24 1
let livingRoomSmallLight = new M433SwitchItem('Gnd', 'LivingRoom', 'SmallLight', 'kleine Lampe Wohnzimmer', '87061 24 1', '87060 24 1') let livingRoomSmallLight = new M433SwitchItem('Gnd', 'Wohnzimmer', 'SmallLight', 'kleine Lampe', '87061 24 1', '87060 24 1')
livingRoomSmallLight.start() livingRoomSmallLight.start()
allLabeledItems.push(livingRoomSmallLight) allLabeledItems.push(livingRoomSmallLight)
allRelevantLights.push(livingRoomSmallLight) allRelevantLights.push(livingRoomSmallLight)
allLights.push(livingRoomSmallLight)
// Wohnzimmer Sterne 69909 24 1 69908 24 1 // Wohnzimmer Sterne 69909 24 1 69908 24 1
let livingRoomStars = new M433SwitchItem('Gnd', 'LivingRoom', 'Stars', 'Sterne Wohnzimmer', '69909 24 1', '69908 24 1') let livingRoomStars = new M433SwitchItem('Gnd', 'Wohnzimmer', 'Stars', 'Sterne', '69909 24 1', '69908 24 1')
livingRoomStars.start() livingRoomStars.start()
allLabeledItems.push(livingRoomStars) allLabeledItems.push(livingRoomStars)
allRelevantLights.push(livingRoomStars) allRelevantLights.push(livingRoomStars)
allLights.push(livingRoomStars)
// Wohnzimmer kleine Stehlampe 81941 24 1 81940 24 1 // Wohnzimmer kleine Stehlampe 81941 24 1 81940 24 1
let livingRoomStandLight = new M433SwitchItem('Gnd', 'LivingRoom', 'StandLight', 'Stehlampe Wohnzimmer', '81941 24 1', '81940 24 1') let livingRoomStandLight = new M433SwitchItem('Gnd', 'Wohnzimmer', 'StandLight', 'Stehlampe', '81941 24 1', '81940 24 1')
livingRoomStandLight.start() livingRoomStandLight.start()
allLabeledItems.push(livingRoomStandLight) allLabeledItems.push(livingRoomStandLight)
allRelevantLights.push(livingRoomStandLight) allRelevantLights.push(livingRoomStandLight)
allLights.push(livingRoomStandLight)
let windowContactLivingRoom1 = new MaxWindowContact('Gnd', 'LivingRoom', 'WindowContact1', 'Fenster Wohnzimmer Garten rechts', 28) let windowContactLivingRoom1 = new MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact1', 'Wohnz. rechts', 28)
windowContactLivingRoom1.start() windowContactLivingRoom1.start()
allLabeledItems.push(windowContactLivingRoom1) allLabeledItems.push(windowContactLivingRoom1)
allWindows.push(windowContactLivingRoom1) allWindows.push(windowContactLivingRoom1)
let windowContactLivingRoom2 = new MaxWindowContact('Gnd', 'LivingRoom', 'WindowContact2', 'Fenster Wohnzimmer Garten links', 29) let windowContactLivingRoom2 = new MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact2', 'Wohnz. links', 29)
windowContactLivingRoom2.start() windowContactLivingRoom2.start()
allLabeledItems.push(windowContactLivingRoom2) allLabeledItems.push(windowContactLivingRoom2)
allWindows.push(windowContactLivingRoom2) allWindows.push(windowContactLivingRoom2)
let thermostatLivingRoom = new MaxThermostat('Gnd', 'LivingRoom', 'Thermostat', 'Thermostat Wohnzimmer', 30, [windowContactLivingRoom1, windowContactLivingRoom2]) let thermostatLivingRoom = new MaxThermostat('Gnd', 'Wohnzimmer', 'Thermostat', 'Thermostat Wohnzimmer', 30, [windowContactLivingRoom1, windowContactLivingRoom2])
thermostatLivingRoom.start() thermostatLivingRoom.start()
thermostatLivingRoom.setPresetTemperature(21.0) thermostatLivingRoom.setPresetTemperature(21.0)
allLabeledItems.push(thermostatLivingRoom) allLabeledItems.push(thermostatLivingRoom)
@ -196,35 +212,38 @@ allThermostatItems.push(thermostatLivingRoom)
// Flur ----------------------------------------------------------------------------------------------------- // Flur -----------------------------------------------------------------------------------------------------
// Flur Schreibtisch 83221 24 1 83220 24 1 // Flur Schreibtisch 83221 24 1 83220 24 1
let hallwayDeskLight = new M433SwitchItem('Gnd', 'Hallway', 'DeskLight', 'Schreibtischlampe Flur', '83221 24 1', '83220 24 1') let hallwayDeskLight = new M433SwitchItem('Gnd', 'Flur', 'DeskLight', 'Schreibtischlampe', '83221 24 1', '83220 24 1')
hallwayDeskLight.start() hallwayDeskLight.start()
allLabeledItems.push(hallwayDeskLight) allLabeledItems.push(hallwayDeskLight)
allRelevantLights.push(hallwayDeskLight) allRelevantLights.push(hallwayDeskLight)
allLights.push(hallwayDeskLight)
// Flur Stehlampe 8704914 24 5 8793154 24 5 // Flur Stehlampe 8704914 24 5 8793154 24 5
let hallwayStandLight = new M433SwitchItem('Gnd', 'Hallway', 'StandLight', 'Stehlampe Flur', '8704914 24 5', '8793154 24 5') let hallwayStandLight = new M433SwitchItem('Gnd', 'Flur', 'StandLight', 'Stehlampe', '8704914 24 5', '8793154 24 5')
hallwayStandLight.start() hallwayStandLight.start()
allLabeledItems.push(hallwayStandLight) allLabeledItems.push(hallwayStandLight)
allRelevantLights.push(hallwayStandLight) allRelevantLights.push(hallwayStandLight)
allLights.push(hallwayStandLight)
// Flur Schranklicht 66581 24 1 66580 24 1 // Flur Schranklicht 66581 24 1 66580 24 1
let hallwayWardrobeLight = new M433SwitchItem('Gnd', 'Hallway', 'WardrobeLight', 'Schranklicht Flur', '66581 24 1', '66580 24 1') let hallwayWardrobeLight = new M433SwitchItem('Gnd', 'Flur', 'WardrobeLight', 'Schranklicht', '66581 24 1', '66580 24 1')
hallwayWardrobeLight.start() hallwayWardrobeLight.start()
allLabeledItems.push(hallwayWardrobeLight) allLabeledItems.push(hallwayWardrobeLight)
allRelevantLights.push(hallwayWardrobeLight) allRelevantLights.push(hallwayWardrobeLight)
allLights.push(hallwayWardrobeLight)
let windowContactHallway = new MaxWindowContact('Gnd', 'Hallway', 'WindowContact', 'Fenster Flur', 25) let windowContactHallway = new MaxWindowContact('Gnd', 'Flur', 'WindowContact', 'Flur', 25)
windowContactHallway.start() windowContactHallway.start()
allLabeledItems.push(windowContactHallway) allLabeledItems.push(windowContactHallway)
allWindows.push(windowContactHallway) allWindows.push(windowContactHallway)
let thermostatHallway1 = new MaxThermostat('Gnd', 'Hallway', 'Thermostat1', 'Thermostat Flur vorne', 32, []) let thermostatHallway1 = new MaxThermostat('Gnd', 'Flur', 'Thermostat1', 'Thermostat Flur vorne', 32, [])
thermostatHallway1.start() thermostatHallway1.start()
thermostatHallway1.setPresetTemperature(19.0) thermostatHallway1.setPresetTemperature(19.0)
allLabeledItems.push(thermostatHallway1) allLabeledItems.push(thermostatHallway1)
allThermostatItems.push(thermostatHallway1) allThermostatItems.push(thermostatHallway1)
let thermostatHallway2 = new MaxThermostat('Gnd', 'Hallway', 'Thermostat2', 'Thermostat Flur hinten', 33, []) let thermostatHallway2 = new MaxThermostat('Gnd', 'Flur', 'Thermostat2', 'Thermostat Flur hinten', 33, [])
thermostatHallway2.start() thermostatHallway2.start()
thermostatHallway2.setPresetTemperature(5.0) thermostatHallway2.setPresetTemperature(5.0)
allLabeledItems.push(thermostatHallway2) allLabeledItems.push(thermostatHallway2)
@ -232,31 +251,35 @@ allThermostatItems.push(thermostatHallway2)
// Küche ---------------------------------------------------------------------------------------------------- // Küche ----------------------------------------------------------------------------------------------------
// Küche Fensterbank 66837 24 1 66836 24 1 // Küche Fensterbank 66837 24 1 66836 24 1
let kitchenWindowLight = new M433SwitchItem('Gnd', 'Kitchen', 'WindowLight', 'Fensterbanklicht Küche', '66837 24 1', '66836 24 1') let kitchenWindowLight = new M433SwitchItem('Gnd', 'Kueche', 'WindowLight', 'Fensterbanklicht', '66837 24 1', '66836 24 1')
kitchenWindowLight.start() kitchenWindowLight.start()
allLabeledItems.push(kitchenWindowLight) allLabeledItems.push(kitchenWindowLight)
allRelevantLights.push(kitchenWindowLight) allRelevantLights.push(kitchenWindowLight)
allLights.push(kitchenWindowLight)
// Küche Deckenlampe 82197 24 1 82196 24 1 // Küche Deckenlampe 82197 24 1 82196 24 1
let kitchenCeilingLight = new M433SwitchItem('Gnd', 'Kitchen', 'CeilingLight', 'Deckenlampe Küche', '82197 24 1', '82196 24 1') let kitchenCeilingLight = new M433SwitchItem('Gnd', 'Kueche', 'CeilingLight', 'Deckenlampe', '82197 24 1', '82196 24 1')
kitchenCeilingLight.start() kitchenCeilingLight.start()
allLabeledItems.push(kitchenCeilingLight) allLabeledItems.push(kitchenCeilingLight)
allRelevantLights.push(kitchenCeilingLight) allRelevantLights.push(kitchenCeilingLight)
allLights.push(kitchenCeilingLight)
// Schlafzimmer --------------------------------------------------------------------------------------------- // Schlafzimmer ---------------------------------------------------------------------------------------------
// Schlafzimmer Wolfgangs Seite 13976916 24 1 13976913 24 1 // Schlafzimmer Wolfgangs Seite 13976916 24 1 13976913 24 1
let bedRoomWolfgangsSide = new M433SwitchItem('1st', 'BedRoom', 'WolfgangsSide', 'Wolfgangs Seite Schlafzimmer', '13976916 24 1', '13976913 24 1') let bedRoomWolfgangsSide = new M433SwitchItem('1st', 'Schlafzimmer', 'WolfgangsSide', 'Wolfgangs Seite', '13976916 24 1', '13976913 24 1')
bedRoomWolfgangsSide.start() bedRoomWolfgangsSide.start()
allLabeledItems.push(bedRoomWolfgangsSide) allLabeledItems.push(bedRoomWolfgangsSide)
allRelevantLights.push(bedRoomWolfgangsSide) allRelevantLights.push(bedRoomWolfgangsSide)
allLights.push(bedRoomWolfgangsSide)
let bedRoomWolfgangBedLight = new HueColorBulbItem('1st', 'BedRoom', 'WolfgangBedLight', 'Bettlicht', 16) let bedRoomWolfgangBedLight = new HueColorBulbItem('1st', 'Schlafzimmer', 'WolfgangBedLight', 'Wolfgangs Bettlicht', 16)
bedRoomWolfgangBedLight.start() bedRoomWolfgangBedLight.start()
allLabeledItems.push(bedRoomWolfgangBedLight) allLabeledItems.push(bedRoomWolfgangBedLight)
allRelevantLights.push(bedRoomWolfgangBedLight) allRelevantLights.push(bedRoomWolfgangBedLight)
allLights.push(bedRoomWolfgangBedLight)
let bedRoomWolfgangBedLightDimmerAdaptor = new DimmerAdaptor('1st', 'BedRoom', 'WolfgangBedLight') let bedRoomWolfgangBedLightDimmerAdaptor = new DimmerAdaptor('1st', 'Schlafzimmer', 'WolfgangBedLight')
bedRoomWolfgangBedLightDimmerAdaptor.start() bedRoomWolfgangBedLightDimmerAdaptor.start()
let touchSwitchMultiButtonThing = new TouchSwitchMultiButtonThing('1st', 'Bedroom', 'Wolfgang', let touchSwitchMultiButtonThing = new TouchSwitchMultiButtonThing('1st', 'Bedroom', 'Wolfgang',
@ -264,35 +287,30 @@ let touchSwitchMultiButtonThing = new TouchSwitchMultiButtonThing('1st', 'Bedroo
touchSwitchMultiButtonThing.start() touchSwitchMultiButtonThing.start()
// Schlafzimmer Pattys Seite 13980756 24 1 13980753 24 1 // Schlafzimmer Pattys Seite 13980756 24 1 13980753 24 1
let bedRoomPattysSide = new M433SwitchItem('1st', 'BedRoom', 'PattysSide', 'Pattys Seite Schlafzimmer', '13980756 24 1', '13980753 24 1') let bedRoomPattysSide = new M433SwitchItem('1st', 'Schlafzimmer', 'PattysSide', 'Pattys Seite', '13980756 24 1', '13980753 24 1')
bedRoomPattysSide.start() bedRoomPattysSide.start()
allLabeledItems.push(bedRoomPattysSide) allLabeledItems.push(bedRoomPattysSide)
allRelevantLights.push(bedRoomPattysSide) allRelevantLights.push(bedRoomPattysSide)
allLights.push(bedRoomPattysSide)
// Schlafzimmer Fensterbank 13979988 24 1 13979985 24 1 // Schlafzimmer Fensterbank 13979988 24 1 13979985 24 1
let bedRoomWindowLight = new M433SwitchItem('1st', 'BedRoom', 'WindowLight', 'Fensterbanklicht Schlafzimmer', '13979988 24 1', '13979985 24 1') let bedRoomWindowLight = new M433SwitchItem('1st', 'Schlafzimmer', 'WindowLight', 'Fensterbanklicht', '13979988 24 1', '13979985 24 1')
bedRoomWindowLight.start() bedRoomWindowLight.start()
allLabeledItems.push(bedRoomWindowLight) allLabeledItems.push(bedRoomWindowLight)
allRelevantLights.push(bedRoomWindowLight) allRelevantLights.push(bedRoomWindowLight)
allLights.push(bedRoomWindowLight)
// MySwitchTHing
let mySwitchThingWolfgang = new MySwitchThing('1st', 'BedRoom', 'WolfgangsSwitch', [
new MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()),
new MySwitchSingleItem('IoT/InsLeere/1'),
new MySwitchSingleItem('IoT/InsLeere/2'),
])
mySwitchThingWolfgang.start()
let windowContactBedroomStreet1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContactStreet', 'Fenster Schlafzimmer Strasse', 17)
let windowContactBedroomStreet1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContactStreet', 'Schlafz. Strasse', 17)
windowContactBedroomStreet1st.start() windowContactBedroomStreet1st.start()
allLabeledItems.push(windowContactBedroomStreet1st) allLabeledItems.push(windowContactBedroomStreet1st)
allWindows.push(windowContactBedroomStreet1st) allWindows.push(windowContactBedroomStreet1st)
let windowContact1BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Fenster Schlafzimmer 1 Garten', 18) let windowContact1BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Schlafz. Garten 1', 18)
windowContact1BedroomGarden1st.start() windowContact1BedroomGarden1st.start()
allLabeledItems.push(windowContact1BedroomGarden1st) allLabeledItems.push(windowContact1BedroomGarden1st)
allWindows.push(windowContact1BedroomGarden1st) allWindows.push(windowContact1BedroomGarden1st)
let windowContact2BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Fenster Schlafzimmer 2 Garten', 22) let windowContact2BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Schlafz. Garten 2', 22)
windowContact2BedroomGarden1st.start() windowContact2BedroomGarden1st.start()
allLabeledItems.push(windowContact2BedroomGarden1st) allLabeledItems.push(windowContact2BedroomGarden1st)
allWindows.push(windowContact2BedroomGarden1st) allWindows.push(windowContact2BedroomGarden1st)
@ -314,50 +332,7 @@ let thermostatBedroom1stCron = new Cron('thermostatBedroom1stCron', thermostatBe
thermostatBedroom1stCron.start() thermostatBedroom1stCron.start()
// --------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------
let dayLightScene = new LightScene('Gnd', 'Hallway', 'DayLight', 'DayLight', let windowContactBathroomGnd = new MaxWindowContact('Gnd', 'Bathroom', 'WindowContact', 'Bad unten', 7)
[
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayStandLight, hallwayWardrobeLight,
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomLargeLight, livingRoomSmallLight, livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
],
[]
)
dayLightScene.start()
allLabeledItems.push(dayLightScene)
let ecoLightScene = new LightScene('Gnd', 'Hallway', 'EcoLight', 'EcoLight',
[
kitchenWindowLight, hallwayDeskLight, hallwayWardrobeLight,
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
],
[
kitchenCeilingLight, hallwayStandLight,
livingRoomLargeLight, livingRoomSmallLight
]
)
ecoLightScene.start()
allLabeledItems.push(ecoLightScene)
let ecoSwitch = new MaxEcoSwitch('Gnd', 'Hallway', 'EcoSwitch', 'EcoSwitch', 6, dayLightScene, ecoLightScene)
ecoSwitch.start()
let morningLightScene = new LightScene('Gnd', 'Hallway', 'MorningLight', 'MorningLight',
[
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayWardrobeLight,
hallwayStandLight
],
[
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, livingRoomLargeLight, livingRoomSmallLight, diningRoomNaehkaestchenLight
]
)
morningLightScene.start()
allLabeledItems.push(morningLightScene)
// ----------------------------------------------------------------------------------------------------------
let windowContactBathroomGnd = new MaxWindowContact('Gnd', 'Bathroom', 'WindowContact', 'Fenster Bad unten', 7)
windowContactBathroomGnd.start() windowContactBathroomGnd.start()
allLabeledItems.push(windowContactBathroomGnd) allLabeledItems.push(windowContactBathroomGnd)
allWindows.push(windowContactBathroomGnd) allWindows.push(windowContactBathroomGnd)
@ -378,7 +353,7 @@ let thermostatBathroomGndCron = new Cron('thermostatBathroomGndCron', thermostat
thermostatBathroomGndCron.start() thermostatBathroomGndCron.start()
let windowContactBathroom1st = new MaxWindowContact('1st', 'Bathroom', 'WindowContact', 'Fenster Bad oben', 2) let windowContactBathroom1st = new MaxWindowContact('1st', 'Bathroom', 'WindowContact', 'Bad oben', 2)
windowContactBathroom1st.start() windowContactBathroom1st.start()
allLabeledItems.push(windowContactBathroom1st) allLabeledItems.push(windowContactBathroom1st)
allWindows.push(windowContactBathroom1st) allWindows.push(windowContactBathroom1st)
@ -400,24 +375,24 @@ thermostatBathroom1stCron.start()
let windowContactKitchen1 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact1', 'Fenster Küche Garten', 11) let windowContactKitchen1 = new MaxWindowContact('Gnd', 'Kueche', 'WindowContact1', 'Küche Garten', 11)
windowContactKitchen1.start() windowContactKitchen1.start()
allLabeledItems.push(windowContactKitchen1) allLabeledItems.push(windowContactKitchen1)
allWindows.push(windowContactKitchen1) allWindows.push(windowContactKitchen1)
let windowContactKitchen2 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact2', 'Fenster Küche Terassentür Garten', 10) let windowContactKitchen2 = new MaxWindowContact('Gnd', 'Kueche', 'WindowContact2', 'Küche Terassentür', 10)
windowContactKitchen2.start() windowContactKitchen2.start()
allLabeledItems.push(windowContactKitchen2) allLabeledItems.push(windowContactKitchen2)
allWindows.push(windowContactKitchen2) allWindows.push(windowContactKitchen2)
let windowContactKitchen3 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact3', 'Fenster Küche Straße 1', 12) let windowContactKitchen3 = new MaxWindowContact('Gnd', 'Kueche', 'WindowContact3', 'Küche Straße 1', 12)
windowContactKitchen3.start() windowContactKitchen3.start()
allLabeledItems.push(windowContactKitchen3) allLabeledItems.push(windowContactKitchen3)
allWindows.push(windowContactKitchen3) allWindows.push(windowContactKitchen3)
let windowContactKitchen4 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact4', 'Fenster Küche Straße 2', 13) let windowContactKitchen4 = new MaxWindowContact('Gnd', 'Kueche', 'WindowContact4', 'Küche Straße 2', 13)
windowContactKitchen4.start() windowContactKitchen4.start()
allLabeledItems.push(windowContactKitchen4) allLabeledItems.push(windowContactKitchen4)
allWindows.push(windowContactKitchen4) allWindows.push(windowContactKitchen4)
let thermostatKitchen = new MaxThermostat('Gnd', 'Kitchen', 'Thermostat', 'Thermostat Küche', 14, [ let thermostatKitchen = new MaxThermostat('Gnd', 'Kueche', 'Thermostat', 'Thermostat Küche', 14, [
windowContactKitchen1, windowContactKitchen2, windowContactKitchen3, windowContactKitchen4]) windowContactKitchen1, windowContactKitchen2, windowContactKitchen3, windowContactKitchen4])
thermostatKitchen.start() thermostatKitchen.start()
thermostatKitchen.setPresetTemperature(20.0) thermostatKitchen.setPresetTemperature(20.0)
@ -434,7 +409,7 @@ let thermostatKitchenCron = new Cron('thermostatKitchenCron', thermostatKitchen,
thermostatKitchenCron.start() thermostatKitchenCron.start()
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let windowContactFrontdoor = new MaxWindowContact('Gnd', 'Hallway', 'FrontdoorContact', 'Haustür', 23) let windowContactFrontdoor = new MaxWindowContact('Gnd', 'Flur', 'FrontdoorContact', 'Haustür', 23)
windowContactFrontdoor.start() windowContactFrontdoor.start()
allLabeledItems.push(windowContactFrontdoor) allLabeledItems.push(windowContactFrontdoor)
@ -453,85 +428,208 @@ let heatingSceneAll = new HeatingScene('Gnd', 'House', 'Heatings', 'Alle Heizung
heatingSceneAll.start() heatingSceneAll.start()
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let twoLedSignal1 = new TwoLedSignal('Gnd', 'Hallway', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', // Basement
let workshopLight = new HomematicSwitchItem('Base', 'Keller', 'Light', 'Werkstatt', 5)
workshopLight.start()
allLabeledItems.push(workshopLight)
allRelevantLights.push(workshopLight)
allLights.push(workshopLight)
let basementSmallLight = new HomematicSwitchItem('Base', 'Keller', 'SmallLight', 'Licht einfach', 35, 1)
basementSmallLight.start()
allLabeledItems.push(basementSmallLight)
allRelevantLights.push(basementSmallLight)
allLights.push(basementSmallLight)
basementSmallLight.on('somethingChanged', () => {
if (basementSmallLight.getState() == 'ON') {
setTimeout(() => {
if (basementLargeLight.getState() == 'OFF') {
mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF')
}
}, (3 * 60 * 1000))
}
if ((basementLargeLight.getState() == 'ON') && (basementSmallLight.getState() == 'OFF')) {
mqttHandler.send(basementLargeLight.getStateTopic(), 'OFF')
}
})
let basementLargeLight = new HomematicSwitchItem('Base', 'Keller', 'LargeLight', 'Licht hell', 35, 2)
basementLargeLight.start()
allLabeledItems.push(basementLargeLight)
allRelevantLights.push(basementLargeLight)
allLights.push(basementLargeLight)
basementLargeLight.on('somethingChanged', () => {
if (basementLargeLight.getState() == 'ON') {
mqttHandler.send(basementSmallLight.getStateTopic(), 'ON')
} else if (basementLargeLight.getState() == 'OFF') {
mqttHandler.send(basementSmallLight.getStateTopic(), 'OFF')
}
})
let basementForwarder = new Forwarder('Base', 'All', 'Forwarder', 'state', 'BasementForwarder', [
basementLargeLight.getStateTopic(),
basementSmallLight.getStateTopic(),
workshopLight.getStateTopic()
])
basementForwarder.start()
let basementForwarderSwitchOffAdaptor = new SwitchOffAdaptor('Base', 'All', 'Forwarder')
basementForwarderSwitchOffAdaptor.start()
// ----------------------------------------------------------------------------------------------------------
let twoLedSignal1 = new TwoLedSignal('Gnd', 'Flur', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger',
allRelevantLights, "OFF", "ON", allRelevantLights, "OFF", "ON",
allWindows, "CLOSED", "OPEN") allWindows, "CLOSED", "OPEN")
twoLedSignal1.start() twoLedSignal1.start()
// MySwitchTHing
let mySwitchThingWolfgang = new MySwitchThing('1st', 'Schlafzimmer', 'WolfgangsSwitch', [
new MySwitchSingleItem(bedRoomWolfgangBedLightDimmerAdaptor.getInTopic()),
new MySwitchSingleItem(basementForwarderSwitchOffAdaptor.getInTopic()),
new MySwitchSingleItem('IoT/InsLeere/2'),
])
mySwitchThingWolfgang.start()
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
let testFourButton = new HomematicFourButtonThing('Gnd', 'Hallway', 'TestButton', 9, [ let testFourButton = new HomematicFourButtonThing('Gnd', 'Flur', 'TestButton', 9, [
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/Testlight/dimmerIn'), new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/Testlight/dimmerIn'),
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/DeskLight/timerIn'), new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/DeskLight/timerIn'),
new HomematicFourButtonSingleItem('test/button/3'), new HomematicFourButtonSingleItem('test/button/3'),
new HomematicFourButtonSingleItem('test/button/4') new HomematicFourButtonSingleItem('test/button/4')
]) ])
testFourButton.start() testFourButton.start()
let testDimmerAdaptor = new DimmerAdaptor('Gnd', 'Hallway', 'Testlight') let testDimmerAdaptor = new DimmerAdaptor('Gnd', 'Flur', 'Testlight')
testDimmerAdaptor.start() testDimmerAdaptor.start()
let testTimerAdaptor = new TimerAdaptor('Gnd', 'Hallway', 'DeskLight', 10) let testTimerAdaptor = new TimerAdaptor('Gnd', 'Flur', 'DeskLight', 10)
testTimerAdaptor.start() testTimerAdaptor.start()
let testLight = new HomematicDimmerItem('Gnd', 'Hallway', 'Testlight', 'Testlampe mit Dimmer', 8) let testLight = new HomematicDimmerItem('Gnd', 'Flur', 'Testlight', 'Testlampe mit Dimmer', 8)
testLight.start() testLight.start()
let testLight2 = new HomematicSwitchItem('Gnd', 'Hallway', 'Testlight2', 'Testlampe ohne Dimmer', 5)
testLight2.start()
let testForwarder = new Forwarder('Gnd', 'Hallway', 'TestForwarder', 'state', 'TestForwarder', [ let testForwarder = new Forwarder('Gnd', 'Flur', 'TestForwarder', 'state', 'TestForwarder', [
'dispatcher_ng/items/Gnd/Hallway/Testlight2/state', 'dispatcher_ng/items/Gnd/Flur/Testlight2/state',
'dispatcher_ng/items/Gnd/Hallway/DeskLight/state' 'dispatcher_ng/items/Gnd/Flur/DeskLight/state'
]) ])
testForwarder.start() testForwarder.start()
let testScene = new LightScene('Gnd', 'Hallway', 'TestScene', 'TestScene', let testScene = new LightScene('Gnd', 'Flur', 'TestScene', 'TestScene',
[aquariumLight, annaBedLight], [aquariumLight, annaBedLight],
[matthiasStandLights, matthiasBedLight] [matthiasStandLights, matthiasBedLight]
) )
testScene.start() testScene.start()
// ----------------------------------------------------------------------------------------------------------
let dayLightScene = new LightScene('Gnd', 'Szenen', 'DayLight', 'DayLight',
[
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayStandLight, hallwayWardrobeLight,
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomLargeLight, livingRoomSmallLight, livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
],
[]
)
dayLightScene.start()
allLabeledItems.push(dayLightScene)
allLightScenes.push(dayLightScene)
let ecoLightScene = new LightScene('Gnd', 'Szenen', 'EcoLight', 'EcoLight',
[
kitchenWindowLight, hallwayDeskLight, hallwayWardrobeLight,
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, diningRoomNaehkaestchenLight
],
[
kitchenCeilingLight, hallwayStandLight,
livingRoomLargeLight, livingRoomSmallLight
]
)
ecoLightScene.start()
allLabeledItems.push(ecoLightScene)
allLightScenes.push(ecoLightScene)
let ecoSwitch = new MaxEcoSwitch('Gnd', 'Szenen', 'EcoSwitch', 'EcoSwitch', 6, dayLightScene, ecoLightScene)
ecoSwitch.start()
let morningLightScene = new LightScene('Gnd', 'Szenen', 'MorningLight', 'MorningLight',
[
kitchenWindowLight, kitchenCeilingLight, hallwayDeskLight, hallwayWardrobeLight,
hallwayStandLight
],
[
diningRoomSmallLight, diningRoomStandLight, diningRoomCupboardLight, diningRoomShelfLight,
livingRoomStars, livingRoomStandLight, livingRoomLargeLight, livingRoomSmallLight, diningRoomNaehkaestchenLight
]
)
morningLightScene.start()
allLabeledItems.push(morningLightScene)
allLightScenes.push(morningLightScene)
let sceneOfAllLights = new LightScene('Gnd', 'Szenen', 'AllLights', 'Alle Lampen', allLights, [])
sceneOfAllLights.start()
allLightScenes.push(sceneOfAllLights)
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
// Homekit export // heartbeat
let homekitObject : { [key:string]:{} } = {} let heartbeatCounter = 0
let openhabList : string[] = [] let heartbeatTimer = setInterval(() => {
heartbeatCounter += 1
mqttHandler.send(config.dict.heartbeatTopic, `${heartbeatCounter}`)
}, config.dict.heartbeatInterval)
// watchdog
let watchdogCounter = 0
let watchdogTimer = setInterval(() => {
watchdogCounter += 1
mqttHandler.send(config.dict.watchdogTopic, `${config.dict.watchdogMessage} ${watchdogCounter}`)
}, config.dict.watchdogInterval)
// 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'] let roomSwitches: any = {}
} allLights.forEach((item: HasStateAndFeedbackTopicAndLabelAndRoom) => {
if (exportData['openhab'] instanceof Array) { let switchItem = {'label': item.getLabel(), 'actionTopic': item.getStateTopic(), 'feedbackTopic': item.getStateFeedbackTopic()}
let da : string[] = exportData['openhab'] as string[] if (item.getRoom() in roomSwitches) {
da.forEach((o: string) => openhabList.push(o)) roomSwitches[item.getRoom()].push(switchItem)
} else { } else {
let da : string = exportData['openhab'] as string roomSwitches[item.getRoom()] = [ switchItem ]
openhabList.push(da)
}
// logger.info("openHabList")
// logger.info(JSON.stringify(openhabList))
} }
}) })
let smartClientConfiguration : any = {}
let heatingMainSwitchExport : ExportType|null = MaxThermostat.exportHeatingMainSwitchItem() smartClientConfiguration['switches'] = []
if (heatingMainSwitchExport != null) { for (let key in roomSwitches) {
let da : string = heatingMainSwitchExport['openhab'] as string let item : any = { 'room': key, 'switches': roomSwitches[key]}
openhabList.push(da) smartClientConfiguration['switches'].push(item)
} }
smartClientConfiguration['scenes'] = []
fs.writeFileSync(config.dict.homekitFile, JSON.stringify(homekitObject, null, 4)) allLightScenes.forEach((scene : HasStateAndFeedbackTopicAndLabelAndRoom) => {
fs.writeFileSync(config.dict.openhabItemFile, openhabList.join('\n')) let item : any = { 'label': scene.getLabel(), 'actionTopic': scene.getStateTopic() }
smartClientConfiguration['scenes'].push(item)
})
smartClientConfiguration['windows'] = []
allWindows.forEach((window : HasStateAndFeedbackTopicAndLabel) => {
let item : any = { 'label': window.getLabel(), 'topic': window.getStateFeedbackTopic() }
smartClientConfiguration['windows'].push(item)
})
fs.writeFileSync('smartclient.json', JSON.stringify(smartClientConfiguration, null, 4))
// ---------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------
mqttHandler.exec() mqttHandler.exec()
logger.info("Dispatcher running") logger.info("Dispatcher running")
mqttHandler.send('smartclient/configuration', JSON.stringify(smartClientConfiguration, null, 4))