ebaauw / homebridge-zp

Homebridge plugin for Sonos ZonePlayer
Apache License 2.0
241 stars 20 forks source link

feature request - if possible #172

Closed Donni1966 closed 3 years ago

Donni1966 commented 3 years ago

Hi,

i have a Sonos Roam since today, and a simple question: if it possible, is there a way to get the battery level, lo Battery as characteristics in the Homebridge/HomeKit?

ebaauw commented 3 years ago

Dunno, does it show in the Sonos app?

Could you please run

$ zp -H x.x.x.x description -S > description.json
$ gzip description.json

substituting the IP address of the Roam for x.x.x.x, and attach description.json.gz? That lists the definition of the API provided by the Beam; if the battery level is reported, the corresponding API call should be documented in there.

Donni1966 commented 3 years ago

Hi,

yes it ist shown in the app ...

here the file description.json.gz

but i not found the battery Info :-(

ebaauw commented 3 years ago

Is that when the app connects to the Beam over Wifi, or when it connects over Bluetooth?

I would half expect the battery level to be in the DeviceProperties service, but I cannot find it either. Are you able to sniff the network traffic between the Sonos app and the Beam?

Donni1966 commented 3 years ago

good question :-D i get the speaker today, implement him in Homebridge and do this in the first step via wifi. I do not test bluetooth.

i can try this tomorrow.

do not it helping you. With node-red an sonosevents-selection platte i get a more info field

{"AirPlayEnabled":true,"BehindWifiExtender":0,"ChannelFreq":5200,"Configuration":1,"HasConfiguredSSID":true,"Invisible":false,"IsIdle":false,"IsZoneBridge":false,"LastChangedPlayState":"PLAYING,,,","MicEnabled":1,**"MoreInfo":"BattChg:NOT_CHARGING,RawBattPct:79,BattPct:82,BattTmp:35"**,"Orientation":4,"RoomCalibrationState":4,"SecureRegState":3,"SettingsReplicationState":"RINCON_000E58F4294601400,139,RINCON_FFFFFFFFFFFF99999,0,RINCON_48A6B824483C01400,42,RINCON_48A6B824483C01400,4,RINCON_7828CA1182EA01400,1055,RINCON_7828CA1182EA01400,227,RINCON_B8E937580ECA01400,1432,RINCON_FFFFFFFFFFFF99999,0,RINCON_48A6B824483C01400,8,RINCON_FFFFFFFFFFFF99999,0,RINCON_949F3EC1F29001400,51,RINCON_949F3EC1F29001400,6978,RINCON_7828CAD231EA01400,7,RINCON_949F3EC1F29001400,11,RINCON_000E58A65ED601400,0,RINCON_B8E937580ECA01400,128,RINCON_000E58F4294601400,0","SupportsAudioClip":true,"SupportsAudioIn":false,"VoiceConfigState":2,"WifiEnabled":true,"WirelessLeafOnly":false,"WirelessMode":1,"ZoneName":"Mobil"}

here "MoreInfo":"BattChg:NOT_CHARGING,RawBattPct:79,BattPct:82,BattTmp:35"

so this may be a part of the device infos.

okay .. now with bluetooth. no changes i think:

description.json.gz

ebaauw commented 3 years ago

That is helpful. No need to sniff the app, I guess.

Can you do a zp -H x.x.x.x eventlog and copy/paste the DeviceProperties event? Of course particularly interested in the moreInfo attribute.

And could you also do that while charging the Beam? And if you leave it running (overnight), do you see multiple DeviceProperties events as the battery charges or depletes?

Donni1966 commented 3 years ago

no problem ... :-)

description.json.gz

the roam is charing at the moment i take the log

Donni1966 commented 3 years ago

And could you also do that while charging the Beam? And if you leave it running (overnight), do you see multiple DeviceProperties events as the battery charges or depletes?

Yes in node-red i debug this. If you disconnect oder the level is change, there is an new output with changed events. I try this some times.

is this helping you?

ebaauw commented 3 years ago

That's looking really good. Their API is a headache, but all the required info is in there.

Donni1966 commented 3 years ago

fine - you are the best. really good support!

i will be waiting if you can put the battery service in the Homebridge object. Thanx a lot!

ebaauw commented 3 years ago

Could you try beta v1.2.3-0?

For zone players that report battery info in moreInfo:

Could you please capture a debug log file (see https://github.com/ebaauw/homebridge-hue/wiki/FAQ#homebridge) and attach that here, so I can check whether it works as intended. I don't have a Roam to test myself.

Donni1966 commented 3 years ago

Hi and good evening :-)

Great Work ... it works ... see the attachment. With the log.

i change volume, skip, stop play an plug unplug power. hope this helps you? Bildschirmfoto 2021-04-20 um 21 13 17 Bildschirmfoto 2021-04-20 um 21 21 29 homebridge.log.txt

ebaauw commented 3 years ago

Thanks. I don't see any update of the battery status in the log. Did you connect the Roam to the power while Homebridge was running? And did the status in the Home app change?

Donni1966 commented 3 years ago

Yes ... plug in and plug out one time. But you are wright ... not update the status. In the Sonos App there is a new battery Level same time the HK Obejkt still keep in the same level. Also the plug in or plug out will only recognize if you restart the HB. homebridge.log-2.txt Bildschirmfoto 2021-04-20 um 21 39 10

and it loose the room assignment after restart ZP oder the complete HB.

edit:

i play a little bit ... the Sonos app do also only change the battery level if you plug out and in. otherwise it stay stable on the last value

ebaauw commented 3 years ago

Yes ... plug in and plug out one time. But you are wright ... not update the status. In the Sonos App there is a new battery Level

I think I found the cause of that. Could you try v1.2.3-1?

and it loose the room assignment after restart ZP oder the complete HB.

I'm afraid that's a known bug, see #139. Until I've solved that, best make sure your zone players are reachable when (re-)starting Homebridge. I suppose it's worse with the Roam, since it's not always connected to the network.

Donni1966 commented 3 years ago

the room assignment is not a big problem ...

hier i connect und reconnect the power

[20/04/2021, 22:19:31] [Sonos] initialised [20/04/2021, 22:19:33] [Sonos] RINCON_542A1B46881A01400 [Mobil]: event: NOTIFY ZoneGroupTopology/Event [20/04/2021, 22:19:54] [Sonos] RINCON_542A1B46881A01400 [Mobil]: event: NOTIFY DeviceProperties/Event [20/04/2021, 22:19:54] [Sonos] RINCON_542A1B46881A01400 [Mobil]: event: NOTIFY ZoneGroupTopology/Event [20/04/2021, 22:19:56] [Sonos] RINCON_542A1B46881A01400 [Mobil]: event: NOTIFY DeviceProperties/Event [20/04/2021, 22:19:56] [Sonos] RINCON_542A1B46881A01400 [Mobil]: event: NOTIFY ZoneGroupTopology/Event

But the Level not updated. In Sonos 95 in HB 90 ... also the unplug process is not recognize.

In the Sonos app an a mac mini - there is not display for loading process in then App on iPhone - there is.

[Uploading homebridge.log-3.txt…]()

ebaauw commented 3 years ago

Could you try v1.2.3-2? It should log the full ZoneGroupTopology and DeviceProperties events.

Somehow, the log file 3 isn't attached?

Donni1966 commented 3 years ago

ups .. okay ...

homebridge.log-3.txt

i try the new version - at the moment the box is on 100% so after the restart HB is keeps this value, but not recognize the plug unplug process.

the log 4 ...

homebridge.log-4.txt

ebaauw commented 3 years ago

Hm, the events contain what I expected, and the XML parser decodes the battery info. I suppose it just takes the Roam some time to update its battery and charging state? Do you use a plug or wireless charging? Maybe just leave the Roam unplugged overnight and check in the morning whether the value has changed.

Could you also check that zp info displays the same percentage as Home?

The iOS Sonos app contains more functionality than the macOS Sonos app. I think they're slowly phasing out the macOS app and I would't be surprised if it doesn't fully support the battery. Could also be that the iOS app communicates with the Roam over Bluetooth as well. Does it still update the state when you disable Bluetooth on the iPhone?

Donni1966 commented 3 years ago

Hi,

i take the Roam with me today, play with bluetooth and run down zu 57%. Come back at home an switch the roam an. before do this i run a tail at Homebridge log for grep Sonos. Result lot of messages ... nothing from roam ( call Mobile in my app) a lot of other messages from Sonos. so ich try zeichen of on, Bluetooth away, on, plug unplug power, play Musik, regulation volume and what ever. In the Home App status okay, but ne reconize any control. so what - restart HB and status is fine, and usage in Home app also regulation Volume and on go.

Hm, the events contain what I expected, and the XML parser decodes the battery info. I suppose it just takes the Roam some time to update its battery and charging state? Do you use a plug or wireless charging? Maybe just leave the Roam unplugged overnight >and check in the morning whether the value has changed. i do not habe a Wireless ( cost 50 Bucks are they normal in head??) only normal power USB c 15W

after restart hb an unplug power this is in the log RINCON_000E58F9594E01400 [Office]: event: NOTIFY ZoneGroupTopology/Event [21/04/2021, 17:38:46] [Sonos] ZoneGroupTopology: {"zoneGroups":[{"coordinator":"RINCON_949F3EC1F29001400","id":"RINCON_949F3EC1F29001400:4143004923","zoneGroupMembers":[{"uuid":"RINCON_949F3EC1F29001400","location":"http://192.168.2.105:1400/xml/device_description.xml","zoneName":"Galerie","icon":"x-rincon-roomicon:living","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","htSatChanMapSet":"RINCON_949F3EC1F29001400:LF,RF;RINCON_000E58F958E401400:RR;RINCON_000E58F4294601400:LR","bootSeq":141,"tvConfigurationError":0,"hdmiCecAvailable":1,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":2,"micEnabled":1,"airPlayEnabled":1,"idleState":1,"moreInfo":"","satellites":[{"uuid":"RINCON_000E58F958E401400","location":"http://192.168.2.61:1400/xml/device_description.xml","zoneName":"Galerie","icon":"x-rincon-roomicon:living","configuration":1,"invisible":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","htSatChanMapSet":"RINCON_949F3EC1F29001400:LF,RF;RINCON_000E58F958E401400:RR","bootSeq":264,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":5,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":0,"idleState":1,"moreInfo":""},{"uuid":"RINCON_000E58F4294601400","location":"http://192.168.2.24:1400/xml/device_description.xml","zoneName":"Galerie","icon":"x-rincon-roomicon:living","configuration":1,"invisible":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","htSatChanMapSet":"RINCON_949F3EC1F29001400:LF,RF;RINCON_000E58F4294601400:LR","bootSeq":255,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":5,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":0,"idleState":1,"moreInfo":""}]}]},{"coordinator":"RINCON_48A6B824483C01400","id":"RINCON_48A6B824483C01400:1611464542","zoneGroupMembers":[{"uuid":"RINCON_000E58F9594E01400","location":"http://192.168.2.20:1400/xml/device_description.xml","zoneName":"Office","icon":"x-rincon-roomicon:living","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","bootSeq":426,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":3,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":0,"idleState":1,"moreInfo":""},{"uuid":"RINCON_48A6B824483C01400","location":"http://192.168.2.79:1400/xml/device_description.xml","zoneName":"Büro","icon":"x-rincon-roomicon:office","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","bootSeq":42,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":1,"idleState":1,"moreInfo":""}]},{"coordinator":"RINCON_7828CAD231EA01400","id":"RINCON_7828CAD231EA01400:2616571838","zoneGroupMembers":[{"uuid":"RINCON_7828CAD231EA01400","location":"http://192.168.2.131:1400/xml/device_description.xml","zoneName":"Sonos IKEA","icon":"x-rincon-roomicon:office","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","bootSeq":110,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":0,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":1,"idleState":1,"moreInfo":""}]},{"coordinator":"RINCON_542A1B62437601400","id":"RINCON_542A1B62437601400:2070514955","zoneGroupMembers":[{"uuid":"RINCON_542A1B62437601400","location":"http://192.168.2.137:1400/xml/device_description.xml","zoneName":"Küche","icon":"","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","bootSeq":3,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":0,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":1,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":1,"idleState":1,"moreInfo":""}]},{"coordinator":"RINCON_B8E937806B3201400","id":"RINCON_B8E937806B3201400:63","zoneGroupMembers":[{"uuid":"RINCON_B8E937806B3201400","location":"http://192.168.2.39:1400/xml/device_description.xml","zoneName":"Bad","icon":"x-rincon-roomicon:bathroom","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","bootSeq":428,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":0,"idleState":1,"moreInfo":""}]},{"coordinator":"RINCON_7828CA1182EA01400","id":"RINCON_7828CA1182EA01400:1982859792","zoneGroupMembers":[{"uuid":"RINCON_7828CA13BE5E01400","location":"http://192.168.2.69:1400/xml/device_description.xml","zoneName":"Esszimmer","icon":"x-rincon-roomicon:living","configuration":1,"invisible":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","channelMapSet":"RINCON_7828CA1182EA01400:LF,LF;RINCON_7828CA13BE5E01400:RF,RF","bootSeq":307,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":5,"secureRegState":3,"voiceConfigState":2,"micEnabled":1,"airPlayEnabled":0,"idleState":1,"moreInfo":""},{"uuid":"RINCON_7828CA1182EA01400","location":"http://192.168.2.68:1400/xml/device_description.xml","zoneName":"Esszimmer","icon":"x-rincon-roomicon:living","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","channelMapSet":"RINCON_7828CA1182EA01400:LF,LF;RINCON_7828CA13BE5E01400:RF,RF","bootSeq":314,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":1,"secureRegState":3,"voiceConfigState":2,"micEnabled":0,"airPlayEnabled":1,"idleState":1,"moreInfo":""}]},{"coordinator":"RINCON_B8E9375114A601400","id":"RINCON_B8E9375114A601400:118","zoneGroupMembers":[{"uuid":"RINCON_B8E9375114A601400","location":"http://192.168.2.48:1400/xml/device_description.xml","zoneName":"Terrasse","icon":"x-rincon-roomicon:patio","configuration":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","channelMapSet":"RINCON_B8E9375114A601400:LF,LF;RINCON_B8E937580ECA01400:RF,RF","bootSeq":440,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":0,"idleState":1,"moreInfo":""},{"uuid":"RINCON_B8E937580ECA01400","location":"http://192.168.2.111:1400/xml/device_description.xml","zoneName":"Terrasse","icon":"x-rincon-roomicon:patio","configuration":1,"invisible":1,"softwareVersion":"62.1-86220","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","channelMapSet":"RINCON_B8E9375114A601400:LF,LF;RINCON_B8E937580ECA01400:RF,RF","bootSeq":575,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":0,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2437,"behindWifiExtender":0,"wifiEnabled":1,"orientation":0,"roomCalibrationState":5,"secureRegState":3,"voiceConfigState":0,"micEnabled":0,"airPlayEnabled":0,"idleState":1,"moreInfo":""}]},{"coordinator":"RINCON_542A1B46881A01400","id":"RINCON_542A1B46881A01400:4094046787","zoneGroupMembers":[{"uuid":"RINCON_542A1B46881A01400","location":"http://192.168.2.139:1400/xml/device_description.xml","zoneName":"Mobil","icon":"","configuration":1,"softwareVersion":"62.1-88070","sWGen":2,"minCompatibleVersion":"61.0-00000","legacyCompatibleVersion":"58.0-00000","bootSeq":22,"tvConfigurationError":0,"hdmiCecAvailable":0,"wirelessMode":1,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2452,"behindWifiExtender":0,"wifiEnabled":1,"orientation":3,"roomCalibrationState":4,"secureRegState":3,"voiceConfigState":2,"micEnabled":1,"airPlayEnabled":1,"idleState":0,"battery":{"charging":true,"rawPercentage":58,"percentage":58,"temperature":37}}]}],"vanishedDevices":[""]}

after replug power: Mobil: DeviceProperties: {"zoneName":"Mobil","icon":"","configuration":1,"invisible":0,"isZoneBridge":0,"wirelessMode":1,"wirelessLeafOnly":0,"hasConfiguredSsid":1,"channelFreq":2452,"behindWifiExtender":0,"wifiEnabled":1,"settingsReplicationState":"RINCON_000E58F4294601400,139,RINCON_FFFFFFFFFFFF99999,0,RINCON_48A6B824483C01400,42,RINCON_48A6B824483C01400,4,RINCON_542A1B46881A01400,1064,RINCON_7828CA1182EA01400,229,RINCON_542A1B46881A01400,1437,RINCON_FFFFFFFFFFFF99999,0,RINCON_48A6B824483C01400,8,RINCON_FFFFFFFFFFFF99999,0,RINCON_949F3EC1F29001400,51,RINCON_949F3EC1F29001400,6989,RINCON_7828CAD231EA01400,7,RINCON_949F3EC1F29001400,11,RINCON_000E58A65ED601400,0,RINCON_B8E937580ECA01400,128,RINCON_000E58F4294601400,0","secureRegState":3,"isIdle":0,"battery":{"charging":true,"rawPercentage":58,"percentage":58,"temperature":37},"channelMapSet":"","orientation":3,"lastChangedPlayState":"PLAYING,,,","availableRoomCalibration":"","roomCalibrationState":4,"configMode":"","voiceConfigState":2,"micEnabled":1,"airPlayEnabled":1,"supportsAudioIn":0,"supportsAudioClip":1}

so you see he get the info charge no charge an chaining of batterykapa.

Could you also check that zp info displays the same percentage as Home?

pi@Homebridge01:~ $ zp -H 192.168.2.139:1400 info { "address": "192.168.2.139", "airPlay": true, "audioIn": true, "balance": true, "battery": { "charging": true, "percentage": 79, "rawPercentage": 76, "temperature": 35 }, "bootSeq": 18, "id": "RINCON_542A1B46881A01400", "lastSeen": 0, "modelName": "Sonos Roam", "modelNumber": "S27", "name": "Mobil", "role": "master", "sonosOs": "S2", "version": "13.0.5", "zone": "RINCON_542A1B46881A01400", "zoneDisplayName": "Mobil", "zoneName": "Mobil" }

The iOS Sonos app contains more functionality than the macOS Sonos app. I think they're slowly phasing out the macOS app and I would't be surprised if it doesn't fully support the battery. Could also be that the iOS app communicates with the Roam over Bluetooth as well. Does it still update the state when you disable Bluetooth on the iPhone?

The idea with switch off bluetooth nothing change. But yes, the Mac app ist facing out - thing the will make on app with M1 processor Macs.

homebridge.log-5.txt

so no idea what i can test at the moment. I thing the values coming too the HB see in the log. But don't update the HomeKit object

thanx a lot for trying - really it is not soooo important. :-)

ebaauw commented 3 years ago

I thing the values coming too the HB see in the log. But don't update the HomeKit object

Indeed, I'm afraid it was too late yesterday evening. Could you try beta v1.2.3-3?

Donni1966 commented 3 years ago

;-) Nice ... i know this. After a well sleep knight, the world be a little bit lighter :-D

It works perfekt! Un Plug plug, 2 seconds later the HomeKit change the status. All fine. At the moment the battery cap is 100% but i am sure it will also work.

i will tell it, if not.

Many thanx - really i love this developer, witch work with idealism's an heart blood on the plugins. With out people like you the scene Homebridge will still an really good thing.

so give me some days for stress test ... if there is nothing - i think so - than i give you a feedback.

Donni1966 commented 3 years ago

So one day later. coming home with Sonos Roam, 44 % battery pi@Homebridge01:~ $ zp -H 192.168.2.139:1400 info { "address": "192.168.2.139", "airPlay": true, "audioIn": true, "balance": true, "battery": { "charging": false, "percentage": 44, "rawPercentage": 45, "temperature": 25 }, "bootSeq": 25, "id": "RINCON_542A1B46881A01400", "lastSeen": 0, "modelName": "Sonos Roam", "modelNumber": "S27", "name": "Mobil", "role": "master", "sonosOs": "S2", "version": "13.0.5", "zone": "RINCON_542A1B46881A01400", "zoneDisplayName": "Mobil", "zoneName": "Mobil" }

time 18:22

in Log Homebridge nothing ...

[22/04/2021, 18:22:03] [Sonos] RINCON_7828CA1182EA01400 [Esszimmer (L)]: request 151: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_7828CAD231EA01400 [Sonos IKEA]: request 148: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_542A1B62437601400 [Küche]: request 148: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_48A6B824483C01400 [Büro]: request 269: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_48A6B824483C01400 [Büro]: request 270: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_B8E937806B3201400 [Bad]: request 146: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 167: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: request 148: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_B8E9375114A601400 [Terrasse (L)]: request 146: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:22:03] [Sonos] RINCON_7828CAD231EA01400 [Sonos IKEA]: request 148: status 200 OK [22/04/2021, 18:22:03] [Sonos] Sonos IKEA Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:03] [Sonos] RINCON_48A6B824483C01400 [Büro]: request 269: status 200 OK [22/04/2021, 18:22:03] [Sonos] Office Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:03] [Sonos] RINCON_7828CA1182EA01400 [Esszimmer (L)]: request 151: status 200 OK [22/04/2021, 18:22:03] [Sonos] Esszimmer Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:03] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: request 148: status 200 OK [22/04/2021, 18:22:03] [Sonos] Galerie Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:03] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 167: status 200 OK [22/04/2021, 18:22:03] [Sonos] Mobil Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:03] [Sonos] RINCON_542A1B62437601400 [Küche]: request 148: status 200 OK [22/04/2021, 18:22:03] [Sonos] Küche Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:03] [Sonos] RINCON_48A6B824483C01400 [Büro]: request 270: status 200 OK [22/04/2021, 18:22:03] [Sonos] Büro Sonos: get Remaining Duration: return 0s [22/04/2021, 18:22:04] [Sonos] Bad Sonos: warning: get Remaining Duration: timed out - return previous value 0s [22/04/2021, 18:22:04] [Sonos] Terrasse Sonos: warning: get Remaining Duration: timed out - return previous value 0s [22/04/2021, 18:22:07] [Sonos] RINCON_B8E937806B3201400 [Bad]: request 146: status 200 OK [22/04/2021, 18:22:07] [Sonos] Bad Sonos: get Remaining Duration: ignore 0s - timed out [22/04/2021, 18:22:36] [Sonos] RINCON_B8E9375114A601400 [Terrasse (L)]: request 146: status 200 OK [22/04/2021, 18:22:36] [Sonos] Terrasse Sonos: get Remaining Duration: ignore 0s - timed out [22/04/2021, 18:23:30] [Sonos] RINCON_B8E937806B3201400 [Bad]: lastSeen: 20s ago at 192.168.2.39, bootSeq: 428 [22/04/2021, 18:23:30] [Sonos] RINCON_48A6B824483C01400 [Büro]: lastSeen: 87s ago at 192.168.2.79, bootSeq: 42 [22/04/2021, 18:23:30] [Sonos] RINCON_7828CA1182EA01400 [Esszimmer (L)]: lastSeen: 87s ago at 192.168.2.68, bootSeq: 314 [22/04/2021, 18:23:30] [Sonos] RINCON_7828CA13BE5E01400 [Esszimmer (R)]: lastSeen: 90s ago at 192.168.2.69, bootSeq: 307 [22/04/2021, 18:23:30] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: lastSeen: 45s ago at 192.168.2.105, bootSeq: 141 [22/04/2021, 18:23:30] [Sonos] RINCON_000E58F958E401400 [Galerie (RS)]: lastSeen: 353s ago at 192.168.2.61, bootSeq: 264 [22/04/2021, 18:23:30] [Sonos] RINCON_000E58F4294601400 [Galerie (LS)]: lastSeen: 419s ago at 192.168.2.24, bootSeq: 255 [22/04/2021, 18:23:30] [Sonos] RINCON_542A1B62437601400 [Küche]: lastSeen: 87s ago at 192.168.2.137, bootSeq: 3 [22/04/2021, 18:23:30] [Sonos] RINCON_542A1B46881A01400 [Mobil]: lastSeen: 6s ago at 192.168.2.139, bootSeq: 29 [22/04/2021, 18:23:30] [Sonos] RINCON_000E58F9594E01400 [Office]: lastSeen: 406s ago at 192.168.2.20, bootSeq: 426 [22/04/2021, 18:23:30] [Sonos] RINCON_7828CAD231EA01400 [Sonos IKEA]: lastSeen: 87s ago at 192.168.2.131, bootSeq: 110 [22/04/2021, 18:23:30] [Sonos] RINCON_B8E9375114A601400 [Terrasse (L)]: lastSeen: 5s ago at 192.168.2.48, bootSeq: 440 [22/04/2021, 18:23:30] [Sonos] RINCON_B8E937580ECA01400 [Terrasse (R)]: lastSeen: 340s ago at 192.168.2.111, bootSeq: 575

trying plug unplug oder Controller start stop musik - no event. So the Plugin, my understanding can not parse anything.

than i switch on of, regulation volume and so on :

[22/04/2021, 18:33:56] [Sonos] RINCON_B8E9375114A601400 [Terrasse (L)]: request 147: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration [22/04/2021, 18:33:56] [Sonos] RINCON_7828CAD231EA01400 [Sonos IKEA]: request 149: status 200 OK [22/04/2021, 18:33:56] [Sonos] Sonos IKEA Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:56] [Sonos] RINCON_48A6B824483C01400 [Büro]: request 271: status 200 OK [22/04/2021, 18:33:56] [Sonos] Office Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:56] [Sonos] RINCON_7828CA1182EA01400 [Esszimmer (L)]: request 152: status 200 OK [22/04/2021, 18:33:56] [Sonos] Esszimmer Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:56] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 190: status 200 OK [22/04/2021, 18:33:56] [Sonos] Mobil Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:56] [Sonos] RINCON_542A1B62437601400 [Küche]: request 149: status 200 OK [22/04/2021, 18:33:56] [Sonos] Küche Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:56] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: request 149: status 200 OK [22/04/2021, 18:33:56] [Sonos] Galerie Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:56] [Sonos] RINCON_48A6B824483C01400 [Büro]: request 272: status 200 OK [22/04/2021, 18:33:56] [Sonos] Büro Sonos: get Remaining Duration: return 0s [22/04/2021, 18:33:57] [Sonos] Bad Sonos: warning: get Remaining Duration: timed out - return previous value 0s [22/04/2021, 18:33:57] [Sonos] Terrasse Sonos: warning: get Remaining Duration: timed out - return previous value 0s [22/04/2021, 18:33:59] [Sonos] RINCON_B8E937806B3201400 [Bad]: request 147: status 200 OK [22/04/2021, 18:33:59] [Sonos] Bad Sonos: get Remaining Duration: ignore 0s - timed out [22/04/2021, 18:33:59] [Sonos] RINCON_B8E9375114A601400 [Terrasse (L)]: request 147: status 200 OK [22/04/2021, 18:33:59] [Sonos] Terrasse Sonos: get Remaining Duration: ignore 0s - timed out [22/04/2021, 18:33:59] [Sonos] Mobil Sonos: On changed from false to true [22/04/2021, 18:33:59] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 191: POST /MediaRenderer/AVTransport/Control Play [22/04/2021, 18:33:59] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 191: status 200 OK [22/04/2021, 18:33:59] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 192: POST /MediaRenderer/AVTransport/Control ConfigureSleepTimer [22/04/2021, 18:33:59] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 192: status 200 OK [22/04/2021, 18:34:04] [Sonos] Mobil Sonos: On changed from true to true [22/04/2021, 18:34:04] [Sonos] Mobil Sonos: Brightness changed from 20% to 100% [22/04/2021, 18:34:04] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 193: POST /MediaRenderer/GroupRenderingControl/Control SetGroupVolume [22/04/2021, 18:34:04] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 193: status 200 OK [22/04/2021, 18:34:04] [Sonos] Mobil Sonos: On changed from true to true [22/04/2021, 18:34:04] [Sonos] Mobil Sonos: Brightness changed from 100% to 77% [22/04/2021, 18:34:04] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 194: POST /MediaRenderer/GroupRenderingControl/Control SetGroupVolume [22/04/2021, 18:34:04] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 194: status 200 OK [22/04/2021, 18:34:05] [Sonos] Mobil Sonos: On changed from true to true [22/04/2021, 18:34:05] [Sonos] Mobil Sonos: Brightness changed from 77% to 32% [22/04/2021, 18:34:05] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 195: POST /MediaRenderer/GroupRenderingControl/Control SetGroupVolume [22/04/2021, 18:34:05] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 195: status 200 OK [22/04/2021, 18:34:09] [Sonos] Mobil Sonos: On changed from true to true [22/04/2021, 18:34:09] [Sonos] Mobil Sonos: Brightness changed from 32% to 20% [22/04/2021, 18:34:09] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 196: POST /MediaRenderer/GroupRenderingControl/Control SetGroupVolume [22/04/2021, 18:34:09] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 196: status 200 OK [22/04/2021, 18:34:09] [Sonos] Mobil Sonos: On changed from true to true [22/04/2021, 18:34:09] [Sonos] Mobil Sonos: Brightness changed from 20% to 21% [22/04/2021, 18:34:09] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 197: POST /MediaRenderer/GroupRenderingControl/Control SetGroupVolume [22/04/2021, 18:34:09] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 197: status 200 OK no event from roam. no status and no changing in HB wenn ich Controller the roam by start oder volume change. no event - nothing.

so also no update for loading state oder battery cppa.

i do not know but after a while something happened, what ever, and than the Event ist coming.

here the log - by the way. the zp info shows every time status as it is in Sonos app. homebridge.log-6.txt

edit: if i debug the Sonos Mobile mit Node-red-sonos-events, i see the events at changing state Stop Play and plug in/out. So something is happen, but not in den Homebridge log.

Donni1966 commented 3 years ago

so -- wait some hours - nothing is happen, so i restart the HB and now all runs fine ... Status okay, and looks like all works.

for analyse ... the log homebridge.log-7.txt

ebaauw commented 3 years ago

homebridge.log-6.txt

There seems to be something wrong with your Homebridge ZP setup: I don't see any event notifications in the log. I think you still have debug mode enabled, since I see the requests in the log. The period in the log file is probably too short for Homebridge ZP to renew the subscriptions (every 30 minutes by default). Do/did you see any error earlier or later in the log? Did you change anything in your network or firewall settings?

So here, the Roam is still not connected to the network:

[22/04/2021, 17:48:30] [Sonos] RINCON_542A1B46881A01400 [Mobil]: lastSeen: 38083s ago at 192.168.2.139, bootSeq: 26

It was last seen sine 10.5 hours ago, and it was using IP address IP 192.168.2.139.

Here, the Roam comes online. Apparently is has rebooted:

[22/04/2021, 17:48:50] [Sonos] warning: RINCON_542A1B46881A01400 [Mobil]: rebooted 26 -> 27
[22/04/2021, 17:48:56] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 163: POST /MediaRenderer/AVTransport/Control GetRemainingSleepTimerDuration
[22/04/2021, 17:48:56] [Sonos] RINCON_542A1B46881A01400 [Mobil]: request 163: status 200 OK
[22/04/2021, 17:48:56] [Sonos] Mobil Sonos: get Remaining Duration: return 0s

Now, I would expect/hope that Homebridge ZP would subscribe to event notifications here, since the zone player would have dropped these on reboot. Yet I don't see any. Consequently the Roam will not send any events to Homebridge ZP.

A bit later, the Roam has again disconnected?

[22/04/2021, 17:52:21] [Sonos] error: RINCON_542A1B46881A01400 [Mobil]: 192.168.2.139:1400: cannot connect: EHOSTUNREACH
[22/04/2021, 17:52:21] [Sonos] Mobil Sonos: error: 192.168.2.139:1400: cannot connect: EHOSTUNREACH

OK, it has rebooted:

[22/04/2021, 17:57:04] [Sonos] warning: RINCON_542A1B46881A01400 [Mobil]: rebooted 27 -> 28

And again

[22/04/2021, 18:09:52] [Sonos] warning: RINCON_542A1B46881A01400 [Mobil]: rebooted 28 -> 29

But still no SUBSCRIBE requests.

ebaauw commented 3 years ago

homebridge.log-7.txt

[22/04/2021, 20:21:53] [Sonos] closed http://192.168.2.116:36609/notify
[22/04/2021, 20:21:58] [Sonos] goodbye

So, just before shutting down, Homebridge ZP shuts down its webserver (used to receive the event notification), but I see no UNSUBSRIBE requests (to cancel the open subscriptions). Somehow, all subscriptions were lost, or failed to renew?!

So here you see Homebridge ZP starting the web server and subscribing to ZoneGroupTopology events with the associated zone player (which happens to be the Beam), and receiving the first event.

[22/04/2021, 20:22:20] [Sonos] listening on http://192.168.2.116:45165/notify
[22/04/2021, 20:22:20] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: associated S2 zone player
[22/04/2021, 20:22:20] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: request 3: SUBSCRIBE /ZoneGroupTopology/Event
[22/04/2021, 20:22:21] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: request 3: status 200 OK
[22/04/2021, 20:22:21] [Sonos] RINCON_949F3EC1F29001400 [Galerie]: event: NOTIFY ZoneGroupTopology/Event

I don't yet see a changed battery percentage, but the event notifications come in alright.

I don't know why the subscriptions failed. Would really need to see the error when Homebridge ZP tries to renew the subscriptions.

If memory serves, the Roam was selected as associated zone player before (the ZoneGroupTopology events were sent by the Roam). That might not be the best choice, since you more or less expect the Roam to disconnect from the network. I think/hope Homebridge ZP selects a new associated zone player in that case, but this is not something I've tested a lot. It might be prudent to prefer another associated zone player.

Donni1966 commented 3 years ago

hmm ... wrong with setup ... { "service": "light", "excludeAirPlay": false, "alarms": true, "tv": false, "name": "Sonos", "speakers": false, "platform": "ZP", "leds": false } here the config.

and yes in this morning i take it with me, come 10h later home, switch on, it connect to the network at 17:48. So i wait until 18:22 doing nothing - also no Sonos box ist playing Musik ... than 18:22 i try to do something. Also reboot roam, on of and so on - nothing happens.

and no: no changes in network firewall or rest of setup.

so? ZP Uninstall, install with reboot between the steps?

Node.js 14.16.1 NPM v7.10.0

Donni1966 commented 3 years ago

It might be prudent to prefer another associated zone player.

i am not sure what you exactly mean here?

ebaauw commented 3 years ago

so? ZP Uninstall, install with reboot between the steps?

No. Need to capture a log over a longer period of time, trying to capture an error on SUBSCRIBE. Maybe the server running Homebridge got disconnected from the network at the wrong moment in time?

It might be prudent to prefer another associated zone player.

i am not sure what you exactly mean here?

Mostly note to myself. Like the Sonos app, Homebridge ZP picks an "associated" zone player to receive the topology events from. Typically this is the first non-hidden zone player that responds to the initial probe after restore from cache or discovery.

Donni1966 commented 3 years ago

Hmm .. how i can provide you?

write the Log only [Sonos] events in a file over a while?

I definitiv have trouble with my wifi 2.4 ghz - mesh. So in the outside i lose very often network connect to Terrasse left oder right oder both of them. So many networks in the near. So many times i have disconnects from the network of Sonos Speakers.

What me is wondering: if i debug with Node-Red and the Sonos Plug in, this is log the request und chances of the Roam. Every time i stop start or connect Plug Power. So something is happen on the network.

any way: can i do something.

ebaauw commented 3 years ago

I definitiv have trouble with my wifi 2.4 ghz - mesh.

Are you using a Sonos mesh network, or are you using your home Wifi mesh? I find it best to connect one or two zone players by wire and let them form their own mesh with the other zone players.

if i debug with Node-Red and the Sonos Plug in, this is log the request und chances of the Roam.

That depends on to what services Node Red subscribes. It wouldn't show the notifications to Homebridge ZP (each API client has its own web server to receive the notifications), and it wouldn't log the POST requests Homebridge ZP makes, nor the responses. Note that each Sonos API client has its own subscription (containing the IP address/port of the web server) per service, and the zone player only supports a limited number of subscriptions (I think something like 30). So having too many clients open could break the notifications. So could having a client crash without unsubscribing, as this causes stale subscriptions. That's why Homebridge ZP uses a 30-minute timeout, and handles Homebridge/NodeJS errors, to UNSUBSCRIBE before NodeJS would crash. I have seen a couple of plugins that break this part, but as long as you see the goodbye message in log, that's not the case.

Donni1966 commented 3 years ago

I using a Wifi Mesh from Netgear ( not the best decision) Orbit. One Play 3 has a Kabel Network and a Sonos Input Port. The rest ist still in the Mesh wifi.

So if i understand you right: a dear is to switch of Wifi on the Sonos System and let them make a Sonos Wifi? In this case i have to read the manual. No idea how this works. Last update of my system i remove the Sonos access Point ( S1 old, out by Sonos) and put all of them in my wifi.

I do not know what Node-red-sonos using. But yes may be this talk so all Sonos Sperre separate on the Webserver - and sorry about me - not know exactly the differents to Zone Player.

at the moment all is fine. Controll ist possible the update ist coming ... no idea

ebaauw commented 3 years ago

https://support.sonos.com/s/article/3209?language=en_US

Donni1966 commented 3 years ago

So I have now tried everything that came to my mind and also have SONOS boxes that were feasible connected to ethernet and set up a Sonos network. Unfortunately, that didn't change the problem. Funnily enough, my Sonos network is more stable and I have significantly fewer errors between the individual boxes. So forming groups and playing music is faster. Only the Roam still has the problem that it no longer seems to switch to ZP Player if it has been out for a long time. It also switches itself off when it is not used for a long time in order to save battery. If I turn it off for a moment, it'll come back All you can do now is a fresh start. Sometimes he seems to be writing something. Because yesterday I saw that when I turn the power supply on and off, the Galierie (Beam + 2 * Play3) receives event. But nothing triggers or changes. After restarting the HB, everything is okay again and works fine.

ebaauw commented 3 years ago

Only the Roam still has the problem that it no longer seems to switch to ZP Player if it has been out for a long time. It also switches itself off when it is not used for a long time in order to save battery. If I turn it off for a moment, it'll come back

This seems to be a "feature" of the Roam, I don't think I can do anything about that.

There is a bug buried deep in Homebridge ZP, that it doesn't subscribe to notifications when the zone player is rebooted, if the subscription time has expired too long ago. See https://github.com/ebaauw/homebridge-zp/issues/1#issuecomment-518033915.

I suppose the easiest workaround would be for Homebridge ZP to shutdown Homebridge when it sees a zone player has rebooted, hoping some service will restart Homebridge, but that seems kinda blunt. It might actually be the right response if Homebridge ZP runs in a child bridge, but I don't know if a plugin can detect that.

Sometimes he seems to be writing something. Because yesterday I saw that when I turn the power supply on and off, the Galierie (Beam + 2 * Play3) receives event. But nothing triggers or changes.

The battery state is reported in the DeviceProperties event as well as in the ZoneGroupTopology event. I only subscribe to DeviceProperties for devices that do have a battery. I only subscribe to ZoneGroupTopology for one zone player in your household (the "associated" zone player), just like the Sonos app. Because this event is issued from a different zone player, I ignore the battery state in this event. Normally, this wouldn't be an issue, if Homebridge ZP would subscribe to the Roam's DeviceProperties when it comes online.

Donni1966 commented 3 years ago

This seems to be a "feature" of the Roam, I don't think I can do anything about that.

is seems do ... ic think, you can close this ChangeRequest, because it will bring data, it the roam is connect.

I suppose the easiest workaround would be for Homebridge ZP to shutdown Homebridge when it sees a zone player has rebooted, hoping some service will restart Homebridge, but that seems kinda blunt. It might actually be the right response if Homebridge ZP runs in a child bridge, but I don't know if a plugin can detect that.

haha .. no .. not the best idea reboot HB if Roam make a reboot. I can put the ZP in a Child. to sole this, if the roam is not working. Originally I only wanted to have the battery status because it made sense to get my Node-Red to tell me to run to a socket when it is empty. And to see the battery status when you're out and about in HK. It suits me that way and actually I do ZP in a child process to be able to "reboot" him.

What about the move? Since experiences already made with? Has it been out for a while?

But as I said, close the ticket. I am really at peace and can live with it.

Maybe later on she will have a brilliant idea.

ebaauw commented 3 years ago

I don’t have the Move either and haven’t seen any reports about it.

I will need to make the subscriptions more robust on zone player reboot, but that’s tricky. That’s already tracked in #1, so indeed closing this issue.