From 1cdcb9d6b725b362764d97a276ef1947c18e425f Mon Sep 17 00:00:00 2001
From: matt1432 <matt@nelim.org>
Date: Mon, 17 Mar 2025 13:48:42 -0400
Subject: [PATCH] chore(netd): bump 25.6.0 -> 25.10.0

---
 .../modules/home-assistant/netdaemon/.version |   2 +-
 .../netdaemon/HomeAssistantGenerated          | 293 ++++++++++++++----
 .../home-assistant/netdaemon/deps.json        | 168 +++++-----
 .../netdaemon/images/netdaemon.nix            |   6 +-
 .../home-assistant/netdaemon/netdaemon.csproj |  18 +-
 5 files changed, 325 insertions(+), 162 deletions(-)

diff --git a/configurations/homie/modules/home-assistant/netdaemon/.version b/configurations/homie/modules/home-assistant/netdaemon/.version
index af6e803c..9bdc9f23 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/.version
+++ b/configurations/homie/modules/home-assistant/netdaemon/.version
@@ -1 +1 @@
-25.6.0
+25.10.0
diff --git a/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated b/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated
index 3abcd5a4..40492764 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated
+++ b/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
-// Generated using NetDaemon CodeGenerator nd-codegen v25.6.0.0
-//   At: 2025-02-16T10:56:36.9825827-05:00
+// Generated using NetDaemon CodeGenerator nd-codegen v25.10.0.0
+//   At: 2025-03-17T13:40:06.4067016-04:00
 //
 // *** Make sure the version of the codegen tool and your nugets NetDaemon.* have the same version.***
 // You can use following command to keep it up to date with the latest version:
@@ -300,10 +300,8 @@ public partial class MediaPlayerEntities
     public IEnumerable<MediaPlayerEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("media_player.")).Select(e => new MediaPlayerEntity(e));
     ///<summary>Android TV 192.168.0.106</summary>
     public MediaPlayerEntity AndroidTv1921680106 => new(_haContext, "media_player.android_tv_192_168_0_106");
-    ///<summary>Living Room Speaker</summary>
+    ///<summary>YAS_209</summary>
     public MediaPlayerEntity LivingRoomSpeaker => new(_haContext, "media_player.living_room_speaker");
-    ///<summary>Living Room Speaker</summary>
-    public MediaPlayerEntity LivingRoomSpeaker2 => new(_haContext, "media_player.living_room_speaker_2");
     ///<summary>UE Boom 2</summary>
     public MediaPlayerEntity MusicPlayerDaemon => new(_haContext, "media_player.music_player_daemon");
     ///<summary>Living room TV</summary>
@@ -326,7 +324,7 @@ public partial class AssistSatelliteEntities
 
     /// <summary>Enumerates all assist_satellite entities currently registered (at runtime) in Home Assistant as AssistSatelliteEntity</summary>
     public IEnumerable<AssistSatelliteEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("assist_satellite.")).Select(e => new AssistSatelliteEntity(e));
-    ///<summary>M5Stack Atom Echo 31196c Assist satellite</summary>
+    ///<summary>Assist satellite</summary>
     public AssistSatelliteEntity M5stackAtomEcho31196cAssistSatellite => new(_haContext, "assist_satellite.m5stack_atom_echo_31196c_assist_satellite");
 }
 
@@ -442,8 +440,6 @@ public partial class ConversationEntities
 
     /// <summary>Enumerates all conversation entities currently registered (at runtime) in Home Assistant as ConversationEntity</summary>
     public IEnumerable<ConversationEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("conversation.")).Select(e => new ConversationEntity(e));
-    ///<summary>Fallback Conversation Agent</summary>
-    public ConversationEntity FallbackConversationAgent => new(_haContext, "conversation.fallback_conversation_agent");
     ///<summary>Home Assistant</summary>
     public ConversationEntity HomeAssistant => new(_haContext, "conversation.home_assistant");
 }
@@ -460,6 +456,7 @@ public partial class DeviceTrackerEntities
     public IEnumerable<DeviceTrackerEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("device_tracker.")).Select(e => new DeviceTrackerEntity(e));
     public DeviceTrackerEntity Care4b6b => new(_haContext, "device_tracker.care_4b6b");
     public DeviceTrackerEntity Mc2000103066422c1 => new(_haContext, "device_tracker.mc200_01_030664_22c1");
+    public DeviceTrackerEntity Mc200010318862a53 => new(_haContext, "device_tracker.mc200_01_031886_2a53");
     public DeviceTrackerEntity Mc20001070702B39d => new(_haContext, "device_tracker.mc200_01_070702_b39d");
     public DeviceTrackerEntity Mc20001142816Ce44 => new(_haContext, "device_tracker.mc200_01_142816_ce44");
     public DeviceTrackerEntity Mc200011585562218 => new(_haContext, "device_tracker.mc200_01_158556_2218");
@@ -656,8 +653,6 @@ public partial class SensorEntities
     public IEnumerable<NumericSensorEntity> EnumerateAllNumeric() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("sensor.") && (e.EntityState?.AttributesJson?.TryGetProperty("unit_of_measurement", out _) ?? false)).Select(e => new NumericSensorEntity(e));
     ///<summary>CODA-4680-FIZ External IP</summary>
     public SensorEntity Coda4680FizExternalIp => new(_haContext, "sensor.coda_4680_fiz_external_ip");
-    ///<summary>Fallback Conversation Agent Result</summary>
-    public SensorEntity FallbackConversationAgentResult => new(_haContext, "sensor.fallback_conversation_agent_result");
     ///<summary>Material Rounded Base Color Matt</summary>
     public SensorEntity MaterialRoundedBaseColorMatt => new(_haContext, "sensor.material_rounded_base_color_matt");
     ///<summary>Pixel 8 Accent color</summary>
@@ -761,6 +756,8 @@ public partial class SensorEntities
     ///<summary>Estimated distance</summary>
     public NumericSensorEntity Mc2000103066422c1EstimatedDistance => new(_haContext, "sensor.mc200_01_030664_22c1_estimated_distance");
     ///<summary>Estimated distance</summary>
+    public NumericSensorEntity Mc200010318862a53EstimatedDistance => new(_haContext, "sensor.mc200_01_031886_2a53_estimated_distance");
+    ///<summary>Estimated distance</summary>
     public NumericSensorEntity Mc20001070702B39dEstimatedDistance => new(_haContext, "sensor.mc200_01_070702_b39d_estimated_distance");
     ///<summary>Estimated distance</summary>
     public NumericSensorEntity Mc20001142816Ce44EstimatedDistance => new(_haContext, "sensor.mc200_01_142816_ce44_estimated_distance");
@@ -928,8 +925,10 @@ public partial class WeatherEntities
 
     /// <summary>Enumerates all weather entities currently registered (at runtime) in Home Assistant as WeatherEntity</summary>
     public IEnumerable<WeatherEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("weather.")).Select(e => new WeatherEntity(e));
-    ///<summary>Forecast Home</summary>
+    ///<summary>Home</summary>
     public WeatherEntity ForecastHome => new(_haContext, "weather.forecast_home");
+    ///<summary>Forecast Home</summary>
+    public WeatherEntity ForecastHome2 => new(_haContext, "weather.forecast_home_2");
 }
 
 public partial class ZoneEntities
@@ -1244,6 +1243,12 @@ public partial record MediaPlayerAttributes
 
     [JsonPropertyName("restored")]
     public bool? Restored { get; init; }
+
+    [JsonPropertyName("sp_user_has_web_player_credentials")]
+    public bool? SpUserHasWebPlayerCredentials { get; init; }
+
+    [JsonPropertyName("volume_step")]
+    public double? VolumeStep { get; init; }
 }
 
 public partial record AssistSatelliteEntity : Entity<AssistSatelliteEntity, EntityState<AssistSatelliteAttributes>, AssistSatelliteAttributes>
@@ -1264,6 +1269,9 @@ public partial record AssistSatelliteAttributes
 
     [JsonPropertyName("supported_features")]
     public double? SupportedFeatures { get; init; }
+
+    [JsonPropertyName("restored")]
+    public bool? Restored { get; init; }
 }
 
 public partial record AutomationEntity : Entity<AutomationEntity, EntityState<AutomationAttributes>, AutomationAttributes>, IAutomationEntityCore
@@ -1834,6 +1842,12 @@ public partial record SensorAttributes
 
     [JsonPropertyName("total_media_session_count")]
     public double? TotalMediaSessionCount { get; init; }
+
+    [JsonPropertyName("1ca92e23-f087-4df7-b9a2-fd4b716a4bf6_19987_0")]
+    public double? _1ca92e23f0874df7b9a2fd4b716a4bf6199870 { get; init; }
+
+    [JsonPropertyName("74278bda-b644-4520-8f0c-720eaf059935_0_50585")]
+    public double? _74278bdab64445208f0c720eaf059935050585 { get; init; }
 }
 
 public partial record NumericSensorEntity : NumericEntity<NumericSensorEntity, NumericEntityState<NumericSensorAttributes>, NumericSensorAttributes>, ISensorEntityCore
@@ -2155,6 +2169,9 @@ public partial record WeatherAttributes
 
     [JsonPropertyName("supported_features")]
     public double? SupportedFeatures { get; init; }
+
+    [JsonPropertyName("restored")]
+    public bool? Restored { get; init; }
 }
 
 public partial record ZoneEntity : Entity<ZoneEntity, EntityState<ZoneAttributes>, ZoneAttributes>, IZoneEntityCore
@@ -3484,7 +3501,7 @@ public partial class HomeassistantServices
         _haContext.CallService("homeassistant", "reload_config_entry", target, new HomeassistantReloadConfigEntryParameters { EntryId = entryId });
     }
 
-    ///<summary>Reloads the core configuration from the YAML-configuration.</summary>
+    ///<summary>Reloads the Core configuration from the YAML-configuration.</summary>
     public void ReloadCoreConfig(object? data = null)
     {
         _haContext.CallService("homeassistant", "reload_core_config", null, data);
@@ -3550,13 +3567,13 @@ public partial class HomeassistantServices
         _haContext.CallService("homeassistant", "turn_on", target, data);
     }
 
-    ///<summary>Forces one or more entities to update its data.</summary>
+    ///<summary>Forces one or more entities to update their data.</summary>
     public void UpdateEntity(HomeassistantUpdateEntityParameters data)
     {
         _haContext.CallService("homeassistant", "update_entity", null, data);
     }
 
-    ///<summary>Forces one or more entities to update its data.</summary>
+    ///<summary>Forces one or more entities to update their data.</summary>
     ///<param name="entityId">List of entities to force update.</param>
     public void UpdateEntity(IEnumerable<string> entityId)
     {
@@ -3780,14 +3797,14 @@ public partial class InputSelectServices
         _haContext.CallService("input_select", "select_last", target, data);
     }
 
-    ///<summary>Select the next option.</summary>
+    ///<summary>Selects the next option.</summary>
     ///<param name="target">The target for this service call</param>
     public void SelectNext(ServiceTarget target, InputSelectSelectNextParameters data)
     {
         _haContext.CallService("input_select", "select_next", target, data);
     }
 
-    ///<summary>Select the next option.</summary>
+    ///<summary>Selects the next option.</summary>
     ///<param name="cycle">If the option should cycle from the last to the first option on the list.</param>
     public void SelectNext(ServiceTarget target, bool? cycle = null)
     {
@@ -3816,7 +3833,7 @@ public partial class InputSelectServices
     }
 
     ///<summary>Selects the previous option.</summary>
-    ///<param name="cycle">If the option should cycle from the last to the first option on the list.</param>
+    ///<param name="cycle">If the option should cycle from the first to the last option on the list.</param>
     public void SelectPrevious(ServiceTarget target, bool? cycle = null)
     {
         _haContext.CallService("input_select", "select_previous", target, new InputSelectSelectPreviousParameters { Cycle = cycle });
@@ -3853,7 +3870,7 @@ public partial record InputSelectSelectOptionParameters
 
 public partial record InputSelectSelectPreviousParameters
 {
-    ///<summary>If the option should cycle from the last to the first option on the list.</summary>
+    ///<summary>If the option should cycle from the first to the last option on the list.</summary>
     [JsonPropertyName("cycle")]
     public bool? Cycle { get; init; }
 }
@@ -4218,7 +4235,7 @@ public partial class LogbookServices
     }
 
     ///<summary>Creates a custom entry in the logbook.</summary>
-    ///<param name="name">Custom name for an entity, can be referenced using an `entity_id`. eg: Kitchen</param>
+    ///<param name="name">Custom name for an entity, can be referenced using the &apos;Entity ID&apos; field. eg: Kitchen</param>
     ///<param name="message">Message of the logbook entry. eg: is being used</param>
     ///<param name="entityId">Entity to reference in the logbook entry.</param>
     ///<param name="domain">Determines which icon is used in the logbook entry. The icon illustrates the integration domain related to this logbook entry. eg: light</param>
@@ -4230,7 +4247,7 @@ public partial class LogbookServices
 
 public partial record LogbookLogParameters
 {
-    ///<summary>Custom name for an entity, can be referenced using an `entity_id`. eg: Kitchen</summary>
+    ///<summary>Custom name for an entity, can be referenced using the &apos;Entity ID&apos; field. eg: Kitchen</summary>
     [JsonPropertyName("name")]
     public string? Name { get; init; }
 
@@ -4305,6 +4322,37 @@ public partial class MediaPlayerServices
         _haContext = haContext;
     }
 
+    ///<summary>Browses the available media.</summary>
+    ///<param name="target">The target for this service call</param>
+    public void BrowseMedia(ServiceTarget target, MediaPlayerBrowseMediaParameters data)
+    {
+        _haContext.CallService("media_player", "browse_media", target, data);
+    }
+
+    ///<summary>Browses the available media.</summary>
+    ///<param name="mediaContentType">The type of the content to browse, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentId">The ID of the content to browse. Integration dependent. eg: A:ALBUMARTIST/Beatles</param>
+    public void BrowseMedia(ServiceTarget target, string? mediaContentType = null, string? mediaContentId = null)
+    {
+        _haContext.CallService("media_player", "browse_media", target, new MediaPlayerBrowseMediaParameters { MediaContentType = mediaContentType, MediaContentId = mediaContentId });
+    }
+
+    ///<summary>Browses the available media.</summary>
+    ///<param name="target">The target for this service call</param>
+    public Task<JsonElement?> BrowseMediaAsync(ServiceTarget target, MediaPlayerBrowseMediaParameters data)
+    {
+        return _haContext.CallServiceWithResponseAsync("media_player", "browse_media", target, data);
+    }
+
+    ///<summary>Browses the available media.</summary>
+    ///<param name="target">The target for this service call</param>
+    ///<param name="mediaContentType">The type of the content to browse, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentId">The ID of the content to browse. Integration dependent. eg: A:ALBUMARTIST/Beatles</param>
+    public Task<JsonElement?> BrowseMediaAsync(ServiceTarget target, string? mediaContentType = null, string? mediaContentId = null)
+    {
+        return _haContext.CallServiceWithResponseAsync("media_player", "browse_media", target, new MediaPlayerBrowseMediaParameters { MediaContentType = mediaContentType, MediaContentId = mediaContentId });
+    }
+
     ///<summary>Removes all items from the playlist.</summary>
     ///<param name="target">The target for this service call</param>
     public void ClearPlaylist(ServiceTarget target, object? data = null)
@@ -4391,7 +4439,7 @@ public partial class MediaPlayerServices
 
     ///<summary>Starts playing specified media.</summary>
     ///<param name="mediaContentId">The ID of the content to play. Platform dependent. eg: https://home-assistant.io/images/cast/splash.png</param>
-    ///<param name="mediaContentType">The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentType">The type of the content to play, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
     ///<param name="enqueue">If the content should be played now or be added to the queue.</param>
     ///<param name="announce">If the media should be played as an announcement. eg: true</param>
     public void PlayMedia(ServiceTarget target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null)
@@ -4399,15 +4447,15 @@ public partial class MediaPlayerServices
         _haContext.CallService("media_player", "play_media", target, new MediaPlayerPlayMediaParameters { MediaContentId = mediaContentId, MediaContentType = mediaContentType, Enqueue = enqueue, Announce = announce });
     }
 
-    ///<summary>Playback mode that plays the media in a loop.</summary>
+    ///<summary>Sets the repeat mode.</summary>
     ///<param name="target">The target for this service call</param>
     public void RepeatSet(ServiceTarget target, MediaPlayerRepeatSetParameters data)
     {
         _haContext.CallService("media_player", "repeat_set", target, data);
     }
 
-    ///<summary>Playback mode that plays the media in a loop.</summary>
-    ///<param name="repeat">Repeat mode to set.</param>
+    ///<summary>Sets the repeat mode.</summary>
+    ///<param name="repeat">Whether the media (one or all) should be played in a loop or not.</param>
     public void RepeatSet(ServiceTarget target, object repeat)
     {
         _haContext.CallService("media_player", "repeat_set", target, new MediaPlayerRepeatSetParameters { Repeat = repeat });
@@ -4441,15 +4489,15 @@ public partial class MediaPlayerServices
         _haContext.CallService("media_player", "select_source", target, new MediaPlayerSelectSourceParameters { Source = source });
     }
 
-    ///<summary>Playback mode that selects the media in randomized order.</summary>
+    ///<summary>Enables or disables the shuffle mode.</summary>
     ///<param name="target">The target for this service call</param>
     public void ShuffleSet(ServiceTarget target, MediaPlayerShuffleSetParameters data)
     {
         _haContext.CallService("media_player", "shuffle_set", target, data);
     }
 
-    ///<summary>Playback mode that selects the media in randomized order.</summary>
-    ///<param name="shuffle">Whether or not shuffle mode is enabled.</param>
+    ///<summary>Enables or disables the shuffle mode.</summary>
+    ///<param name="shuffle">Whether the media should be played in randomized order or not.</param>
     public void ShuffleSet(ServiceTarget target, bool shuffle)
     {
         _haContext.CallService("media_player", "shuffle_set", target, new MediaPlayerShuffleSetParameters { Shuffle = shuffle });
@@ -4526,6 +4574,17 @@ public partial class MediaPlayerServices
     }
 }
 
+public partial record MediaPlayerBrowseMediaParameters
+{
+    ///<summary>The type of the content to browse, such as image, music, tv show, video, episode, channel, or playlist. eg: music</summary>
+    [JsonPropertyName("media_content_type")]
+    public string? MediaContentType { get; init; }
+
+    ///<summary>The ID of the content to browse. Integration dependent. eg: A:ALBUMARTIST/Beatles</summary>
+    [JsonPropertyName("media_content_id")]
+    public string? MediaContentId { get; init; }
+}
+
 public partial record MediaPlayerJoinParameters
 {
     ///<summary>The players which will be synced with the playback specified in &apos;Targets&apos;. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 </summary>
@@ -4546,7 +4605,7 @@ public partial record MediaPlayerPlayMediaParameters
     [JsonPropertyName("media_content_id")]
     public string? MediaContentId { get; init; }
 
-    ///<summary>The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music</summary>
+    ///<summary>The type of the content to play, such as image, music, tv show, video, episode, channel, or playlist. eg: music</summary>
     [JsonPropertyName("media_content_type")]
     public string? MediaContentType { get; init; }
 
@@ -4561,7 +4620,7 @@ public partial record MediaPlayerPlayMediaParameters
 
 public partial record MediaPlayerRepeatSetParameters
 {
-    ///<summary>Repeat mode to set.</summary>
+    ///<summary>Whether the media (one or all) should be played in a loop or not.</summary>
     [JsonPropertyName("repeat")]
     public object? Repeat { get; init; }
 }
@@ -4582,7 +4641,7 @@ public partial record MediaPlayerSelectSourceParameters
 
 public partial record MediaPlayerShuffleSetParameters
 {
-    ///<summary>Whether or not shuffle mode is enabled.</summary>
+    ///<summary>Whether the media should be played in randomized order or not.</summary>
     [JsonPropertyName("shuffle")]
     public bool? Shuffle { get; init; }
 }
@@ -4925,7 +4984,7 @@ public partial class NotifyServices
     ///<summary>Sends a notification that is visible in the notifications panel.</summary>
     ///<param name="message">Message body of the notification. eg: The garage door has been open for 10 minutes.</param>
     ///<param name="title">Title of the notification. eg: Your Garage Door Friend</param>
-    ///<param name="data">Some integrations provide extended functionality. For information on how to use _data_, refer to the integration documentation.. eg: platform specific</param>
+    ///<param name="data">Some integrations provide extended functionality via this field. For more information, refer to the integration documentation. eg: platform specific</param>
     public void PersistentNotification(string message, string? title = null, object? data = null)
     {
         _haContext.CallService("notify", "persistent_notification", null, new NotifyPersistentNotificationParameters { Message = message, Title = title, Data = data });
@@ -5014,7 +5073,7 @@ public partial record NotifyPersistentNotificationParameters
     [JsonPropertyName("title")]
     public string? Title { get; init; }
 
-    ///<summary>Some integrations provide extended functionality. For information on how to use _data_, refer to the integration documentation.. eg: platform specific</summary>
+    ///<summary>Some integrations provide extended functionality via this field. For more information, refer to the integration documentation. eg: platform specific</summary>
     [JsonPropertyName("data")]
     public object? Data { get; init; }
 }
@@ -5047,7 +5106,7 @@ public partial class NumberServices
 
     ///<summary>Sets the value of a number.</summary>
     ///<param name="value">The target value to set. eg: 42</param>
-    public void SetValue(ServiceTarget target, string? value = null)
+    public void SetValue(ServiceTarget target, string value)
     {
         _haContext.CallService("number", "set_value", target, new NumberSetValueParameters { Value = value });
     }
@@ -5499,6 +5558,20 @@ public partial class ScheduleServices
         _haContext = haContext;
     }
 
+    ///<summary>Retrieves the configured time ranges of one or multiple schedules.</summary>
+    ///<param name="target">The target for this service call</param>
+    public void GetSchedule(ServiceTarget target, object? data = null)
+    {
+        _haContext.CallService("schedule", "get_schedule", target, data);
+    }
+
+    ///<summary>Retrieves the configured time ranges of one or multiple schedules.</summary>
+    ///<param name="target">The target for this service call</param>
+    public Task<JsonElement?> GetScheduleAsync(ServiceTarget target, object? data = null)
+    {
+        return _haContext.CallServiceWithResponseAsync("schedule", "get_schedule", target, data);
+    }
+
     ///<summary>Reloads schedules from the YAML-configuration.</summary>
     public void Reload(object? data = null)
     {
@@ -8375,6 +8448,19 @@ public partial class SpotifyplusServices
         return _haContext.CallServiceWithResponseAsync("spotifyplus", "search_tracks", null, new SpotifyplusSearchTracksParameters { EntityId = entityId, Criteria = criteria, Limit = limit, Offset = offset, Market = market, IncludeExternal = includeExternal, LimitTotal = limitTotal });
     }
 
+    ///<summary>Forces Spotify Authorization token to expire within 10 seconds; used to test token refresh processing.</summary>
+    public void TestTokenExpire(SpotifyplusTestTokenExpireParameters data)
+    {
+        _haContext.CallService("spotifyplus", "test_token_expire", null, data);
+    }
+
+    ///<summary>Forces Spotify Authorization token to expire within 10 seconds; used to test token refresh processing.</summary>
+    ///<param name="entityId">Entity ID of the SpotifyPlus device that will make the request to the Spotify Web API. eg: media_player.spotifyplus_username</param>
+    public void TestTokenExpire(string entityId)
+    {
+        _haContext.CallService("spotifyplus", "test_token_expire", null, new SpotifyplusTestTokenExpireParameters { EntityId = entityId });
+    }
+
     ///<summary>Remove the current user as a follower of one or more artists.</summary>
     public void UnfollowArtists(SpotifyplusUnfollowArtistsParameters data)
     {
@@ -8417,6 +8503,20 @@ public partial class SpotifyplusServices
         _haContext.CallService("spotifyplus", "unfollow_users", null, new SpotifyplusUnfollowUsersParameters { EntityId = entityId, Ids = ids });
     }
 
+    ///<summary>Set level used for volume step services.</summary>
+    public void VolumeSetStep(SpotifyplusVolumeSetStepParameters data)
+    {
+        _haContext.CallService("spotifyplus", "volume_set_step", null, data);
+    }
+
+    ///<summary>Set level used for volume step services.</summary>
+    ///<param name="entityId">Entity ID of the SpotifyPlus device that will make the request to the Spotify Web API. eg: media_player.spotifyplus_username</param>
+    ///<param name="level">Level percentage to adjust the volume by. Default is 0.1, range is 0.1 to 1.0. eg: 0.05</param>
+    public void VolumeSetStep(string entityId, double? level = null)
+    {
+        _haContext.CallService("spotifyplus", "volume_set_step", null, new SpotifyplusVolumeSetStepParameters { EntityId = entityId, Level = level });
+    }
+
     ///<summary>Calls the `addUser` Spotify Zeroconf API endpoint to issue a call to SpConnectionLoginBlob.  If successful, the associated device id is added to the Spotify Connect active device list for the specified user account.  This will also issue a `resetUsers` call prior to the `addUser` call.</summary>
     public void ZeroconfDeviceConnect(SpotifyplusZeroconfDeviceConnectParameters data)
     {
@@ -10502,6 +10602,13 @@ public partial record SpotifyplusSearchTracksParameters
     public double? LimitTotal { get; init; }
 }
 
+public partial record SpotifyplusTestTokenExpireParameters
+{
+    ///<summary>Entity ID of the SpotifyPlus device that will make the request to the Spotify Web API. eg: media_player.spotifyplus_username</summary>
+    [JsonPropertyName("entity_id")]
+    public string? EntityId { get; init; }
+}
+
 public partial record SpotifyplusUnfollowArtistsParameters
 {
     ///<summary>Entity ID of the SpotifyPlus device that will make the request to the Spotify Web API. eg: media_player.spotifyplus_username</summary>
@@ -10535,6 +10642,17 @@ public partial record SpotifyplusUnfollowUsersParameters
     public string? Ids { get; init; }
 }
 
+public partial record SpotifyplusVolumeSetStepParameters
+{
+    ///<summary>Entity ID of the SpotifyPlus device that will make the request to the Spotify Web API. eg: media_player.spotifyplus_username</summary>
+    [JsonPropertyName("entity_id")]
+    public string? EntityId { get; init; }
+
+    ///<summary>Level percentage to adjust the volume by. Default is 0.1, range is 0.1 to 1.0. eg: 0.05</summary>
+    [JsonPropertyName("level")]
+    public double? Level { get; init; }
+}
+
 public partial record SpotifyplusZeroconfDeviceConnectParameters
 {
     ///<summary>Entity ID of the SpotifyPlus device that will make the request to the Spotify ZeroConf API service. eg: media_player.spotifyplus_username</summary>
@@ -11091,30 +11209,30 @@ public partial class WeatherServices
         _haContext = haContext;
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     ///<param name="target">The target for this service call</param>
     public void GetForecasts(ServiceTarget target, WeatherGetForecastsParameters data)
     {
         _haContext.CallService("weather", "get_forecasts", target, data);
     }
 
-    ///<summary>Get weather forecasts.</summary>
-    ///<param name="type">Forecast type: daily, hourly or twice daily.</param>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="type">The scope of the weather forecast.</param>
     public void GetForecasts(ServiceTarget target, object @type)
     {
         _haContext.CallService("weather", "get_forecasts", target, new WeatherGetForecastsParameters { Type = @type });
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     ///<param name="target">The target for this service call</param>
     public Task<JsonElement?> GetForecastsAsync(ServiceTarget target, WeatherGetForecastsParameters data)
     {
         return _haContext.CallServiceWithResponseAsync("weather", "get_forecasts", target, data);
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     ///<param name="target">The target for this service call</param>
-    ///<param name="type">Forecast type: daily, hourly or twice daily.</param>
+    ///<param name="type">The scope of the weather forecast.</param>
     public Task<JsonElement?> GetForecastsAsync(ServiceTarget target, object @type)
     {
         return _haContext.CallServiceWithResponseAsync("weather", "get_forecasts", target, new WeatherGetForecastsParameters { Type = @type });
@@ -11123,7 +11241,7 @@ public partial class WeatherServices
 
 public partial record WeatherGetForecastsParameters
 {
-    ///<summary>Forecast type: daily, hourly or twice daily.</summary>
+    ///<summary>The scope of the weather forecast.</summary>
     [JsonPropertyName("type")]
     public object? Type { get; init; }
 }
@@ -12099,6 +12217,51 @@ public static class LockEntityExtensionMethods
 
 public static class MediaPlayerEntityExtensionMethods
 {
+    ///<summary>Browses the available media.</summary>
+    public static Task<JsonElement?> BrowseMediaAsync(this IMediaPlayerEntityCore target, MediaPlayerBrowseMediaParameters data)
+    {
+        return target.CallServiceWithResponseAsync("browse_media", data);
+    }
+
+    ///<summary>Browses the available media.</summary>
+    ///<param name="target">The IMediaPlayerEntityCore to call this service for</param>
+    ///<param name="mediaContentType">The type of the content to browse, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentId">The ID of the content to browse. Integration dependent. eg: A:ALBUMARTIST/Beatles</param>
+    public static Task<JsonElement?> BrowseMediaAsync(this IMediaPlayerEntityCore target, string? mediaContentType = null, string? mediaContentId = null)
+    {
+        return target.CallServiceWithResponseAsync("browse_media", new MediaPlayerBrowseMediaParameters { MediaContentType = mediaContentType, MediaContentId = mediaContentId });
+    }
+
+    ///<summary>Browses the available media.</summary>
+    public static void BrowseMedia(this IMediaPlayerEntityCore target, MediaPlayerBrowseMediaParameters data)
+    {
+        target.CallService("browse_media", data);
+    }
+
+    ///<summary>Browses the available media.</summary>
+    public static void BrowseMedia(this IEnumerable<IMediaPlayerEntityCore> target, MediaPlayerBrowseMediaParameters data)
+    {
+        target.CallService("browse_media", data);
+    }
+
+    ///<summary>Browses the available media.</summary>
+    ///<param name="target">The IMediaPlayerEntityCore to call this service for</param>
+    ///<param name="mediaContentType">The type of the content to browse, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentId">The ID of the content to browse. Integration dependent. eg: A:ALBUMARTIST/Beatles</param>
+    public static void BrowseMedia(this IMediaPlayerEntityCore target, string? mediaContentType = null, string? mediaContentId = null)
+    {
+        target.CallService("browse_media", new MediaPlayerBrowseMediaParameters { MediaContentType = mediaContentType, MediaContentId = mediaContentId });
+    }
+
+    ///<summary>Browses the available media.</summary>
+    ///<param name="target">The IEnumerable&lt;IMediaPlayerEntityCore&gt; to call this service for</param>
+    ///<param name="mediaContentType">The type of the content to browse, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentId">The ID of the content to browse. Integration dependent. eg: A:ALBUMARTIST/Beatles</param>
+    public static void BrowseMedia(this IEnumerable<IMediaPlayerEntityCore> target, string? mediaContentType = null, string? mediaContentId = null)
+    {
+        target.CallService("browse_media", new MediaPlayerBrowseMediaParameters { MediaContentType = mediaContentType, MediaContentId = mediaContentId });
+    }
+
     ///<summary>Removes all items from the playlist.</summary>
     public static void ClearPlaylist(this IMediaPlayerEntityCore target, object? data = null)
     {
@@ -12254,7 +12417,7 @@ public static class MediaPlayerEntityExtensionMethods
     ///<summary>Starts playing specified media.</summary>
     ///<param name="target">The IMediaPlayerEntityCore to call this service for</param>
     ///<param name="mediaContentId">The ID of the content to play. Platform dependent. eg: https://home-assistant.io/images/cast/splash.png</param>
-    ///<param name="mediaContentType">The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentType">The type of the content to play, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
     ///<param name="enqueue">If the content should be played now or be added to the queue.</param>
     ///<param name="announce">If the media should be played as an announcement. eg: true</param>
     public static void PlayMedia(this IMediaPlayerEntityCore target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null)
@@ -12265,7 +12428,7 @@ public static class MediaPlayerEntityExtensionMethods
     ///<summary>Starts playing specified media.</summary>
     ///<param name="target">The IEnumerable&lt;IMediaPlayerEntityCore&gt; to call this service for</param>
     ///<param name="mediaContentId">The ID of the content to play. Platform dependent. eg: https://home-assistant.io/images/cast/splash.png</param>
-    ///<param name="mediaContentType">The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
+    ///<param name="mediaContentType">The type of the content to play, such as image, music, tv show, video, episode, channel, or playlist. eg: music</param>
     ///<param name="enqueue">If the content should be played now or be added to the queue.</param>
     ///<param name="announce">If the media should be played as an announcement. eg: true</param>
     public static void PlayMedia(this IEnumerable<IMediaPlayerEntityCore> target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null)
@@ -12273,29 +12436,29 @@ public static class MediaPlayerEntityExtensionMethods
         target.CallService("play_media", new MediaPlayerPlayMediaParameters { MediaContentId = mediaContentId, MediaContentType = mediaContentType, Enqueue = enqueue, Announce = announce });
     }
 
-    ///<summary>Playback mode that plays the media in a loop.</summary>
+    ///<summary>Sets the repeat mode.</summary>
     public static void RepeatSet(this IMediaPlayerEntityCore target, MediaPlayerRepeatSetParameters data)
     {
         target.CallService("repeat_set", data);
     }
 
-    ///<summary>Playback mode that plays the media in a loop.</summary>
+    ///<summary>Sets the repeat mode.</summary>
     public static void RepeatSet(this IEnumerable<IMediaPlayerEntityCore> target, MediaPlayerRepeatSetParameters data)
     {
         target.CallService("repeat_set", data);
     }
 
-    ///<summary>Playback mode that plays the media in a loop.</summary>
+    ///<summary>Sets the repeat mode.</summary>
     ///<param name="target">The IMediaPlayerEntityCore to call this service for</param>
-    ///<param name="repeat">Repeat mode to set.</param>
+    ///<param name="repeat">Whether the media (one or all) should be played in a loop or not.</param>
     public static void RepeatSet(this IMediaPlayerEntityCore target, object repeat)
     {
         target.CallService("repeat_set", new MediaPlayerRepeatSetParameters { Repeat = repeat });
     }
 
-    ///<summary>Playback mode that plays the media in a loop.</summary>
+    ///<summary>Sets the repeat mode.</summary>
     ///<param name="target">The IEnumerable&lt;IMediaPlayerEntityCore&gt; to call this service for</param>
-    ///<param name="repeat">Repeat mode to set.</param>
+    ///<param name="repeat">Whether the media (one or all) should be played in a loop or not.</param>
     public static void RepeatSet(this IEnumerable<IMediaPlayerEntityCore> target, object repeat)
     {
         target.CallService("repeat_set", new MediaPlayerRepeatSetParameters { Repeat = repeat });
@@ -12357,29 +12520,29 @@ public static class MediaPlayerEntityExtensionMethods
         target.CallService("select_source", new MediaPlayerSelectSourceParameters { Source = source });
     }
 
-    ///<summary>Playback mode that selects the media in randomized order.</summary>
+    ///<summary>Enables or disables the shuffle mode.</summary>
     public static void ShuffleSet(this IMediaPlayerEntityCore target, MediaPlayerShuffleSetParameters data)
     {
         target.CallService("shuffle_set", data);
     }
 
-    ///<summary>Playback mode that selects the media in randomized order.</summary>
+    ///<summary>Enables or disables the shuffle mode.</summary>
     public static void ShuffleSet(this IEnumerable<IMediaPlayerEntityCore> target, MediaPlayerShuffleSetParameters data)
     {
         target.CallService("shuffle_set", data);
     }
 
-    ///<summary>Playback mode that selects the media in randomized order.</summary>
+    ///<summary>Enables or disables the shuffle mode.</summary>
     ///<param name="target">The IMediaPlayerEntityCore to call this service for</param>
-    ///<param name="shuffle">Whether or not shuffle mode is enabled.</param>
+    ///<param name="shuffle">Whether the media should be played in randomized order or not.</param>
     public static void ShuffleSet(this IMediaPlayerEntityCore target, bool shuffle)
     {
         target.CallService("shuffle_set", new MediaPlayerShuffleSetParameters { Shuffle = shuffle });
     }
 
-    ///<summary>Playback mode that selects the media in randomized order.</summary>
+    ///<summary>Enables or disables the shuffle mode.</summary>
     ///<param name="target">The IEnumerable&lt;IMediaPlayerEntityCore&gt; to call this service for</param>
-    ///<param name="shuffle">Whether or not shuffle mode is enabled.</param>
+    ///<param name="shuffle">Whether the media should be played in randomized order or not.</param>
     public static void ShuffleSet(this IEnumerable<IMediaPlayerEntityCore> target, bool shuffle)
     {
         target.CallService("shuffle_set", new MediaPlayerShuffleSetParameters { Shuffle = shuffle });
@@ -12531,7 +12694,7 @@ public static class NumberEntityExtensionMethods
     ///<summary>Sets the value of a number.</summary>
     ///<param name="target">The INumberEntityCore to call this service for</param>
     ///<param name="value">The target value to set. eg: 42</param>
-    public static void SetValue(this INumberEntityCore target, string? value = null)
+    public static void SetValue(this INumberEntityCore target, string value)
     {
         target.CallService("set_value", new NumberSetValueParameters { Value = value });
     }
@@ -12539,7 +12702,7 @@ public static class NumberEntityExtensionMethods
     ///<summary>Sets the value of a number.</summary>
     ///<param name="target">The IEnumerable&lt;INumberEntityCore&gt; to call this service for</param>
     ///<param name="value">The target value to set. eg: 42</param>
-    public static void SetValue(this IEnumerable<INumberEntityCore> target, string? value = null)
+    public static void SetValue(this IEnumerable<INumberEntityCore> target, string value)
     {
         target.CallService("set_value", new NumberSetValueParameters { Value = value });
     }
@@ -13241,43 +13404,43 @@ public static class UpdateEntityExtensionMethods
 
 public static class WeatherEntityExtensionMethods
 {
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     public static Task<JsonElement?> GetForecastsAsync(this IWeatherEntityCore target, WeatherGetForecastsParameters data)
     {
         return target.CallServiceWithResponseAsync("get_forecasts", data);
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     ///<param name="target">The IWeatherEntityCore to call this service for</param>
-    ///<param name="type">Forecast type: daily, hourly or twice daily.</param>
+    ///<param name="type">The scope of the weather forecast.</param>
     public static Task<JsonElement?> GetForecastsAsync(this IWeatherEntityCore target, object @type)
     {
         return target.CallServiceWithResponseAsync("get_forecasts", new WeatherGetForecastsParameters { Type = @type });
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     public static void GetForecasts(this IWeatherEntityCore target, WeatherGetForecastsParameters data)
     {
         target.CallService("get_forecasts", data);
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     public static void GetForecasts(this IEnumerable<IWeatherEntityCore> target, WeatherGetForecastsParameters data)
     {
         target.CallService("get_forecasts", data);
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     ///<param name="target">The IWeatherEntityCore to call this service for</param>
-    ///<param name="type">Forecast type: daily, hourly or twice daily.</param>
+    ///<param name="type">The scope of the weather forecast.</param>
     public static void GetForecasts(this IWeatherEntityCore target, object @type)
     {
         target.CallService("get_forecasts", new WeatherGetForecastsParameters { Type = @type });
     }
 
-    ///<summary>Get weather forecasts.</summary>
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
     ///<param name="target">The IEnumerable&lt;IWeatherEntityCore&gt; to call this service for</param>
-    ///<param name="type">Forecast type: daily, hourly or twice daily.</param>
+    ///<param name="type">The scope of the weather forecast.</param>
     public static void GetForecasts(this IEnumerable<IWeatherEntityCore> target, object @type)
     {
         target.CallService("get_forecasts", new WeatherGetForecastsParameters { Type = @type });
diff --git a/configurations/homie/modules/home-assistant/netdaemon/deps.json b/configurations/homie/modules/home-assistant/netdaemon/deps.json
index 1828d06f..3d6a0655 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/deps.json
+++ b/configurations/homie/modules/home-assistant/netdaemon/deps.json
@@ -11,28 +11,28 @@
   },
   {
     "pname": "Microsoft.CodeAnalysis.Analyzers",
-    "version": "3.3.4",
-    "hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE="
+    "version": "3.11.0",
+    "hash": "sha256-hQ2l6E6PO4m7i+ZsfFlEx+93UsLPo4IY3wDkNG11/Sw="
   },
   {
     "pname": "Microsoft.CodeAnalysis.Common",
-    "version": "4.12.0",
-    "hash": "sha256-mm/OKG3zPLAeTVGZtuLxSG+jpQDOchn1oyHqBBJW2Ho="
+    "version": "4.13.0",
+    "hash": "sha256-Bu5ev3JM+fyf9USnLM7AJbd5lFmpVfaxm6EQYoYM9Vc="
   },
   {
     "pname": "Microsoft.CodeAnalysis.CSharp",
-    "version": "4.12.0",
-    "hash": "sha256-m1i1Q5pyEq4lAoYjNE9baEjTplH8+bXx5wSA+eMmehk="
+    "version": "4.13.0",
+    "hash": "sha256-jzO7/2j7rPqu4Xtm4lhh2Ijaiw+aUkiR+yYn+a8mg/M="
   },
   {
     "pname": "Microsoft.Extensions.Configuration",
-    "version": "9.0.2",
-    "hash": "sha256-AUNaLhYTcHUkqKGhSL7QgrifV9JkjKhNQ4Ws8UtZhlM="
+    "version": "9.0.3",
+    "hash": "sha256-p1KEkbl1h3dJkBZQUMK2Jt1vbm/NGIHqLEr7QrLYIbg="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.Abstractions",
-    "version": "9.0.2",
-    "hash": "sha256-icRtfbi0nDRUYDErtKYx0z6A1gWo5xdswsSM6o4ozxc="
+    "version": "9.0.3",
+    "hash": "sha256-OjL0pzW+Wsp0KSrqawYHdtIf8w0XqvY8USEbptgP6dI="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.Binder",
@@ -41,38 +41,38 @@
   },
   {
     "pname": "Microsoft.Extensions.Configuration.Binder",
-    "version": "9.0.2",
-    "hash": "sha256-lYWUfvSnpp9M4N4wIfFnMlB+8K79g9uUa1NXsgnxs0k="
+    "version": "9.0.3",
+    "hash": "sha256-KxYOzATIl0qI8MScHL9BYsCB3dvqoNDCrraiquBHMVs="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.CommandLine",
-    "version": "9.0.2",
-    "hash": "sha256-qsEwiAO/n2+k8Q8/AftqdSlvvQWDx7WKb+9VlP8Nuxw="
+    "version": "9.0.3",
+    "hash": "sha256-0z+CJuEuYc4SFBGxwXckB/HgTEmgr+ywsnU6T1C66Mw="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.EnvironmentVariables",
-    "version": "9.0.2",
-    "hash": "sha256-XgSdv8+zh2vXmhP+a31/+Y+mNLwQwLflfCiEtDemea0="
+    "version": "9.0.3",
+    "hash": "sha256-YvePNihtcG6L8d7Eql411e8spMOBsRpB0iwQg9itNG4="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.FileExtensions",
-    "version": "9.0.2",
-    "hash": "sha256-eeZbwf2lcV74mjXtOX8q0MxvP4QzEYyHXr1EGFS/orU="
+    "version": "9.0.3",
+    "hash": "sha256-DjGT2t5/MS/iKkZDFyjnFdm+JJe6yW80tJKTttbjQXQ="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.Json",
-    "version": "9.0.2",
-    "hash": "sha256-7/ewyjh0gXu798fYcJxOCkdaAPIzrJ8reuTzqz93IJ0="
+    "version": "9.0.3",
+    "hash": "sha256-OJkergyDbEuCbycoqClt1Sbrc533NHIFsoldJN7jzuw="
   },
   {
     "pname": "Microsoft.Extensions.Configuration.UserSecrets",
-    "version": "9.0.2",
-    "hash": "sha256-0OmAQn8gIqTPN4s0NkcidXivjq5LsEGiNVxmp3qxGoo="
+    "version": "9.0.3",
+    "hash": "sha256-x+6bybeuD4GPwAael14uCUeKduXPm5oYygeTshc44vg="
   },
   {
     "pname": "Microsoft.Extensions.DependencyInjection",
-    "version": "9.0.2",
-    "hash": "sha256-jNQVj2Xo7wzVdNDu27bLbYCVUOF8yDVrFtC3cZ9OsXo="
+    "version": "9.0.3",
+    "hash": "sha256-/gAk+YbJT1/XjMfPBrEg9wUbljA0g1vFJuE+mFOPwV0="
   },
   {
     "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
@@ -81,8 +81,8 @@
   },
   {
     "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
-    "version": "9.0.2",
-    "hash": "sha256-WoTLgw/OlXhgN54Szip0Zpne7i/YTXwZ1ZLCPcHV6QM="
+    "version": "9.0.3",
+    "hash": "sha256-90HSc8MgyemdtRTBN7Indq62DRaqI2mjai9iV/pi/o4="
   },
   {
     "pname": "Microsoft.Extensions.DependencyModel",
@@ -91,33 +91,33 @@
   },
   {
     "pname": "Microsoft.Extensions.Diagnostics",
-    "version": "9.0.2",
-    "hash": "sha256-ImTZ6PZyKEdq1XvqYT5DPr6cG0BSTrsrO7rTDuy29fc="
+    "version": "9.0.3",
+    "hash": "sha256-QE0N1+LrQ+/msQXuv1oEi/MewRiNwsTPY1t4iqqgRAc="
   },
   {
     "pname": "Microsoft.Extensions.Diagnostics.Abstractions",
-    "version": "9.0.2",
-    "hash": "sha256-JTJ8LCW3aYUO86OPgXRQthtDTUMikOfILExgeOF8CX4="
+    "version": "9.0.3",
+    "hash": "sha256-9JS73UfRg7iLAHmWWzR2eWy5/C/rUXmi5kovp8PPPWA="
   },
   {
     "pname": "Microsoft.Extensions.FileProviders.Abstractions",
-    "version": "9.0.2",
-    "hash": "sha256-RmVshMCWW1/RE/Wk8AeT4r6uZ+XFuwDFYzdxYKSm440="
+    "version": "9.0.3",
+    "hash": "sha256-tDQKHWti1NDgBx0HaHUHJzw9QGjLW/gBJwzJHD6K/S0="
   },
   {
     "pname": "Microsoft.Extensions.FileProviders.Physical",
-    "version": "9.0.2",
-    "hash": "sha256-vQBgVLW813wOnJ1+943ArDWReok6p0jAl7fhwvyFtL8="
+    "version": "9.0.3",
+    "hash": "sha256-whUFED9ESf4gj9/BQzE/L4fsaCg/KIJqiO8dS9TZgNw="
   },
   {
     "pname": "Microsoft.Extensions.FileSystemGlobbing",
-    "version": "9.0.2",
-    "hash": "sha256-oH6X8SQjqi5Q2HLRILcUr9iPqnC1Ky5m5GbYYCKCxag="
+    "version": "9.0.3",
+    "hash": "sha256-zmhFxXHNHD3zD/RM5OhrWZ9r8jttQei5cuN3R16zOH8="
   },
   {
     "pname": "Microsoft.Extensions.Hosting",
-    "version": "9.0.2",
-    "hash": "sha256-eI9ckarRX0UCX+mBsEBYdvHZrmN86bXyTRvbH4gU9JM="
+    "version": "9.0.3",
+    "hash": "sha256-Qxz6Lva9KSBUosj3t6UYFS9szJCBsoB1um7h+iIxBGM="
   },
   {
     "pname": "Microsoft.Extensions.Hosting.Abstractions",
@@ -126,13 +126,13 @@
   },
   {
     "pname": "Microsoft.Extensions.Hosting.Abstractions",
-    "version": "9.0.2",
-    "hash": "sha256-PUCam4g5g84qIqfPA9sVBNVPA26rWFq7js9nHF3WLZc="
+    "version": "9.0.3",
+    "hash": "sha256-fHVKYwO7bJ+9ZQmPxxYcMahR/v28dhJzg77BPiOLbAI="
   },
   {
     "pname": "Microsoft.Extensions.Http",
-    "version": "9.0.2",
-    "hash": "sha256-TL1TPa3xgD1d6Ix4/Iifyw1tov3Ew/BQy4bxaj7FRZU="
+    "version": "9.0.3",
+    "hash": "sha256-Hjl8xEwZc3nzyq5I0YJ3fNRyhQFhhvJxWuSxO1g/yDE="
   },
   {
     "pname": "Microsoft.Extensions.Logging",
@@ -141,8 +141,8 @@
   },
   {
     "pname": "Microsoft.Extensions.Logging",
-    "version": "9.0.2",
-    "hash": "sha256-vPCb4ZoiwZUSGJIOhYiLwcZLnsd0ZZhny6KQkT88nI0="
+    "version": "9.0.3",
+    "hash": "sha256-w1cKHraJW+i7avhTseoJ+u0parEAJ7r51E2qvsuXZDA="
   },
   {
     "pname": "Microsoft.Extensions.Logging.Abstractions",
@@ -151,93 +151,93 @@
   },
   {
     "pname": "Microsoft.Extensions.Logging.Abstractions",
-    "version": "9.0.2",
-    "hash": "sha256-mCxeuc+37XY0bmZR+z4p1hrZUdTZEg+FRcs/m6dAQDU="
+    "version": "9.0.3",
+    "hash": "sha256-f/K3A9NPpCOTGlyha5DJf+OIjfAVWu+dJ4rAqQ+3sso="
   },
   {
     "pname": "Microsoft.Extensions.Logging.Configuration",
-    "version": "9.0.2",
-    "hash": "sha256-SeNQ8us2cZ8xbJx8TK7xm3IxQR95EanSfMYhqvP2pWU="
+    "version": "9.0.3",
+    "hash": "sha256-u9Un3Bc+Cbj2E8u2etU+KPPv3IbCKgCAY/SCAGK6+LE="
   },
   {
     "pname": "Microsoft.Extensions.Logging.Console",
-    "version": "9.0.2",
-    "hash": "sha256-yD30lW3ax4JHmZ9QIp1b0ELrXiwykP5KHF/feJGweyE="
+    "version": "9.0.3",
+    "hash": "sha256-bDHxUjuO4d63GXbDoD9Hdo8AvAke0/r38hzctAWQUqc="
   },
   {
     "pname": "Microsoft.Extensions.Logging.Debug",
-    "version": "9.0.2",
-    "hash": "sha256-0WP9jFTsbXCIhYx/2IFL69mv2+K3Ld7C4QvwY00iOD0="
+    "version": "9.0.3",
+    "hash": "sha256-6BHyJWgaIF3HiwD3mAzhYmqNdDYoOrvKvpL2nkCEoJA="
   },
   {
     "pname": "Microsoft.Extensions.Logging.EventLog",
-    "version": "9.0.2",
-    "hash": "sha256-e4q/Z6xLq2HzQiKI7npagyEZdkfUe+FbIz3Tg+hPH9g="
+    "version": "9.0.3",
+    "hash": "sha256-V7GTnl5AN30H62mBKL5S52n5LGycHI1V3tfa5t5xcrA="
   },
   {
     "pname": "Microsoft.Extensions.Logging.EventSource",
-    "version": "9.0.2",
-    "hash": "sha256-W7yidllNOKxTvgIUqjJ3h55PAIR/XREfbuH+8TUhD0o="
+    "version": "9.0.3",
+    "hash": "sha256-WJ2DfDPI58fshDpK8TR3LwYLnVmMN2pW927fOzQIQX0="
   },
   {
     "pname": "Microsoft.Extensions.Options",
-    "version": "9.0.2",
-    "hash": "sha256-y2jZfcWx/H6Sx7wklA248r6kPjZmzTTLGxW8ZxrzNLM="
+    "version": "9.0.3",
+    "hash": "sha256-h4CLVA1cZdte8hd/bcb5dsi61MhAAScHRZU4LR2W5Z8="
   },
   {
     "pname": "Microsoft.Extensions.Options.ConfigurationExtensions",
-    "version": "9.0.2",
-    "hash": "sha256-xOYLRlXDI4gMEoQ+J+sQBNRT2RPDNrSCZkob7qBiV10="
+    "version": "9.0.3",
+    "hash": "sha256-FjYrMjnkEplPTYoHUVU94zXIuVsjL5AcGHb/zYkh138="
   },
   {
     "pname": "Microsoft.Extensions.Primitives",
-    "version": "9.0.2",
-    "hash": "sha256-zy/YNMaY47o6yNv2WuYiAJEjtoOF8jlWgsWHqXeSm4s="
+    "version": "9.0.3",
+    "hash": "sha256-iBwolNt6Lb2OqjDWBVnUj8vZDSID9EQw/JPI1xcuFus="
   },
   {
     "pname": "NetDaemon.AppModel",
-    "version": "25.6.0",
-    "hash": "sha256-s1x6Sxlrdrl7mApbAgUN7uPIl8uxBC+rEJ6B1f/MZrI="
+    "version": "25.10.0",
+    "hash": "sha256-w/8c8aJ5lECUostbTu1CvNTXsiUJAdNtDgOwE+uN/UI="
   },
   {
     "pname": "NetDaemon.AppModel.SourceDeployedApps",
-    "version": "25.6.0",
-    "hash": "sha256-9ndhuXTcP7QcoKB6i6KCs7B6G7u+zx22cc3ICF/jurs="
+    "version": "25.10.0",
+    "hash": "sha256-z5QFepPMgr6d1epflotWE+HdMuNv2Yqwls4GOqs7imU="
   },
   {
     "pname": "NetDaemon.Client",
-    "version": "25.6.0",
-    "hash": "sha256-dnkcHED/O9C638EDLu09uwXBpjIAxeu7bVmbqIoM1Sg="
+    "version": "25.10.0",
+    "hash": "sha256-TnqNlTd+drun0uTKcBtiFI8OCOqZOdpn2c1trUaJ0PM="
   },
   {
     "pname": "NetDaemon.Extensions.Logging",
-    "version": "25.6.0",
-    "hash": "sha256-h2f1+IJcp/J2+OGFMZ4M6LJnQWP1wZXTLstbjiWjXLM="
+    "version": "25.10.0",
+    "hash": "sha256-TTl73Ujhz+GaB/Muzn7Fn6hFTDNzho9+wT+B7RVRuok="
   },
   {
     "pname": "NetDaemon.Extensions.Scheduling",
-    "version": "25.6.0",
-    "hash": "sha256-l5iPUZ4QL14oPlwWGkPwEffLkUkRwopafmUPm0F7Cu4="
+    "version": "25.10.0",
+    "hash": "sha256-WbqCc54WdlJPWhAgQTW5kt5yQ79rNLzTcnPZ0OdfaOU="
   },
   {
     "pname": "NetDaemon.Extensions.Tts",
-    "version": "25.6.0",
-    "hash": "sha256-3N9QDa9wVr2UYtoXieoE09xPw82/eUfm7T1QsVFmYxQ="
+    "version": "25.10.0",
+    "hash": "sha256-U74jbDOXm0O0LOK7HMxREDx5MrJn7h5aoOJSCxepVQs="
   },
   {
     "pname": "NetDaemon.HassModel",
-    "version": "25.6.0",
-    "hash": "sha256-AFWIN8phZNp1X0uhSFHwEGyZ3/sARyOw0Sk7V6KZCDA="
+    "version": "25.10.0",
+    "hash": "sha256-/n2kVDwVrYOMDB9FrI/umTPcFWIichnrD3tIQhzpAN8="
   },
   {
     "pname": "NetDaemon.HassModel.Integration",
-    "version": "25.6.0",
-    "hash": "sha256-Llc5Ju6n7M6kySWd0L9yW/ZqHFWxKC/q5qLk1BGvlLk="
+    "version": "25.10.0",
+    "hash": "sha256-2FIf9FwTOe308a+N6zEd3OGPpp8BbHdNLga6XyCKemo="
   },
   {
     "pname": "NetDaemon.Runtime",
-    "version": "25.6.0",
-    "hash": "sha256-+c21vjc4kkx/8pvNVe7s2REoImXbcEZLUNPMpJqcWh4="
+    "version": "25.10.0",
+    "hash": "sha256-lyAhLhu6v++Y1sKSd7BiWmDioIqA/noY3zJOVbxeX14="
   },
   {
     "pname": "Serilog",
@@ -296,13 +296,13 @@
   },
   {
     "pname": "System.Diagnostics.EventLog",
-    "version": "9.0.2",
-    "hash": "sha256-IoiQbH8To9UqzYgJzYpFbuiRV3KGU85y4ccPTyttP/w="
+    "version": "9.0.3",
+    "hash": "sha256-wtDQ7MXGFuqjKJgfcvkosxjjxBd4e6rR9/H0jUS8PlM="
   },
   {
     "pname": "System.IO.Pipelines",
-    "version": "9.0.2",
-    "hash": "sha256-uxM7J0Q/dzEsD0NGcVBsOmdHiOEawZ5GNUKBwpdiPyE="
+    "version": "9.0.3",
+    "hash": "sha256-JV50VXnofGfL8lB/vNIpJstoBJper9tsXcjNFwGqL68="
   },
   {
     "pname": "System.Reactive",
diff --git a/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix b/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix
index a572b461..c55a8997 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix
+++ b/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "netdaemon/netdaemon5";
-  imageDigest = "sha256:4d655d76f2eabe8958d297a6d04a7f78b3e4165dfa800a0e45b5bca78fe770f2";
-  hash = "sha256-DZodCQHzAcHX7BGXGlQ4VZg3AOv7mlSyC3hwT1zavHo=";
+  imageDigest = "sha256:3290c3a8112e0abb076d9a16e1b20e31c5a97e425cb4578e7406007f443dccb5";
+  hash = "sha256-W/MlJejTpHsJfF+JyUKYKFoSUhvSS827IWpjYZQ0Tj0=";
   finalImageName = imageName;
-  finalImageTag = "25.6.0";
+  finalImageTag = "25.10.0";
 }
diff --git a/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj b/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj
index ae6f6020..a7359d39 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj
+++ b/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj
@@ -24,15 +24,15 @@
     </Target>
 
     <ItemGroup>
-        <PackageReference Include="NetDaemon.AppModel" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.AppModel.SourceDeployedApps" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.Runtime" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.HassModel" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.HassModel.Integration" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.Client" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.Extensions.Scheduling" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.Extensions.Logging" Version="25.6.0" />
-        <PackageReference Include="NetDaemon.Extensions.Tts" Version="25.6.0" />
+        <PackageReference Include="NetDaemon.AppModel" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.AppModel.SourceDeployedApps" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.Runtime" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.HassModel" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.HassModel.Integration" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.Client" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.Extensions.Scheduling" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.Extensions.Logging" Version="25.10.0" />
+        <PackageReference Include="NetDaemon.Extensions.Tts" Version="25.10.0" />
         <PackageReference Include="FuzzySharp" Version="2.0.2" />
     </ItemGroup>
 </Project>