Multiple householdId's among units controllable from one Sonos mobile app? - sonos

I have 3 Sonos units controllable from my Sonos Android app: A, B, and C.
A and B return one householdId from http://<ip>:1400/info, but C returns a different householdId.
From the Sonos Android app (slightly abridged):
About My Sonos System
Controller
Version: 10.2 (build 50165071)
Sonos A
Play:1
Version: 10.2 (build 50165071)
Hardware Version: 1.20.1.601
Series Id: A200
Sonos B
Play:1
Version: 10.2 (build 50165071)
Hardware Version: 1.20.1.601
Series Id: A200
Sonos C
Play:1
Version: 10.2 (build 50165071)
Hardware Version: 1.20.1.601
Series Id: A200
Below are the two household IDs I observed. Of note, the strings only differ after the '.'
Sonos_K9Coj5AnNdwkpeGiArYtMHF4ug.6M_0OEa8aOhO-j2oZUMF
Sonos_K9Coj5AnNdwkpeGiArYtMHF4ug.WOnnBPGSlfiyINzEybJL
$ curl http://192.168.5.33:1400/info && echo && curl http://192.168.9.42:1400/info && echo && curl http://192.168.5.71:1400/info && echo
{"websocketUrl":"wss:\/\/192.168.5.33:1443\/websocket\/api","playerId":"RINCON_7828CA92D6B201400","householdId":"Sonos_K9Coj5AnNdwkpeGiArYtMHF4ug.6M_0OEa8aOhO-j2oZUMF","groupId":"RINCON_7828CA92D6B201400:2486844229","apiVersion":"1.12.2","minApiVersion":"1.1.0"}
{"websocketUrl":"wss:\/\/192.168.9.42:1443\/websocket\/api","playerId":"RINCON_949F3E8AE0D601400","householdId":"Sonos_K9Coj5AnNdwkpeGiArYtMHF4ug.WOnnBPGSlfiyINzEybJL","groupId":"RINCON_949F3E8AE0D601400:1922741597","apiVersion":"1.12.2","minApiVersion":"1.1.0"}
{"websocketUrl":"wss:\/\/192.168.5.71:1443\/websocket\/api","playerId":"RINCON_7828CA92D67801400","householdId":"Sonos_K9Coj5AnNdwkpeGiArYtMHF4ug.WOnnBPGSlfiyINzEybJL","groupId":"RINCON_7828CA92D67801400:3241438112","apiVersion":"1.12.2","minApiVersion":"1.1.0"}
I expect all of these units to be in the same household, and thus have the same household ID, since they are all controllable from my Sonos Android app.

Player C may be joined to a different network. From the Control documentation:
Each household is represented by a householdId. The householdId is stable with one exception. The value will change if players are moved to a different network. For example, if a user moves some players from a household to a different network, the players that were moved will use a different householdId. If all of the players in a household are moved to a different network, the householdId will remain the same.
Turn off the router that Player C is connected to and join it to the same network as the others. See Connecting Sonos to a new router or WiFi network for details.

Looks like they all have the same household id at the Player level (which is the part before the period), but the Cloud API thinks you have two households.
Sadly Sonos don't offer any kind of account-admin page that lets you see which apps are registered for their API, as then you could delete your account there and re-add it.
Something else to try: create a new API secret/key and login to that one with the same Sonos account, to see if the duplicate data occurs then.

Related

Include device information in "Export Ids"

In the Crashlytics tab in the Fabric dashboard, I can filter issues by device and OS. However, when I click on an issue it seems that I see all issues for all devices and OSes, and when I export IDs I get all IDs, not filtered, and don't get any device information in that list. Is there a way to get just the IDs for the devices and OSes for which I filtered, or to include device and OS information in the exported IDs?
We don't have Answers/Events setup, so that information isn't there. We also don't have any custom keys for sending Android device information.
Mike from Fabric here. No, there is not a way to apply the OS and Device filters to the list of User Ids currently. Will let the team know you'd like this added.

how to build a restcomm conference application

I want to build a simple conferencing application with Restcomm. I used example XMLs provided with restcomm to start conference and add participants to a conference, I needed two phone numbers to do it.
I have following questions for this:
1. Do I always need to dial a phone number to start the conference? Doesn't Restcomm provide any API to start the conference via HTTP.
2. How can I use the same application to start the conference and also add participants to conference. In the example XML with restcomm, there are two XMLs provided for conferencing (one to start the conference and other to add participant), doesn't it mean that I'll have to use two different phone numbers then for a single conference?

Is it possible to Access all Beacons with ibeacon API?

i'm close to finish an App using Estimote beacons having their UUID
hardcoded in my project which list out all the Estimote beacons using ibeacon API, but when i'm trying to make my own device as a beacon transmitter using the Device UUID, which is differ from the estimote UUID, i cannot find it, as the UUID which i mentioned in the code is Estimote's.
So my question is , is there any way that i can find all the beacons(Ex- Estimote Beacons, Kontakt Beacons, Blue cat Beacons and ibeacon hardware) which i can track with apple's ibeacon API?
With same code i wanted to track all beacons without hardcoding any UUID?
is it possible?
No,Apple has put restriction on finding of unknown Ibeacon .You can not find any unknown beacon.Though there are some hacks which are not that effective.Also there can not be more than one Udid a app region can contain.What you can do either is that ask the user what Udid he wants to monitor then the app can range for it.
Sorry for wrong spelling if any..
No, you must tell CoreLocation the ProximityUUID of any iBeacon you want your app to see or it will not tell you about it. See http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html
This does not mean you need to hardcode every UUID in your app. Doing so would require you to resubmit the app for approval each time you add an iBeacon with another UUID.
An alternative is to use a web service to give you a list of UUIDs to search for. You can build your own, or use my company's ProximityKit service that does this for you.
I wrote a test bench app for my company that has an array of UUIDs. It saves a default set of UUIDs to user defaults using the registerDefaults call.
The user can then create new UUIDs at will, as well as sharing them with other devices. (I Use a UIActivity, so you can share via AirDrop, messages, email, etc.)
It lets you input a UUID as hex digits, or you can tap a "create new UUID" button to generate a new UUID.
I included the Estimote UUID as well as the 3 UUIDs Apple includes, and a couple of unique ones.
Our test bench app then uses the list of UUIDs for both transmitting and receiving beacon IDs.
So while the UUIDs are stored locally, they are not hard-coded.
You could certainly also fetch a list of UUIDs from a web service as David proposes, or use iCloud to fetch a user-defined list of IDs across all devices that use the same AppleID.
A bitter truth for those who want to discover arbitrary iBeacons and their uuids.
There doesn't seem to be any hack to look for an arbitrary iBeacon on iOS -- you have to know at least the ProximityUUID to see one.
Using CoreBluetooth is pretty useless for working with iBeacons. You can see their advertisements, and measure the signal strength, but you can't see any of the identifiers, and thus, you don't even know for sure if any advertisement you see is an iBeacon at all, versus any other BluetoothLE device.

CoreBluetooth - get all devices connected to Bluetooth peripheral

Is there a way how to get list of all devices connected to the Bluetooth peripheral?
I want to connect to iBeacon and check if another iPhone is connected to it.
No, two reasons why not:
iBeacons are not connected to the iOS device, iBeacons are broadcast only and no back communication exist from the phone to the beacon.
Knowing details of other BT 4.0 Centrals connected to a Peripheral are not in line with the the privacy features of Bluetooth 4.0. iOS and other Centrals are are using resolvable private addresses, in order to avoid situation like you are describing.
#barbazoo is correct that you cannot do exactly what you are asking because iBeacons only transmit data -- they have no idea what devices see them.
You can accomplish something similar, however, if you have an app running on each of the iOS devices you mention, and you have a server where you can build a web service. The web service would expose two methods:
reportIBeaconVisible(iBeaconProximityUUID, iBeaconMajor, iBeaconMinor, myPhoneAdvertisingId)
queryVisiblePhones(iBeaconProximityUUID, iBeaconMajor, iBeaconMinor)
The app would report each iBeacon it sees using the first method, passing the iBeacon's identifiers, along with the phone's advertising identifier to the server.
The app could then use the second method to ask the server what other phones have seen the exact same iBeacon, which would return a list of phone advertising identifiers.
You'd have to have logic on the phone to only report data to the server at a reasonable frequency. You'd also need code on the server to automatically delete phone records in the list if the phones haven't reported seeing a beacon in a certain time interval.

How to pass data to another app constantly in iOS?

I just want to know that is it possible to communicate two different apps in different device. Like I have a sample app in device A App name A and in another device B i have a app B I want to share some things between them. I came across to GameKit framework in iOS but I made a app when it is installed in both device they communicate succesfully but what if apps are different and what is the size limit of the data to send it over bluetooth in iOS.
Any idea how to implement this feature?
Two different apps can communicate via Bluetooth using GameKit as long as they both agree on the protocol (i.e. if you wrote both apps, or you know what protocol the other app is using).
There's no limit to the amount of data they can exchange, although there is obviously an upper limit on bandwidth (bytes per second).
Does that help?