jhurliman / homebridge-rfxcom

Homebridge plugin for RFXtrx433(E) transceivers.
MIT License
3 stars 7 forks source link

No RFY remotes configured #1

Closed qudarr closed 7 years ago

qudarr commented 7 years ago

Hi, I just got the Transceiver and it works like a charm. However, I get an error, that no RFY remotes are configured.

Can you please help?

    [2017-8-28 18:39:09] [RFYCom] WARN: No RFY remotes configured
    /usr/lib/node_modules/homebridge-rfxcom/index.js:233
    this.accessories.forEach(id => this.removeAccessory(this.accessories[id]))

config.json

{ 
  "bridge":  {
      "name": "My Homebridge",
      "username": "CC:22:3D:A3:CE:44",
      "port": 51826,
      "pin": "031-45-777"
   },

   "platforms":
   [
     {
       "platform": "RFXCom",
       "name": "RFYCom",
       "rfyremotes": [
          {
             "name" : "upstairs",
             "deviceID" : "0X040404/4",
             "openCloseSeconds": 18
          }
       ]
     }
   ]
}

I made sure to use 4/4/4 id 4 in the RFX manager in windows and I could send "up" and "down" commands.

jhurliman commented 7 years ago

Try changing "rfyremotes" to "rfyRemotes" and let me know if that fixes the issue.

qudarr commented 7 years ago

DAMN, not only was that it. I had to do what you said, but I also wrote "RFY" instead of "RFX" Thanks!

jhurliman commented 7 years ago

Glad that fixed it! I just published 1.0.2 that allows for either rfyRemotes or rfyremotes to avoid that issue in the future.

qudarr commented 7 years ago

can you tell me how I can find out, which AID and IID the new devices have?

jhurliman commented 7 years ago

@qudarr one way is to run homebridge in insecure mode (-I switch on the command line) then run curl -vvv http://localhost:51826/accessories --header "Content-Type: application/json" --header "Authorization: XXX-XX-XXX" to dump info about all attached accessories (including AID/IID). I'm not sure if there is a more convenient method.

qudarr commented 7 years ago

@jhurliman Great, thank you.

Everything is working now, just for the device "downstairs" the function "down" seems to be blocked. The iOS Home App is telling me that it is being blocked and it will not be displayed correctly.

Any idea?

Here the log:

[2017-8-28 19:48:38] Loaded plugin: homebridge-rfxcom
[2017-8-28 19:48:38] Registering platform 'homebridge-rfxcom.RFXCom'
[2017-8-28 19:48:38] ---
[2017-8-28 19:48:38] Loaded config.json with 0 accessories and 1 platforms.
[2017-8-28 19:48:38] ---
[2017-8-28 19:48:38] Loading 1 platforms...
[2017-8-28 19:48:38] [RFXCom] Initializing RFXCom platform...
Failed to find plugin to handle accessory temp_living
[2017-8-28 19:48:38] [RFXCom] Loaded from cache: upstairs Up (0x040404/4/Up)
[2017-8-28 19:48:38] [RFXCom] Loaded from cache: upstairs Down (0x040404/4/Down)
[2017-8-28 19:48:38] [RFXCom] Loaded from cache: upstairs Stop (0x040404/4/Stop)
[2017-8-28 19:48:38] [RFXCom] Loaded from cache: downstairs Up (0x040404/2/Up)
[2017-8-28 19:48:38] [RFXCom] Loaded from cache: downstairs Down (0x040404/2/Down)
[2017-8-28 19:48:38] [RFXCom] Loaded from cache: downstairs Stop (0x040404/2/Stop)
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:

    ┌────────────┐
    │ 031-45-777 │
    └────────────┘

  Accessory [My Homebridge] Creating new AccessoryInfo for our HAP server +0ms
  Accessory [My Homebridge] Creating new IdentifierCache +9ms
  EventedHTTPServer Server listening on port 51826 +43ms
[2017-8-28 19:48:38] Homebridge is running on port 51826.
  serialport write 14 bytes of data +0ms
  serialport write 14 bytes of data +508ms
  serialport write 14 bytes of data +24ms
[2017-8-28 19:48:44] [RFXCom] RFXtrx initialized, listing remotes...
  serialport write 13 bytes of data +17ms
[2017-8-28 19:48:54] [RFXCom] Received 2 remote(s) from device
[2017-8-28 19:48:54] [RFXCom] Adding RFY switch 0x040404/4/Up
[2017-8-28 19:48:54] [RFXCom] upstairs Up (0x040404/4/Up) removed from HomeBridge.
[2017-8-28 19:48:54] [RFXCom] Updating switch 0x040404/4/Up, on=false
[2017-8-28 19:48:54] [RFXCom] Adding RFY switch 0x040404/4/Down
[2017-8-28 19:48:54] [RFXCom] upstairs Down (0x040404/4/Down) removed from HomeBridge.
[2017-8-28 19:48:55] [RFXCom] Updating switch 0x040404/4/Down, on=false
[2017-8-28 19:48:55] [RFXCom] Adding RFY switch 0x040404/4/Stop
[2017-8-28 19:48:55] [RFXCom] upstairs Stop (0x040404/4/Stop) removed from HomeBridge.
[2017-8-28 19:48:55] [RFXCom] Updating switch 0x040404/4/Stop, on=false
[2017-8-28 19:48:55] [RFXCom] Added accessories for RFY remote 0x040404/4
[2017-8-28 19:48:55] [RFXCom] Adding RFY switch 0x040404/2/Up
[2017-8-28 19:48:55] [RFXCom] downstairs Up (0x040404/2/Up) removed from HomeBridge.
[2017-8-28 19:48:55] [RFXCom] Updating switch 0x040404/2/Up, on=false
[2017-8-28 19:48:55] [RFXCom] Adding RFY switch 0x040404/2/Down
[2017-8-28 19:48:55] [RFXCom] downstairs Down (0x040404/2/Down) removed from HomeBridge.
[2017-8-28 19:48:55] [RFXCom] Updating switch 0x040404/2/Down, on=false
[2017-8-28 19:48:55] [RFXCom] Adding RFY switch 0x040404/2/Stop
[2017-8-28 19:48:55] [RFXCom] downstairs Stop (0x040404/2/Stop) removed from HomeBridge.
[2017-8-28 19:48:55] [RFXCom] Updating switch 0x040404/2/Stop, on=false
[2017-8-28 19:48:55] [RFXCom] Added accessories for RFY remote 0x040404/2
  EventedHTTPServer [::ffff:192.168.178.27] New connection from client +26s
  EventedHTTPServer [::ffff:192.168.178.27] HTTP server listening on port 35393 +3ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /pair-setup +47ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-setup +2ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair step 1/5 +19ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2s
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /pair-setup +501ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-setup +1ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair step 2/5 +4ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2s
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /pair-setup +83ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-setup +1ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair step 3/5 +1ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair step 4/5 +20ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair step 5/5 +4ms

Event when it is paired with my iPhone Accessory [My Homebridge] Paired with client 4E298F70-7B84-4606-B575-524EBCD24685 +9ms

  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +5ms
  EventedHTTPServer [::ffff:192.168.178.27] Client connection closed +22ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP connection was closed +6ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP server was closed +1ms
  EventedHTTPServer [::ffff:192.168.178.27] New connection from client +5ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP server listening on port 45235 +0ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /pair-verify +7ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-verify +0ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair verify step 1/2 +3ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +18ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /pair-verify +33ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-verify +0ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair verify step 2/2 +2ms
  HAPServer [CC:22:3D:E3:CE:AB] Client 4E298F70-7B84-4606-B575-524EBCD24685 verification complete +9ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /accessories +21ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /accessories +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +10ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=4.9,3.9,6.9,5.9,8.9,2.9,7.9 +4s
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=4.9,3.9,6.9,5.9,8.9,2.9,7.9 +1ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +12ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +2ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +1ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +0ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +1ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +0ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  Accessory [My Homebridge] Getting value for Characteristic "Current Temperature" +1ms
  Accessory [My Homebridge] Got Characteristic "Current Temperature" value: 0 +1ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +0ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +4ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +130ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":3,"iid":9,"ev":true}] +4ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +4ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +18ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":3,"iid":9,"ev":true}] +1ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +3ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +141ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":2,"iid":9,"ev":true}] +1ms
  Accessory [My Homebridge] Registering Characteristic "Current Temperature" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +16ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":2,"iid":9,"ev":true}] +1ms
  Accessory [My Homebridge] Registering Characteristic "Current Temperature" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +150ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":4,"iid":9,"ev":true}] +1ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +20ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":4,"iid":9,"ev":true}] +2ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +140ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":5,"iid":9,"ev":true}] +2ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +12ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":5,"iid":9,"ev":true}] +2ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +17ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":6,"iid":9,"ev":true}] +2ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +148ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +2ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":6,"iid":9,"ev":true}] +3ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +4ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +126ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +0ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":8,"iid":9,"ev":true}] +2ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +154ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +0ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":8,"iid":9,"ev":true}] +1ms
  Accessory [My Homebridge] Registering Characteristic "On" for events +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +1s
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +0ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":1,"iid":2,"value":true}] +2ms
  Accessory [My Homebridge] Setting Characteristic "Identify" to value true +2ms
  Accessory [My Homebridge] Identification request +1ms
  Accessory [My Homebridge] Identification request ignored; no listeners to 'identify' event +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +7ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=6.9 +6s
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=6.9 +1ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +2ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +391ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +1ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":6,"iid":2,"value":true}] +2ms
  Accessory [My Homebridge] Setting Characteristic "Identify" to value true +0ms
  Accessory [downstairs] Identification request +2ms
[2017-8-28 19:49:21] [RFXCom] downstairs Up identify requested, paired=true
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +6ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=6.9 +2s
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=6.9 +0ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +2ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=6.9 +889ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=6.9 +0ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +11ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.44] New connection from client +2s
  EventedHTTPServer [::ffff:192.168.178.44] HTTP server listening on port 39283 +0ms
  EventedHTTPServer [::ffff:192.168.178.44] HTTP request: /pair-verify +15ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-verify +1ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair verify step 1/2 +1ms
  EventedHTTPServer [::ffff:192.168.178.44] HTTP Response is finished +25ms
  EventedHTTPServer [::ffff:192.168.178.44] HTTP request: /pair-verify +205ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: POST /pair-verify +1ms
  HAPServer [CC:22:3D:E3:CE:AB] Pair verify step 2/2 +2ms
  HAPServer [CC:22:3D:E3:CE:AB] Client 4E298F70-7B84-4606-B575-524EBCD24685 verification complete +6ms
  EventedHTTPServer [::ffff:192.168.178.44] HTTP Response is finished +4ms
  EventedHTTPServer [::ffff:192.168.178.44] HTTP request: /accessories +16ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /accessories +0ms
  EventedHTTPServer [::ffff:192.168.178.44] HTTP Response is finished +32ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=8.9 +324ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=8.9 +0ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +1ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +0ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics +495ms
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: PUT /characteristics +0ms
  Accessory [My Homebridge] Processing characteristic set: [{"aid":8,"iid":2,"value":true}] +2ms
  Accessory [My Homebridge] Setting Characteristic "Identify" to value true +1ms
  Accessory [downstairs] Identification request +1ms
[2017-8-28 19:49:27] [RFXCom] downstairs Stop identify requested, paired=true
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +4ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=8.9 +1s
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=8.9 +0ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +2ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +1ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +2ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP request: /characteristics?id=8.9 +4s
  HAPServer [CC:22:3D:E3:CE:AB] HAP Request: GET /characteristics?id=8.9 +0ms
  Accessory [My Homebridge] Getting value for Characteristic "On" +2ms
  Accessory [My Homebridge] Got Characteristic "On" value: false +0ms
  EventedHTTPServer [::ffff:192.168.178.27] HTTP Response is finished +3ms

Here the config.json:

{
   "bridge":
   {
      "name": "My Homebridge",
      "username": "CC:22:3D:E3:CE:AB",
      "port": 51826,
      "pin": "031-45-777"
   },

   "platforms":
   [

     {
       "platform": "RFXCom",
       "name": "RFXCom",
       "rfyRemotes": [
          {
             "name" : "upstairs",
             "deviceID" : "0x040404/4",
             "openCloseSeconds": 10
          },
          {
             "name" : "downstairs",
             "deviceID" : "0x040404/2",
             "openCloseSeconds": 10

          }
       ]
     }
   ]
}
jhurliman commented 7 years ago

I haven't seen that issue before. Although, in my setup I only have a single RFY remote so it's not an exact comparison. Please let me know if you get it sorted out. Otherwise, open a new issue for the problem?

qudarr commented 7 years ago

Hi @jhurliman,

I found that I don't need both the switches "down" and "stop" as they essentially do the same in my case. One click turns on the downward motion, another stops it. So altogether the interface is cleaner with only two switches.

However, after playing around a bit, I found that my iOS 11 Beta 7 devices will lose connection with the homebridge, while iOS 10 devices will keep on working normally.

So this might be something you might check.

jhurliman commented 7 years ago

I'm running iOS 11 beta 7 myself and haven't seen that issue yet. The hap-nodejs and homebridge teams have been working on some reliability fixes recently; it would be worth checking if you are running the most recent release of homebridge.

As far as the unnecessary switch, I can make it a per-remote config option to create that switch or not. In some cases it is useful as it doubles as a stop + "my" button, which sets the blinds/awning to a user-configured position. It sounds like there are cases where that button doesn't exist (or doesn't need to exist), though.

If you are comfortable with code changes feel free to submit a pull request, otherwise I should be able to get to it in a few days.