gotwalt/redlink

Issue after session expires

Closed this issue · 14 comments

After my session expires, I get this.

/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/configuration.rb:81: stack level too deep (SystemStackError)

Any ideas on how to resolve?

Wow, it's been a while since I touched this code. My token is out of date too, and this is what I get:

/Users/gotwalt/src/projects/redlink/lib/redlink/endpoint.rb:72:in `call_remote_method': Redlink::Endpoint::InvalidSessionError (Redlink::Endpoint::InvalidSessionError)
    from /Users/gotwalt/src/projects/redlink/lib/redlink/endpoint.rb:46:in `locations'
    from /Users/gotwalt/src/projects/redlink/lib/redlink/location.rb:24:in `all'
    from /Users/gotwalt/src/projects/redlink/lib/redlink/cli.rb:24:in `locations'
    from /Users/gotwalt/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
    from /Users/gotwalt/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
    from /Users/gotwalt/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
    from /Users/gotwalt/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
    from ./bin/redlink:7:in `<main>'

Can you give me any more hints? Did you manage to find a valid App ID?

Yep, I have a valid AppID; I used Charles Proxy to get it from the iOS app. Here it is (I'll remove it later if you want me to): 5b950f6e-fc89-4b84-9046-4a0009d9bd3b.

If I trash my config, re-init, and re-login, everything works as expected... until my login token expires (hour later).

$ redlink locations
Home - -2° NightMostlyClear
UPSTAIRS - 69° / 69.0°
DOWNSTAIRS - 67° / 70.0°

Thanks for your help!

Super-weird. What version of ruby are you running?

Also, anything more on the stack trace would be helpful.

It appears to not like something in the config though you probably know that. I know zilch about ruby unfortunately.

[10:45][wilson@homer:]$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
[10:46][wilson@homer:
]$ redlink locations
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/configuration.rb:81: stack level too deep (SystemStackError)
[10:46][wilson@homer:~]$

Hmm, on 1.9.3-p484 I'm unable to replicate. Wish I had something more to work off of.

Is this helpful? Let me know if I can run it in some other way to get your better debugging info. I re-cloned your repo, removed the locations where it was installed and completely rebuilt.

$ redlink locations
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/configuration.rb:87: warning: assigned but unused variable - ex
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/location.rb:5: warning: method redefined; discarding old thermostats=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/location.rb:11: warning: method redefined; discarding old thermostats
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/location.rb:15: warning: method redefined; discarding old current_weather=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/thermostat.rb:7: warning: method redefined; discarding old ui=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:14: warning: method redefined; discarding old outdoor_temp=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:18: warning: method redefined; discarding old heat_setpoint=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:22: warning: method redefined; discarding old cool_setpoint=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:26: warning: method redefined; discarding old sched_heat_sp=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:30: warning: method redefined; discarding old sched_cool_sp=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:34: warning: method redefined; discarding old outdoor_temp=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:14: warning: previous definition of outdoor_temp= was here
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/ui.rb:38: warning: method redefined; discarding old disp_temperature=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/weather.rb:15: warning: method redefined; discarding old temperature=
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/weather.rb:19: warning: method redefined; discarding old humidity=
/var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/request.rb:85: warning: `*' interpreted as argument prefix
/var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/request.rb:87: warning: `*' interpreted as argument prefix
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi.rb
    from /usr/local/bin/redlink:23:in `'
    from /usr/local/bin/redlink:23:in `load'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/bin/redlink:5:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/cli.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink.rb:8:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/endpoint.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon.rb:24:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/client.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/operation.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/options.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi.rb:6:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/adapter/httpclient.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/adapter/base.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/response.rb:43: warning: method redefined; discarding old attachments
/var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/adapter/curb.rb:98: warning: assigned but unused variable - status
/var/lib/gems/1.9.1/gems/httpi-2.0.2/lib/httpi/adapter/net_http.rb:88: warning: `*' interpreted as argument prefix
/var/lib/gems/1.9.1/gems/nori-2.0.4/lib/nori/core_ext/string.rb:8: warning: ambiguous first argument; put parentheses or even spaces
/var/lib/gems/1.9.1/gems/nori-2.0.4/lib/nori/core_ext/string.rb:9: warning: ambiguous first argument; put parentheses or even spaces
/var/lib/gems/1.9.1/gems/nori-2.0.4/lib/nori/core_ext/string.rb:10: warning: ambiguous first argument; put parentheses or even spaces
/var/lib/gems/1.9.1/gems/nori-2.0.4/lib/nori/core_ext/hash.rb:43: warning: shadowing outer local variable - key
/var/lib/gems/1.9.1/gems/nori-2.0.4/lib/nori/core_ext/hash.rb:43: warning: shadowing outer local variable - value
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon.rb
    from /usr/local/bin/redlink:23:in `'
    from /usr/local/bin/redlink:23:in `load'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/bin/redlink:5:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/cli.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink.rb:8:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/endpoint.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon.rb:24:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/client.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/operation.rb:3:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/request.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/response.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/soap_fault.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon.rb
    from /usr/local/bin/redlink:23:in `'
    from /usr/local/bin/redlink:23:in `load'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/bin/redlink:5:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/cli.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink.rb:8:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/endpoint.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon.rb:24:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/client.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/operation.rb:3:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/request.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/response.rb:3:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/http_error.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/var/lib/gems/1.9.1/gems/akami-1.2.2/lib/akami/wsse.rb:99: warning: shadowing outer local variable - key
/var/lib/gems/1.9.1/gems/akami-1.2.2/lib/akami/wsse.rb:99: warning: shadowing outer local variable - v1
/var/lib/gems/1.9.1/gems/akami-1.2.2/lib/akami/wsse.rb:99: warning: shadowing outer local variable - v2
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36: warning: loading in progress, circular require considered harmful - /var/lib/gems/1.9.1/gems/gyoku-1.0.0/lib/gyoku/hash.rb
    from /usr/local/bin/redlink:23:in `'
    from /usr/local/bin/redlink:23:in `load'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/bin/redlink:5:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/cli.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink.rb:8:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/endpoint.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon.rb:24:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/client.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/operation.rb:4:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/builder.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/savon-2.0.3/lib/savon/header.rb:1:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/akami-1.2.2/lib/akami.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/akami-1.2.2/lib/akami/wsse.rb:7:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/gyoku-1.0.0/lib/gyoku.rb:2:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/gyoku-1.0.0/lib/gyoku/hash.rb:3:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /var/lib/gems/1.9.1/gems/gyoku-1.0.0/lib/gyoku/array.rb:3:in `'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/var/lib/gems/1.9.1/gems/wasabi-3.0.0/lib/wasabi/core_ext/string.rb:8: warning: ambiguous first argument; put parentheses or even spaces
/var/lib/gems/1.9.1/gems/wasabi-3.0.0/lib/wasabi/core_ext/string.rb:9: warning: ambiguous first argument; put parentheses or even spaces
/var/lib/gems/1.9.1/gems/wasabi-3.0.0/lib/wasabi/core_ext/string.rb:10: warning: ambiguous first argument; put parentheses or even spaces
/var/lib/gems/1.9.1/gems/wasabi-3.0.0/lib/wasabi/document.rb:112: warning: method redefined; discarding old xml
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/configuration.rb:81: warning: instance variable @config_file not initialized
/var/lib/gems/1.9.1/gems/redlink-0.1.2/lib/redlink/configuration.rb:81: stack level too deep (SystemStackError)

Can you upload the contents of ~/.redlink (make sure to sanitize your username/password out)?

---
app_token: 5b950f6e-fc89-4b84-9046-xxxxxxxxx
username: xxxxxxxx@xxxxxxx.xxx
password: xxxx
session_id: !ruby/string:Nori::StringWithAttributes
  str: E1CAA568-8619-4315-93DD-B43226AEEXXX
  attributes: {}
session_id_expires: 2015-02-18 11:12:46.058096208 -05:00
user:
  :user_id: !ruby/string:Nori::StringWithAttributes
    str: '699591'
    attributes: {}
  :user_name: !ruby/string:Nori::StringWithAttributes
    str: xxxxxx@xxxxxx.xxxx
    attributes: {}
  :first_name: !ruby/string:Nori::StringWithAttributes
    str: Brian
    attributes: {}
  :last_name: !ruby/string:Nori::StringWithAttributes
    str: Wilson
    attributes: {}
  :language: !ruby/string:Nori::StringWithAttributes
    str: en-US
    attributes: {}

Well, glad you got it figured out. But perl? 🐫 💨

Yep, I'm old and sad.

😄 What are you using it for? I keep meaning to build something interesting with it, but I sorta ran out of gas after making a CLI for it.

I'm going to post it to Thingspeak (http://bubba.org/things/historical.html) so I can track power usage + indoor/outdoor temp. I also posted the info to the Smartthings forum (http://community.smartthings.com/t/honeywell-smart-wi-fi-thermostat-compatibility) and hoping someone updates their app to use this API instead of what they are using now. Session stuff doesn't work well. If I get more free time, I may do it, but I'm new at groovy. I really wish Honeywell would open this up more. They said they would over a year ago and still nothing.