Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
ceeecf5009 | |||
3dc256f960
|
|||
4fb1311e7a | |||
28fa32d48d
|
|||
718ac667d1 | |||
ea04fae523 | |||
0513928d4b
|
|||
4d0b708e4a | |||
e413f2871c
|
|||
f75de912ba | |||
27153262bc
|
|||
ab08986ca2
|
|||
7e2fb7edea
|
|||
d071ce54ee
|
|||
d4636f550c | |||
7e78a5724b | |||
50b0b85f4f | |||
d394f39322
|
|||
499f90c080
|
|||
341829efe0 | |||
e1088083de | |||
f4d35b5e04
|
|||
1600cc9469
|
|||
5619ac007a
|
|||
a8761a68b6
|
|||
c77f5b9096 | |||
eb90199d97 | |||
62303cf27e |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
*.map
|
*.map
|
||||||
mylogfile.log
|
mylogfile.log
|
||||||
dispatcher_ng.log
|
dispatcher_ng.log*
|
||||||
|
18
dispatcher.service
Executable file
18
dispatcher.service
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=dispatcher_ng
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
GuessMainPID=yes
|
||||||
|
ExecStart=/usr/bin/npm start -- -c dispatcher_ng.conf
|
||||||
|
ExecStop=kill -SIGINT $mainpid
|
||||||
|
Restart=on-failure
|
||||||
|
WorkingDirectory=/opt/services/dispatcher_ng
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
Alias=dispatcher
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
@ -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
4
dist/AItem.js
vendored
@ -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
3
dist/Forwarder.js
vendored
@ -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}`;
|
||||||
|
14
dist/HeatingScene.js
vendored
Normal file
14
dist/HeatingScene.js
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Forwarder_1 = require("./Forwarder");
|
||||||
|
class HeatingScene extends Forwarder_1.Forwarder {
|
||||||
|
constructor(floor, room, item, label, targetItems) {
|
||||||
|
let inTopics = [];
|
||||||
|
targetItems.forEach((item) => {
|
||||||
|
inTopics.push(item.getInTopic());
|
||||||
|
});
|
||||||
|
super(floor, room, item, "command", label, inTopics);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.HeatingScene = HeatingScene;
|
||||||
|
//# sourceMappingURL=HeatingScene.js.map
|
17
dist/HomematicSwitchItem.js
vendored
17
dist/HomematicSwitchItem.js
vendored
@ -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;
|
||||||
|
6
dist/HueColorBulbItem.js
vendored
6
dist/HueColorBulbItem.js
vendored
@ -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;
|
||||||
}
|
}
|
||||||
|
6
dist/M433SwitchItem.js
vendored
6
dist/M433SwitchItem.js
vendored
@ -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;
|
||||||
}
|
}
|
||||||
|
12
dist/MaxThermostat.js
vendored
12
dist/MaxThermostat.js
vendored
@ -54,13 +54,16 @@ class MaxThermostat extends AHomegearItem_1.AHomegearItem {
|
|||||||
setTemperature = true;
|
setTemperature = true;
|
||||||
}
|
}
|
||||||
else if (topic == this.commandTopic) {
|
else if (topic == this.commandTopic) {
|
||||||
if (this.heatingMainFlag) {
|
if ((payload == 'ON') && this.heatingMainFlag) {
|
||||||
if (payload == 'ON') {
|
|
||||||
this.temperature = this.presetTemperature;
|
this.temperature = this.presetTemperature;
|
||||||
|
setTemperature = true;
|
||||||
}
|
}
|
||||||
else if (payload == 'OFF') {
|
else if (payload == 'OFF') {
|
||||||
this.temperature = DISABLED_TEMPERATURE;
|
this.temperature = DISABLED_TEMPERATURE;
|
||||||
|
setTemperature = true;
|
||||||
}
|
}
|
||||||
|
else if (payload == 'FORCE_ON') {
|
||||||
|
this.temperature = this.presetTemperature;
|
||||||
setTemperature = true;
|
setTemperature = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -68,8 +71,9 @@ class MaxThermostat extends AHomegearItem_1.AHomegearItem {
|
|||||||
this.heatingMainFlag = (payload == 'ON');
|
this.heatingMainFlag = (payload == 'ON');
|
||||||
logger.info(`${this.itemId} heating main: ${this.heatingMainFlag}`);
|
logger.info(`${this.itemId} heating main: ${this.heatingMainFlag}`);
|
||||||
if (!this.heatingMainFlag) {
|
if (!this.heatingMainFlag) {
|
||||||
MqttDispatcher_1.mqttHandler.send(this.temperatureFeedbackTopic, `${DISABLED_TEMPERATURE}`);
|
this.temperature = DISABLED_TEMPERATURE;
|
||||||
MqttDispatcher_1.mqttHandler.send(this.actionTopic, `${DISABLED_TEMPERATURE}`);
|
MqttDispatcher_1.mqttHandler.send(this.temperatureFeedbackTopic, `${this.temperature}`);
|
||||||
|
MqttDispatcher_1.mqttHandler.send(this.actionTopic, `${this.temperature}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (topic == this.presetTemperatureTopic) {
|
else if (topic == this.presetTemperatureTopic) {
|
||||||
|
3
dist/MaxWindowContact.js
vendored
3
dist/MaxWindowContact.js
vendored
@ -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') {
|
||||||
|
1
dist/MqttDispatcher.js
vendored
1
dist/MqttDispatcher.js
vendored
@ -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;
|
||||||
|
52
dist/MySwitchThing.js
vendored
Normal file
52
dist/MySwitchThing.js
vendored
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const logger = require("./log");
|
||||||
|
const MqttDispatcher_1 = require("./MqttDispatcher");
|
||||||
|
const AItem_1 = require("./AItem");
|
||||||
|
class MySwitchSingleItem {
|
||||||
|
constructor(actionTopic) {
|
||||||
|
this.actionTopic = actionTopic;
|
||||||
|
}
|
||||||
|
processMessage(topic, payload) {
|
||||||
|
switch (payload) {
|
||||||
|
case 'PRESS_SHORT':
|
||||||
|
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'SHORT', true);
|
||||||
|
break;
|
||||||
|
case 'PRESS_LONG_START':
|
||||||
|
case 'PRESS_LONG_CONT':
|
||||||
|
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'LONG_HOLD', true);
|
||||||
|
break;
|
||||||
|
case 'PRESS_LONG_END':
|
||||||
|
MqttDispatcher_1.mqttHandler.send(this.actionTopic, 'LONG_END', true);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logger.warn(`HM4BSI: no handling available for ${topic}`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.MySwitchSingleItem = MySwitchSingleItem;
|
||||||
|
class MySwitchThing extends AItem_1.AItem {
|
||||||
|
constructor(floor, room, item, itemObjs) {
|
||||||
|
super(floor, room, item, '');
|
||||||
|
this.itemObjs = itemObjs;
|
||||||
|
if (this.itemObjs.length != 3) {
|
||||||
|
throw new Error('itemObjs for MySwitchThing must have three elements');
|
||||||
|
}
|
||||||
|
this.subscribeTopics = [
|
||||||
|
`${this.topicFirstPart}/#`
|
||||||
|
];
|
||||||
|
}
|
||||||
|
processMessage(topic, payload) {
|
||||||
|
logger.info(`MyT: ${topic}, ${payload}`);
|
||||||
|
let buttonIdx = parseInt(topic.substring(this.topicFirstPart.length + 1));
|
||||||
|
if (buttonIdx >= 1 && buttonIdx <= 3) {
|
||||||
|
this.itemObjs[buttonIdx - 1].processMessage('', payload);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logger.warn(`MyT: no handling available for ${topic}, ${buttonIdx}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.MySwitchThing = MySwitchThing;
|
||||||
|
//# sourceMappingURL=MySwitchThing.js.map
|
6
dist/Scene.js
vendored
6
dist/Scene.js
vendored
@ -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
56
dist/SimpleTopicSwitchItem.js
vendored
Normal 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
35
dist/SwitchAdaptor.js
vendored
Normal 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
22
dist/SwitchOffAdaptor.js
vendored
Normal 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
|
78
dist/TwoLedSignal.js
vendored
Normal file
78
dist/TwoLedSignal.js
vendored
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const AItem_1 = require("./AItem");
|
||||||
|
const MqttDispatcher_1 = require("./MqttDispatcher");
|
||||||
|
const logger = require("./log");
|
||||||
|
var SignalState;
|
||||||
|
(function (SignalState) {
|
||||||
|
SignalState[SignalState["SIGNAL_RED"] = 0] = "SIGNAL_RED";
|
||||||
|
SignalState[SignalState["SIGNAL_GREEN"] = 1] = "SIGNAL_GREEN";
|
||||||
|
SignalState[SignalState["SIGNAL_UNKNOWN"] = 2] = "SIGNAL_UNKNOWN";
|
||||||
|
})(SignalState || (SignalState = {}));
|
||||||
|
class SignalItem {
|
||||||
|
constructor(item, redToken, greenToken) {
|
||||||
|
this.item = item;
|
||||||
|
this.signalState = SignalState.SIGNAL_UNKNOWN;
|
||||||
|
this.redToken = redToken;
|
||||||
|
this.greenToken = greenToken;
|
||||||
|
}
|
||||||
|
getSignalState() {
|
||||||
|
return this.signalState;
|
||||||
|
}
|
||||||
|
processMessage(topic, payload) {
|
||||||
|
if (topic == this.item.getStateFeedbackTopic()) {
|
||||||
|
logger.info(`${topic}, ${payload}`);
|
||||||
|
if (payload == this.greenToken) {
|
||||||
|
this.signalState = SignalState.SIGNAL_GREEN;
|
||||||
|
}
|
||||||
|
else if (payload == this.redToken) {
|
||||||
|
this.signalState = SignalState.SIGNAL_RED;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.signalState = SignalState.SIGNAL_UNKNOWN;
|
||||||
|
}
|
||||||
|
// logger.info(`DBG: SignalItem: ${topic}, ${payload}, ${this.signalState}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class TwoLedSignal extends AItem_1.AItem {
|
||||||
|
constructor(floor, room, item, label, led1Items, led1GreenToken, led1RedToken, led2Items, led2GreenToken, led2RedToken) {
|
||||||
|
super(floor, room, item, label);
|
||||||
|
this.led1Items = [];
|
||||||
|
this.led2Items = [];
|
||||||
|
this.subscribeTopics = [];
|
||||||
|
led1Items.forEach((item) => {
|
||||||
|
this.led1Items.push(new SignalItem(item, led1RedToken, led1GreenToken));
|
||||||
|
this.subscribeTopics.push(item.getStateFeedbackTopic());
|
||||||
|
});
|
||||||
|
led2Items.forEach((item) => {
|
||||||
|
this.led2Items.push(new SignalItem(item, led2RedToken, led2GreenToken));
|
||||||
|
this.subscribeTopics.push(item.getStateFeedbackTopic());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
processMessage(topic, payload) {
|
||||||
|
let reds = 0;
|
||||||
|
const RED_VALUES = [SignalState.SIGNAL_RED, SignalState.SIGNAL_UNKNOWN];
|
||||||
|
this.led1Items.forEach((item) => {
|
||||||
|
item.processMessage(topic, payload);
|
||||||
|
if (RED_VALUES.indexOf(item.getSignalState()) != -1) {
|
||||||
|
reds++;
|
||||||
|
}
|
||||||
|
// logger.info(`DBG: TwoLedSignal ${item.getSignalState()}, ${reds}`)
|
||||||
|
});
|
||||||
|
let msg = (reds > 0) ? "red" : "green";
|
||||||
|
MqttDispatcher_1.mqttHandler.send(`${this.topicFirstPart}/led1`, msg);
|
||||||
|
reds = 0;
|
||||||
|
this.led2Items.forEach((item) => {
|
||||||
|
item.processMessage(topic, payload);
|
||||||
|
if (RED_VALUES.indexOf(item.getSignalState()) != -1) {
|
||||||
|
reds++;
|
||||||
|
}
|
||||||
|
// logger.info(`DBG: TwoLedSignal ${item.getSignalState()}, ${reds}`)
|
||||||
|
});
|
||||||
|
msg = (reds > 0) ? "red" : "green";
|
||||||
|
MqttDispatcher_1.mqttHandler.send(`${this.topicFirstPart}/led2`, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.TwoLedSignal = TwoLedSignal;
|
||||||
|
//# sourceMappingURL=TwoLedSignal.js.map
|
6
dist/UrlSwitchItem.js
vendored
6
dist/UrlSwitchItem.js
vendored
@ -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,6 +31,7 @@ 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) {
|
||||||
|
try {
|
||||||
if (this.state == 'ON') {
|
if (this.state == 'ON') {
|
||||||
http.get(this.onUrl);
|
http.get(this.onUrl);
|
||||||
}
|
}
|
||||||
@ -38,6 +40,10 @@ class UrlSwitchItem extends AItem_1.AItem {
|
|||||||
}
|
}
|
||||||
this.oldState = this.state;
|
this.oldState = this.state;
|
||||||
}
|
}
|
||||||
|
catch (_a) {
|
||||||
|
logger.error(`Failed to handle ${this.onUrl} or ${this.offUrl}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.UrlSwitchItem = UrlSwitchItem;
|
exports.UrlSwitchItem = UrlSwitchItem;
|
||||||
|
391
dist/main.js
vendored
391
dist/main.js
vendored
@ -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,16 +16,24 @@ 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");
|
||||||
const RelayBox_1 = require("./RelayBox");
|
const RelayBox_1 = require("./RelayBox");
|
||||||
|
const HeatingScene_1 = require("./HeatingScene");
|
||||||
|
const TwoLedSignal_1 = require("./TwoLedSignal");
|
||||||
|
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 allWindows = 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, [
|
||||||
@ -36,16 +45,20 @@ 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);
|
||||||
let windowContactAnna1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Anna', 'WindowContact', 'Fenster Anna', 20);
|
allRelevantLights.push(annaBedLight);
|
||||||
|
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);
|
||||||
let thermostatAnna1st = new MaxThermostat_1.MaxThermostat('1st', 'Anna', 'Thermostat', 'Thermostat Anna', 21, [windowContactAnna1st]);
|
let thermostatAnna1st = new MaxThermostat_1.MaxThermostat('1st', 'Anna', 'Thermostat', 'Thermostat Anna', 21, [windowContactAnna1st]);
|
||||||
thermostatAnna1st.start();
|
thermostatAnna1st.start();
|
||||||
thermostatAnna1st.setPresetTemperature(21.0);
|
thermostatAnna1st.setPresetTemperature(21.0);
|
||||||
allLabeledItems.push(thermostatAnna1st);
|
allLabeledItems.push(thermostatAnna1st);
|
||||||
|
allThermostatItems.push(thermostatAnna1st);
|
||||||
let thermostatAnna1stCron = new Cron_1.Cron('thermostatAnna1stCron', thermostatAnna1st, [
|
let thermostatAnna1stCron = new Cron_1.Cron('thermostatAnna1stCron', thermostatAnna1st, [
|
||||||
{ cronTime: '00 05 06 * * *', output: 'ON' },
|
{ cronTime: '00 05 06 * * *', output: 'ON' },
|
||||||
{ cronTime: '00 05 08 * * 1-5', output: 'OFF' },
|
{ cronTime: '00 05 08 * * 1-5', output: 'OFF' },
|
||||||
@ -59,109 +72,199 @@ 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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
allLights.push(matthiasSpeaker);
|
||||||
|
let windowContactMatthias = new MaxWindowContact_1.MaxWindowContact('1st', 'Matthias', 'WindowContact', 'Matthias', 24);
|
||||||
|
windowContactMatthias.start();
|
||||||
|
allLabeledItems.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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
let diningRoomNaehkaestchenLight = new HueColorBulbItem_1.HueColorBulbItem('Gnd', 'DiningRoom', 'NaehkaestchenLight', 'Lampe Naehkaestchen', 15);
|
allRelevantLights.push(diningRoomShelfLight);
|
||||||
|
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);
|
||||||
|
allLights.push(diningRoomNaehkaestchenLight);
|
||||||
|
let windowContactDiningRoom1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact1', 'Essz. links', 26);
|
||||||
|
windowContactDiningRoom1.start();
|
||||||
|
allLabeledItems.push(windowContactDiningRoom1);
|
||||||
|
allWindows.push(windowContactDiningRoom1);
|
||||||
|
let windowContactDiningRoom2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact2', 'Essz. rechts', 27);
|
||||||
|
windowContactDiningRoom2.start();
|
||||||
|
allLabeledItems.push(windowContactDiningRoom2);
|
||||||
|
allWindows.push(windowContactDiningRoom2);
|
||||||
|
let thermostatDiningRoom = new MaxThermostat_1.MaxThermostat('Gnd', 'Esszimmer', 'Thermostat', 'Thermostat Esszimmer', 31, [windowContactDiningRoom1, windowContactDiningRoom2]);
|
||||||
|
thermostatDiningRoom.start();
|
||||||
|
thermostatDiningRoom.setPresetTemperature(21.0);
|
||||||
|
allLabeledItems.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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
allLights.push(livingRoomStandLight);
|
||||||
|
let windowContactLivingRoom1 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact1', 'Wohnz. rechts', 28);
|
||||||
|
windowContactLivingRoom1.start();
|
||||||
|
allLabeledItems.push(windowContactLivingRoom1);
|
||||||
|
allWindows.push(windowContactLivingRoom1);
|
||||||
|
let windowContactLivingRoom2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact2', 'Wohnz. links', 29);
|
||||||
|
windowContactLivingRoom2.start();
|
||||||
|
allLabeledItems.push(windowContactLivingRoom2);
|
||||||
|
allWindows.push(windowContactLivingRoom2);
|
||||||
|
let thermostatLivingRoom = new MaxThermostat_1.MaxThermostat('Gnd', 'Wohnzimmer', 'Thermostat', 'Thermostat Wohnzimmer', 30, [windowContactLivingRoom1, windowContactLivingRoom2]);
|
||||||
|
thermostatLivingRoom.start();
|
||||||
|
thermostatLivingRoom.setPresetTemperature(21.0);
|
||||||
|
allLabeledItems.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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
allLights.push(hallwayWardrobeLight);
|
||||||
|
let windowContactHallway = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Flur', 'WindowContact', 'Flur', 25);
|
||||||
|
windowContactHallway.start();
|
||||||
|
allLabeledItems.push(windowContactHallway);
|
||||||
|
allWindows.push(windowContactHallway);
|
||||||
|
let thermostatHallway1 = new MaxThermostat_1.MaxThermostat('Gnd', 'Flur', 'Thermostat1', 'Thermostat Flur vorne', 32, []);
|
||||||
|
thermostatHallway1.start();
|
||||||
|
thermostatHallway1.setPresetTemperature(19.0);
|
||||||
|
allLabeledItems.push(thermostatHallway1);
|
||||||
|
allThermostatItems.push(thermostatHallway1);
|
||||||
|
let thermostatHallway2 = new MaxThermostat_1.MaxThermostat('Gnd', 'Flur', 'Thermostat2', 'Thermostat Flur hinten', 33, []);
|
||||||
|
thermostatHallway2.start();
|
||||||
|
thermostatHallway2.setPresetTemperature(5.0);
|
||||||
|
allLabeledItems.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);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
let bedRoomWolfgangBedLight = new HueColorBulbItem_1.HueColorBulbItem('1st', 'BedRoom', 'WolfgangBedLight', 'Bettlicht', 16);
|
allRelevantLights.push(bedRoomWolfgangsSide);
|
||||||
|
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);
|
||||||
let bedRoomWolfgangBedLightDimmerAdaptor = new DimmerAdaptor_1.DimmerAdaptor('1st', 'BedRoom', 'WolfgangBedLight');
|
allRelevantLights.push(bedRoomWolfgangBedLight);
|
||||||
|
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);
|
||||||
|
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);
|
||||||
let windowContactBedroomStreet1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContactStreet', 'Fenster Schlafzimmer Strasse', 17);
|
allRelevantLights.push(bedRoomWindowLight);
|
||||||
|
allLights.push(bedRoomWindowLight);
|
||||||
|
let windowContactBedroomStreet1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContactStreet', 'Schlafz. Strasse', 17);
|
||||||
windowContactBedroomStreet1st.start();
|
windowContactBedroomStreet1st.start();
|
||||||
allLabeledItems.push(windowContactBedroomStreet1st);
|
allLabeledItems.push(windowContactBedroomStreet1st);
|
||||||
let windowContact1BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Fenster Schlafzimmer 1 Garten', 18);
|
allWindows.push(windowContactBedroomStreet1st);
|
||||||
|
let windowContact1BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Schlafz. Garten 1', 18);
|
||||||
windowContact1BedroomGarden1st.start();
|
windowContact1BedroomGarden1st.start();
|
||||||
allLabeledItems.push(windowContact1BedroomGarden1st);
|
allLabeledItems.push(windowContact1BedroomGarden1st);
|
||||||
let windowContact2BedroomGarden1st = new MaxWindowContact_1.MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Fenster Schlafzimmer 2 Garten', 22);
|
allWindows.push(windowContact1BedroomGarden1st);
|
||||||
|
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);
|
||||||
let thermostatBedroom1st = new MaxThermostat_1.MaxThermostat('1st', 'Bedroom', 'Thermostat', 'Thermostat Schlafzimmer', 19, [windowContact1BedroomGarden1st, windowContact2BedroomGarden1st, windowContactBedroomStreet1st]);
|
let thermostatBedroom1st = new MaxThermostat_1.MaxThermostat('1st', 'Bedroom', 'Thermostat', 'Thermostat Schlafzimmer', 19, [windowContact1BedroomGarden1st, windowContact2BedroomGarden1st, windowContactBedroomStreet1st]);
|
||||||
thermostatBedroom1st.start();
|
thermostatBedroom1st.start();
|
||||||
thermostatBedroom1st.setPresetTemperature(20.0);
|
thermostatBedroom1st.setPresetTemperature(20.0);
|
||||||
allLabeledItems.push(thermostatBedroom1st);
|
allLabeledItems.push(thermostatBedroom1st);
|
||||||
|
allThermostatItems.push(thermostatBedroom1st);
|
||||||
let thermostatBedroom1stCron = new Cron_1.Cron('thermostatBedroom1stCron', thermostatBedroom1st, [
|
let thermostatBedroom1stCron = new Cron_1.Cron('thermostatBedroom1stCron', thermostatBedroom1st, [
|
||||||
{ cronTime: '00 01 06 * * 1-5', output: 'ON' },
|
{ cronTime: '00 01 06 * * 1-5', output: 'ON' },
|
||||||
{ cronTime: '00 01 09 * * 1-5', output: 'OFF' },
|
{ cronTime: '00 01 09 * * 1-5', output: 'OFF' },
|
||||||
@ -172,42 +275,15 @@ 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);
|
||||||
let thermostatBathroomGnd = new MaxThermostat_1.MaxThermostat('Gnd', 'Bathroom', 'Thermostat', 'Thermostat Bad unten', 4, [windowContactBathroomGnd]);
|
let thermostatBathroomGnd = new MaxThermostat_1.MaxThermostat('Gnd', 'Bathroom', 'Thermostat', 'Thermostat Bad unten', 4, [windowContactBathroomGnd]);
|
||||||
thermostatBathroomGnd.start();
|
thermostatBathroomGnd.start();
|
||||||
thermostatBathroomGnd.setPresetTemperature(20.0);
|
thermostatBathroomGnd.setPresetTemperature(20.0);
|
||||||
allLabeledItems.push(thermostatBathroomGnd);
|
allLabeledItems.push(thermostatBathroomGnd);
|
||||||
|
allThermostatItems.push(thermostatBathroomGnd);
|
||||||
let thermostatBathroomGndCron = new Cron_1.Cron('thermostatBathroomGndCron', thermostatBathroomGnd, [
|
let thermostatBathroomGndCron = new Cron_1.Cron('thermostatBathroomGndCron', thermostatBathroomGnd, [
|
||||||
{ cronTime: '00 02 06 * * 1-5', output: 'ON' },
|
{ cronTime: '00 02 06 * * 1-5', output: 'ON' },
|
||||||
{ cronTime: '00 02 08 * * 6,0', output: 'ON' },
|
{ cronTime: '00 02 08 * * 6,0', output: 'ON' },
|
||||||
@ -216,13 +292,15 @@ 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);
|
||||||
let thermostatBathroom1st = new MaxThermostat_1.MaxThermostat('1st', 'Bathroom', 'Thermostat', 'Thermostat Bad oben', 3, [windowContactBathroom1st]);
|
let thermostatBathroom1st = new MaxThermostat_1.MaxThermostat('1st', 'Bathroom', 'Thermostat', 'Thermostat Bad oben', 3, [windowContactBathroom1st]);
|
||||||
thermostatBathroom1st.start();
|
thermostatBathroom1st.start();
|
||||||
thermostatBathroom1st.setPresetTemperature(20.0);
|
thermostatBathroom1st.setPresetTemperature(20.0);
|
||||||
allLabeledItems.push(thermostatBathroom1st);
|
allLabeledItems.push(thermostatBathroom1st);
|
||||||
|
allThermostatItems.push(thermostatBathroom1st);
|
||||||
let thermostatBathroom1stCron = new Cron_1.Cron('thermostatBathroom1stCron', thermostatBathroom1st, [
|
let thermostatBathroom1stCron = new Cron_1.Cron('thermostatBathroom1stCron', thermostatBathroom1st, [
|
||||||
{ cronTime: '00 00 06 * * 1-5', output: 'ON' },
|
{ cronTime: '00 00 06 * * 1-5', output: 'ON' },
|
||||||
{ cronTime: '00 00 08 * * 6,0', output: 'ON' },
|
{ cronTime: '00 00 08 * * 6,0', output: 'ON' },
|
||||||
@ -231,24 +309,29 @@ 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);
|
||||||
let windowContactKitchen2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact2', 'Fenster Küche Terassentür Garten', 10);
|
allWindows.push(windowContactKitchen1);
|
||||||
|
let windowContactKitchen2 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kueche', 'WindowContact2', 'Küche Terassentür', 10);
|
||||||
windowContactKitchen2.start();
|
windowContactKitchen2.start();
|
||||||
allLabeledItems.push(windowContactKitchen2);
|
allLabeledItems.push(windowContactKitchen2);
|
||||||
let windowContactKitchen3 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact3', 'Fenster Küche Straße 1', 12);
|
allWindows.push(windowContactKitchen2);
|
||||||
|
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);
|
||||||
let windowContactKitchen4 = new MaxWindowContact_1.MaxWindowContact('Gnd', 'Kitchen', 'WindowContact4', 'Fenster Küche Straße 2', 13);
|
allWindows.push(windowContactKitchen3);
|
||||||
|
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);
|
||||||
let thermostatKitchen = new MaxThermostat_1.MaxThermostat('Gnd', 'Kitchen', 'Thermostat', 'Thermostat Küche', 14, [
|
allWindows.push(windowContactKitchen4);
|
||||||
|
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();
|
||||||
thermostatKitchen.setPresetTemperature(20.0);
|
thermostatKitchen.setPresetTemperature(20.0);
|
||||||
allLabeledItems.push(thermostatKitchen);
|
allLabeledItems.push(thermostatKitchen);
|
||||||
|
allThermostatItems.push(thermostatKitchen);
|
||||||
let thermostatKitchenCron = new Cron_1.Cron('thermostatKitchenCron', thermostatKitchen, [
|
let thermostatKitchenCron = new Cron_1.Cron('thermostatKitchenCron', thermostatKitchen, [
|
||||||
{ cronTime: '00 00 06 * * 1-5', output: 'ON' },
|
{ cronTime: '00 00 06 * * 1-5', output: 'ON' },
|
||||||
{ cronTime: '00 00 08 * * 6,0', output: 'ON' },
|
{ cronTime: '00 00 08 * * 6,0', output: 'ON' },
|
||||||
@ -258,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);
|
||||||
// ----------------------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
@ -268,60 +351,162 @@ let relayBox = new RelayBox_1.RelayBoxThing('base', 'labor', 'relaybox', 'IoT/Co
|
|||||||
relayBox.start();
|
relayBox.start();
|
||||||
allLabeledItems.push(relayBox);
|
allLabeledItems.push(relayBox);
|
||||||
// ----------------------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
let testFourButton = new HomematicFourButtonThing_1.HomematicFourButtonThing('Gnd', 'Hallway', 'TestButton', 9, [
|
let heatingSceneAll = new HeatingScene_1.HeatingScene('Gnd', 'House', 'Heatings', 'Alle Heizungen', allThermostatItems);
|
||||||
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/Testlight/dimmerIn'),
|
heatingSceneAll.start();
|
||||||
new HomematicFourButtonThing_1.HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/DeskLight/timerIn'),
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
|
// Basement
|
||||||
|
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 twoLedSignal1 = new TwoLedSignal_1.TwoLedSignal('Gnd', 'Flur', 'TwoLedSignal1', 'Licht- und Fenster-Anzeiger', allRelevantLights, "OFF", "ON", allWindows, "CLOSED", "OPEN");
|
||||||
|
twoLedSignal1.start();
|
||||||
|
// 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
|
||||||
|
]);
|
||||||
|
ecoLightScene.start();
|
||||||
|
allLabeledItems.push(ecoLightScene);
|
||||||
|
allLightScenes.push(ecoLightScene);
|
||||||
|
let ecoSwitch = new MaxEcoSwitch_1.MaxEcoSwitch('Gnd', 'Szenen', 'EcoSwitch', 'EcoSwitch', 6, dayLightScene, ecoLightScene);
|
||||||
|
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 {
|
else {
|
||||||
let da = exportData['openhab'];
|
roomSwitches[item.getRoom()] = [switchItem];
|
||||||
openhabList.push(da);
|
|
||||||
}
|
|
||||||
// logger.info("openHabList")
|
|
||||||
// logger.info(JSON.stringify(openhabList))
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
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
|
559
homekit.json
559
homekit.json
@ -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",
|
||||||
@ -103,13 +103,24 @@
|
|||||||
},
|
},
|
||||||
"config": {}
|
"config": {}
|
||||||
},
|
},
|
||||||
"Gnd_DiningRoom_SmallLight": {
|
"1st_Matthias_WindowContact": {
|
||||||
"id": "Gnd_DiningRoom_SmallLight",
|
"id": "1st_Matthias_WindowContact",
|
||||||
"name": "kleine Lampe Esszimmer",
|
"name": "Matthias",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/1st/Matthias/WindowContact/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"onContactDetected": "CLOSED"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Gnd_Esszimmer_SmallLight": {
|
||||||
|
"id": "Gnd_Esszimmer_SmallLight",
|
||||||
|
"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",
|
||||||
@ -120,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",
|
||||||
@ -137,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",
|
||||||
@ -154,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",
|
||||||
@ -197,13 +191,46 @@
|
|||||||
"saturationFactor": 1
|
"saturationFactor": 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Gnd_LivingRoom_LargeLight": {
|
"Gnd_Esszimmer_WindowContact1": {
|
||||||
"id": "Gnd_LivingRoom_LargeLight",
|
"id": "Gnd_Esszimmer_WindowContact1",
|
||||||
"name": "große Lampe Wohnzimmer",
|
"name": "Essz. links",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/Gnd/Esszimmer/WindowContact1/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"onContactDetected": "CLOSED"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Gnd_Esszimmer_WindowContact2": {
|
||||||
|
"id": "Gnd_Esszimmer_WindowContact2",
|
||||||
|
"name": "Essz. rechts",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/Gnd/Esszimmer/WindowContact2/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"onContactDetected": "CLOSED"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Gnd_Esszimmer_Thermostat": {
|
||||||
|
"id": "Gnd_Esszimmer_Thermostat",
|
||||||
|
"name": "Thermostat Esszimmer",
|
||||||
|
"service": "Thermostat",
|
||||||
|
"topic": {
|
||||||
|
"setTargetTemperature": "dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature",
|
||||||
|
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature/feedback",
|
||||||
|
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Esszimmer/Thermostat/temperature/feedback"
|
||||||
|
},
|
||||||
|
"payload": {}
|
||||||
|
},
|
||||||
|
"Gnd_Wohnzimmer_LargeLight": {
|
||||||
|
"id": "Gnd_Wohnzimmer_LargeLight",
|
||||||
|
"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",
|
||||||
@ -214,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",
|
||||||
@ -231,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",
|
||||||
@ -248,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",
|
||||||
@ -265,13 +292,46 @@
|
|||||||
},
|
},
|
||||||
"config": {}
|
"config": {}
|
||||||
},
|
},
|
||||||
"Gnd_Hallway_DeskLight": {
|
"Gnd_Wohnzimmer_WindowContact1": {
|
||||||
"id": "Gnd_Hallway_DeskLight",
|
"id": "Gnd_Wohnzimmer_WindowContact1",
|
||||||
"name": "Schreibtischlampe Flur",
|
"name": "Wohnz. rechts",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact1/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"onContactDetected": "CLOSED"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Gnd_Wohnzimmer_WindowContact2": {
|
||||||
|
"id": "Gnd_Wohnzimmer_WindowContact2",
|
||||||
|
"name": "Wohnz. links",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact2/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"onContactDetected": "CLOSED"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Gnd_Wohnzimmer_Thermostat": {
|
||||||
|
"id": "Gnd_Wohnzimmer_Thermostat",
|
||||||
|
"name": "Thermostat Wohnzimmer",
|
||||||
|
"service": "Thermostat",
|
||||||
|
"topic": {
|
||||||
|
"setTargetTemperature": "dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature",
|
||||||
|
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature/feedback",
|
||||||
|
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Wohnzimmer/Thermostat/temperature/feedback"
|
||||||
|
},
|
||||||
|
"payload": {}
|
||||||
|
},
|
||||||
|
"Gnd_Flur_DeskLight": {
|
||||||
|
"id": "Gnd_Flur_DeskLight",
|
||||||
|
"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",
|
||||||
@ -282,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",
|
||||||
@ -299,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",
|
||||||
@ -316,13 +376,46 @@
|
|||||||
},
|
},
|
||||||
"config": {}
|
"config": {}
|
||||||
},
|
},
|
||||||
"Gnd_Kitchen_WindowLight": {
|
"Gnd_Flur_WindowContact": {
|
||||||
"id": "Gnd_Kitchen_WindowLight",
|
"id": "Gnd_Flur_WindowContact",
|
||||||
"name": "Fensterbanklicht Küche",
|
"name": "Flur",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/Gnd/Flur/WindowContact/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"onContactDetected": "CLOSED"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Gnd_Flur_Thermostat1": {
|
||||||
|
"id": "Gnd_Flur_Thermostat1",
|
||||||
|
"name": "Thermostat Flur vorne",
|
||||||
|
"service": "Thermostat",
|
||||||
|
"topic": {
|
||||||
|
"setTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature",
|
||||||
|
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature/feedback",
|
||||||
|
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat1/temperature/feedback"
|
||||||
|
},
|
||||||
|
"payload": {}
|
||||||
|
},
|
||||||
|
"Gnd_Flur_Thermostat2": {
|
||||||
|
"id": "Gnd_Flur_Thermostat2",
|
||||||
|
"name": "Thermostat Flur hinten",
|
||||||
|
"service": "Thermostat",
|
||||||
|
"topic": {
|
||||||
|
"setTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature",
|
||||||
|
"statusTargetTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature/feedback",
|
||||||
|
"statusCurrentTemperature": "dispatcher_ng/items/Gnd/Flur/Thermostat2/temperature/feedback"
|
||||||
|
},
|
||||||
|
"payload": {}
|
||||||
|
},
|
||||||
|
"Gnd_Kueche_WindowLight": {
|
||||||
|
"id": "Gnd_Kueche_WindowLight",
|
||||||
|
"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",
|
||||||
@ -333,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",
|
||||||
@ -350,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",
|
||||||
@ -367,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",
|
||||||
@ -393,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",
|
||||||
@ -410,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",
|
||||||
@ -429,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"
|
||||||
@ -440,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"
|
||||||
@ -451,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"
|
||||||
@ -471,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"
|
||||||
@ -546,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"
|
||||||
@ -566,60 +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_Flur_FrontdoorContact": {
|
||||||
|
"id": "Gnd_Flur_FrontdoorContact",
|
||||||
|
"name": "Haustür",
|
||||||
|
"service": "ContactSensor",
|
||||||
|
"topic": {
|
||||||
|
"statusContactSensorState": "dispatcher_ng/items/Gnd/Flur/FrontdoorContact/state/feedback"
|
||||||
|
},
|
||||||
|
"payload": {
|
||||||
|
"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": {}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,53 +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]"}
|
||||||
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]"}
|
Contact 1st_Matthias_WindowContact "Matthias" {mqtt="<[localbroker:dispatcher_ng/items/1st/Matthias/WindowContact/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_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_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_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_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]"}
|
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_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]"}
|
Contact Gnd_Esszimmer_WindowContact1 "Essz. links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/WindowContact1/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]"}
|
Contact Gnd_Esszimmer_WindowContact2 "Essz. rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Esszimmer/WindowContact2/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]"}
|
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]"}
|
||||||
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]"}
|
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_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_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_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_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_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_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_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_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]"}
|
||||||
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]"}
|
Contact Gnd_Wohnzimmer_WindowContact1 "Wohnz. rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact1/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]"}
|
Contact Gnd_Wohnzimmer_WindowContact2 "Wohnz. links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Wohnzimmer/WindowContact2/state/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_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_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_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_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_Flur_WindowContact "Flur" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/Flur/WindowContact/state/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_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_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_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_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_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_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_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
253
smartclient.json
Normal 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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
17
src/AItem.ts
17
src/AItem.ts
@ -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,11 +13,24 @@ 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 {
|
||||||
|
getStateFeedbackTopic() : string
|
||||||
|
}
|
||||||
|
|
||||||
export interface HasInTopic {
|
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
|
||||||
@ -27,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
|
||||||
|
@ -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}`
|
||||||
|
16
src/HeatingScene.ts
Normal file
16
src/HeatingScene.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { Forwarder } from './Forwarder'
|
||||||
|
import { HasInTopic } from './AItem'
|
||||||
|
|
||||||
|
export class HeatingScene extends Forwarder {
|
||||||
|
constructor(floor: string, room: string, item: string, label: string,
|
||||||
|
targetItems: HasInTopic[]) {
|
||||||
|
|
||||||
|
let inTopics: string[] = []
|
||||||
|
targetItems.forEach((item: HasInTopic) => {
|
||||||
|
inTopics.push(item.getInTopic())
|
||||||
|
})
|
||||||
|
|
||||||
|
super(floor, room, item, "command", label, inTopics)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -81,20 +81,23 @@ export class MaxThermostat extends AHomegearItem implements HasInTopic {
|
|||||||
this.temperature = parseFloat(payload)
|
this.temperature = parseFloat(payload)
|
||||||
setTemperature = true
|
setTemperature = true
|
||||||
} else if (topic == this.commandTopic) {
|
} else if (topic == this.commandTopic) {
|
||||||
if (this.heatingMainFlag) {
|
if ((payload == 'ON') && this.heatingMainFlag) {
|
||||||
if (payload == 'ON') {
|
|
||||||
this.temperature = this.presetTemperature
|
this.temperature = this.presetTemperature
|
||||||
|
setTemperature = true
|
||||||
} else if (payload == 'OFF') {
|
} else if (payload == 'OFF') {
|
||||||
this.temperature = DISABLED_TEMPERATURE
|
this.temperature = DISABLED_TEMPERATURE
|
||||||
}
|
setTemperature = true
|
||||||
|
} else if (payload == 'FORCE_ON') {
|
||||||
|
this.temperature = this.presetTemperature
|
||||||
setTemperature = true
|
setTemperature = true
|
||||||
}
|
}
|
||||||
} else if (topic == MaxThermostat.heatingMainSwitchTopic) {
|
} else if (topic == MaxThermostat.heatingMainSwitchTopic) {
|
||||||
this.heatingMainFlag = (payload == 'ON')
|
this.heatingMainFlag = (payload == 'ON')
|
||||||
logger.info(`${this.itemId} heating main: ${this.heatingMainFlag}`)
|
logger.info(`${this.itemId} heating main: ${this.heatingMainFlag}`)
|
||||||
if (! this.heatingMainFlag) {
|
if (! this.heatingMainFlag) {
|
||||||
mqttHandler.send(this.temperatureFeedbackTopic, `${DISABLED_TEMPERATURE}`)
|
this.temperature = DISABLED_TEMPERATURE
|
||||||
mqttHandler.send(this.actionTopic, `${DISABLED_TEMPERATURE}`)
|
mqttHandler.send(this.temperatureFeedbackTopic, `${this.temperature}`)
|
||||||
|
mqttHandler.send(this.actionTopic, `${this.temperature}`)
|
||||||
}
|
}
|
||||||
} else if (topic == this.presetTemperatureTopic) {
|
} else if (topic == this.presetTemperatureTopic) {
|
||||||
this.presetTemperature = parseFloat(payload)
|
this.presetTemperature = parseFloat(payload)
|
||||||
|
@ -3,8 +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, HasStateAndFeedbackTopicAndLabel } from './AItem'
|
||||||
|
|
||||||
export class MaxWindowContact extends AHomegearItem implements Disabler {
|
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
|
||||||
@ -14,6 +15,10 @@ export class MaxWindowContact extends AHomegearItem implements Disabler {
|
|||||||
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') {
|
||||||
|
@ -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
|
||||||
|
56
src/MySwitchThing.ts
Normal file
56
src/MySwitchThing.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import * as logger from './log'
|
||||||
|
import { mqttHandler } from './MqttDispatcher'
|
||||||
|
import { AItem } from './AItem'
|
||||||
|
|
||||||
|
export class MySwitchSingleItem {
|
||||||
|
private actionTopic: string
|
||||||
|
|
||||||
|
constructor(actionTopic: string) {
|
||||||
|
this.actionTopic = actionTopic
|
||||||
|
}
|
||||||
|
|
||||||
|
processMessage(topic: string, payload: string) {
|
||||||
|
switch(payload) {
|
||||||
|
case 'PRESS_SHORT':
|
||||||
|
mqttHandler.send(this.actionTopic, 'SHORT', true)
|
||||||
|
break
|
||||||
|
case 'PRESS_LONG_START':
|
||||||
|
case 'PRESS_LONG_CONT':
|
||||||
|
mqttHandler.send(this.actionTopic, 'LONG_HOLD', true)
|
||||||
|
break
|
||||||
|
case 'PRESS_LONG_END':
|
||||||
|
mqttHandler.send(this.actionTopic, 'LONG_END', true)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
logger.warn(`HM4BSI: no handling available for ${topic}`)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class MySwitchThing extends AItem {
|
||||||
|
private itemObjs: MySwitchSingleItem[]
|
||||||
|
|
||||||
|
constructor(floor: string, room: string, item: string, itemObjs: MySwitchSingleItem[]) {
|
||||||
|
super(floor, room, item, '')
|
||||||
|
this.itemObjs = itemObjs
|
||||||
|
if (this.itemObjs.length != 3) {
|
||||||
|
throw new Error('itemObjs for MySwitchThing must have three elements')
|
||||||
|
}
|
||||||
|
this.subscribeTopics = [
|
||||||
|
`${this.topicFirstPart}/#`
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
processMessage(topic: string, payload: string) {
|
||||||
|
logger.info(`MyT: ${topic}, ${payload}`)
|
||||||
|
let buttonIdx = parseInt(topic.substring(this.topicFirstPart.length+1))
|
||||||
|
if (buttonIdx >= 1 && buttonIdx <= 3) {
|
||||||
|
this.itemObjs[buttonIdx-1].processMessage('', payload)
|
||||||
|
} else {
|
||||||
|
logger.warn(`MyT: no handling available for ${topic}, ${buttonIdx}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
12
src/Scene.ts
12
src/Scene.ts
@ -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
|
||||||
}
|
}
|
||||||
|
70
src/SimpleTopicSwitchItem.ts
Normal file
70
src/SimpleTopicSwitchItem.ts
Normal 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
28
src/SwitchOffAdaptor.ts
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
90
src/TwoLedSignal.ts
Normal file
90
src/TwoLedSignal.ts
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
import { AItem, HasFeedbackTopic } from './AItem'
|
||||||
|
import { mqttHandler } from './MqttDispatcher'
|
||||||
|
import * as logger from './log'
|
||||||
|
|
||||||
|
enum SignalState {
|
||||||
|
SIGNAL_RED,
|
||||||
|
SIGNAL_GREEN,
|
||||||
|
SIGNAL_UNKNOWN,
|
||||||
|
}
|
||||||
|
|
||||||
|
class SignalItem {
|
||||||
|
private item: HasFeedbackTopic
|
||||||
|
private signalState: SignalState
|
||||||
|
private redToken: string
|
||||||
|
private greenToken: string
|
||||||
|
|
||||||
|
constructor(item: HasFeedbackTopic, redToken: string, greenToken: string) {
|
||||||
|
this.item = item
|
||||||
|
this.signalState = SignalState.SIGNAL_UNKNOWN
|
||||||
|
this.redToken = redToken
|
||||||
|
this.greenToken = greenToken
|
||||||
|
}
|
||||||
|
|
||||||
|
getSignalState() : SignalState {
|
||||||
|
return this.signalState
|
||||||
|
}
|
||||||
|
|
||||||
|
processMessage(topic: string, payload: string): void {
|
||||||
|
if (topic == this.item.getStateFeedbackTopic()) {
|
||||||
|
logger.info(`${topic}, ${payload}`)
|
||||||
|
if (payload == this.greenToken) {
|
||||||
|
this.signalState = SignalState.SIGNAL_GREEN
|
||||||
|
} else if (payload == this.redToken) {
|
||||||
|
this.signalState = SignalState.SIGNAL_RED
|
||||||
|
} else {
|
||||||
|
this.signalState = SignalState.SIGNAL_UNKNOWN
|
||||||
|
}
|
||||||
|
// logger.info(`DBG: SignalItem: ${topic}, ${payload}, ${this.signalState}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class TwoLedSignal extends AItem {
|
||||||
|
private led1Items: SignalItem[] = []
|
||||||
|
private led2Items: SignalItem[] = []
|
||||||
|
|
||||||
|
constructor(floor: string, room: string, item: string, label: string,
|
||||||
|
led1Items: HasFeedbackTopic[], led1GreenToken: string, led1RedToken: string,
|
||||||
|
led2Items: HasFeedbackTopic[], led2GreenToken: string, led2RedToken: string) {
|
||||||
|
|
||||||
|
super(floor, room, item, label)
|
||||||
|
|
||||||
|
this.subscribeTopics = []
|
||||||
|
led1Items.forEach((item: HasFeedbackTopic) => {
|
||||||
|
this.led1Items.push(new SignalItem(item, led1RedToken, led1GreenToken))
|
||||||
|
this.subscribeTopics.push(item.getStateFeedbackTopic())
|
||||||
|
})
|
||||||
|
led2Items.forEach((item: HasFeedbackTopic) => {
|
||||||
|
this.led2Items.push(new SignalItem(item, led2RedToken, led2GreenToken))
|
||||||
|
this.subscribeTopics.push(item.getStateFeedbackTopic())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
processMessage(topic: string, payload: string) : void {
|
||||||
|
let reds : number = 0
|
||||||
|
const RED_VALUES : SignalState[] = [SignalState.SIGNAL_RED, SignalState.SIGNAL_UNKNOWN]
|
||||||
|
|
||||||
|
this.led1Items.forEach((item: SignalItem) => {
|
||||||
|
item.processMessage(topic, payload)
|
||||||
|
if (RED_VALUES.indexOf(item.getSignalState()) != -1) {
|
||||||
|
reds++
|
||||||
|
}
|
||||||
|
// logger.info(`DBG: TwoLedSignal ${item.getSignalState()}, ${reds}`)
|
||||||
|
})
|
||||||
|
let msg = (reds > 0) ? "red" : "green"
|
||||||
|
mqttHandler.send(`${this.topicFirstPart}/led1`, msg)
|
||||||
|
|
||||||
|
reds = 0
|
||||||
|
this.led2Items.forEach((item: SignalItem) => {
|
||||||
|
item.processMessage(topic, payload)
|
||||||
|
if (RED_VALUES.indexOf(item.getSignalState()) != -1) {
|
||||||
|
reds++
|
||||||
|
}
|
||||||
|
// logger.info(`DBG: TwoLedSignal ${item.getSignalState()}, ${reds}`)
|
||||||
|
})
|
||||||
|
msg = (reds > 0) ? "red" : "green"
|
||||||
|
mqttHandler.send(`${this.topicFirstPart}/led2`, msg)
|
||||||
|
}
|
||||||
|
}
|
@ -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}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
455
src/main.ts
455
src/main.ts
@ -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 } 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'
|
||||||
@ -22,16 +23,24 @@ import { Cron } from './Cron'
|
|||||||
import { HueColorBulbItem } from './HueColorBulbItem'
|
import { HueColorBulbItem } from './HueColorBulbItem'
|
||||||
import { TouchSwitchMultiButtonThing, TouchSwitchButtonSingleItem } from './TouchSwitchMultiButtonThing'
|
import { TouchSwitchMultiButtonThing, TouchSwitchButtonSingleItem } from './TouchSwitchMultiButtonThing'
|
||||||
import { RelayBoxThing } from './RelayBox'
|
import { RelayBoxThing } from './RelayBox'
|
||||||
|
import { HeatingScene } from './HeatingScene'
|
||||||
|
import { TwoLedSignal } from './TwoLedSignal'
|
||||||
|
import { MySwitchThing, MySwitchSingleItem } from './MySwitchThing'
|
||||||
|
import { SimpleTopicSwitchItem } from './SimpleTopicSwitchItem'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
logger.info("Dispatcher starting")
|
logger.info("Dispatcher starting")
|
||||||
|
|
||||||
let allLabeledItems : Array<AItem> = new Array()
|
let allLabeledItems : Array<AItem> = new Array()
|
||||||
|
let allThermostatItems : Array<HasInTopic> = new Array()
|
||||||
|
let allWindows : 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)
|
||||||
|
|
||||||
@ -47,19 +56,23 @@ 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)
|
||||||
|
allLights.push(annaBedLight)
|
||||||
|
|
||||||
|
let windowContactAnna1st = new MaxWindowContact('1st', 'Anna', 'WindowContact', 'Anna', 20)
|
||||||
let windowContactAnna1st = new MaxWindowContact('1st', 'Anna', 'WindowContact', 'Fenster Anna', 20)
|
|
||||||
windowContactAnna1st.start()
|
windowContactAnna1st.start()
|
||||||
allLabeledItems.push(windowContactAnna1st)
|
allLabeledItems.push(windowContactAnna1st)
|
||||||
|
allWindows.push(windowContactAnna1st)
|
||||||
|
|
||||||
let thermostatAnna1st = new MaxThermostat('1st', 'Anna', 'Thermostat', 'Thermostat Anna', 21, [windowContactAnna1st])
|
let thermostatAnna1st = new MaxThermostat('1st', 'Anna', 'Thermostat', 'Thermostat Anna', 21, [windowContactAnna1st])
|
||||||
thermostatAnna1st.start()
|
thermostatAnna1st.start()
|
||||||
thermostatAnna1st.setPresetTemperature(21.0)
|
thermostatAnna1st.setPresetTemperature(21.0)
|
||||||
allLabeledItems.push(thermostatAnna1st)
|
allLabeledItems.push(thermostatAnna1st)
|
||||||
|
allThermostatItems.push(thermostatAnna1st)
|
||||||
|
|
||||||
|
|
||||||
let thermostatAnna1stCron = new Cron('thermostatAnna1stCron', thermostatAnna1st, [
|
let thermostatAnna1stCron = new Cron('thermostatAnna1stCron', thermostatAnna1st, [
|
||||||
{cronTime: '00 05 06 * * *', output: 'ON'},
|
{cronTime: '00 05 06 * * *', output: 'ON'},
|
||||||
@ -75,107 +88,198 @@ 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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
allLights.push(matthiasSpeaker)
|
||||||
|
|
||||||
|
let windowContactMatthias = new MaxWindowContact('1st', 'Matthias', 'WindowContact', 'Matthias', 24)
|
||||||
|
windowContactMatthias.start()
|
||||||
|
allLabeledItems.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('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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
allLights.push(diningRoomNaehkaestchenLight)
|
||||||
|
|
||||||
|
let windowContactDiningRoom1 = new MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact1', 'Essz. links', 26)
|
||||||
|
windowContactDiningRoom1.start()
|
||||||
|
allLabeledItems.push(windowContactDiningRoom1)
|
||||||
|
allWindows.push(windowContactDiningRoom1)
|
||||||
|
let windowContactDiningRoom2 = new MaxWindowContact('Gnd', 'Esszimmer', 'WindowContact2', 'Essz. rechts', 27)
|
||||||
|
windowContactDiningRoom2.start()
|
||||||
|
allLabeledItems.push(windowContactDiningRoom2)
|
||||||
|
allWindows.push(windowContactDiningRoom2)
|
||||||
|
|
||||||
|
let thermostatDiningRoom = new MaxThermostat('Gnd', 'Esszimmer', 'Thermostat', 'Thermostat Esszimmer', 31, [windowContactDiningRoom1, windowContactDiningRoom2])
|
||||||
|
thermostatDiningRoom.start()
|
||||||
|
thermostatDiningRoom.setPresetTemperature(21.0)
|
||||||
|
allLabeledItems.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('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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
allLights.push(livingRoomStandLight)
|
||||||
|
|
||||||
|
let windowContactLivingRoom1 = new MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact1', 'Wohnz. rechts', 28)
|
||||||
|
windowContactLivingRoom1.start()
|
||||||
|
allLabeledItems.push(windowContactLivingRoom1)
|
||||||
|
allWindows.push(windowContactLivingRoom1)
|
||||||
|
let windowContactLivingRoom2 = new MaxWindowContact('Gnd', 'Wohnzimmer', 'WindowContact2', 'Wohnz. links', 29)
|
||||||
|
windowContactLivingRoom2.start()
|
||||||
|
allLabeledItems.push(windowContactLivingRoom2)
|
||||||
|
allWindows.push(windowContactLivingRoom2)
|
||||||
|
|
||||||
|
let thermostatLivingRoom = new MaxThermostat('Gnd', 'Wohnzimmer', 'Thermostat', 'Thermostat Wohnzimmer', 30, [windowContactLivingRoom1, windowContactLivingRoom2])
|
||||||
|
thermostatLivingRoom.start()
|
||||||
|
thermostatLivingRoom.setPresetTemperature(21.0)
|
||||||
|
allLabeledItems.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('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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
allLights.push(hallwayWardrobeLight)
|
||||||
|
|
||||||
|
let windowContactHallway = new MaxWindowContact('Gnd', 'Flur', 'WindowContact', 'Flur', 25)
|
||||||
|
windowContactHallway.start()
|
||||||
|
allLabeledItems.push(windowContactHallway)
|
||||||
|
allWindows.push(windowContactHallway)
|
||||||
|
|
||||||
|
let thermostatHallway1 = new MaxThermostat('Gnd', 'Flur', 'Thermostat1', 'Thermostat Flur vorne', 32, [])
|
||||||
|
thermostatHallway1.start()
|
||||||
|
thermostatHallway1.setPresetTemperature(19.0)
|
||||||
|
allLabeledItems.push(thermostatHallway1)
|
||||||
|
allThermostatItems.push(thermostatHallway1)
|
||||||
|
|
||||||
|
let thermostatHallway2 = new MaxThermostat('Gnd', 'Flur', 'Thermostat2', 'Thermostat Flur hinten', 33, [])
|
||||||
|
thermostatHallway2.start()
|
||||||
|
thermostatHallway2.setPresetTemperature(5.0)
|
||||||
|
allLabeledItems.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('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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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',
|
||||||
@ -183,31 +287,39 @@ 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)
|
||||||
|
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)
|
||||||
|
allLights.push(bedRoomWindowLight)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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)
|
||||||
let windowContact1BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Fenster Schlafzimmer 1 Garten', 18)
|
allWindows.push(windowContactBedroomStreet1st)
|
||||||
|
let windowContact1BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact1Garden', 'Schlafz. Garten 1', 18)
|
||||||
windowContact1BedroomGarden1st.start()
|
windowContact1BedroomGarden1st.start()
|
||||||
allLabeledItems.push(windowContact1BedroomGarden1st)
|
allLabeledItems.push(windowContact1BedroomGarden1st)
|
||||||
let windowContact2BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Fenster Schlafzimmer 2 Garten', 22)
|
allWindows.push(windowContact1BedroomGarden1st)
|
||||||
|
let windowContact2BedroomGarden1st = new MaxWindowContact('1st', 'Bedroom', 'WindowContact2Garden', 'Schlafz. Garten 2', 22)
|
||||||
windowContact2BedroomGarden1st.start()
|
windowContact2BedroomGarden1st.start()
|
||||||
allLabeledItems.push(windowContact2BedroomGarden1st)
|
allLabeledItems.push(windowContact2BedroomGarden1st)
|
||||||
|
allWindows.push(windowContact2BedroomGarden1st)
|
||||||
|
|
||||||
let thermostatBedroom1st = new MaxThermostat('1st', 'Bedroom', 'Thermostat', 'Thermostat Schlafzimmer', 19, [windowContact1BedroomGarden1st, windowContact2BedroomGarden1st, windowContactBedroomStreet1st])
|
let thermostatBedroom1st = new MaxThermostat('1st', 'Bedroom', 'Thermostat', 'Thermostat Schlafzimmer', 19, [windowContact1BedroomGarden1st, windowContact2BedroomGarden1st, windowContactBedroomStreet1st])
|
||||||
thermostatBedroom1st.start()
|
thermostatBedroom1st.start()
|
||||||
thermostatBedroom1st.setPresetTemperature(20.0)
|
thermostatBedroom1st.setPresetTemperature(20.0)
|
||||||
allLabeledItems.push(thermostatBedroom1st)
|
allLabeledItems.push(thermostatBedroom1st)
|
||||||
|
allThermostatItems.push(thermostatBedroom1st)
|
||||||
|
|
||||||
let thermostatBedroom1stCron = new Cron('thermostatBedroom1stCron', thermostatBedroom1st, [
|
let thermostatBedroom1stCron = new Cron('thermostatBedroom1stCron', thermostatBedroom1st, [
|
||||||
{cronTime: '00 01 06 * * 1-5', output: 'ON'},
|
{cronTime: '00 01 06 * * 1-5', output: 'ON'},
|
||||||
@ -220,57 +332,16 @@ 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)
|
||||||
|
|
||||||
let thermostatBathroomGnd = new MaxThermostat('Gnd', 'Bathroom', 'Thermostat', 'Thermostat Bad unten', 4, [windowContactBathroomGnd])
|
let thermostatBathroomGnd = new MaxThermostat('Gnd', 'Bathroom', 'Thermostat', 'Thermostat Bad unten', 4, [windowContactBathroomGnd])
|
||||||
thermostatBathroomGnd.start()
|
thermostatBathroomGnd.start()
|
||||||
thermostatBathroomGnd.setPresetTemperature(20.0)
|
thermostatBathroomGnd.setPresetTemperature(20.0)
|
||||||
allLabeledItems.push(thermostatBathroomGnd)
|
allLabeledItems.push(thermostatBathroomGnd)
|
||||||
|
allThermostatItems.push(thermostatBathroomGnd)
|
||||||
|
|
||||||
let thermostatBathroomGndCron = new Cron('thermostatBathroomGndCron', thermostatBathroomGnd, [
|
let thermostatBathroomGndCron = new Cron('thermostatBathroomGndCron', thermostatBathroomGnd, [
|
||||||
{cronTime: '00 02 06 * * 1-5', output: 'ON'},
|
{cronTime: '00 02 06 * * 1-5', output: 'ON'},
|
||||||
@ -282,14 +353,16 @@ 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)
|
||||||
|
|
||||||
let thermostatBathroom1st = new MaxThermostat('1st', 'Bathroom', 'Thermostat', 'Thermostat Bad oben', 3, [windowContactBathroom1st])
|
let thermostatBathroom1st = new MaxThermostat('1st', 'Bathroom', 'Thermostat', 'Thermostat Bad oben', 3, [windowContactBathroom1st])
|
||||||
thermostatBathroom1st.start()
|
thermostatBathroom1st.start()
|
||||||
thermostatBathroom1st.setPresetTemperature(20.0)
|
thermostatBathroom1st.setPresetTemperature(20.0)
|
||||||
allLabeledItems.push(thermostatBathroom1st)
|
allLabeledItems.push(thermostatBathroom1st)
|
||||||
|
allThermostatItems.push(thermostatBathroom1st)
|
||||||
|
|
||||||
let thermostatBathroom1stCron = new Cron('thermostatBathroom1stCron', thermostatBathroom1st, [
|
let thermostatBathroom1stCron = new Cron('thermostatBathroom1stCron', thermostatBathroom1st, [
|
||||||
{cronTime: '00 00 06 * * 1-5', output: 'ON'},
|
{cronTime: '00 00 06 * * 1-5', output: 'ON'},
|
||||||
@ -302,24 +375,29 @@ 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)
|
||||||
let windowContactKitchen2 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact2', 'Fenster Küche Terassentür Garten', 10)
|
allWindows.push(windowContactKitchen1)
|
||||||
|
let windowContactKitchen2 = new MaxWindowContact('Gnd', 'Kueche', 'WindowContact2', 'Küche Terassentür', 10)
|
||||||
windowContactKitchen2.start()
|
windowContactKitchen2.start()
|
||||||
allLabeledItems.push(windowContactKitchen2)
|
allLabeledItems.push(windowContactKitchen2)
|
||||||
let windowContactKitchen3 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact3', 'Fenster Küche Straße 1', 12)
|
allWindows.push(windowContactKitchen2)
|
||||||
|
let windowContactKitchen3 = new MaxWindowContact('Gnd', 'Kueche', 'WindowContact3', 'Küche Straße 1', 12)
|
||||||
windowContactKitchen3.start()
|
windowContactKitchen3.start()
|
||||||
allLabeledItems.push(windowContactKitchen3)
|
allLabeledItems.push(windowContactKitchen3)
|
||||||
let windowContactKitchen4 = new MaxWindowContact('Gnd', 'Kitchen', 'WindowContact4', 'Fenster Küche Straße 2', 13)
|
allWindows.push(windowContactKitchen3)
|
||||||
|
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)
|
||||||
|
|
||||||
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)
|
||||||
allLabeledItems.push(thermostatKitchen)
|
allLabeledItems.push(thermostatKitchen)
|
||||||
|
allThermostatItems.push(thermostatKitchen)
|
||||||
|
|
||||||
let thermostatKitchenCron = new Cron('thermostatKitchenCron', thermostatKitchen, [
|
let thermostatKitchenCron = new Cron('thermostatKitchenCron', thermostatKitchen, [
|
||||||
{cronTime: '00 00 06 * * 1-5', output: 'ON'},
|
{cronTime: '00 00 06 * * 1-5', output: 'ON'},
|
||||||
@ -331,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)
|
||||||
|
|
||||||
@ -345,80 +423,213 @@ relayBox.start()
|
|||||||
allLabeledItems.push(relayBox)
|
allLabeledItems.push(relayBox)
|
||||||
|
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
|
let heatingSceneAll = new HeatingScene('Gnd', 'House', 'Heatings', 'Alle Heizungen', allThermostatItems)
|
||||||
|
heatingSceneAll.start()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
let testFourButton = new HomematicFourButtonThing('Gnd', 'Hallway', 'TestButton', 9, [
|
// Basement
|
||||||
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/Testlight/dimmerIn'),
|
let workshopLight = new HomematicSwitchItem('Base', 'Keller', 'Light', 'Werkstatt', 5)
|
||||||
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Hallway/DeskLight/timerIn'),
|
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",
|
||||||
|
allWindows, "CLOSED", "OPEN")
|
||||||
|
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', 'Flur', 'TestButton', 9, [
|
||||||
|
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/Testlight/dimmerIn'),
|
||||||
|
new HomematicFourButtonSingleItem('dispatcher_ng/items/Gnd/Flur/DeskLight/timerIn'),
|
||||||
new HomematicFourButtonSingleItem('test/button/3'),
|
new HomematicFourButtonSingleItem('test/button/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)
|
||||||
|
|
||||||
// logger.info("allLabeledItems")
|
// watchdog
|
||||||
// logger.info(JSON.stringify(allLabeledItems))
|
let watchdogCounter = 0
|
||||||
|
let watchdogTimer = setInterval(() => {
|
||||||
|
watchdogCounter += 1
|
||||||
|
mqttHandler.send(config.dict.watchdogTopic, `${config.dict.watchdogMessage} ${watchdogCounter}`)
|
||||||
|
}, config.dict.watchdogInterval)
|
||||||
|
|
||||||
allLabeledItems.forEach((item: AItem) => {
|
|
||||||
let exportData : ExportType|null = item.exportItem()
|
|
||||||
if (exportData != null) {
|
|
||||||
if ('id' in exportData['homekit']) {
|
|
||||||
homekitObject[exportData['homekit']['id']] = exportData['homekit']['object']
|
// ----------------------------------------------------------------------------------------------------------
|
||||||
}
|
|
||||||
if (exportData['openhab'] instanceof Array) {
|
let roomSwitches: any = {}
|
||||||
let da : string[] = exportData['openhab'] as string[]
|
allLights.forEach((item: HasStateAndFeedbackTopicAndLabelAndRoom) => {
|
||||||
da.forEach((o: string) => openhabList.push(o))
|
let switchItem = {'label': item.getLabel(), 'actionTopic': item.getStateTopic(), 'feedbackTopic': item.getStateFeedbackTopic()}
|
||||||
|
if (item.getRoom() in roomSwitches) {
|
||||||
|
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))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user