nfarina / homebridge-sonos

Sonos plugin for homebridge: https://github.com/nfarina/homebridge
155 stars 52 forks source link

Raspberry Pi B - No error but many "undefined" - no Sonos accessories defined #19

Open skibum333 opened 8 years ago

skibum333 commented 8 years ago

Running HomeBridge on Raspberry Pi Model B. HomeBridge runs but not Sonos device/accessory is defined. MyTouchHome App shows my Sonos speakers but does not allow any interaction. It eventually gives an "Unreachable" message concerning the accessory.

From the error log file, these three "undefined" messages appear many times. Sonos.getZoneAttrs are all undefined Sonos.getZoneInfo are all undefined Sonos.getTopology are all undefined

Running: raspberrypi 4.1.13+ on armv6l node v5.5.0 npm v3.6.0 homebridge v0.2.16 homebridge-sonos v0.0.4

From the "home bridge.log" file, the five Sonos speakers are read but never "Found a playable coordinator device": Loading 5 accessories... [Office Speakers] Initializing Sonos accessory... [Kitchen Speaker] Initializing Sonos accessory... [Pool Speaker] Initializing Sonos accessory... [Livingroom Speakers] Initializing Sonos accessory... [TV Room] Initializing Sonos accessory... Scan this code with your HomeKit App on your iOS device to pair with Homebridge: ... Homebridge is running on port 51826.

The edited "homebridge.err" file is printed below for reference. ... EventedHTTPServer Server listening on port 51826 sonos Sonos.getZoneAttrs(undefined, %j) sonos Sonos.request("/DeviceProperties/Control", "\"urn:schemas-upnp-org:service:DeviceProperties:1#GetZoneAttributes\"", "\"<u:GetZoneAttributes xmlns:u=\"urn:schemas-upnp-org:service:DeviceProperties:1\">/u:SetZoneAttributes\"", "u:GetZoneAttributesResponse", undefined) ... sonos Sonos.getZoneInfo(undefined) sonos Sonos.request("/DeviceProperties/Control", "\"urn:schemas-upnp-org:service:DeviceProperties:1#GetZoneInfo\"", "<u:GetZoneInfo xmlns:u=\"urn:schemas-upnp-org:service:DeviceProperties:1\">/u:GetZoneInfo", "u:GetZoneInfoResponse", undefined) ... sonos Sonos.getTopology(undefined) ... EventedHTTPServer [::ffff:192.168.1.33] New connection from client EventedHTTPServer [::ffff:192.168.1.33] HTTP server listening on port 54826 sonos <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="/xml/review.xsl"?>

Master Bathroom ...more speakers.... George iPhone 5 ... multiple MediaServer locations (both iOS and Android devices) ...

... sonos Sonos.getTopology(undefined) sonos Sonos.getTopology(undefined)

Any help is greatly appreciated. Thanks

fwboettger commented 8 years ago

@skibum333 - could you please share your config.json as well as access one of the sonos' devices web interface at http://:1400/status/topology (replace with an applicable IP address) and post the results within "Zone Players"?

skibum333 commented 8 years ago

Hello @fwboettger - I've made a slight modification to my initial config.json file. I removed the references to any ConnectAmps. I do not have anything paired at this moment (when I've launched homebridge). Now I only have one Play5 (previous generation) defined in the config.json file and still have the same results.

Here's the config.json file: { "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" },

"description": "just a description",

"accessories": [
{
    "accessory":    "Sonos",
    "name":     "Pool Speaker",
    "room":     "POOL"
}
]

}

Here's the complete Zone Players file (text and attached screenshot): Zone Players Zone Name Coordinator Group Location UUID Version MinCompatVer Compat WiMode HasSSID WiFreq WiEna BeEx Salon true RINCON_000E5831B69401400:172 http://192.168.1.53:1400/xml/device_description.xml RINCON_000E5831B69401400 31.3-22220 29.0-00000 0 0 2437 1 0 TV Room true RINCON_000E5810DC9801400:45 http://192.168.1.67:1400/xml/device_description.xml RINCON_000E5810DC9801400 31.3-22220 29.0-00000 0 0 2437 1 0 Master Bathroom true RINCON_B8E937507ACC01400:58 http://192.168.1.38:1400/xml/device_description.xml RINCON_B8E937507ACC01400 31.3-22220 29.0-00000 0 0 2437 1 0 Cristina Bedroom true RINCON_000E58C2F94001400:51 http://192.168.1.50:1400/xml/device_description.xml RINCON_000E58C2F94001400 31.3-22220 29.0-00000 0 0 2437 1 0 Taller true RINCON_B8E93755D14601400:38 http://192.168.1.66:1400/xml/device_description.xml RINCON_B8E93755D14601400 31.3-22220 29.0-00000 0 0 2437 1 0 Estudio true RINCON_B8E93755CE5401400:49 http://192.168.1.64:1400/xml/device_description.xml RINCON_B8E93755CE5401400 31.3-22220 29.0-00000 0 0 2437 1 0 Despacho true RINCON_B8E937304ECE01400:79 http://192.168.1.42:1400/xml/device_description.xml RINCON_000E583B5ECA01400 31.3-22220 29.0-00000 0 0 2437 1 0 Marisol Baño true RINCON_B8E93786BF0A01400:14 http://192.168.1.57:1400/xml/device_description.xml RINCON_B8E93786BF0A01400 31.3-22220 29.0-00000 0 0 2437 1 0 Cocina true RINCON_B8E937304ECE01400:80 http://192.168.1.51:1400/xml/device_description.xml RINCON_B8E937304ECE01400 31.3-22220 29.0-00000 0 0 2437 1 0 Pool true RINCON_000E5882D19201400:19 http://192.168.1.65:1400/xml/device_description.xml RINCON_000E5882D19201400 31.3-22220 29.0-00000 0 0 2437 1 0

Attached is a screenshot of the "Zone Player" taken from the "Pool" Play5 (IP 192.168.1.65).

sonos_zone_players

The last two attached files are: homebridge.log (attached as LOG_output.gz) and homebridge.err files (attached as ERR_output.gz).

Any help is greatly appreciated.

ERR_output.gz LOG_output.gz

skibum333 commented 8 years ago

Hello @fwboettger - This evening, I updated my Sonos system version with the App. Now, the version stated on the Zone Player screen indicates that I have version 31.9-26010 instead of 31.3-22220 from earlier today.

I still have the same issue as before with home bridge.

Thanks, George

fwboettger commented 8 years ago

@skibum333 - kindly rename please the 'room' parameter value in your config.json from "POOL" to "Pool" (needs to be an exact match, i.e. not all capital letters in config.json, to the room/zone name in your Sonos setup). Believe this will resolve your situation, if not please let me know.

skibum333 commented 8 years ago

Hello @fwboettger. I've made the change as you suggested and now it finds the "Rooms". Thanks.

I have most of the Players added to the config.json file and it finds them all. I have removed all the ConnectAmp players and one Play:1. The Play:1 has an "ñ" in the name ... just in case.

Also, I erased the ".homebridge/persist" folder before starting homebridge.

After 10min, homebridge crashes with the following error: events.js:154 throw er; // Unhandled 'error' event ^

Error: socket hang up at createHangUpError (_http_client.js:206:15) at Socket.socketOnEnd (_http_client.js:298:23) at emitNone (events.js:85:20) at Socket.emit (events.js:179:7) at endReadableNT (_stream_readable.js:906:12) at nextTickCallbackWith2Args (node.js:474:9) at process._tickCallback (node.js:388:17)

As HomeBridge client, I have both the MyTouchHome and HMCatalog, compiled by me. For the clients, I can see the "Homebridge" accessory but cannot add it to the App.

Here's the updated config.json file and attached are the homebridge.err and homebridge.log zipped files: { "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" },

"description": "Description of config.json file",

"accessories": [
{
    "accessory":    "Sonos",
    "name":     "Pool Speaker",
    "room":     "Pool"
},
{
    "accessory":    "Sonos",
    "name":     "Bathroom Speaker",
    "room":     "Master Bathroom"
},
{
    "accessory":    "Sonos",
    "name":     "Cristina Speaker",
    "room":     "Cristina Bedroom"
},
{
    "accessory":    "Sonos",
    "name":     "Kitchen Speaker",
    "room":     "Cocina"
},
{
    "accessory":    "Sonos",
    "name":     "Taller Speaker",
    "room":     "Taller"
},
{
    "accessory":    "Sonos",
    "name":     "Studio Speaker",
    "room":     "Estudio"
}
]

}

homebridge.err.gz homebridge.log.gz

fwboettger commented 8 years ago

@skibum333 a) which version of homebridge-sonos are you using (0.0.4, or maybe already the improvement suggestions in index.js as per pull request https://github.com/nfarina/homebridge-sonos/pull/15)? b) have you tried multiple times, and it's crashing always after approx. 10 minutes? c) any chance you could try with another homekit app as well? I've purchased Home, myHome and PowerHouz, don't have MyTouchHome or HMCatalog myself.

skibum333 commented 8 years ago

Hello @fwboettger, once more.

I rebooted the RaspberryPi and it's running fine now. Thanks for your help. I'm running: homebridge v0.2.16 homebridge-sonos v0.0.4

I'm able to add the accessories to the App. Using the App, I can turn on and off the speakers. Also, I can adjust the volume.

I'll add the ConnectAmps later today and see how it goes.

fwboettger commented 8 years ago

@skibum333 - cool!

I suspect the error you experienced earlier is related to some speaker (and thus eventually homebridge) loosing network connection. It thus might come up again, but might take a few days. The homebridge-sonos plugin is using the node-sonos library, not sure if this can (or should) be handled in this library actually. i'm currently investigating.... (for your reference: see also https://github.com/bencevans/node-sonos/issues/121).