homebridge-smartsystem 7.1.12 → 7.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -452,7 +452,7 @@ class Master extends base_1.Base {
452
452
  const value = protocol_1.Protocol.makeSigned(message, 4);
453
453
  if ((register >= 0) && (register < 1024)) {
454
454
  this.registers[register] = value;
455
- this.log("receiveRegister(" + register + ") = " + value);
455
+ this.log(`<<< receiveRegister: register ${register} = ${value} (stored in master.registers[${register}])`);
456
456
  }
457
457
  else {
458
458
  this.err("Received register out of bound: " + register);
@@ -773,12 +773,14 @@ class Master extends base_1.Base {
773
773
  }
774
774
  setRegisterValue(register, value) {
775
775
  return __awaiter(this, void 0, void 0, function* () {
776
+ this.log(`### setRegisterValue called: register=${register}, value=${value}, protocol=${this.protocol}`);
776
777
  if (this.protocol >= 209) {
778
+ this.log(`### Sending register update to ${this.getAddress()}: register ${register} = ${value}`);
777
779
  yield this.send(protocol_1.Protocol.buildRegister(register, value));
778
- this.info("set register: " + register + ", to: " + value);
780
+ this.log(`### Register ${register} set to ${value} successfully`);
779
781
  }
780
782
  else {
781
- this.err("FC_REGISTERMAP not available before protocol v2.09");
783
+ this.err(`### FC_REGISTERMAP not available before protocol v2.09 (current protocol: ${this.protocol})`);
782
784
  }
783
785
  });
784
786
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-smartsystem",
3
3
  "displayname": "Duotecno Bridge",
4
- "version": "7.1.12",
4
+ "version": "7.1.15",
5
5
  "description": "SmartServer (Proxy TCP sockets to the cloud, Smappee MQTT, Duotecno IP Nodes, Homekit interface)",
6
6
  "main": "index.js",
7
7
  "author": "Johan Coppieters",
package/server/base.js CHANGED
@@ -13,6 +13,7 @@ class Base {
13
13
  this.config = config;
14
14
  else
15
15
  this.readConfig();
16
+ this.debug = (!!this.config.debug) || false;
16
17
  if (this.debug)
17
18
  logger_1.logSettings[this.type] = logger_1.LogLevel.debug;
18
19
  else if (logger_1.logSettings[this.type] == logger_1.LogLevel.debug)
@@ -22,6 +22,12 @@ class PowerBase extends base_1.Base {
22
22
  constructor(type, system) {
23
23
  super(type);
24
24
  // called by Base: this.readConfig();
25
+ // Also enable "power" logger when debug is on (in addition to the specific type logger)
26
+ if (this.debug) {
27
+ const { logSettings, LogLevel } = require("../duotecno/logger");
28
+ logSettings["power"] = LogLevel.debug;
29
+ (0, logger_1.log)("power", `Debug logging enabled for power/${type}`);
30
+ }
25
31
  this.system = system;
26
32
  // will grow when we encounter one in the mqtt stream or if we receive a config message
27
33
  this.switches = {};
@@ -112,39 +118,50 @@ class PowerBase extends base_1.Base {
112
118
  }
113
119
  applyBindings() {
114
120
  if (this.realtimeCounter % 2 === 0) {
121
+ (0, logger_1.log)("power", `*** applyBindings: processing ${this.bindings.length} bindings ***`);
115
122
  // for all bindings
116
- this.bindings.forEach(b => {
123
+ this.bindings.forEach((b, idx) => {
124
+ var _a;
117
125
  const power = this.evalPower(b.channel);
118
- (0, logger_1.debug)("power", `Binding channel=${b.channel}, register=${b.register}, current_value=${b.value}, calculated_power=${power}`);
119
- if (this.significant(power, b.value)) {
120
- (0, logger_1.debug)("power", "APPLY to " + b.channel + " = " + b.value + " -> " + power + " for " + b.register +
121
- "): difference: " + Math.abs(b.value - power) +
122
- " > threshold: 5% =" + Math.abs(b.value * 0.05) + " > threshold: 2% =" + Math.abs(b.value * 0.02));
126
+ const currentValue = (_a = b.value) !== null && _a !== void 0 ? _a : NaN;
127
+ (0, logger_1.log)("power", `[Binding ${idx}] channel=${b.channel}, register=${b.register}, master=${b.masterAddress}:${b.masterPort}, current_value=${currentValue}, calculated_power=${power}`);
128
+ if (this.significant(power, currentValue)) {
129
+ (0, logger_1.log)("power", `[Binding ${idx}] SIGNIFICANT CHANGE - APPLYING to register ${b.register}: ${currentValue} -> ${power}W (diff: ${Math.abs(currentValue - power)}W)`);
123
130
  this.applyBinding(b, power)
124
131
  .then(power => {
125
132
  b.value = power;
126
- (0, logger_1.debug)("power", "set register " + b.register + " to " + power);
133
+ (0, logger_1.log)("power", `[Binding ${idx}] SUCCESS - set register ${b.register} to ${power}W`);
127
134
  })
128
- .catch((e) => (0, logger_1.err)(this.type, e.message || e));
135
+ .catch((e) => {
136
+ (0, logger_1.err)(this.type, `[Binding ${idx}] ERROR: ${e.message || e}`);
137
+ (0, logger_1.log)("power", `[Binding ${idx}] Failed to set register ${b.register}: ${e.message || e}`);
138
+ });
129
139
  }
130
140
  else {
131
- (0, logger_1.debug)("power", "NOT significant for " + b.channel + " = " + b.value + " -> " + power + " for register " + b.register +
132
- ": difference: " + Math.abs(b.value - power) +
133
- " <= threshold: 5% =" + Math.abs(b.value * 0.05) + " or 2% =" + Math.abs(b.value * 0.02));
141
+ (0, logger_1.debug)("power", `[Binding ${idx}] NOT significant for channel ${b.channel} -> register ${b.register}: ${currentValue}W -> ${power}W (diff: ${Math.abs(currentValue - power)}W, threshold: ${currentValue < 1000 ? '5%=' + Math.abs(currentValue * 0.05) : '2%=' + Math.abs(currentValue * 0.02)}W)`);
134
142
  }
135
143
  });
136
144
  }
137
145
  }
138
146
  applyBinding(binding, value) {
139
147
  return __awaiter(this, void 0, void 0, function* () {
148
+ (0, logger_1.log)("power", `>>> applyBinding: looking for master ${binding.masterAddress}:${binding.masterPort}`);
140
149
  const master = this.system.findMaster(binding.masterAddress, binding.masterPort);
141
150
  if (master) {
151
+ (0, logger_1.log)("power", `>>> applyBinding: MASTER FOUND (${master.getName()}), calling setRegisterValue(${binding.register}, ${value})`);
142
152
  yield master.setRegisterValue(binding.register, value);
153
+ (0, logger_1.log)("power", `>>> applyBinding: setRegisterValue completed successfully for register ${binding.register}`);
143
154
  return value;
144
155
  }
145
156
  else if ((!binding.masterAddress) || (binding.register)) {
146
- throw new Error("***** MASTER NOT FOUND for binding for value " + value + " to " + binding.masterAddress + ":" + binding.masterPort + " - register = " + binding.register + " *****");
147
- } // else empty binding -> no error
157
+ const errMsg = "***** MASTER NOT FOUND for binding for value " + value + " to " + binding.masterAddress + ":" + binding.masterPort + " - register = " + binding.register + " *****";
158
+ (0, logger_1.log)("power", errMsg);
159
+ throw new Error(errMsg);
160
+ }
161
+ else {
162
+ (0, logger_1.log)("power", `>>> applyBinding: empty binding (no master or register), skipping`);
163
+ return value;
164
+ }
148
165
  });
149
166
  }
150
167
  /////////////////////