Jump to content
BillOatman

ANSWERED New Plugin - Philips Hue Mood Lighting

Recommended Posts

BillOatman

@@BillOatman,

 

This sounds like playback progress EventArgs.

 

Has the playback started scene been connected to

 

sessionManager.PlaybackStartedEvent.

 

Otherwise it will trigger every second.

Yup:

 _sessionManager.PlaybackStart += PlaybackStart;
  _sessionManager.PlaybackStopped += PlaybackStopped;
  _sessionManager.PlaybackProgress += PlaybackProgress;
  • Like 1

Share this post


Link to post
Share on other sites
BillOatman

You want to monitor the playback progress event for things like pausing and unpause in sessions.

 

Also, it is good to check mediaItem.Type = "Movie"

 

Or "Series", "Episode" etc

Yup do that too :)

 

I'm thinking in his setup unexpected devices are coming through.  So I put this at the start of all 3 routines:

            var DeviceOptions = Plugin.Instance.Configuration.Options.Where(i => i.embyDeviceID == e.DeviceId && i.Enabled);
            if (DeviceOptions.Count() == 0) { return; }

So any devices that I don't care about, and that aren't enabled for this plugin, kicks out of the callback immediately.

We'll see.  If that's it, it's a good optimization for everyone.

  • Like 1

Share this post


Link to post
Share on other sites
chef

Yup do that too :)

 

I'm thinking in his setup unexpected devices are coming through. So I put this at the start of all 3 routines:

 

            var DeviceOptions = Plugin.Instance.Configuration.Options.Where(i => i.embyDeviceID == e.DeviceId && i.Enabled);
            if (DeviceOptions.Count() == 0) { return; }
So any devices that I don't care about, and that aren't enabled for this plugin, kicks out of the callback immediately.

We'll see. If that's it, it's a good optimization for everyone.

Nice!

 

The problem with device IDs are that clients like Chrome and Xbox One ,will change IDs Everytime they load.

 

This is why emby's device tab has duplicate, upon duplicates of registered chrome entries. LOL.

Edited by chef

Share this post


Link to post
Share on other sites
pir8radio

Nice!

 

The problem with device IDs are that clients like Chrome and Xbox One ,will change IDs Everytime they load.

 

This is why emby's device tab has duplicate, upon duplicates of registered chrome entries. LOL.

Hopefully no one is using a browser for their tv/theater setup. [emoji846]

 

 

Sent from my iPhone using Tapatalk

Share this post


Link to post
Share on other sites
BillOatman

New version in original post.

Share this post


Link to post
Share on other sites
pir8radio

2019-06-18 21:09:48.532 Error SessionManager: Error in event handler
*** Error Report ***
Version: 4.2.0.17
Command line: C:\Users\nam\AppData\Roaming\Emby-Server\System\EmbyServer.dll -noautorunwebapp
Operating system: Microsoft Windows NT 6.2.9200.0
64-Bit OS: True
64-Bit Process: True
User Interactive: True
Runtime: file:///C:/Users/nam/AppData/Roaming/Emby-Server/System/System.Private.CoreLib.dll
Processor count: 40
Program data path: C:\Users\nam\AppData\Roaming\Emby-Server
Application directory: C:\Users\nam\AppData\Roaming\Emby-Server\System
System.MissingMethodException: System.MissingMethodException: Method not found: 'Boolean MediaBrowser.Model.Dto.BaseItemDto.IsType(System.String)'.
at Emby.HueMoodLighting.HueMoodLighting.PlaybackProgress(Object sender, PlaybackProgressEventArgs e)
at MediaBrowser.Common.Events.EventHelper.FireEventIfNotNull[T](EventHandler`1 handler, Object sender, T args, ILogger logger)
Source: Emby.HueMoodLighting
TargetSite: Void PlaybackProgress(System.Object, MediaBrowser.Controller.Library.PlaybackProgressEventArgs)

2019-06-18 21:09:49.532 Error SessionManager: Error in event handler
*** Error Report ***
Version: 4.2.0.17
Command line: C:\Users\nam\AppData\Roaming\Emby-Server\System\EmbyServer.dll -noautorunwebapp
Operating system: Microsoft Windows NT 6.2.9200.0
64-Bit OS: True
64-Bit Process: True
User Interactive: True
Runtime: file:///C:/Users/nam/AppData/Roaming/Emby-Server/System/System.Private.CoreLib.dll
Processor count: 40
Program data path: C:\Users\nam\AppData\Roaming\Emby-Server
Application directory: C:\Users\nam\AppData\Roaming\Emby-Server\System
System.MissingMethodException: System.MissingMethodException: Method not found: 'Boolean MediaBrowser.Model.Dto.BaseItemDto.IsType(System.String)'.
at Emby.HueMoodLighting.HueMoodLighting.PlaybackProgress(Object sender, PlaybackProgressEventArgs e)
at MediaBrowser.Common.Events.EventHelper.FireEventIfNotNull[T](EventHandler`1 handler, Object sender, T args, ILogger logger)
Source: Emby.HueMoodLighting
TargetSite: Void PlaybackProgress(System.Object, MediaBrowser.Controller.Library.PlaybackProgressEventArgs)

Share this post


Link to post
Share on other sites
pir8radio

@@BillOatman every second error non-stop stopped... However if any user is playing anything, I get the error every second until everyone stops.    IE browser worked too..    But getting the above error, and no light control.

Edited by pir8radio

Share this post


Link to post
Share on other sites
BillOatman

@@BillOatman every second error non-stop stopped... However if any user is playing anything, I get the error every second until everyone stops.    IE browser worked too..    But getting the above error, and no light control.

Well that's good about IE anyway.  Safari is working too now.  It's so weird, Emby is sending something very different in your case for some reason.

Edited by BillOatman

Share this post


Link to post
Share on other sites
chef

 

2019-06-18 21:09:48.532 Error SessionManager: Error in event handler
	*** Error Report ***
	Version: 4.2.0.17
	Command line: C:\Users\nam\AppData\Roaming\Emby-Server\System\EmbyServer.dll -noautorunwebapp
	Operating system: Microsoft Windows NT 6.2.9200.0
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Runtime: file:///C:/Users/nam/AppData/Roaming/Emby-Server/System/System.Private.CoreLib.dll
	Processor count: 40
	Program data path: C:\Users\nam\AppData\Roaming\Emby-Server
	Application directory: C:\Users\nam\AppData\Roaming\Emby-Server\System
	System.MissingMethodException: System.MissingMethodException: Method not found: 'Boolean MediaBrowser.Model.Dto.BaseItemDto.IsType(System.String)'.
	   at Emby.HueMoodLighting.HueMoodLighting.PlaybackProgress(Object sender, PlaybackProgressEventArgs e)
	   at MediaBrowser.Common.Events.EventHelper.FireEventIfNotNull[T](EventHandler`1 handler, Object sender, T args, ILogger logger)
	Source: Emby.HueMoodLighting
	TargetSite: Void PlaybackProgress(System.Object, MediaBrowser.Controller.Library.PlaybackProgressEventArgs)
	
2019-06-18 21:09:49.532 Error SessionManager: Error in event handler
	*** Error Report ***
	Version: 4.2.0.17
	Command line: C:\Users\nam\AppData\Roaming\Emby-Server\System\EmbyServer.dll -noautorunwebapp
	Operating system: Microsoft Windows NT 6.2.9200.0
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Runtime: file:///C:/Users/nam/AppData/Roaming/Emby-Server/System/System.Private.CoreLib.dll
	Processor count: 40
	Program data path: C:\Users\nam\AppData\Roaming\Emby-Server
	Application directory: C:\Users\nam\AppData\Roaming\Emby-Server\System
	System.MissingMethodException: System.MissingMethodException: Method not found: 'Boolean MediaBrowser.Model.Dto.BaseItemDto.IsType(System.String)'.
	   at Emby.HueMoodLighting.HueMoodLighting.PlaybackProgress(Object sender, PlaybackProgressEventArgs e)
	   at MediaBrowser.Common.Events.EventHelper.FireEventIfNotNull[T](EventHandler`1 handler, Object sender, T args, ILogger logger)
	Source: Emby.HueMoodLighting
	TargetSite: Void PlaybackProgress(System.Object, MediaBrowser.Controller.Library.PlaybackProgressEventArgs)
That exception says that the PlaybackProgress event arguments doesn't understand IsType(string) on the baseItem.

 

Use the PlaybackProgress to check for paused Sessions.

Use sessionManager to check all sessions in the Progress event.

It will report that there is a list of Paused, or Unpaused sessions, and return those session IDs.

 

 

 

There is a gotcha in the Emby API to be mindful of:

 

If a session is playing media then it is flagged as "Unpaused".

 

 

So in Vera plugin there is a internal boolean that switches from true or false. Or else the unpause event will trigger again and again while playing media, because it is technically Unpaused.

 

To handle this the best I could I create a List<string>. session IDs.

 

If the session becomes Paused I add the ID to the list and trigger a paused scene.

 

Then check each event trigger to see if the playing sessions are in the list. If they are, then the session is no longer paused and a scene can trigger Unpaused, and remove the ID from the list.

Other wise ignore the events.

 

 

 

_-----------------

 

But Playprogress events will also return NowPlayingItem which is an itemDto, and will contain info.

 

Not sure if this helps pinpoint an issue.

Edited by chef
  • Like 1

Share this post


Link to post
Share on other sites
WilhelmStroker

Not sure how to workaround this but when I watch a playlist of TV shows, my lights come on, and then turn down again when a new episode starts. Probably due to the fact that it is a stop and start of an episode.

Also noticed that when I back out of an episode with the back key of my harmony remote, my lights stay dimmed, I guess because Emby doesn't register that as a stop event.

Share this post


Link to post
Share on other sites
BillOatman

Not sure how to workaround this but when I watch a playlist of TV shows, my lights come on, and then turn down again when a new episode starts. Probably due to the fact that it is a stop and start of an episode.

Also noticed that when I back out of an episode with the back key of my harmony remote, my lights stay dimmed, I guess because Emby doesn't register that as a stop event.

Yeah that would be my guess, no stop event on the back out.

Same behavior for a movie?

What client are you using for this?

 

@@Luke and/or @@chef ... Is there or should there be a stop event sent on a back button if a video is playing?  Or is there a different event to subscribe to for this?

Share this post


Link to post
Share on other sites
chef

Backing out of playback should stop the stream so the PlaybackStopped event would fire.

 

Which client is the item being played on?

 

Also, I have run into the same issues while watching episodes from Vera where each episode change causes scenes to run.

 

I'm currently looking at logic to fix that and I will share or we can work together to refactor something that fixes it, I'm sure.

Edited by chef

Share this post


Link to post
Share on other sites
BillOatman

Sounds good.  By the way @@WilhelmStroker, you can set the movies only checkbox so the plugin won't control lights at all for tv episodes.

Edited by BillOatman

Share this post


Link to post
Share on other sites
WilhelmStroker

OK so I tested this again on both Xbox and Fire TV stick and for some reason the backout now triggers the stop event correctly for both movies and TV shows. Didn't make any changes to my setup.. I'm aware of the movies setting but most of my watching is TV shows so I'd like the lights to trigger all the time :) Happy to test any new versions!

Share this post


Link to post
Share on other sites
BillOatman

OK so I tested this again on both Xbox and Fire TV stick and for some reason the backout now triggers the stop event correctly for both movies and TV shows. Didn't make any changes to my setup.. I'm aware of the movies setting but most of my watching is TV shows so I'd like the lights to trigger all the time :) Happy to test any new versions!

Thanks for the update!  I noticed over this past weekend I think that a few times after the firmware updated on my bridge that the bridge seemed to ignore some scene setting commands.

I went to debug thinking I had broken something, then it started working and has worked since then.  Maybe you had a similar situation.  Glad it's working through :)

 

I have one current fairly minor bug I'm working/testing now with another user.  Then I think it will be ready to release.

Hopefully I'll be posting another release candidate soon :)

Share this post


Link to post
Share on other sites
WilhelmStroker

Yeah I reckon it started working after I rebooted my router, I've noticed a few times that my hub gets in a weird state. Working fine now though :)

Share this post


Link to post
Share on other sites
BillOatman

Release candidate 4 now in original post.

No outstanding bugs that I know of :)

  • Like 2

Share this post


Link to post
Share on other sites
pir8radio

Release candidate 4 now in original post.

No outstanding bugs that I know of :)

 

 

I would like to note, that it works over the internet (hue is at a different location than the emby server) and its instant.   Thanks for taking on this plugin, hope to see it in the emby lineup soon!

Edited by pir8radio
  • Like 1

Share this post


Link to post
Share on other sites
BillOatman

Should be in the catalog now, enjoy!

Share this post


Link to post
Share on other sites
pir8radio

Should be in the catalog now, enjoy!

Do I have to remove and install from there to get auto updates?

 

 

Sent from my iPhone using Tapatalk

Share this post


Link to post
Share on other sites
BillOatman

Do I have to remove and install from there to get auto updates?

 

 

Sent from my iPhone using Tapatalk

I do not know the answer to that. But the version in the catalog is 1.0.0.0 so you might need to update from the catalog, even though the only difference will be that version number.

I suspect @@ebr knows,

Edited by BillOatman
  • Like 1

Share this post


Link to post
Share on other sites
chef

I do not know the answer to that. But the version in the catalog is 1.0.0.0 so you might need to update from the catalog, even though the only difference will be that version number.

I suspect @@ebr knows,

Make sure you change the cspoj file for updates when you release.

Match the file and version numbers.

 

Then match the version and file number for the cspoj to the admin page release data.

 

If the cspoj file and admin site have bigger version number then what people have installed they will get a notification about the new install.

 

Then people can restart emby server to force the update if they want or wait for emby to check for new plugin updates hidden task to run.

Edited by chef
  • Like 1

Share this post


Link to post
Share on other sites
pir8radio

looks like it worked, I didn't have to do anything, came home to this on my dashboard.

 

5d0fe4d47991f_Screenshotfrom201906231544

  • Like 1

Share this post


Link to post
Share on other sites
BillOatman

Cool!

Share this post


Link to post
Share on other sites
WilhelmStroker

Yup mine did this too, and it's successfully showing as version 1 now.

 

Apart from the setting to control the lights only by night, i think it would be good to also be able to have the option to control the lights on a timed basis. Sunset is too late for me as my house is quite dark....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...