From 718ac667d1a74ba038d7648b978656a5f16ead3a Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sun, 3 Jun 2018 21:50:40 +0200 Subject: [PATCH] several quick fixes --- dispatcher.service | 2 +- dispatcher_ng.conf | 5 ++++- dist/UrlSwitchItem.js | 16 +++++++++++----- dist/main.js | 12 +++++++++--- homekit.json | 17 ----------------- openhab.items | 1 - src/UrlSwitchItem.ts | 4 ++++ src/main.ts | 13 ++++++++++--- 8 files changed, 39 insertions(+), 31 deletions(-) diff --git a/dispatcher.service b/dispatcher.service index ecf1414..13422c4 100755 --- a/dispatcher.service +++ b/dispatcher.service @@ -7,7 +7,7 @@ After=network-online.target [Service] Type=simple GuessMainPID=yes -ExecStart=/usr/bin/npm start -- -c dispatcher_ng.conf +ExecStart=/usr/bin/npm start -- -c dispatcher_ng.conf ExecStop=kill -SIGINT $mainpid Restart=on-failure WorkingDirectory=/opt/services/dispatcher_ng diff --git a/dispatcher_ng.conf b/dispatcher_ng.conf index 05b43ef..e5faef3 100644 --- a/dispatcher_ng.conf +++ b/dispatcher_ng.conf @@ -10,5 +10,8 @@ "homekitFile": "homekit.json", "openhabItemFile": "openhab.items", "heartbeatTopic": "dispatcher_ng/i/am/alive", - "heartbeatInterval": 10000 + "heartbeatInterval": 10000, + "watchdogTopic": "IoT/Watchdog", + "watchdogInterval": 1000, + "watchdogMessage": "WauWau!" } diff --git a/dist/UrlSwitchItem.js b/dist/UrlSwitchItem.js index 6d27dc8..e8b9753 100644 --- a/dist/UrlSwitchItem.js +++ b/dist/UrlSwitchItem.js @@ -1,5 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); +const logger = require("./log"); const MqttDispatcher_1 = require("./MqttDispatcher"); const AItem_1 = require("./AItem"); const Export_1 = require("./Export"); @@ -30,13 +31,18 @@ class UrlSwitchItem extends AItem_1.AItem { this.state = payload; MqttDispatcher_1.mqttHandler.send(this.stateFeedbackTopic, this.state); if (this.state != this.oldState) { - if (this.state == 'ON') { - http.get(this.onUrl); + try { + if (this.state == 'ON') { + http.get(this.onUrl); + } + else { + http.get(this.offUrl); + } + this.oldState = this.state; } - else { - http.get(this.offUrl); + catch (_a) { + logger.error(`Failed to handle ${this.onUrl} or ${this.offUrl}`); } - this.oldState = this.state; } } } diff --git a/dist/main.js b/dist/main.js index 4012ab0..ea903a2 100644 --- a/dist/main.js +++ b/dist/main.js @@ -105,9 +105,9 @@ allLabeledItems.push(diningRoomCupboardLight); allRelevantLights.push(diningRoomCupboardLight); // Esszimmer Regallicht let diningRoomShelfLight = new UrlSwitchItem_1.UrlSwitchItem('Gnd', 'DiningRoom', 'ShelfLight', 'Regallicht Esszimmer', 'http://172.16.2.43/dv?dv=1023', 'http://172.16.2.43/dv?dv=0'); -diningRoomShelfLight.start(); -allLabeledItems.push(diningRoomShelfLight); -allRelevantLights.push(diningRoomShelfLight); +// diningRoomShelfLight.start() +// allLabeledItems.push(diningRoomShelfLight) +// allRelevantLights.push(diningRoomShelfLight) let diningRoomNaehkaestchenLight = new HueColorBulbItem_1.HueColorBulbItem('Gnd', 'DiningRoom', 'NaehkaestchenLight', 'Lampe Naehkaestchen', 15); diningRoomNaehkaestchenLight.start(); allLabeledItems.push(diningRoomNaehkaestchenLight); @@ -438,6 +438,12 @@ 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); // ---------------------------------------------------------------------------------------------------------- // Homekit export let homekitObject = {}; diff --git a/homekit.json b/homekit.json index 3a3a426..eebffae 100644 --- a/homekit.json +++ b/homekit.json @@ -165,23 +165,6 @@ }, "config": {} }, - "Gnd_DiningRoom_ShelfLight": { - "id": "Gnd_DiningRoom_ShelfLight", - "name": "Regallicht Esszimmer", - "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", diff --git a/openhab.items b/openhab.items index 3b4ad9e..4392b62 100644 --- a/openhab.items +++ b/openhab.items @@ -10,7 +10,6 @@ Contact 1st_Matthias_WindowContact "Fenster Matthias" {mqtt="<[localbroker:dispa Switch Gnd_DiningRoom_SmallLight "kleine Lampe Esszimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/SmallLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/SmallLight/state/feedback:state:default]"} Switch Gnd_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_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_DiningRoom_ShelfLight "Regallicht Esszimmer"{mqtt=">[localbroker:dispatcher_ng/items/Gnd/DiningRoom/ShelfLight/state:command:*:default],<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/ShelfLight/state/feedback:state:default]"} Contact Gnd_DiningRoom_WindowContact1 "Fenster Esszimmer Straße links" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/WindowContact1/state/feedback:state:default]"} Contact Gnd_DiningRoom_WindowContact2 "Fenster Esszimmer Straße rechts" {mqtt="<[localbroker:dispatcher_ng/items/Gnd/DiningRoom/WindowContact2/state/feedback:state:default]"} diff --git a/src/UrlSwitchItem.ts b/src/UrlSwitchItem.ts index 74a255d..288d5a1 100644 --- a/src/UrlSwitchItem.ts +++ b/src/UrlSwitchItem.ts @@ -44,12 +44,16 @@ export class UrlSwitchItem extends AItem implements HasStateAndFeedbackTopic { this.state = payload; mqttHandler.send(this.stateFeedbackTopic, this.state); if (this.state != this.oldState) { + try { if (this.state == 'ON') { http.get(this.onUrl,) } else { http.get(this.offUrl) } this.oldState = this.state; + } catch { + logger.error(`Failed to handle ${this.onUrl} or ${this.offUrl}`) + } } } } diff --git a/src/main.ts b/src/main.ts index 80b7f95..cf3ec22 100644 --- a/src/main.ts +++ b/src/main.ts @@ -131,9 +131,9 @@ allRelevantLights.push(diningRoomCupboardLight) // Esszimmer Regallicht let diningRoomShelfLight = new UrlSwitchItem('Gnd', 'DiningRoom', 'ShelfLight', 'Regallicht Esszimmer', 'http://172.16.2.43/dv?dv=1023', 'http://172.16.2.43/dv?dv=0') -diningRoomShelfLight.start() -allLabeledItems.push(diningRoomShelfLight) -allRelevantLights.push(diningRoomShelfLight) +// diningRoomShelfLight.start() +// allLabeledItems.push(diningRoomShelfLight) +// allRelevantLights.push(diningRoomShelfLight) let diningRoomNaehkaestchenLight = new HueColorBulbItem('Gnd', 'DiningRoom', 'NaehkaestchenLight', 'Lampe Naehkaestchen', 15) diningRoomNaehkaestchenLight.start() @@ -553,6 +553,13 @@ let heartbeatTimer = setInterval(() => { mqttHandler.send(config.dict.heartbeatTopic, `${heartbeatCounter}`) }, config.dict.heartbeatInterval) +// watchdog +let watchdogCounter = 0 +let watchdogTimer = setInterval(() => { + watchdogCounter += 1 + mqttHandler.send(config.dict.watchdogTopic, `${config.dict.watchdogMessage} ${watchdogCounter}`) +}, config.dict.watchdogInterval) +