Bluesound Node2

It took me a while to work this out from various sources so I thought I’d leave this information here for anyone trying to control their own unit.

The Bluesound Node2 responds to http requests on port 11000. There is some really good information on what you can retrieve and update here.

Here is my node2.items file which uses XPATH transforms to retrieve information from the status xml file.

Switch Node2_Play "Play" {http=">[ON:GET:http://192.168.1.49:11000/Play] >[OFF:GET:http://192.168.1.49:11000/Stop]"}
Switch Node2_NME "NME" {http=">[ON:GET:http://192.168.1.49:11000/Preset?id=1] >[OFF:GET:http://192.168.1.49:11000/Stop]"}
String Node2_Status "Status [%s]" <player> {http="<[http://node2:11000/Status:2000:XPATH(/status/state)]"}
String Node2_Title1 "Title [%s]"  { http="<[http://node2:11000/Status:2000:XPATH(/status/title1)]" }
String Node2_Title2 "Artist [%s]"  { http="<[http://node2:11000/Status:2000:XPATH(/status/title2)]" }
String Node2_Title3 "Album [%s]"  { http="<[http://node2:11000/Status:2000:XPATH(/status/title3)]" }

Let me know if you need any more information on getting this working. It works sweet for me.

Cheers, Tim

3 Likes

Hey @timwelch

I’m new to OpenHAB. The items file works, but i cannot add it to the control panel in Paper UI. I think i need to add a .things file, but not sure how. Can anybody help?

I know this is the format

Thing <binding_id>:<type_id>:<thing_id> "Label" @ "Location" [ <parameters> ]

However I’m not sure what any of them are. I assume that node2=[IP OF Node2] in the parameters, label and location also makes kinda sense, but binding id, type id and thing id???

To be honest I’ve never tried using PaperUI as a control medium and therefore have never tried adding manually added items to it.

I use the Habpanel UI and I can easily add each control in there as desired…

For example using a custom template I use the following to show what is playing

<div ng-if="itemValue('Node2_Status')=='stream'">
  <img src="{{itemValue('Node2_Image')}}" height="220px" width="220px" />
</div>
<div ng-if="itemValue('Node2_Status')=='stream'">
{{itemValue('Node2_Title')}}<br/>
{{itemValue('Node2_Artist')}}<br/>
{{itemValue('Node2_Album')}}<br/>
</div>
<div ng-if="itemValue('Node2_Status')!='stream'">
NODE2 Paused
</div>
1 Like

Okay, thanks.

Not exactly what i was looking for, but thanks!

Seems that a new API document is available now for further integration.

1 Like

Awesome! This document is gold!