haruny / adt-pulse-mqtt

ADT Pulse Bridge for Home Assistant
MIT License
10 stars 5 forks source link

Invalid Zone Error #30

Closed jrdean closed 4 years ago

jrdean commented 4 years ago

I can't get this add-on to work anymore. I don't believe anything changed with my installation that I'm aware of. I did restore to a previous snapshot that was known working with adt-pulse-mqtt. I didn't upgraded to the 107 update of HA that was released today. I'm still using 106.6.

I never paid attention to the website, but I do see "Web Portal version: | | 18.0.0-78". I wonder if ADT updated the portal version and it broke something in this add on. Any help is appreciated. I find this to be one of my most useful add-ons and several automations are implemented based on door and motion sensors from adt-pulse.

The error log shows

3/18/2020, 8:29:57 PM Pulse: Invalid Zone JSONTypeError: Cannot read property 'items' of null at Request._callback (/usr/src/app/adt-pulse.js:184:12) at Request.self.callback (/usr/src/app/node_modules/request/request.js:185:22) at Request.emit (events.js:223:5) at Request. (/usr/src/app/node_modules/request/request.js:1154:10) at Request.emit (events.js:223:5) at IncomingMessage. (/usr/src/app/node_modules/request/request.js:1076:12) at Object.onceWrapper (events.js:312:28) at IncomingMessage.emit (events.js:228:7) at endReadableNT (_stream_readable.js:1185:12) at processTicksAndRejections (internal/process/task_queues.js:81:21)

myopenflixr commented 4 years ago

I now see the same error on my installation and have made no changes other than upgrading hass.io to the latest release 0.107. I also see that ADT Portal version shows as 18.0.0-78.

jcamm3 commented 4 years ago

I'm seeing the same issue - and also on the latest release.

haruny commented 4 years ago

Thank for the report folks. I acknowledge the issue. Something must have changed. Fix is on the way.

haruny commented 4 years ago

build is broken in hassio.

jrdean commented 4 years ago

Thank you for taking the time to look into this bug. I believe you're correct. I uninstalled and reinstalled on Hassio (or what they're formerly calling Hassio, as of last month, I guess it's not called just Home Assistant). It seems like I was getting the same zone error. Keep in mind, I'm a hardware guy and coding isn't my strong point. I decided to try the version on digitalcraig and that is working and reporting the sensors correctly. How is the digitalcraig and your (Haruny) version different? What version should I be using on a Raspberry Pi 4 running Hassio/Home Assistant?

haruny commented 4 years ago

Long history but... Craig is the original author. The project was incomplete. I took his work, completed a working version then submitted to the community. Then Craig decided to work on it again. He made changes and submitted his changes back to me. About an hour ago he asked me to pull all his changes into this repo, which I did. It kind of broke my end. I'm still trying to figure out why.

digitalcraig commented 4 years ago

Credit goes to @mrjackyliang for the fixed as well. He fixed the issue on his homebridge project and I merged his fix in and connected up the plumbing.

haruny commented 4 years ago

There seems to be more cleanup needed. Looks like adt stopped using SAT values in the first page. These only appear in the "forced" alarm stay/away dialog. I made some cleanup and just submitted 2.3.0. Currently this bug is fixed however there is still an error during the start up. Will dig more later.

mrjackyliang commented 4 years ago

I made a minor change to the code for detecting types. You can update the regex to match these names as people come forward with missing sensors.

if (theName && theState !== 'devStatUnknown') {
  if (theName.match(/^(.*)(Door|Window|DR|WIN|SLIDER|NOOK)(.*)$/g) !== null) {
    theTag = 'sensor,doorWindow';
  } else if (theName.match(/^(.*)(Glass)(.*)$/g) !== null) {
    theTag = 'sensor,glass';
  } else if (theName.match(/^(.*)(Motion|MOTION)(.*)$/g) !== null) {
    theTag = 'sensor,motion';
  } else if (theName.match(/^(.*)(Gas)(.*)$/g) !== null) {
    theTag = 'sensor,co';
  } else if (theName.match(/^(.*)(Smoke|Heat|SMOKE)(.*)$/g) !== null) {
    theTag = 'sensor,fire';
  }
}