Giter VIP home page Giter VIP logo

node-raumkernel's People

Contributors

alex9779 avatar chrid avatar klausb avatar mdoelker avatar ulilicht avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

node-raumkernel's Issues

RendererState is not up to date

Hello,

first of all, thanks for your great library!

I encountered the following issue:
When trying to access the currently playing information, e.g. CurrentTrackMetaData of a renderer, the rendererState is not up to date. I attached an example below, after some time, the rendererState changes.

Is there a way to reliably access information within rendererState? Any event I potentitally can rely on to get information about the currently playing media of a renderer?

I observed similar behaviour on the combinedZoneStateChanged event, there as well _combinedZoneState.zones[2].rendererState changes after some time.

Thank you for your help!

Code example 1, renderer state different after some time:

let RaumkernelLib = require('node-raumkernel');
let raumkernel = new RaumkernelLib.Raumkernel();
const testRendererUDN = 'uuid:e570d28c-172f-4aa9-9a91-aab8d974a9b0';

raumkernel.init();

raumkernel.on('systemReady', (_ready) => {
    const renderer = raumkernel.managerDisposer.deviceManager.mediaRenderersVirtual.get(testRendererUDN);
    
    console.log(JSON.stringify(renderer.rendererState));

    setTimeout(() => {
        console.log(JSON.stringify(renderer.rendererState)); // different output
    }, 1000);
});

Code example 2, event payload differs after some time:

raumkernel.on('combinedZoneStateChanged', _combinedZoneState => {
        console.log(JSON.stringify(_combinedZoneState.zones[2].rendererState));

        setTimeout(() => {
            console.log(JSON.stringify(_combinedZoneState.zones[2].rendererState)); // different output
        }, 1000);
});

Allow partially loading of media lists

Generate the ability to load media lists in defined (small) parts.
For this there should be a general callback (no promise of course) which will occur whenever some more data for a list is ready.

load Methods should return a promise and resolve when complete list is loaded (but of course the method triggers the general callback of "partially" loading) and does have own anonymus callback

e.g


loadList(_objectId, _itemPackageCount = 20, _callback)

callback(_mediaItemdata, _start, _end)
{
  ...
}

Create media list for each virtual renderer

we have to create and update the media list for each renderer. That happens when the "CurrentTrackUri" is changeing. Then we may have to recreate the list. The MediaServer-ContentManager will inform when data in the zone list changes. See #10

Add search media lists

Add searching to media server.
But i have the problem that i cant sniff the xml adn upnp commands due my damn router.
So I have no ide how to achieve this...

Correct "online" state for room

Be sure the "online" state of the room on the renderer state will be set correctly.
Currently its always set to "true".

We do achieve this bei checking if room renderer is online when renderer state is beeing created or on updateing the state when renderer is going online/offline

Using raumkernel, problems with logger

Hi,
I finally started my implementation of node for node-red using your raumkernel to control some aspects of my Raumfeld system with Apples "Home" app. The real dependency is Node-Red -> MQTT Mosquitto -> homebridge-mqtt -> homebridge -> Home...
After some starting problems I think I got the trick how to achvie what I want so I started to implement my first nodes.
But I had one problem with the logger especially with this line:

new (Winston.transports.DailyRotateFile)({ filename: this.logPath + '/app.', handleExceptions: true, humanReadableUnhandledException: true, json: false, datePattern: 'yyyy-MM-dd-HHmm.log', prepend: false })

This should create a file logger but starting the raumkernel in a node that is loaded in node-red this fails because it tries to create the file in the root directory.
As this is my first project with JS and Node.js I have no exact idea of what going on but as I thought I don't need a logfile for now, I just commented the line.

I think best would be to extend the logger creation with some addtional parameters to be able to select which logger end points should be created?

systemReady state when changing e.g. room config and other events firing too often

I just started testing how I can use your raumkernel for implementing nodes for node-red to control several aspects of my raumfeld system with node-red in connection with MQTT and homebridge and Apple Home.
It works so far but when I monitor some of the core events, on top the systemReady event, I always get all the stuff I expect when I first connect to a system like systemReady and host found and renderers found when I change the config of my system with the normal iOS app.
Is that an intended behaviour?
Because this seems not really right to me. When I monitor the systemReady state and I remove a speaker from a zone then the system is not ready and then ready again and all the renderers are rediscovered. This makes it hard to bind action to those events because they are triggered too often.
I thought this was because of my noob implementation of my first node, just started using js and node and that stuff. But then I tried just the test.js you provide and this does all the same I see with my implementation: events firing when I just remove a speaker to a zone or remove it it seems the whole kernel sets back as if it just connected again to the host...

Create "confirm" option

Create "confirm" option eg. to be sure if you set play on a renderer it will return only if state has changed to play

Documentation issues regarding "rendererStateKeyValueChanged" and "Volume"

So working with setting and getting volumes I based my work on the example in the README.
But as far as I can tell this does not work:

raumkernel.on("rendererStateKeyValueChanged", function(_mediaRenderer, _key, _oldValue, _newValue, _roomUdn){
		if(key=="Volume")
			console.log("Volume on " + _mediaRenderer.name() + " changed to " + _newValue.toString());
	})

The parameter is "_key" but the function then uses "key".

The next example has the same problem.

Also the event does never pass "_roomUdn". I dug into the code and it is missing everywhere except at the very bottom. Here you set the room UDN on the virtual renderer:

this.emit("rendererStateKeyValueChanged", this, key, (roomDataOld ? roomDataOld[key] : null), roomData[key], roomUdn);

But the definitions above like at
_device.on("rendererStateKeyValueChanged", function(_mediaRenderer, _key, _oldValue, _newValue){
and
this.emit("rendererStateKeyValueChanged", _mediaRenderer, _key, _oldValue, _newValue);
do not contain the parameter. In conclusion it is not passed to my event.

Finally I found that what the documentation says is not correct: "The _mediaRenderer is the virtual renderer in case if _roomUdn is filled"
Virtual media renderers do not give "Volume" as the key but "volume". Just normal raumfeld renderes emit the key with a capital "V".

I didn't create a PR for this because I am not absolutely sure how to fix this properly keeping the project's goals and design as I have no complete understanding of the whole project, just of some parts for now...

Consider all available types of media items

Consider all available types of media item

Currently only following are supported:

  • object.container
  • object.container.person.musicArtist
  • object.item.audioitem.musictrack
  • object.container.album.musicAlbum
  • object.container.trackContainer.allTracks

"leaveStandby" promise too fast?

I want to have a device to play a playlist. That works fine also assigning it to a new zone if it has non yet works. But I have a problem if the device is in standby.
I used the "leaveStandby" function with the promise and when that succeeds I Ioad the playlist. But it seems to be a bit too fast for the device. I leaves standby but does not load the playlist.
If I debug that stuff it works because just that second I wait to execute the playlist load seems to be enough but in normal is does not.
So I could add some "waitTimeout" function which is called when the promise from "leaveStandby" executes and wait for one second and the load the playlist.
I just wanted to ask if there is something you can do in the kernel because all other promises I use just work out and the next thing is done when the previous one finished but in this case...

Question: Getting room renderer

I am searching how I can get a room renderer.
I use getRoomObjectFromMediaRendererUdnOrName to to get the "RoomObject" for a specified name. But that is not the renderer.
For other things after that I use the roomUdn from that object to add that room to a virtual media renderer aka a zone.
I know must things should be done with that virtual thing, but for what I wanna do I need the room renderer to set the volume or mute in that room. If the room is in a virtual I can use the function of the virtual to set that for a room udn. But not if the room is not in a virtual.
The thing is that I want to add a room to a virtual but set its volume before adding it so that the volume does not overshoot over something.
Is that possible? For now I would be thankful for a hint in which array of the kernel I will find this, a function to do this seems not to exist. I browsed all the stuff but have no real idea what would be best to get this...

Deleting Renderers

Hi,

I experience some strange behavior using node-raumkernel.

After running Raumkernel multiple hours in the background (often around 12-24 hours), all renderers get removed from my Raumfeld devices. This results, amongst other things, in the Raumfeld App not being usable anymore. (RFUPnP.RFUPnP Error-1)

The only option to recover from this state is to reboot the Raumfeld host.

I have tracked the event down in the logs, having LogLevel 4 set.

My guess is that its happening below at line 64 (Mar 21 11:12:03 )

Comparing to the events before, I would expect a log-line

AVTransport subscription callback triggered on device 'Wohnzimmer'

to appear, but instead this line appears:

Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] Media Item on renderer changed

at this point in time, no other interaction happened with the devices as no one was at home.

Do you have any idea what the reason for this could be?
I use the standard node-raumkernel instance running in a docker container on a raspberry;

Thanks for your help!

Mar 21 10:26:59 homeassistant addon_f97079c8_spixradio[480]: '
Mar 21 10:26:59 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:26:59] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Next,Shuffle' to 'Play,Next,Shuffle'
Mar 21 10:26:59 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:26:59] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 10:26:59 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:26:59] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 10:26:59 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:26:59] [MediaRenderer|Wohnzimmer] Set new updateId to: 913229
Mar 21 10:26:59 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:26:59] [MediaRenderer|Wohnzimmer] Media Item on renderer changed
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:00] [MediaRenderer|Wohnzimmer] AVTransport subscription callback triggered on device 'Wohnzimmer'
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:42:00] [MediaRenderer|Wohnzimmer] CurrentTrackURI has changed from 'http://fluxfm.streamabc.net/flx-fluxfmberlin-mp3-128-5859035?sABC=641982s0%230%23775qsn3qp0s6037s0rpr2po992orr036%23gharva&aw_0_1st.playerid=tunein&amsparams=playerid:tunein;skey:1679393520' to ''
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:42:00] [MediaRenderer|Wohnzimmer] CurrentTrackMetaData has changed from '<?xml version="1.0"?>
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" lang="en"><item parentID="0/Playlists/MyPlaylists/Styrbar" id="0/Playlists/MyPlaylists/Styrbar/1763" restricted="1" refID="0/RadioTime/Search/s-s132954"><raumfeld:name>Station</raumfeld:name><upnp:class>object.item.audioItem.audioBroadcast.radio</upnp:class><raumfeld:section>RadioTime</raumfeld:section><raumfeld:durability>120</raumfeld:durability><raumfeld:ebrowse>http://opml.radiotime.com/Tune.ashx?partnerId=7aJ9pvV5&amp;formats=mp3%2Cogg%2Caac&amp;serial=d0%3A5f%3Ab8%3Ac7%3A55%3A20&amp;id=s132954&amp;c=ebrowse</raumfeld:ebrowse><dc:title>FluxFM</dc:title><upnp:albumArtURI dlna:profileID="JPEG_TN">https://cdn-radiotime-logos.tunein.com/s132954g.png</upnp:albumArtURI><res bitrate="128" protocolInfo="http-get:*:audio/x-mpegurl:*">http://opml.radiotime.com/Tune.ashx?id=e65940766&amp;sid=s132954&amp;formats=mp3,ogg,aac&amp;partnerId=7aJ9pvV5&amp;serial=d0:5f:b8:c7:55:20</res></item></DIDL-Lite>
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: ' to ''
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:42:00] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Play,Next,Shuffle' to 'Next,Shuffle'
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:00] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:00] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 10:42:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:00] [MediaRenderer|Wohnzimmer] Set new updateId to: 913230
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] AVTransport subscription callback triggered on device 'Wohnzimmer'
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] CurrentTrackURI has changed from '' to 'http://fluxfm.streamabc.net/flx-fluxfmberlin-mp3-128-5859035?sABC=641989s8%230%23775qsn3qp0s6037s0rpr2po992orr036%23gharva&aw_0_1st.playerid=tunein&amsparams=playerid:tunein;skey:1679395320'
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] CurrentTrackMetaData has changed from '' to '<?xml version="1.0"?>
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" lang="en"><item parentID="0/Playlists/MyPlaylists/Styrbar" id="0/Playlists/MyPlaylists/Styrbar/1763" restricted="1" refID="0/RadioTime/Search/s-s132954"><raumfeld:name>Station</raumfeld:name><upnp:class>object.item.audioItem.audioBroadcast.radio</upnp:class><raumfeld:section>RadioTime</raumfeld:section><raumfeld:durability>120</raumfeld:durability><raumfeld:ebrowse>http://opml.radiotime.com/Tune.ashx?partnerId=7aJ9pvV5&amp;formats=mp3%2Cogg%2Caac&amp;serial=d0%3A5f%3Ab8%3Ac7%3A55%3A20&amp;id=s132954&amp;c=ebrowse</raumfeld:ebrowse><dc:title>FluxFM</dc:title><upnp:albumArtURI dlna:profileID="JPEG_TN">https://cdn-radiotime-logos.tunein.com/s132954g.png</upnp:albumArtURI><res bitrate="128" protocolInfo="http-get:*:audio/x-mpegurl:*">http://opml.radiotime.com/Tune.ashx?id=e65940766&amp;sid=s132954&amp;formats=mp3,ogg,aac&amp;partnerId=7aJ9pvV5&amp;serial=d0:5f:b8:c7:55:20</res></item></DIDL-Lite>
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: '
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Next,Shuffle' to 'Play,Next,Shuffle'
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:02] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] Set new updateId to: 913231
Mar 21 10:42:02 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:02] [MediaRenderer|Wohnzimmer] Media Item on renderer changed
Mar 21 10:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 10:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:00] [MediaRenderer|Wohnzimmer] AVTransport subscription callback triggered on device 'Wohnzimmer'
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:57:00] [MediaRenderer|Wohnzimmer] CurrentTrackURI has changed from 'http://fluxfm.streamabc.net/flx-fluxfmberlin-mp3-128-5859035?sABC=641989s8%230%23775qsn3qp0s6037s0rpr2po992orr036%23gharva&aw_0_1st.playerid=tunein&amsparams=playerid:tunein;skey:1679395320' to ''
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:57:00] [MediaRenderer|Wohnzimmer] CurrentTrackMetaData has changed from '<?xml version="1.0"?>
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" lang="en"><item parentID="0/Playlists/MyPlaylists/Styrbar" id="0/Playlists/MyPlaylists/Styrbar/1763" restricted="1" refID="0/RadioTime/Search/s-s132954"><raumfeld:name>Station</raumfeld:name><upnp:class>object.item.audioItem.audioBroadcast.radio</upnp:class><raumfeld:section>RadioTime</raumfeld:section><raumfeld:durability>120</raumfeld:durability><raumfeld:ebrowse>http://opml.radiotime.com/Tune.ashx?partnerId=7aJ9pvV5&amp;formats=mp3%2Cogg%2Caac&amp;serial=d0%3A5f%3Ab8%3Ac7%3A55%3A20&amp;id=s132954&amp;c=ebrowse</raumfeld:ebrowse><dc:title>FluxFM</dc:title><upnp:albumArtURI dlna:profileID="JPEG_TN">https://cdn-radiotime-logos.tunein.com/s132954g.png</upnp:albumArtURI><res bitrate="128" protocolInfo="http-get:*:audio/x-mpegurl:*">http://opml.radiotime.com/Tune.ashx?id=e65940766&amp;sid=s132954&amp;formats=mp3,ogg,aac&amp;partnerId=7aJ9pvV5&amp;serial=d0:5f:b8:c7:55:20</res></item></DIDL-Lite>
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: ' to ''
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:57:00] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Play,Next,Shuffle' to 'Next,Shuffle'
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:00] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:00] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 10:57:00 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:00] [MediaRenderer|Wohnzimmer] Set new updateId to: 913232
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] AVTransport subscription callback triggered on device 'Wohnzimmer'
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] CurrentTrackURI has changed from '' to 'http://fluxfm.streamabc.net/flx-fluxfmberlin-mp3-128-5859035?sABC=641989s8%230%23775qsn3qp0s6037s0rpr2po992orr036%23gharva&aw_0_1st.playerid=tunein&amsparams=playerid:tunein;skey:1679395320'
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] CurrentTrackMetaData has changed from '' to '<?xml version="1.0"?>
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" lang="en"><item parentID="0/Playlists/MyPlaylists/Styrbar" id="0/Playlists/MyPlaylists/Styrbar/1763" restricted="1" refID="0/RadioTime/Search/s-s132954"><raumfeld:name>Station</raumfeld:name><upnp:class>object.item.audioItem.audioBroadcast.radio</upnp:class><raumfeld:section>RadioTime</raumfeld:section><raumfeld:durability>120</raumfeld:durability><raumfeld:ebrowse>http://opml.radiotime.com/Tune.ashx?partnerId=7aJ9pvV5&amp;formats=mp3%2Cogg%2Caac&amp;serial=d0%3A5f%3Ab8%3Ac7%3A55%3A20&amp;id=s132954&amp;c=ebrowse</raumfeld:ebrowse><dc:title>FluxFM</dc:title><upnp:albumArtURI dlna:profileID="JPEG_TN">https://cdn-radiotime-logos.tunein.com/s132954g.png</upnp:albumArtURI><res bitrate="128" protocolInfo="http-get:*:audio/x-mpegurl:*">http://opml.radiotime.com/Tune.ashx?id=e65940766&amp;sid=s132954&amp;formats=mp3,ogg,aac&amp;partnerId=7aJ9pvV5&amp;serial=d0:5f:b8:c7:55:20</res></item></DIDL-Lite>
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: '
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Next,Shuffle' to 'Play,Next,Shuffle'
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:01] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] Set new updateId to: 913233
Mar 21 10:57:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 11:57:01] [MediaRenderer|Wohnzimmer] Media Item on renderer changed
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:01] [MediaRenderer|Wohnzimmer] AVTransport subscription callback triggered on device 'Wohnzimmer'
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:12:01] [MediaRenderer|Wohnzimmer] CurrentTrackURI has changed from 'http://fluxfm.streamabc.net/flx-fluxfmberlin-mp3-128-5859035?sABC=641989s8%230%23775qsn3qp0s6037s0rpr2po992orr036%23gharva&aw_0_1st.playerid=tunein&amsparams=playerid:tunein;skey:1679395320' to ''
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:12:01] [MediaRenderer|Wohnzimmer] CurrentTrackMetaData has changed from '<?xml version="1.0"?>
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" lang="en"><item parentID="0/Playlists/MyPlaylists/Styrbar" id="0/Playlists/MyPlaylists/Styrbar/1763" restricted="1" refID="0/RadioTime/Search/s-s132954"><raumfeld:name>Station</raumfeld:name><upnp:class>object.item.audioItem.audioBroadcast.radio</upnp:class><raumfeld:section>RadioTime</raumfeld:section><raumfeld:durability>120</raumfeld:durability><raumfeld:ebrowse>http://opml.radiotime.com/Tune.ashx?partnerId=7aJ9pvV5&amp;formats=mp3%2Cogg%2Caac&amp;serial=d0%3A5f%3Ab8%3Ac7%3A55%3A20&amp;id=s132954&amp;c=ebrowse</raumfeld:ebrowse><dc:title>FluxFM</dc:title><upnp:albumArtURI dlna:profileID="JPEG_TN">https://cdn-radiotime-logos.tunein.com/s132954g.png</upnp:albumArtURI><res bitrate="128" protocolInfo="http-get:*:audio/x-mpegurl:*">http://opml.radiotime.com/Tune.ashx?id=e65940766&amp;sid=s132954&amp;formats=mp3,ogg,aac&amp;partnerId=7aJ9pvV5&amp;serial=d0:5f:b8:c7:55:20</res></item></DIDL-Lite>
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: ' to ''
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:12:01] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Play,Next,Shuffle' to 'Next,Shuffle'
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:01] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:01] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 11:12:01 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:01] [MediaRenderer|Wohnzimmer] Set new updateId to: 913234
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] AVTransport subscription callback triggered on device 'Wohnzimmer'
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] CurrentTrackURI has changed from '' to 'http://fluxfm.streamabc.net/flx-fluxfmberlin-mp3-128-5859035?sABC=64199101%230%23775qsn3qp0s6037s0rpr2po992orr036%23gharva&aw_0_1st.playerid=tunein&amsparams=playerid:tunein;skey:1679397121'
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] CurrentTrackMetaData has changed from '' to '<?xml version="1.0"?>
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: <DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:raumfeld="urn:schemas-raumfeld-com:meta-data/raumfeld" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" lang="en"><item parentID="0/Playlists/MyPlaylists/Styrbar" id="0/Playlists/MyPlaylists/Styrbar/1763" restricted="1" refID="0/RadioTime/Search/s-s132954"><raumfeld:name>Station</raumfeld:name><upnp:class>object.item.audioItem.audioBroadcast.radio</upnp:class><raumfeld:section>RadioTime</raumfeld:section><raumfeld:durability>120</raumfeld:durability><raumfeld:ebrowse>http://opml.radiotime.com/Tune.ashx?partnerId=7aJ9pvV5&amp;formats=mp3%2Cogg%2Caac&amp;serial=d0%3A5f%3Ab8%3Ac7%3A55%3A20&amp;id=s132954&amp;c=ebrowse</raumfeld:ebrowse><dc:title>FluxFM</dc:title><upnp:albumArtURI dlna:profileID="JPEG_TN">https://cdn-radiotime-logos.tunein.com/s132954g.png</upnp:albumArtURI><res bitrate="128" protocolInfo="http-get:*:audio/x-mpegurl:*">http://opml.radiotime.com/Tune.ashx?id=e65940766&amp;sid=s132954&amp;formats=mp3,ogg,aac&amp;partnerId=7aJ9pvV5&amp;serial=d0:5f:b8:c7:55:20</res></item></DIDL-Lite>
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: '
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] CurrentTransportActions has changed from 'Next,Shuffle' to 'Play,Next,Shuffle'
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:03] [ZoneManager] Get room information object for: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] Room: uuid:93729fff-e1e7-4ab6-a032-d368cd1ed6c7: Set room renderer(s) ["uuid:2107070d-7dce-4bc3-828d-d24b7ca8767d"] online to :true
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] Set new updateId to: 913235
Mar 21 11:12:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:12:03] [MediaRenderer|Wohnzimmer] Media Item on renderer changed
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Device list request returns with updateId: '1098085778'
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Device list changed
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Cleaning up devices
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Cleaning up mediaServers
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Cleaning up virtual renderers
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [MediaRenderer|Wohnzimmer] Remove service subscriptions for device 'Wohnzimmer'
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-1][21.3.2023, 12:26:22] [DeviceManager] Virtual media renderer removed: Wohnzimmer
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Cleaning up renderers
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.98:55528/2107070d-7dce-4bc3-828d-d24b7ca8767d.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.121:58867/40ec5af4-284b-4dda-8f3c-857b2e67f4a8.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.121:59876/4fc35991-f606-42a2-a554-856c2e8dd55e.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.121:57695/5dc5701c-bbf2-4ca5-a246-f11db4a2ef7d.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.121:55878/6249847f-1f7d-4a1b-981b-9e0e9c775e46.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.121:58828/846851e1-0ad8-4664-b38a-5656ef1fb4ee.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.98:55022/a4fc1476-c164-4568-8de7-f3d7dcaf2398.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.23:57543/ad088247-2327-4545-8d11-ff573edf1bc3.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.121:54215/d0bb4d3f-ede7-46cc-8ae8-71bf9a07d9b1.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Get device description from http://192.168.178.23:57313/f3734234-b01b-4744-b594-2617a176cbe4.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Getting device list from http://192.168.178.121 with updateId: 1098085778
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.98:55022/a4fc1476-c164-4568-8de7-f3d7dcaf2398.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Device 'Teufel Raumfeld Device' of type 'urn:schemas-raumfeld-com:device:RaumfeldDevice:1' (undefined) not usable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.23:57543/ad088247-2327-4545-8d11-ff573edf1bc3.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Device 'Teufel Raumfeld Device' of type 'urn:schemas-raumfeld-com:device:RaumfeldDevice:1' (undefined) not usable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.98:55528/2107070d-7dce-4bc3-828d-d24b7ca8767d.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Media renderer 'Speaker Wohnzimmer' found
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Raumfeld media renderer 'Speaker Wohnzimmer' is useable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.23:57313/f3734234-b01b-4744-b594-2617a176cbe4.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Media renderer 'Speaker Schlafzimmer' found
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Raumfeld media renderer 'Speaker Schlafzimmer' is useable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.121:58867/40ec5af4-284b-4dda-8f3c-857b2e67f4a8.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Device 'Raumfeld ConfigDevice' of type 'urn:schemas-raumfeld-com:device:ConfigDevice:1' (undefined) not usable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.121:57695/5dc5701c-bbf2-4ca5-a246-f11db4a2ef7d.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Device 'Teufel Raumfeld Device' of type 'urn:schemas-raumfeld-com:device:RaumfeldDevice:1' (undefined) not usable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.121:58828/846851e1-0ad8-4664-b38a-5656ef1fb4ee.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Media renderer 'Speaker Arbeitszimmer' found
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Raumfeld media renderer 'Speaker Arbeitszimmer' is useable
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-0][21.3.2023, 12:26:22] [MediaRenderer|Wohnzimmer] Error: UNSUBSCRIBE error
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-0][21.3.2023, 12:26:22] [MediaRenderer|Wohnzimmer] Error: UNSUBSCRIBE error
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:26:22] [DeviceManager] Got device description from http://192.168.178.121:54215/d0bb4d3f-ede7-46cc-8ae8-71bf9a07d9b1.xml
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Media server 'Raumfeld MediaServer' found
Mar 21 11:26:22 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-3][21.3.2023, 12:26:22] [DeviceManager] Media server 'Raumfeld MediaServer' is useable
Mar 21 11:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 11:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 12:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 12:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 13:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 12:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 13:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 13:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 14:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 13:42:03 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 14:42:03] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 14:42:05 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 15:42:05] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 14:42:05 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 15:42:05] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 15:42:07 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 16:42:07] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 15:42:07 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 16:42:07] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 16:42:05 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 17:42:05] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 16:42:05 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 17:42:05] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 17:42:05 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 18:42:05] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 17:42:05 homeassistant addon_f97079c8_spixradio[480]: [RAUMKERNEL][level-4][21.3.2023, 18:42:05] ContentDirectory subscription callback triggered on device 'Raumfeld MediaServer'
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: tried to get non-virtual renderer for udn.  uuid:386ee664-efcc-44da-b468-c359a9bfe44c undefined
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: Could not load zone renderer for UDN  uuid:386ee664-efcc-44da-b468-c359a9bfe44c
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: file:///app/app/RaumkernelHelper/RaumkernelHelper.js:385
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]:         let rendererUDNs = _mediaRendererVirtual.getRoomRendererUDNs();
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]:                                                  ^
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: 
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: TypeError: Cannot read properties of undefined (reading 'getRoomRendererUDNs')
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]:     at RaumkernelHelper.leaveStandby (file:///app/app/RaumkernelHelper/RaumkernelHelper.js:385:50)
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]:     at RaumkernelHelper.playFavourite (file:///app/app/RaumkernelHelper/RaumkernelHelper.js:335:14)
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]:     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: 
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: Node.js v19.8.1
Mar 21 18:39:26 homeassistant addon_f97079c8_spixradio[480]: error Command failed with exit code 1.

Add "onSystemReady" event

Add event when device list was filled for the fiirst time and the zone cinbfiguration is present too

wrong ip address used when discovering device via bonjour when using mDNS repeater

Hello,

I have two seperate VLANs/subnets. Where the raumserver is one (ip range 10.10.20.x/24) and the Raumfeld Host is in another subnet (10.10.10.x/24). As mDNS (used by bonjour) by default only looks for devices (via multicast) in its own subnet you have to create some sort of bridge between those two subnets - the mDNS-repeater (the repeater runs on the router an has the IP 10.10.10.1 and 10.10.20.1). It will basically just forward (repeat) mDNS lookups as well as responses from one subnet to the other. In this setup an mDNS/bonjour response looks like so:

{
  "addresses": [
    "10.10.10.106"
  ],
  "host": "stereo-l.local",
  "referer": {
    "address": "10.10.20.1",
    "family": "IPv4",
    "port": 5353,
    "size": 203
  },
  "port": 47365,
  ...
}

The correct IP of the host is the one at the top (10.10.10.106). But in the code the IP from the referer is used, which in this case is the repeater and not the actual Raumfeld device. Hence "connecting" to the device fails.

Not sure if there are cases tho were using an address from the addresses-array might not work or where those are wrong. But would it make sense to just change the code to the following?

self.deviceFound(_service.addresses[0], _service.fqdn, _service, "BONJOUR")       

License of node-raumkernel

Hello @ChriD,

what is the license for this package?

I would like to use node-raumkernel within a Mac App for controlling the Raumfeld Speakers. I plan to publish the code open source, but I need to publish binaries as well to make it easy for the users to use the Software.

Can I use node-raumkernel for that?
It would be great if you could add a license to this repository. (You can find descriptions here if you want: https://choosealicense.com)

Best
Uli

Consider "ContainerUpdateId's"

We have to consider the containerUpdateId state variable on the content directory of the media server (subcscribe).
Whenever we get a list id there we have to inform the mediaList manager that the list has updated and if the media list manager has the list in cache, he will go for an update and willemit the list afterwards. If the list is not in cache we do not have to do anything

Question: handling of unassigned rooms

I have problems understanding how I can handle unassigned rooms and their devices.
This happens when I remove a room from a zone in the app.
The room is then unassigned and has no virtual renderer I can select.
I find the renderer on the zoneManager if I getRendererUdnsForRoomUdnOrName with the room name.
How is it possible to reactivate that room with the raumkernel?

howto setup a virtual media renderer?

Hi, impressive work, Thanks!

I have a problem of understanding.
I would like to apply loadUri to a specific device.
LoadUri is only available for virtual renderers.
How can I make a media renderer a virtual media renderer with raumkernel?

Create/Modify zone Playlists (TitleLists)

We do want to create or modify the zone playlists.
This can be done by creating "queues"
queues can be created and modified in the "0/Zones" and "0/My Playlists" objects

Therefore we do need functions like:

CreateQueue
AddToQueue(
RemoveFromQueue
MoveInQueue
RenameQueue

???

mediaRenderer.SetQueue(_queueId)
mediaRenderer.GetQueueId(_queueId)

Should we create a queueManager?

Error: Text data outside of root node.

Since an update from March 10 I see the above error with the following stacktrace:

Error: Text data outside of root node.
Line: 4
Column: 17
Char:
at error (/root/work/node_modules/sax/lib/sax.js:666:10)
at strictFail (/root/work/node_modules/sax/lib/sax.js:692:7)
at SAXParser.write (/root/work/node_modules/sax/lib/sax.js:1035:15)
at XMLParser.feed (/root/work/node_modules/elementtree/lib/parsers/sax.js:48:15)
at ElementTree.parse (/root/work/node_modules/elementtree/lib/elementtree.js:271:10)
at Object.parse (/root/work/node_modules/elementtree/lib/elementtree.js:584:8)
at parseEvents (/root/work/node_modules/node-raumkernel/lib/lib.external.upnp-device-client.js:423:16)
at /root/work/node_modules/node-raumkernel/lib/lib.external.upnp-device-client.js:340:22
at ConcatStream. (/root/work/node_modules/concat-stream/index.js:36:43)
at emitNone (events.js:91:20)
at ConcatStream.emit (events.js:188:7)
at finishMaybe (/root/work/node_modules/readable-stream/lib/_stream_writable.js:513:14)
at endWritable (/root/work/node_modules/readable-stream/lib/_stream_writable.js:523:3)
at ConcatStream.Writable.end (/root/work/node_modules/readable-stream/lib/_stream_writable.js:493:41)
at IncomingMessage.onend (_stream_readable.js:511:10)
at Object.onceWrapper (events.js:293:19)

Dropping all rooms from zone results in error

So I get this error trace when I drop each room with dropRoomFromZone and monitor "rendererStateKeyValueChanged".
I think this is because then there are no zones anymore:

TypeError: Cannot read property 'length' of undefined
    at ZoneManager.getRoomObjectFromMediaRendererUdnOrName (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.manager.zoneManager.js:461:93)
    at ZoneManager.getRoomNameForMediaRendererUDN (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.manager.zoneManager.js:391:28)
    at UPNPMediaRendererRaumfeld.roomName (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.device.upnp.mediaRenderer.raumfeld.js:19:49)
    at Raumkernel.handleEvent (/home/node/.node-red/node_modules/node-red-contrib-raumfeld/nodes/raumfeld-room-play-state-changed.js:18:43)
    at Raumkernel.emit (events.js:164:20)
    at Raumkernel.onRendererStateKeyValueChanged (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.raumkernel.js:268:14)
    at DeviceManager.<anonymous> (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.raumkernel.js:99:158)
    at DeviceManager.emit (events.js:159:13)
    at UPNPMediaRendererRaumfeld.<anonymous> (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.manager.deviceManager.js:452:22)
    at UPNPMediaRendererRaumfeld.emit (events.js:159:13)
    at UPNPMediaRendererRaumfeld.updateRendererStateObject (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.device.upnp.mediaRenderer.js:152:22)
    at UPNPMediaRendererRaumfeld.updateRendererState (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.device.upnp.mediaRenderer.js:121:14)
    at UPNPMediaRendererRaumfeld.onRenderingControlSubscription (/home/node/.node-red/node_modules/node-raumkernel/lib/lib.device.upnp.mediaRenderer.js:218:14)
    at /home/node/.node-red/node_modules/node-raumkernel/lib/lib.device.upnp.mediaRenderer.js:109:19
    at /home/node/.node-red/node_modules/node-raumkernel/lib/lib.external.upnp-device-client.js:431:13
    at Array.forEach (<anonymous>)

Multiple calls of certain functions

So playing with my node-red-contrib project and using it for a week now in my Home environment I realised that I might need something like a request broker managing all the calls to the kernel. Actions like adding a renderer to a zone or creating a new zone or dropping renderers from zones take "a lot of time". I managed to circumvent this on my nodes where I call an action on multiple room renderers at once by wating on the individual async calls and execute the next just when the last has finished but I have problems if I call actions against the kernel coming from different nodes at once. This can happen if I have multiple action and trigger them from the Home app or if I combine switches in the home app.

Thinking about creating an own broker where I register my nodes and queue the actions and the broker takes care of executing them all in the order they arrived I came to the conclusion that it might be better if the kernel would support this right away.

How do you handle this in your raumserver? Do you allow to send multiple requests at once or do you queue them there and send the call to the raumkernel in order? Or is that not possible with the raumserver?

Add ability to set the station button urls

The station buttons are defined in the content directory as far as i researched. (0/Renderers/[rendererUDN]/StationButtons)
Maybe we can change them with the content directory methods?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.