hklages / node-red-contrib-sonos-plus

A set of Node-RED nodes to control SONOS player in your local network.
MIT License
75 stars 14 forks source link

group.get.state:uri.replace is not a function #286

Closed cnekola closed 3 months ago

cnekola commented 3 months ago

Description

I have updated node-red-contrib-sonos-plus and some of my existing functions no longer work. e.g. get.state

debug message:

"group.get.state:uri.replace is not a function :: Details: {"stack":"TypeError: uri.replace is not a function\n at Function.ParseDIDLTrack (/root/.node-red/node_modules/@svrooij/sonos/lib/helpers/metadata-helper.js:56:29)\n at AVTransportService.parseValue (/root/.node-red/node_modules/@svrooij/sonos/lib/services/base-service.js:253:46)\n at /root/.node-red/node_modules/@svrooij/sonos/lib/services/base-service.js:246:30\n at Array.forEach (<anonymous>)\n at AVTransportService.parseEmbeddedXml (/root/.node-red/node_modules/@svrooij/sonos/lib/services/base-service.js:245:14)\n at AVTransportService.handleRequestAndParseResponse (/root/.node-red/node_modules/@svrooij/sonos/lib/services/base-service.js:205:21)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at AVTransportService.GetMediaInfo (/root/.node-red/node_modules/@svrooij/sonos/lib/services/av-transport.service.js:127:60)\n at Object.groupGetState [as group.get.state] (/root/.node.

What node/command (topic)/state (payload)

node: sonos-universal command: group.get.state state:

In case of a bug: Are you able to reproduce the error

yes

simpel Flow: Inject Node -> group.get.state -> Debug Node

Versions and Infrastructure

what system: Debian Linux node-red-contrib-sonos-plus version: 6.7.6 Node-RED version: v3.1.5 NodeJS version: v21.7.1

hklages commented 3 months ago

Hi - I will have a look at it tomorrow. Is it always ore only for a specific radio station / album /song? Is it only when a new song starts to play? In my test installation it works so far .. but I know there is problem with the ParseDIDLTrack function. We change the parser in this release.

best regards, Henning

On Mon, Mar 25, 2024 at 9:53 PM Christian @.***> wrote:

Description

I have updated node-red-contrib-sonos-plus and some of my existing functions no longer work. e.g. get.state

debug message:

"group.get.state:uri.replace is not a function :: Details: {"stack":"TypeError: uri.replace is not a function\n at Function.ParseDIDLTrack @./sonos/lib/helpers/metadata-helper.js:56:29)\n at AVTransportService.parseValue @./sonos/lib/services/base-service.js:253:46)\n at @./sonos/lib/services/base-service.js:246:30\n at Array.forEach ()\n at AVTransportService.parseEmbeddedXml @./sonos/lib/services/base-service.js:245:14)\n at AVTransportService.handleRequestAndParseResponse @./sonos/lib/services/base-service.js:205:21)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at AVTransportService.GetMediaInfo @./sonos/lib/services/av-transport.service.js:127:60)\n at Object.groupGetState [as group.get.state] (/root/.node. What node/command (topic)/state (payload)

node: sonos-universal command: group.get.state state: In case of a bug: Are you able to reproduce the error

yes

simpel Flow: Inject Node -> group.get.state -> Debug Node Versions and Infrastructure

what system: Debian Linux node-red-contrib-sonos-plus version: 6.7.6 Node-RED version: v3.1.5 NodeJS version: v21.7.1

— Reply to this email directly, view it on GitHub https://github.com/hklages/node-red-contrib-sonos-plus/issues/286, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEDZCH4CHR7ZCKKIDN6C2TDY2CFDHAVCNFSM6AAAAABFHW5S3CVHI2DSMVQWIX3LMV43ASLTON2WKOZSGIYDMNRYHEYTQNY . You are receiving this because you were assigned.Message ID: @.***>

cnekola commented 3 months ago

Hi Henning,

I don't play anything on the Sonos. I always check the status before I switch on the Sonos so that I know whether it is playing alone or in a group. My test flow was also very simple. All devices on standby and only queried the status.

Thx, Chris

hklages commented 3 months ago

Hi Chris.

Currently I can not reproduce the error. I guess that the error only occurs if a specific kind of music is or was playing before.

Do you have that error always ore "sometimes". What was playing before on the player?

In parallel lets look for a work around. Do you know that you can see what players are in what group with the "household.get.groups" command? It returns an error of groups and every array of size 1 is not grouped.

Could you use that instead of your check?

cnekola commented 3 months ago

Hi Hennig,

thank you for your time. I usually play TuneIn Radio (Austria Ö3). I have tried different music via the Sonos app (Spotify,..) No matter if a music is playing or the box is on standby, I can't run group.get.state anymore. My Nodered installation is quite large and extensive. I'll try to install a parallel system and test my flow there.

Thx, Chris

hklages commented 3 months ago

HI Chris - I can not reprocude the error on my system.

I installed the tunein service (free one)

First test: In the SONOS app I searched for "ORF Hitradio OE3" and found that station in Sonos Radio and TuneIn. Then I selected the TuneIn station in the app and it played on my SONOS group.get.status did work - no issure

Second test: I used the group.play.tunein command with payload s83744 and started the stream. group.get.status did work - no issue

Can you please provide a simple flow: start a station (such as ORF Hitradio OE3), wait a few seconds to activate that stream and then start a group.get.state what provide the error message. Please use the export function.

hklages commented 3 months ago

please install the latest version 6.7.8 - that should fix it.

cnekola commented 3 months ago

Many thx. It works