kuestess / homebridge-platform-insteonlocal

Homebridge platform plugin for local Insteon control
Other
76 stars 26 forks source link

Insteon Thermostat #267

Open zzack01 opened 1 year ago

zzack01 commented 1 year ago

Hey some people are still asking about the thermostat are you still working on this?

kuestess commented 1 year ago

@zzack01 With 0.5 now done, assuming no urgent bugs I'll start to work on this functionality. No ETA at this point.

zzack01 commented 1 year ago

Sounds good thanks, I'll let the folks in discord know as well

On Sun, Jul 24, 2022 at 7:44 AM kuestess @.***> wrote:

@zzack01 https://github.com/zzack01 With 0.5 now done, assuming no urgent bugs I'll start to work on this functionality. No ETA at this point.

— Reply to this email directly, view it on GitHub https://github.com/kuestess/homebridge-platform-insteonlocal/issues/267#issuecomment-1193332114, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZK66TJDPCMH2C7VAMFDPJ3VVVJEBANCNFSM53XCT3MQ . You are receiving this because you were mentioned.Message ID: @.*** com>

zzack01 commented 1 year ago

Hey there, can you help me with this from a log (same log as the message before), accessories in homekit often show incorrect status & do not work well in the scenes/automations 7/27/2022, 8:26:31 PMPlatform Insteonlocal BridgeERROR<--- Last few GCs ---> 7/27/2022, 8:26:31 PMPlatform Insteonlocal BridgeERROR[8720:0x3de71d0] 332379 ms: Mark-sweep 247.3 (261.6) -> 245.7 (261.9) MB, 4956.0 / 3.1 ms (average mu = 0.153, current mu = 0.095) allocation failure scavenge might not succeed 7/27/2022, 8:26:31 PMPlatform Insteonlocal BridgeERROR[8720:0x3de71d0] 337772 ms: Mark-sweep 247.6 (261.9) -> 246.1 (262.1) MB, 5005.6 / 3.1 ms (average mu = 0.110, current mu = 0.072) task scavenge might not succeed 7/27/2022, 8:26:31 PMPlatform Insteonlocal BridgeERROR<--- JS stacktrace ---> 7/27/2022, 8:26:31 PMPlatform Insteonlocal BridgeERRORFATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

On Wed, Jul 27, 2022 at 2:19 PM Zachary Patterson @.***> wrote:

In the log files why would this show:

7/27/2022, 2:15:59 PMPlatform Insteonlocal BridgeERROR(node:22938) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 69 connect listeners added to [Insteon]. Use emitter.setMaxListeners() to increase limit7/27/2022, 2:15:59 PMPlatform Insteonlocal BridgeERROR(Use node --trace-warnings ... to show where the warning was created)

On Sun, Jul 24, 2022 at 9:35 AM Zachary Patterson @.***> wrote:

Sounds good thanks, I'll let the folks in discord know as well

On Sun, Jul 24, 2022 at 7:44 AM kuestess @.***> wrote:

@zzack01 https://github.com/zzack01 With 0.5 now done, assuming no urgent bugs I'll start to work on this functionality. No ETA at this point.

— Reply to this email directly, view it on GitHub https://github.com/kuestess/homebridge-platform-insteonlocal/issues/267#issuecomment-1193332114, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZK66TJDPCMH2C7VAMFDPJ3VVVJEBANCNFSM53XCT3MQ . You are receiving this because you were mentioned.Message ID: @.*** com>

kuestess commented 1 year ago

@zzack01 I've got version with initial thermostat support ready, however my ability to test is very limited as I don't have an Insteon thermostat. Do you have one, or do you know a user that might be able to do some testing?

zzack01 commented 1 year ago

Hello,

Great to hear, I have just sent a message to the community advisors on the discord page, if they dont, I will contact a few others that have asked about the thermostat

I do not have one, or I would be happy to test it for you...

On Tue, Aug 30, 2022 at 5:46 PM kuestess @.***> wrote:

@zzack01 https://github.com/zzack01 I've got version with initial thermostat support ready, however my ability to test is very limited as I don't have an Insteon thermostat. Do you have one, or do you know a user that might be able to do some testing?

— Reply to this email directly, view it on GitHub https://github.com/kuestess/homebridge-platform-insteonlocal/issues/267#issuecomment-1232320136, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZK66TK3FBBQGVX5JNTZRJDV32TQDANCNFSM53XCT3MQ . You are receiving this because you were mentioned.Message ID: @.*** com>

zzack01 commented 1 year ago

There is someone on discord that has a thermostat, @.***

On Tue, Aug 30, 2022 at 5:46 PM kuestess @.***> wrote:

@zzack01 https://github.com/zzack01 I've got version with initial thermostat support ready, however my ability to test is very limited as I don't have an Insteon thermostat. Do you have one, or do you know a user that might be able to do some testing?

— Reply to this email directly, view it on GitHub https://github.com/kuestess/homebridge-platform-insteonlocal/issues/267#issuecomment-1232320136, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZK66TK3FBBQGVX5JNTZRJDV32TQDANCNFSM53XCT3MQ . You are receiving this because you were mentioned.Message ID: @.*** com>

kuestess commented 1 year ago

@zzack01 Version with thermostat support is live now - appreciate any testing. Feel free to post issues here and I'll do my best to fix.

funkyvisions commented 1 year ago

Thank You! Just installed it. Haven't setup any automations on it yet (or even turn the cool or heat on yet). But immediately I noticed the temp isn't showing right in HomeKit vs Homebridge.

IMG_9087

Screen Shot 2022-09-24 at 12 03 56 PM
kuestess commented 1 year ago

@funkyvisions Looks like the homebridge ui is assuming that the 74F is celsius and re-converting to fahrenheit. Does it make any difference if you switch the temperature units in the homebridge ui?

funkyvisions commented 1 year ago

@kuestess if I change it in the Homebridge UI to Fahrenheit then they both show 165 degrees. And just to be clear, it was Homebridge that WAS showing 74 degrees (correctly), not HomeKit. HomeKit has shown 165 in both cases. I verified with the Insteon app that the thermostat setting were in Fahrenheit and that HomeKit is set to Fahrenheit.

funkyvisions commented 1 year ago

I just noticed the tempUnits param. Setting it to "f" or "c" makes no difference. Oh wait... I was trying it on the device settings. If I apply that at the platform level then I can get some changes. If I change it to "c" at the platform level, then Homebridge starts showing the F temp correctly. Nothing gets HomeKit to show it correctly.

kuestess commented 1 year ago

@funkyvisions Can you run in debug mode homebridge -D and paste the output on startup - specifically looking for a line that starts with 'Getting thermostat status' followed by 'Status: ' and JSON output that has thermostat Information.

funkyvisions commented 1 year ago

@kuestess

[9/25/2022, 12:20:02 PM] [Insteon Local Platform] Getting thermostat Thermostat status
[9/25/2022, 12:20:02 PM] [Insteon Local Platform] Status: {
  date: { day: 6, hour: 12, minute: 50, seconds: 4 },
  mode: 'off',
  fan: false,
  setpoints: { cool: 79, heat: 75 },
  humidity: 44,
  temperature: 76.82,
  cooling: false,
  heating: false,
  energySaving: false,
  unit: 'F',
  hold: false
}
kuestess commented 1 year ago

Thanks @funkyvisions. Apparently the current/target temp units are celsius regardless of what the 'display units' are set to, so I'll have to do some conversion to C before setting the characteristic values. Fix incoming...

kuestess commented 1 year ago

@funkyvisions Just pushed a new release that will hopefully fix this - not able to test so appreciate any feedback.

funkyvisions commented 1 year ago

The temperature is now showing correctly in both HomeKit and Homebridge. However, now setting a cool point doesn't seem to change it on the thermostat. Set to 72 cool, but thermostat still shows 79.

IMG_9129 IMG_9131

funkyvisions commented 1 year ago

Setting to COOL and HEAT does change the indicators on the thermostat. Just not the trigger point. Also, select OFF does not work. It stays on the last setting. (I don't use AUTO, but I'm not sure it works either)

From the logs:

[9/25/2022, 11:00:09 PM] [Insteon Local Platform] Setting Thermostat temperature to 32.2
[9/25/2022, 11:00:51 PM] [Insteon Local Platform] Setting Thermostat temperature to 30.6
[9/25/2022, 11:01:00 PM] [Insteon Local Platform] Setting Thermostat temperature to 23.9
[9/25/2022, 11:01:10 PM] [Insteon Local Platform] Getting temperature of Thermostat
[9/25/2022, 11:01:19 PM] [Insteon Local Platform] Setting Thermostat temperature to 32.2
[9/25/2022, 11:02:31 PM] [Insteon Local Platform] Setting Thermostat temperature to 22.200000000000003
[9/25/2022, 11:06:10 PM] [Insteon Local Platform] Getting temperature of Thermostat
[9/25/2022, 11:09:34 PM] [Insteon Local Platform] Setting Thermostat temperature to 27.2
[9/25/2022, 11:09:53 PM] [Insteon Local Platform] Setting Thermostat temperature to 25.6
[9/25/2022, 11:11:10 PM] [Insteon Local Platform] Getting temperature of Thermostat
kuestess commented 1 year ago

@funkyvisions Thanks for your help on this, and much appreciate the log info. Was the temperature change working before the last change (if you tried)? Looked over the code again and nothing pops out as an issue, but added some additional debugging in a release I just pushed. If you can run again in debug mode and post output I would appreciate. Setting the mode to off didn't;t work because I'm an idiot and didn't implement it :-(. Its in the latest release.

funkyvisions commented 1 year ago

@kuestess here's the output. Temp was 75. I tried setting heat to 85. Nothing happened. I tried setting cool to 70. Nothing happened. I then turned it OFF (which worked now).

[9/26/2022, 10:28:34 PM] [Insteon Local Platform] Set Thermostat mode to 1
[9/26/2022, 10:28:35 PM] [Insteon Local Platform] Set Thermostat mode to heat
[9/26/2022, 10:28:35 PM] [Insteon Local Platform] Received command for 32F4AB
[9/26/2022, 10:28:35 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/26/2022, 10:28:35 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"04","raw":"025032F4AB4C573E206B04"}}
[9/26/2022, 10:28:35 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
[9/26/2022, 10:28:37 PM] [Insteon Local Platform] Setting Thermostat temperature to 85
[9/26/2022, 10:29:04 PM] [Insteon Local Platform] Set Thermostat mode to 2
[9/26/2022, 10:29:04 PM] [Insteon Local Platform] Set Thermostat mode to cool
[9/26/2022, 10:29:05 PM] [Insteon Local Platform] Received command for 32F4AB
[9/26/2022, 10:29:05 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/26/2022, 10:29:05 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"05","raw":"025032F4AB4C573E206B05"}}
[9/26/2022, 10:29:05 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
[9/26/2022, 10:29:07 PM] [Insteon Local Platform] Setting Thermostat temperature to 70
[9/26/2022, 10:29:24 PM] [Insteon Local Platform] Set Thermostat mode to 0
[9/26/2022, 10:29:25 PM] [Insteon Local Platform] Set Thermostat mode to off
[9/26/2022, 10:29:26 PM] [Insteon Local Platform] Received command for 32F4AB
[9/26/2022, 10:29:26 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/26/2022, 10:29:26 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"09","raw":"025032F4AB4C573E206B09"}}
[9/26/2022, 10:29:26 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
kuestess commented 1 year ago

Thanks again @funkyvisions. For some reason the logic around determine mode and therefore the proper command to set the heat/cool set point isn't allowing the command to be sent to the thermostat. I've published another update that should allow a change in the cool set point and also provide some additional debugging. Appreciate it if you could run in debug mode and provide the similar log to above. Thanks!

funkyvisions commented 1 year ago

@kuestess no difference. When I set the trigger point, the thermostat never changes. Just cool, heat, and off appear. Temp setting does not change. I tried setting cool to 70. And heat to 85.

[9/28/2022, 6:07:46 PM] [Insteon Local Platform] Getting thermostat Thermostat status
[9/28/2022, 6:07:46 PM] [Insteon Local Platform] Status: {
  date: { day: 2, hour: 18, minute: 38, seconds: 2 },
  mode: 'off',
  fan: false,
  setpoints: { cool: 82, heat: 76 },
  humidity: 41,
  temperature: 75.92,
  cooling: false,
  heating: false,
  energySaving: false,
  unit: 'F',
  hold: false
}
[9/28/2022, 6:07:46 PM] [Insteon Local Platform] [init]Thermostat mode is off
[9/28/2022, 6:07:46 PM] [Insteon Local Platform] Hub/PLM id is 4C573E
[9/28/2022, 6:07:46 PM] [Insteon Local Platform] Set Thermostat mode to cool
[9/28/2022, 6:07:47 PM] [Insteon Local Platform] Received command for 32F4AB
[9/28/2022, 6:07:47 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/28/2022, 6:07:47 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"05","raw":"025032F4AB4C573E206B05"}}
[9/28/2022, 6:07:47 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
[9/28/2022, 6:07:52 PM] [Insteon Local Platform] Set Thermostat mode to 2
[9/28/2022, 6:07:53 PM] [Insteon Local Platform] Set Thermostat mode to cool
[9/28/2022, 6:07:54 PM] [Insteon Local Platform] Received command for 32F4AB
[9/28/2022, 6:07:54 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/28/2022, 6:07:54 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"05","raw":"025032F4AB4C573E206B05"}}
[9/28/2022, 6:07:54 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
[9/28/2022, 6:08:48 PM] [Insteon Local Platform] Set Thermostat mode to 1
[9/28/2022, 6:08:48 PM] [Insteon Local Platform] Set Thermostat mode to heat
[9/28/2022, 6:08:50 PM] [Insteon Local Platform] Received command for 32F4AB
[9/28/2022, 6:08:50 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/28/2022, 6:08:50 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"04","raw":"025032F4AB4C573E206B04"}}
[9/28/2022, 6:08:50 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
[9/28/2022, 6:09:01 PM] [Insteon Local Platform] Setting Thermostat temperature to 85
[9/28/2022, 6:09:01 PM] [Insteon Local Platform] Thermostat mode is off
[9/28/2022, 6:09:02 PM] [Insteon Local Platform] {
  command: {
    cmd1: '6C',
    cmd2: 'AA',
    extended: true,
    isStandardResponse: true,
    type: '62',
    checksum: 234,
    raw: '026232F4AB1F6CAA00000000000000000000000000EA',
    id: '32F4AB'
  },
  deferred: defer {
    promise: Promise {
      promiseDispatch: [Function (anonymous)],
      valueOf: [Function (anonymous)],
      inspect: [Function (anonymous)]
    },
    resolve: [Function (anonymous)],
    fulfill: [Function (anonymous)],
    reject: [Function (anonymous)],
    notify: [Function (anonymous)]
  },
  timeout: 5000,
  nakTimeout: 10,
  ack: true,
  nack: false,
  response: {
    standard: {
      type: '50',
      id: '32F4AB',
      gatewayId: '4C573E',
      extended: false,
      messageType: 1,
      hopsLeft: 0,
      maxHops: 0,
      command1: '6C',
      command2: 'AA',
      raw: '025032F4AB4C573E206CAA'
    }
  },
  success: true
}
[9/28/2022, 6:09:17 PM] [Insteon Local Platform] Setting Thermostat temperature to 90
[9/28/2022, 6:09:17 PM] [Insteon Local Platform] Thermostat mode is off
[9/28/2022, 6:09:17 PM] [Insteon Local Platform] {
  command: {
    cmd1: '6C',
    cmd2: 'B4',
    extended: true,
    isStandardResponse: true,
    type: '62',
    checksum: 224,
    raw: '026232F4AB1F6CB400000000000000000000000000E0',
    id: '32F4AB'
  },
  deferred: defer {
    promise: Promise {
      promiseDispatch: [Function (anonymous)],
      valueOf: [Function (anonymous)],
      inspect: [Function (anonymous)]
    },
    resolve: [Function (anonymous)],
    fulfill: [Function (anonymous)],
    reject: [Function (anonymous)],
    notify: [Function (anonymous)]
  },
  timeout: 5000,
  nakTimeout: 10,
  ack: true,
  nack: false,
  response: {
    standard: {
      type: '50',
      id: '32F4AB',
      gatewayId: '4C573E',
      extended: false,
      messageType: 1,
      hopsLeft: 1,
      maxHops: 1,
      command1: '6C',
      command2: 'B4',
      raw: '025032F4AB4C573E256CB4'
    }
  },
  success: true
}
[9/28/2022, 6:09:27 PM] [Insteon Local Platform] Set Thermostat mode to 0
[9/28/2022, 6:09:28 PM] [Insteon Local Platform] Set Thermostat mode to off
[9/28/2022, 6:09:28 PM] [Insteon Local Platform] Received command for 32F4AB
[9/28/2022, 6:09:28 PM] [Insteon Local Platform] Found 1 accessories matching 32F4AB
[9/28/2022, 6:09:28 PM] [Insteon Local Platform] Hub command: {"standard":{"type":"50","id":"32F4AB","gatewayId":"4C573E","extended":false,"messageType":1,"hopsLeft":0,"maxHops":0,"command1":"6B","command2":"09","raw":"025032F4AB4C573E206B09"}}
[9/28/2022, 6:09:28 PM] [Insteon Local Platform] Got event for Thermostat (32F4AB)
kuestess commented 1 year ago

@funkyvisions Looks like the temperature change command is now being sent to the thermostat - did it actually change the set point?

funkyvisions commented 1 year ago

Ok. Ya. Cool is working. But heat isn’t.

zzack01 commented 1 year ago

In the log files why would this show:

7/27/2022, 2:15:59 PMPlatform Insteonlocal BridgeERROR(node:22938) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 69 connect listeners added to [Insteon]. Use emitter.setMaxListeners() to increase limit7/27/2022, 2:15:59 PMPlatform Insteonlocal BridgeERROR(Use node --trace-warnings ... to show where the warning was created)

On Sun, Jul 24, 2022 at 9:35 AM Zachary Patterson @.***> wrote:

Sounds good thanks, I'll let the folks in discord know as well

On Sun, Jul 24, 2022 at 7:44 AM kuestess @.***> wrote:

@zzack01 https://github.com/zzack01 With 0.5 now done, assuming no urgent bugs I'll start to work on this functionality. No ETA at this point.

— Reply to this email directly, view it on GitHub https://github.com/kuestess/homebridge-platform-insteonlocal/issues/267#issuecomment-1193332114, or unsubscribe https://github.com/notifications/unsubscribe-auth/AZK66TJDPCMH2C7VAMFDPJ3VVVJEBANCNFSM53XCT3MQ . You are receiving this because you were mentioned.Message ID: @.*** com>

hypeitinc commented 1 year ago

Hi @kuestess! Is this still in progress? I have an older version of the thermostat with an "Thermostat adapter". It seems like I have the same issues as @funkyvisions. I'll be happy to try to help if you can point me in the right direction.

kuestess commented 1 year ago

@hypeitinc Yes - still in progress. Sorry, not much movement as of recent but plan to get back to it soon. I don't have a thermostat to test with, so appreciate any testing you can do. Hope to have an update in the next week or so.

hypeitinc commented 1 year ago

@kuestess Great to hear!
I have 4 thermostats in my vacation home. I might be back there end of next week. As the "remote" control does not work at the moment I can just help with partial debugging. Do not dare to have the thermostats go to zero setpoint and cause the pipes to freeze... Anyway happy to help with some debugging. At the moment I'm getting temp 32F on the Hoobs dashboard and also on the Apple Home App although the temp is ~ 61F (also the setpoint). Logfile attached. Hoobs_log_120522.txt

kuestess commented 1 year ago

Thanks @hypeitinc - appreciate any debugging you can do! 4 thermostats - can't imagine your electric bill :-)

kuestess commented 1 year ago

@funkyvisions @hypeitinc Just published a new version that I think should fix the issue with setting thermostat temperature. Appreciate any testing you can do!

hypeitinc commented 1 year ago

Hi @kuestess - I'll take a look. I'm back in the lake house so good timing! At first glance; setting the modes from iPhone/HomeKit, cool and heat works, but both auto and off gives off on the thermostat. The respective temperature set points are incorrect though. Also, no status (changes) of any kind (actual temperature, set point, mode) from the thermostat are reflected in HomeKit. I'll try to do some logging so you can see more in a little more detail what happens.

funkyvisions commented 1 year ago

I hadn't checked this thread recently. But now that I've fired up the AC for the season I am seeing an issue. My thermostat is set to cool to 78 degrees, yet this is what I see in HomeBridge.

Screen Shot 2023-06-04 at 11 18 45 AM
funkyvisions commented 1 year ago

Oh, I just restarted HomeBridge and now it's appearing correctly. Hmmm...

Screen Shot 2023-06-04 at 11 22 48 AM
kuestess commented 1 year ago

@funkyvisions Blast from the past on this thread :-). The way the code is currently written, it asks the thermostat for its mode and temperatures on startup. After that, it will ask every 5 min by default. If you set the refresh parameter at the device level to a different value in your config (in milliseconds) then you can make it refresh more/less often.