diff --git a/.idea/.idea.netdaemon-app-template/.idea/.gitignore b/.idea/.idea.netdaemon-app-template/.idea/.gitignore new file mode 100644 index 0000000..3735b58 --- /dev/null +++ b/.idea/.idea.netdaemon-app-template/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/.idea.netdaemon-app-template.iml +/contentModel.xml +/modules.xml +/projectSettingsUpdater.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.netdaemon-app-template/.idea/indexLayout.xml b/.idea/.idea.netdaemon-app-template/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.netdaemon-app-template/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.netdaemon-app-template/.idea/vcs.xml b/.idea/.idea.netdaemon-app-template/.idea/vcs.xml new file mode 100644 index 0000000..63557c8 --- /dev/null +++ b/.idea/.idea.netdaemon-app-template/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Globals.cs b/Globals.cs index e9dd078..f11e480 100644 --- a/Globals.cs +++ b/Globals.cs @@ -10,6 +10,6 @@ global using NetDaemon.Extensions.Scheduler; global using NetDaemon.HassModel.Entities; global using NetDaemon.HassModel; -global using Niemand.Helpers; +global using NetDaemon.Helpers; global using System.Threading; global using System.Threading.Tasks; \ No newline at end of file diff --git a/Helpers/Extentions.cs b/Helpers/Extentions.cs index e8c22e7..e518b8d 100644 --- a/Helpers/Extentions.cs +++ b/Helpers/Extentions.cs @@ -1,18 +1,23 @@ using System.Text; using Microsoft.Extensions.DependencyInjection; +using Niemand; +using Niemand.Helpers; -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; public static class Extentions { private const int MustBeLessThan = 100000000; // 8 decimal digits - public static IServiceCollection AddGeneratedCode(this IServiceCollection serviceCollection) + public static IServiceCollection SetupDependencies(this IServiceCollection serviceCollection) => serviceCollection .AddTransient() .AddTransient() .AddTransient() - .AddSingleton(); + .AddSingleton() + .AddScoped() + .AddSingleton(sp => sp); + public static string GetFixedHash(this string s) { diff --git a/Helpers/Notifications/Alexa.cs b/Helpers/Notifications/Alexa.cs index efc551b..13b8461 100644 --- a/Helpers/Notifications/Alexa.cs +++ b/Helpers/Notifications/Alexa.cs @@ -4,14 +4,23 @@ namespace Niemand.Helpers; public class Alexa : IAlexa { + public enum NotificationType + { + Prompt, + Announcement, + Tts + } + private readonly IDictionary _devices; private readonly IEntities _entities; private readonly IHaContext _ha; private readonly ILogger _logger; private readonly Subject _messages = new(); - private readonly IScheduler _scheduler; - private readonly IServices _services; - private readonly IVoiceProvider _voice; + + private readonly Subject _promptResponses = new(); + private readonly IScheduler _scheduler; + private readonly IServices _services; + private readonly IVoiceProvider _voice; public Alexa(IHaContext ha, IEntities entities, IServices services, IScheduler scheduler, IVoiceProvider voice, IAppConfig config, ILogger logger) @@ -47,7 +56,7 @@ public void Announce(string mediaPlayer, string message) => public void Prompt(string mediaPlayer, string message, string eventId) => QueueNotification(new Config { Entity = mediaPlayer, Message = message, EventId = eventId }, "prompt"); - public Subject PromptResponses { get; } = new(); + public IObservable PromptResponses => _promptResponses; public void TextToSpeech(Config config) => QueueNotification(config, "tts"); @@ -103,7 +112,7 @@ private async Task ProcessNotifications(IEnumerable cfgs) foreach (var cfg in cfgs) { - message += ( message != "" ? ",,,," : "" ) + cfg.Message; + message += ( message != "" ? ",,,and," : "" ) + cfg.Message; entities = cfg.Entities; notificationType = cfg.NotifyType; eventId = cfg.EventId; @@ -158,7 +167,7 @@ private void SetupResponseHandler(IHaContext haContext) if (responseEvent?.Data == null) return; if (responseEvent?.Data?.ResponsePersonId != null) responseEvent.Data.ResponsePersonName = People[responseEvent.Data.ResponsePersonId].Name; - PromptResponses.OnNext(responseEvent.Data); + _promptResponses.OnNext(responseEvent.Data); }); } diff --git a/Helpers/Notifications/AlexaConfig.cs b/Helpers/Notifications/AlexaConfig.cs index 9ac5d8d..ca2f774 100644 --- a/Helpers/Notifications/AlexaConfig.cs +++ b/Helpers/Notifications/AlexaConfig.cs @@ -2,6 +2,6 @@ public class AlexaConfig { - public IDictionary People { get; set; } public IDictionary Devices { get; set; } + public IDictionary People { get; set; } } \ No newline at end of file diff --git a/Helpers/Notifications/AlexaDeviceConfig.cs b/Helpers/Notifications/AlexaDeviceConfig.cs index 81a96e0..9bc7043 100644 --- a/Helpers/Notifications/AlexaDeviceConfig.cs +++ b/Helpers/Notifications/AlexaDeviceConfig.cs @@ -1,4 +1,4 @@ -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; public class AlexaDeviceConfig { diff --git a/Helpers/Notifications/IAlexa.cs b/Helpers/Notifications/IAlexa.cs index 345ff27..fdd7662 100644 --- a/Helpers/Notifications/IAlexa.cs +++ b/Helpers/Notifications/IAlexa.cs @@ -1,14 +1,12 @@ -using System.Reactive.Subjects; - -namespace Niemand.Helpers; +namespace Niemand.Helpers; public interface IAlexa { + public Dictionary People { get; } + public IObservable PromptResponses { get; } void Announce(Alexa.Config config); void Announce(string mediaPlayer, string message); void Prompt(string mediaPlayer, string message, string eventId); void TextToSpeech(Alexa.Config config); void TextToSpeech(string mediaPlayer, string message); - public Subject PromptResponses { get; } - public Dictionary People { get; } } \ No newline at end of file diff --git a/Helpers/Notifications/IVoiceProvider.cs b/Helpers/Notifications/IVoiceProvider.cs index ad93234..030f0b4 100644 --- a/Helpers/Notifications/IVoiceProvider.cs +++ b/Helpers/Notifications/IVoiceProvider.cs @@ -1,4 +1,4 @@ -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; public interface IVoiceProvider { diff --git a/Helpers/Notifications/PromptResponse.cs b/Helpers/Notifications/PromptResponse.cs index 56f9817..5b37252 100644 --- a/Helpers/Notifications/PromptResponse.cs +++ b/Helpers/Notifications/PromptResponse.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; public record PromptResponse { diff --git a/Helpers/Notifications/PromptResponseType.cs b/Helpers/Notifications/PromptResponseType.cs index f2bf63b..8c48d78 100644 --- a/Helpers/Notifications/PromptResponseType.cs +++ b/Helpers/Notifications/PromptResponseType.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; [JsonConverter(typeof(JsonStringEnumConverter))] public enum PromptResponseType diff --git a/Helpers/Notifications/VoiceProvider.cs b/Helpers/Notifications/VoiceProvider.cs index bb964fa..a75a759 100644 --- a/Helpers/Notifications/VoiceProvider.cs +++ b/Helpers/Notifications/VoiceProvider.cs @@ -1,4 +1,4 @@ -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; public class VoiceProvider : IVoiceProvider { diff --git a/Helpers/Shared.cs b/Helpers/Shared.cs index a5b62a2..e1265ab 100644 --- a/Helpers/Shared.cs +++ b/Helpers/Shared.cs @@ -1,4 +1,4 @@ -namespace Niemand.Helpers; +namespace NetDaemon.Helpers; public static class Shared { diff --git a/HomeAssistantGenerated.cs b/HomeAssistantGenerated.cs index 876b294..df88cac 100644 --- a/HomeAssistantGenerated.cs +++ b/HomeAssistantGenerated.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // -// Generated using NetDaemon CodeGenerator nd-codegen v23.19.0.0 -// At: 2023-08-04T14:21:24.1827597+01:00 +// Generated using NetDaemon CodeGenerator nd-codegen v23.33.0.0 +// At: 2023-09-08T15:52:08.3259792+01:00 // // *** Make sure the version of the codegen tool and your nugets Joysoftware.NetDaemon.* have the same version.*** // You can use following command to keep it up to date with the latest version: @@ -319,10 +319,6 @@ public AutomationEntities(IHaContext haContext) public AutomationEntity DoorNotify => new(_haContext, "automation.door_notify"); ///Doorbell public AutomationEntity Doorbell => new(_haContext, "automation.doorbell"); - ///Dryer Done Response - public AutomationEntity DryerDoneResponse => new(_haContext, "automation.dryer_done_response"); - ///Dryer Notification - public AutomationEntity DryerNotification => new(_haContext, "automation.dryer_notification"); ///Front Door Motion public AutomationEntity FrontDoorMotion => new(_haContext, "automation.front_door_motion"); ///Granny Arrives @@ -345,10 +341,6 @@ public AutomationEntities(IHaContext haContext) public AutomationEntity JaydenMotionAlert => new(_haContext, "automation.jayden_motion_alert"); ///Jayden Keep in bed public AutomationEntity KeepJaydenInBed => new(_haContext, "automation.keep_jayden_in_bed"); - ///Laundry Done Request - public AutomationEntity LaundryDoneRequest => new(_haContext, "automation.laundry_done_request"); - ///Laundry Done Response - public AutomationEntity LaundryDoneResponse => new(_haContext, "automation.laundry_done_response"); ///Leave Home public AutomationEntity LeaveHome => new(_haContext, "automation.leave_home"); ///Night Mode Request @@ -377,6 +369,8 @@ public AutomationEntities(IHaContext haContext) public AutomationEntity RunSpeedtest => new(_haContext, "automation.run_speedtest"); ///Set Ring Snapshot Interval on Startup public AutomationEntity SetRingSnapshotIntervalOnStartup => new(_haContext, "automation.set_ring_snapshot_interval_on_startup"); + ///Sleep Eugene Desktop + public AutomationEntity SleepEugeneDesktop => new(_haContext, "automation.sleep_eugene_desktop"); ///Sleep Eugene Desktop Manual public AutomationEntity SleepEugeneDesktopManual => new(_haContext, "automation.sleep_eugene_desktop_manual"); ///Snooze Ring Chime @@ -397,10 +391,6 @@ public AutomationEntities(IHaContext haContext) public AutomationEntity WakeEugeneDesktop => new(_haContext, "automation.wake_eugene_desktop"); ///Wakeup public AutomationEntity Wakeup => new(_haContext, "automation.wakeup"); - ///Washing Done Response - public AutomationEntity WashingDoneResponse => new(_haContext, "automation.washing_done_response"); - ///Washing Notification - public AutomationEntity WashingNotification => new(_haContext, "automation.washing_notification"); } public partial class BinarySensorEntities @@ -493,9 +483,9 @@ public BinarySensorEntities(IHaContext haContext) public BinarySensorEntity HaileysMacbookAirUsbPnpAudioDevice => new(_haContext, "binary_sensor.haileys_macbook_air_usb_pnp_audio_device"); ///Hallway public BinarySensorEntity Hallway => new(_haContext, "binary_sensor.hallway"); - ///Heater1 + ///hottubmanager Heater1 public BinarySensorEntity Heater1 => new(_haContext, "binary_sensor.heater1"); - ///Heater2 + ///hottubmanager Heater2 public BinarySensorEntity Heater2 => new(_haContext, "binary_sensor.heater2"); ///Home Occupied public BinarySensorEntity HomeOccupied => new(_haContext, "binary_sensor.home_occupied"); @@ -541,7 +531,7 @@ public BinarySensorEntities(IHaContext haContext) public BinarySensorEntity LumiLumiSensorMagnetAq283903a03OnOff => new(_haContext, "binary_sensor.lumi_lumi_sensor_magnet_aq2_83903a03_on_off"); ///LUMI lumi.sensor_magnet.aq2 8c913a03 on_off public BinarySensorEntity LumiLumiSensorMagnetAq28c913a03OnOff => new(_haContext, "binary_sensor.lumi_lumi_sensor_magnet_aq2_8c913a03_on_off"); - ///Officer Contact on_off + ///Office Door Opening public BinarySensorEntity LumiLumiSensorMagnetAq2OnOff => new(_haContext, "binary_sensor.lumi_lumi_sensor_magnet_aq2_on_off"); ///Master Motion public BinarySensorEntity MasterMotion => new(_haContext, "binary_sensor.master_motion"); @@ -589,15 +579,15 @@ public BinarySensorEntities(IHaContext haContext) public BinarySensorEntity OfficeMotion => new(_haContext, "binary_sensor.office_motion"); ///Office Motion Occupancy public BinarySensorEntity OfficeMotionOccupancy => new(_haContext, "binary_sensor.office_motion_occupancy"); - ///Panel Lock + ///hottubmanager Panel Lock public BinarySensorEntity PanelLock => new(_haContext, "binary_sensor.panel_lock"); ///Pi-Hole Status public BinarySensorEntity PiHole => new(_haContext, "binary_sensor.pi_hole"); - ///Pi-Hole Core Update Available + ///Core Update Available public BinarySensorEntity PiHoleCoreUpdateAvailable => new(_haContext, "binary_sensor.pi_hole_core_update_available"); - ///Pi-Hole FTL Update Available + ///FTL Update Available public BinarySensorEntity PiHoleFtlUpdateAvailable => new(_haContext, "binary_sensor.pi_hole_ftl_update_available"); - ///Pi-Hole Web Update Available + ///Web Update Available public BinarySensorEntity PiHoleWebUpdateAvailable => new(_haContext, "binary_sensor.pi_hole_web_update_available"); ///Ping Google public BinarySensorEntity PingGoogle => new(_haContext, "binary_sensor.ping_google"); @@ -609,7 +599,7 @@ public BinarySensorEntities(IHaContext haContext) public BinarySensorEntity PlayroomMotion => new(_haContext, "binary_sensor.playroom_motion"); ///Playroom Occupancy public BinarySensorEntity PlayroomMotionOccupancy => new(_haContext, "binary_sensor.playroom_motion_occupancy"); - ///Power + ///hottubmanager Power public BinarySensorEntity Power => new(_haContext, "binary_sensor.power"); ///Remote UI public BinarySensorEntity RemoteUi => new(_haContext, "binary_sensor.remote_ui"); @@ -637,7 +627,7 @@ public ButtonEntities(IHaContext haContext) _haContext = haContext; } - ///EUGENE_DESKTOP_sleep + ///EUGENE_DESKTOP _sleep public ButtonEntity EugeneDesktopSleep => new(_haContext, "button.eugene_desktop_sleep"); ///Fish Lights Identify public ButtonEntity FishLightsIdentify => new(_haContext, "button.fish_lights_identify"); @@ -741,7 +731,7 @@ public ButtonEntities(IHaContext haContext) public ButtonEntity LumiLumiSensorMagnetAq283903a03Identify => new(_haContext, "button.lumi_lumi_sensor_magnet_aq2_83903a03_identify"); ///Lounge Door Identify public ButtonEntity LumiLumiSensorMagnetAq29e0b1203Identify => new(_haContext, "button.lumi_lumi_sensor_magnet_aq2_9e0b1203_identify"); - ///Officer Contact Identify + ///Office Door Identify public ButtonEntity LumiLumiSensorMagnetAq2Ac831303Identify => new(_haContext, "button.lumi_lumi_sensor_magnet_aq2_ac831303_identify"); ///Garage Door Identify public ButtonEntity LumiLumiSensorMagnetAq2E6b02103Identify => new(_haContext, "button.lumi_lumi_sensor_magnet_aq2_e6b02103_identify"); @@ -923,11 +913,11 @@ public DeviceTrackerEntities(IHaContext haContext) _haContext = haContext; } - ///247D4D7D6C90-mysimplelink 247D4D7D6C90-mysimplelink + ///247D4D7D6C90-mysimplelink public DeviceTrackerEntity _247d4d7d6c90Mysimplelink => new(_haContext, "device_tracker.247d4d7d6c90_mysimplelink"); - ///Aaron Echo Aaron Echo + ///Aaron Echo public DeviceTrackerEntity AaronEcho => new(_haContext, "device_tracker.aaron_echo"); - ///android-b8c33f1cb7c0d776 Treadmill + ///Treadmill public DeviceTrackerEntity AndroidB8c33f1cb7c0d776 => new(_haContext, "device_tracker.android_b8c33f1cb7c0d776"); ///ASAZ-5CG126368D public DeviceTrackerEntity Asaz5cg126368d => new(_haContext, "device_tracker.asaz_5cg126368d"); @@ -939,41 +929,41 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity Aubreciasiphone => new(_haContext, "device_tracker.aubreciasiphone"); ///aubri-VAIO public DeviceTrackerEntity AubriVaio => new(_haContext, "device_tracker.aubri_vaio"); - ///Bedroom 1 Bedroom 1 AC + ///Bedroom 1 AC public DeviceTrackerEntity Bedroom1Ac => new(_haContext, "device_tracker.bedroom_1_ac"); - ///Bedroom 2 Bedroom 2 AC + ///Bedroom 2 AC public DeviceTrackerEntity Bedroom2Ac => new(_haContext, "device_tracker.bedroom_2_ac"); - ///Bedroom 3 Bedroom 3 AC + ///Bedroom 3 AC public DeviceTrackerEntity Bedroom3Ac => new(_haContext, "device_tracker.bedroom_3_ac"); - ///Bedroom 4 Bedroom 4 AC + ///Bedroom 4 AC public DeviceTrackerEntity Bedroom4Ac => new(_haContext, "device_tracker.bedroom_4_ac"); - ///bosch-dishwasher-01204052703001 RX bosch-dishwasher-01204052703001 + ///bosch-dishwasher-01204052703001 public DeviceTrackerEntity BoschDishwasher01204052703001 => new(_haContext, "device_tracker.bosch_dishwasher_01204052703001"); - ///C02T8GTYGVC1 RX C02T8GTYGVC1 + ///C02T8GTYGVC1 public DeviceTrackerEntity C02t8gtygvc1 => new(_haContext, "device_tracker.c02t8gtygvc1"); - ///christmas_indoor-1558 christmas_indoor-1558 + ///christmas_indoor-1558 public DeviceTrackerEntity ChristmasIndoor1558 => new(_haContext, "device_tracker.christmas_indoor_1558"); ///ASAZ-5CG127498B public DeviceTrackerEntity DesktopIpurn8t => new(_haContext, "device_tracker.desktop_ipurn8t"); - ///Dining Dining + ///Dining public DeviceTrackerEntity Dining => new(_haContext, "device_tracker.dining"); - ///Dining Echo Dining Echo + ///Dining Echo public DeviceTrackerEntity DiningEcho => new(_haContext, "device_tracker.dining_echo"); - ///dryer Samsung-Dryer + ///Samsung-Dryer public DeviceTrackerEntity Dryer => new(_haContext, "device_tracker.dryer"); - ///Entrance Entrance + ///Entrance public DeviceTrackerEntity Entrance => new(_haContext, "device_tracker.entrance"); - ///ESP_5E9EB5 RX Tuya Socket 1 + ///Tuya Socket 1 public DeviceTrackerEntity Esp5e9eb5 => new(_haContext, "device_tracker.esp_5e9eb5"); - ///ESP_6B7081 Tuya Socket 2 + ///Tuya Socket 2 public DeviceTrackerEntity Esp6b7081 => new(_haContext, "device_tracker.esp_6b7081"); - ///ESP_6B7A3A Tuya Socket 3 + ///Tuya Socket 3 public DeviceTrackerEntity Esp6b7a3a => new(_haContext, "device_tracker.esp_6b7a3a"); - ///eufy RoboVac eufy RoboVac + ///eufy RoboVac public DeviceTrackerEntity EufyRobovac => new(_haContext, "device_tracker.eufy_robovac"); - ///eufy RoboVac eufy RoboVac + ///eufy RoboVac public DeviceTrackerEntity EufyRobovac2 => new(_haContext, "device_tracker.eufy_robovac_2"); - ///EUGENE-DESKTOP EUGENE-DESKTOP + ///EUGENE-DESKTOP public DeviceTrackerEntity EugeneDesktop => new(_haContext, "device_tracker.eugene_desktop"); ///eugene_iphone_ip public DeviceTrackerEntity EugeneIphoneIp => new(_haContext, "device_tracker.eugene_iphone_ip"); @@ -987,35 +977,35 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity Eugenesplewatch => new(_haContext, "device_tracker.eugenesplewatch"); ///floor_light-2086 public DeviceTrackerEntity FloorLight2086 => new(_haContext, "device_tracker.floor_light_2086"); - ///Foscam Foscam + ///Foscam public DeviceTrackerEntity Foscam => new(_haContext, "device_tracker.foscam"); - ///Galaxy-S8 Galaxy-S8 + ///Galaxy-S8 public DeviceTrackerEntity GalaxyS8 => new(_haContext, "device_tracker.galaxy_s8"); - ///Garage Echo Garage Echo + ///Garage Echo public DeviceTrackerEntity GarageEcho => new(_haContext, "device_tracker.garage_echo"); - ///Garden Echo RX Garden Echo + ///Garden Echo public DeviceTrackerEntity GardenEcho => new(_haContext, "device_tracker.garden_echo"); - ///Garden Floodlights Garden Floodlights + ///Garden Floodlights public DeviceTrackerEntity GardenFloodlights => new(_haContext, "device_tracker.garden_floodlights"); - ///Glow Smart Meter 4417935019B0 Glow-IHD-5019B0 + ///Glow-IHD-5019B0 public DeviceTrackerEntity GlowIhd5019b0 => new(_haContext, "device_tracker.glow_ihd_5019b0"); ///hailey_iphone_ip public DeviceTrackerEntity HaileyIphoneIp => new(_haContext, "device_tracker.hailey_iphone_ip"); ///Hailey's iPhone public DeviceTrackerEntity HaileySIphone => new(_haContext, "device_tracker.hailey_s_iphone"); - ///Haileys-Air Haileys-Air + ///Haileys-Air public DeviceTrackerEntity HaileysAir => new(_haContext, "device_tracker.haileys_air"); ///Haileys-iPhone public DeviceTrackerEntity HaileysIphone => new(_haContext, "device_tracker.haileys_iphone"); - ///Haileys-iPhone Haileys-iPhone + ///Haileys-iPhone public DeviceTrackerEntity HaileysIphone2 => new(_haContext, "device_tracker.haileys_iphone_2"); ///Hailey’s MacBook Air public DeviceTrackerEntity HaileysMacbookAir => new(_haContext, "device_tracker.haileys_macbook_air"); ///host_two public DeviceTrackerEntity HostTwo => new(_haContext, "device_tracker.host_two"); - ///Hottubcontrol Hottubcontrol + ///Hottubcontrol public DeviceTrackerEntity Hottubcontrol => new(_haContext, "device_tracker.hottubcontrol"); - ///HUAWEI_P_smart_2019-86203 HUAWEI_P_smart_2019-86203 + ///HUAWEI_P_smart_2019-86203 public DeviceTrackerEntity HuaweiPSmart201986203 => new(_haContext, "device_tracker.huawei_p_smart_2019_86203"); ///iPad public DeviceTrackerEntity Ipad => new(_haContext, "device_tracker.ipad"); @@ -1023,19 +1013,19 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity Ipad2 => new(_haContext, "device_tracker.ipad_2"); ///Eugenes-iPhone public DeviceTrackerEntity Iphone => new(_haContext, "device_tracker.iphone"); - ///iPhone RX HaileysiPhone2 + ///HaileysiPhone2 public DeviceTrackerEntity Iphone2 => new(_haContext, "device_tracker.iphone_2"); ///iPhone public DeviceTrackerEntity Iphone3 => new(_haContext, "device_tracker.iphone_3"); ///iPhone8P public DeviceTrackerEntity Iphone8p => new(_haContext, "device_tracker.iphone8p"); - ///Jayden Jayden + ///Jayden public DeviceTrackerEntity Jayden => new(_haContext, "device_tracker.jayden"); - ///Jayden AppleTv Jayden AppleTv + ///Jayden AppleTv public DeviceTrackerEntity JaydenAppletv => new(_haContext, "device_tracker.jayden_appletv"); ///jayden_bedside-4734 public DeviceTrackerEntity JaydenBedside4734 => new(_haContext, "device_tracker.jayden_bedside_4734"); - ///Jayden Echo Jayden Echo + ///Jayden Echo public DeviceTrackerEntity JaydenEcho => new(_haContext, "device_tracker.jayden_echo"); ///Jayden ’s iPad public DeviceTrackerEntity JaydenSIpad => new(_haContext, "device_tracker.jayden_s_ipad"); @@ -1045,97 +1035,98 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity JaydenSIphone2 => new(_haContext, "device_tracker.jayden_s_iphone_2"); ///Jayden ’s iPhone public DeviceTrackerEntity JaydenSIphone3 => new(_haContext, "device_tracker.jayden_s_iphone_3"); - ///Jayden-s-iPhone RX Jayden-s-iPhone + ///Jayden-s-iPhone public DeviceTrackerEntity JaydenSIphone4 => new(_haContext, "device_tracker.jayden_s_iphone_4"); - ///Lounge Lounge + ///Lounge public DeviceTrackerEntity Kitchen => new(_haContext, "device_tracker.kitchen"); - ///Kitchen Echo Kitchen Echo + ///Kitchen Echo public DeviceTrackerEntity KitchenEcho => new(_haContext, "device_tracker.kitchen_echo"); - ///Konnected Alarm Panel Add On Konnected AddOn + ///Konnected AddOn public DeviceTrackerEntity KonnectedAddon => new(_haContext, "device_tracker.konnected_addon"); - ///Konnected Alarm Panel Konnected Main + ///Konnected Main public DeviceTrackerEntity KonnectedMain => new(_haContext, "device_tracker.konnected_main"); - ///Landing Landing + ///Landing public DeviceTrackerEntity Landing => new(_haContext, "device_tracker.landing"); ///LAPTOP-D5UFT2CI public DeviceTrackerEntity LaptopD5uft2ci => new(_haContext, "device_tracker.laptop_d5uft2ci"); ///LAPTOP-L5NSO67J public DeviceTrackerEntity LaptopL5nso67j => new(_haContext, "device_tracker.laptop_l5nso67j"); - ///LG Lounge LG Lounge + ///LG Lounge public DeviceTrackerEntity LgLounge => new(_haContext, "device_tracker.lg_lounge"); ///Aaron-ATV public DeviceTrackerEntity LivingRoom => new(_haContext, "device_tracker.living_room"); - ///Office Office + ///Office public DeviceTrackerEntity Lounge => new(_haContext, "device_tracker.lounge"); - ///Lounge Lounge AC + ///Lounge AC public DeviceTrackerEntity LoungeAc => new(_haContext, "device_tracker.lounge_ac"); - ///Blind Lounge Lounge Blind + ///Lounge Blind public DeviceTrackerEntity LoungeBlind => new(_haContext, "device_tracker.lounge_blind"); - ///Lounge Echo Lounge Echo + ///Lounge Echo public DeviceTrackerEntity LoungeEcho => new(_haContext, "device_tracker.lounge_echo"); - ///Master Echo Master Echo + ///G3061WM904 + public DeviceTrackerEntity MacbookAir => new(_haContext, "device_tracker.macbook_air"); + ///Master Echo public DeviceTrackerEntity MasterEcho => new(_haContext, "device_tracker.master_echo"); - ///Master Tele Master Tele + ///Master Tele public DeviceTrackerEntity MasterTele => new(_haContext, "device_tracker.master_tele"); - ///ML-NX07KG671N ML-NX07KG671N + ///ML-NX07KG671N public DeviceTrackerEntity MlNx07kg671n => new(_haContext, "device_tracker.ml_nx07kg671n"); - ///Office Office AC + ///Office AC public DeviceTrackerEntity OfficeAc => new(_haContext, "device_tracker.office_ac"); - ///Office Echo Office Echo + ///Office Echo public DeviceTrackerEntity OfficeEcho => new(_haContext, "device_tracker.office_echo"); - ///Outside Drive Dishwasher + ///Dishwasher public DeviceTrackerEntity OutsideDrive => new(_haContext, "device_tracker.outside_drive"); - ///Outside Garage Outside Garage + ///Outside Garage public DeviceTrackerEntity OutsideGarage => new(_haContext, "device_tracker.outside_garage"); - ///Playroom Echo Playroom Echo + ///Playroom Echo public DeviceTrackerEntity PlayroomEcho => new(_haContext, "device_tracker.playroom_echo"); - ///Porch Porch + ///Porch public DeviceTrackerEntity Porch => new(_haContext, "device_tracker.porch"); - ///raspberrypi raspberrypi + ///raspberrypi public DeviceTrackerEntity Raspberrypi => new(_haContext, "device_tracker.raspberrypi"); ///raspberrypi public DeviceTrackerEntity Raspberrypi2 => new(_haContext, "device_tracker.raspberrypi_2"); - ///RaspberryPi CUPS RaspberryPi CUPS + ///RaspberryPi CUPS public DeviceTrackerEntity RaspberrypiCups => new(_haContext, "device_tracker.raspberrypi_cups"); - ///RingHpCam-49 RingHpCam-49 + ///RingHpCam-49 public DeviceTrackerEntity Ringhpcam49 => new(_haContext, "device_tracker.ringhpcam_49"); - ///RingHpCam-4c RingHpCam-4c + ///RingHpCam-4c public DeviceTrackerEntity Ringhpcam4c => new(_haContext, "device_tracker.ringhpcam_4c"); - ///RingPro-d6 public DeviceTrackerEntity RingproD6 => new(_haContext, "device_tracker.ringpro_d6"); - ///RingStickUpCam-94 RingStickUpCam-94 + ///RingStickUpCam-94 public DeviceTrackerEntity Ringstickupcam94 => new(_haContext, "device_tracker.ringstickupcam_94"); - ///RingStickUpCam-9b RingStickUpCam-9b + ///RingStickUpCam-9b public DeviceTrackerEntity Ringstickupcam9b => new(_haContext, "device_tracker.ringstickupcam_9b"); ///RMMINI-d9-2b-62 public DeviceTrackerEntity RmminiD92b62 => new(_haContext, "device_tracker.rmmini_d9_2b_62"); ///Sammi-s-A52 public DeviceTrackerEntity SammiLeighSA52 => new(_haContext, "device_tracker.sammi_leigh_s_a52"); - ///shelly1-55E8B5 Office Skylight + ///Office Skylight public DeviceTrackerEntity Shelly155e8b5 => new(_haContext, "device_tracker.shelly1_55e8b5"); - ///shelly1-BA69F6 RX Outside Drive + ///Outside Drive public DeviceTrackerEntity Shelly1Ba69f6 => new(_haContext, "device_tracker.shelly1_ba69f6"); - ///shelly1-BA6C98 RX Utility Cupboard + ///Utility Cupboard public DeviceTrackerEntity Shelly1Ba6c98 => new(_haContext, "device_tracker.shelly1_ba6c98"); - ///shelly1pm-E646FE RX Power Meter Multiplug + ///Power Meter Multiplug public DeviceTrackerEntity Shelly1pmE646fe => new(_haContext, "device_tracker.shelly1pm_e646fe"); - ///smart-plug-1 + ///tasmota-6069 public DeviceTrackerEntity SmartPlug1 => new(_haContext, "device_tracker.smart_plug_1"); - ///smart-plug-2 Fish lights + ///Fish lights public DeviceTrackerEntity SmartPlug2 => new(_haContext, "device_tracker.smart_plug_2"); - ///smart-plug-4 Eugene Desk Plug + ///Eugene Desk Plug public DeviceTrackerEntity SmartPlug4 => new(_haContext, "device_tracker.smart_plug_4"); - ///Lounge SonosZP + ///SonosZP public DeviceTrackerEntity Sonoszp => new(_haContext, "device_tracker.sonoszp"); - ///SonosZP SonosZP + ///SonosZP public DeviceTrackerEntity Sonoszp2 => new(_haContext, "device_tracker.sonoszp_2"); - ///Suspect Device Suspect Device + ///Suspect Device public DeviceTrackerEntity SuspectDevice => new(_haContext, "device_tracker.suspect_device"); - ///Suspect Huawei Suspect Huawei + ///Suspect Huawei public DeviceTrackerEntity SuspectHuawei => new(_haContext, "device_tracker.suspect_huawei"); ///tasmota-4464 public DeviceTrackerEntity Tasmota4464 => new(_haContext, "device_tracker.tasmota_4464"); - ///UK-020287222957 UK-020287222957 + ///UK-020287222957 public DeviceTrackerEntity Uk020287222957 => new(_haContext, "device_tracker.uk_020287222957"); ///UK-PC0JSKUX public DeviceTrackerEntity UkPc0jskux => new(_haContext, "device_tracker.uk_pc0jskux"); @@ -1152,6 +1143,7 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity Unifi0e9f237a65A5Default => new(_haContext, "device_tracker.unifi_0e_9f_23_7a_65_a5_default"); public DeviceTrackerEntity Unifi1292Ef14BdAdDefault => new(_haContext, "device_tracker.unifi_12_92_ef_14_bd_ad_default"); public DeviceTrackerEntity Unifi12C716BfE0BeDefault => new(_haContext, "device_tracker.unifi_12_c7_16_bf_e0_be_default"); + public DeviceTrackerEntity Unifi1eCaAfC5D6FbDefault => new(_haContext, "device_tracker.unifi_1e_ca_af_c5_d6_fb_default"); public DeviceTrackerEntity Unifi220d10919909Default => new(_haContext, "device_tracker.unifi_22_0d_10_91_99_09_default"); public DeviceTrackerEntity Unifi22666f3b995fDefault => new(_haContext, "device_tracker.unifi_22_66_6f_3b_99_5f_default"); public DeviceTrackerEntity Unifi2684208a5b5dDefault => new(_haContext, "device_tracker.unifi_26_84_20_8a_5b_5d_default"); @@ -1159,27 +1151,27 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity Unifi2a9c648d57CeDefault => new(_haContext, "device_tracker.unifi_2a_9c_64_8d_57_ce_default"); public DeviceTrackerEntity Unifi2aD7E18c21A6Default => new(_haContext, "device_tracker.unifi_2a_d7_e1_8c_21_a6_default"); public DeviceTrackerEntity Unifi2e04A5Fb0956Default => new(_haContext, "device_tracker.unifi_2e_04_a5_fb_09_56_default"); - /// SonosZP + public DeviceTrackerEntity Unifi2e14AeA02f28Default => new(_haContext, "device_tracker.unifi_2e_14_ae_a0_2f_28_default"); + ///SonosZP public DeviceTrackerEntity Unifi347e5cD68b20Default => new(_haContext, "device_tracker.unifi_34_7e_5c_d6_8b_20_default"); public DeviceTrackerEntity Unifi3655476c0c6bDefault => new(_haContext, "device_tracker.unifi_36_55_47_6c_0c_6b_default"); public DeviceTrackerEntity Unifi3a581a119095Default => new(_haContext, "device_tracker.unifi_3a_58_1a_11_90_95_default"); public DeviceTrackerEntity Unifi3a8980817eCeDefault => new(_haContext, "device_tracker.unifi_3a_89_80_81_7e_ce_default"); public DeviceTrackerEntity Unifi3e31A7677036Default => new(_haContext, "device_tracker.unifi_3e_31_a7_67_70_36_default"); public DeviceTrackerEntity Unifi3e638c3dFe8cDefault => new(_haContext, "device_tracker.unifi_3e_63_8c_3d_fe_8c_default"); - /// RX public DeviceTrackerEntity Unifi3e64D405F312Default => new(_haContext, "device_tracker.unifi_3e_64_d4_05_f3_12_default"); ///Hottubcontrol public DeviceTrackerEntity Unifi409151523cAaDefault => new(_haContext, "device_tracker.unifi_40_91_51_52_3c_aa_default"); - /// RX public DeviceTrackerEntity Unifi42377bBf55F0Default => new(_haContext, "device_tracker.unifi_42_37_7b_bf_55_f0_default"); - /// RX public DeviceTrackerEntity Unifi46F51e4396F4Default => new(_haContext, "device_tracker.unifi_46_f5_1e_43_96_f4_default"); public DeviceTrackerEntity Unifi4a998cC8A91aDefault => new(_haContext, "device_tracker.unifi_4a_99_8c_c8_a9_1a_default"); public DeviceTrackerEntity Unifi4e3a1a0dB9A1Default => new(_haContext, "device_tracker.unifi_4e_3a_1a_0d_b9_a1_default"); - /// Jayden iPad + ///Jayden iPad public DeviceTrackerEntity Unifi54Ae270e3732Default => new(_haContext, "device_tracker.unifi_54_ae_27_0e_37_32_default"); public DeviceTrackerEntity Unifi56D11bD17d21Default => new(_haContext, "device_tracker.unifi_56_d1_1b_d1_7d_21_default"); public DeviceTrackerEntity Unifi5a0c5eBc5aE3Default => new(_haContext, "device_tracker.unifi_5a_0c_5e_bc_5a_e3_default"); + public DeviceTrackerEntity Unifi5a199cD6DcEeDefault => new(_haContext, "device_tracker.unifi_5a_19_9c_d6_dc_ee_default"); + public DeviceTrackerEntity Unifi5eF23311F6D8Default => new(_haContext, "device_tracker.unifi_5e_f2_33_11_f6_d8_default"); public DeviceTrackerEntity Unifi620bE5527e5fDefault => new(_haContext, "device_tracker.unifi_62_0b_e5_52_7e_5f_default"); public DeviceTrackerEntity Unifi625c7c18D2BfDefault => new(_haContext, "device_tracker.unifi_62_5c_7c_18_d2_bf_default"); public DeviceTrackerEntity Unifi6612B8B5Ab98Default => new(_haContext, "device_tracker.unifi_66_12_b8_b5_ab_98_default"); @@ -1197,19 +1189,19 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity Unifi8eBb0497014bDefault => new(_haContext, "device_tracker.unifi_8e_bb_04_97_01_4b_default"); public DeviceTrackerEntity Unifi92208d3dA84dDefault => new(_haContext, "device_tracker.unifi_92_20_8d_3d_a8_4d_default"); public DeviceTrackerEntity Unifi9245B86269E2Default => new(_haContext, "device_tracker.unifi_92_45_b8_62_69_e2_default"); + public DeviceTrackerEntity Unifi926fFb8c016aDefault => new(_haContext, "device_tracker.unifi_92_6f_fb_8c_01_6a_default"); public DeviceTrackerEntity Unifi92952739Bb7eDefault => new(_haContext, "device_tracker.unifi_92_95_27_39_bb_7e_default"); public DeviceTrackerEntity Unifi92A5C740B6F0Default => new(_haContext, "device_tracker.unifi_92_a5_c7_40_b6_f0_default"); public DeviceTrackerEntity Unifi92C83bD694B4Default => new(_haContext, "device_tracker.unifi_92_c8_3b_d6_94_b4_default"); - /// RX public DeviceTrackerEntity Unifi965c1d849dB7Default => new(_haContext, "device_tracker.unifi_96_5c_1d_84_9d_b7_default"); + public DeviceTrackerEntity Unifi9aBfE185197fDefault => new(_haContext, "device_tracker.unifi_9a_bf_e1_85_19_7f_default"); public DeviceTrackerEntity Unifi9aD89401CfC3Default => new(_haContext, "device_tracker.unifi_9a_d8_94_01_cf_c3_default"); public DeviceTrackerEntity UnifiA09208B3C1E9Default => new(_haContext, "device_tracker.unifi_a0_92_08_b3_c1_e9_default"); public DeviceTrackerEntity UnifiA2175c44E9F6Default => new(_haContext, "device_tracker.unifi_a2_17_5c_44_e9_f6_default"); - /// iPhone + ///iPhone public DeviceTrackerEntity UnifiA4Cf99290a81Default => new(_haContext, "device_tracker.unifi_a4_cf_99_29_0a_81_default"); public DeviceTrackerEntity UnifiA6897a9aFf8fDefault => new(_haContext, "device_tracker.unifi_a6_89_7a_9a_ff_8f_default"); public DeviceTrackerEntity UnifiA8E3EeDdD898Default => new(_haContext, "device_tracker.unifi_a8_e3_ee_dd_d8_98_default"); - /// RX public DeviceTrackerEntity UnifiAa3cFe09F5F2Default => new(_haContext, "device_tracker.unifi_aa_3c_fe_09_f5_f2_default"); public DeviceTrackerEntity UnifiAaC8Cc8d8b75Default => new(_haContext, "device_tracker.unifi_aa_c8_cc_8d_8b_75_default"); public DeviceTrackerEntity UnifiAaD9F2725d29Default => new(_haContext, "device_tracker.unifi_aa_d9_f2_72_5d_29_default"); @@ -1233,7 +1225,7 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity UnifiD2Aa50D823E8Default => new(_haContext, "device_tracker.unifi_d2_aa_50_d8_23_e8_default"); public DeviceTrackerEntity UnifiD681Ff8cFc4eDefault => new(_haContext, "device_tracker.unifi_d6_81_ff_8c_fc_4e_default"); public DeviceTrackerEntity UnifiDa4eD424B44aDefault => new(_haContext, "device_tracker.unifi_da_4e_d4_24_b4_4a_default"); - /// Jayden RaspberryPi + ///Jayden RaspberryPi public DeviceTrackerEntity UnifiDcA632Dc56AfDefault => new(_haContext, "device_tracker.unifi_dc_a6_32_dc_56_af_default"); public DeviceTrackerEntity UnifiDeF13096B774Default => new(_haContext, "device_tracker.unifi_de_f1_30_96_b7_74_default"); public DeviceTrackerEntity UnifiE223Bf9c8221Default => new(_haContext, "device_tracker.unifi_e2_23_bf_9c_82_21_default"); @@ -1242,6 +1234,7 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity UnifiEa231a3b0eC6Default => new(_haContext, "device_tracker.unifi_ea_23_1a_3b_0e_c6_default"); public DeviceTrackerEntity UnifiEa7f17B856D1Default => new(_haContext, "device_tracker.unifi_ea_7f_17_b8_56_d1_default"); public DeviceTrackerEntity UnifiEe3aCe9a157aDefault => new(_haContext, "device_tracker.unifi_ee_3a_ce_9a_15_7a_default"); + public DeviceTrackerEntity UnifiEeC5023aCf7dDefault => new(_haContext, "device_tracker.unifi_ee_c5_02_3a_cf_7d_default"); public DeviceTrackerEntity UnifiEeF108C9526aDefault => new(_haContext, "device_tracker.unifi_ee_f1_08_c9_52_6a_default"); public DeviceTrackerEntity UnifiF2E3F9536e2fDefault => new(_haContext, "device_tracker.unifi_f2_e3_f9_53_6e_2f_default"); public DeviceTrackerEntity UnifiF651F29cC6CeDefault => new(_haContext, "device_tracker.unifi_f6_51_f2_9c_c6_ce_default"); @@ -1251,19 +1244,19 @@ public DeviceTrackerEntities(IHaContext haContext) public DeviceTrackerEntity UnifiFa00D75740FcDefault => new(_haContext, "device_tracker.unifi_fa_00_d7_57_40_fc_default"); public DeviceTrackerEntity UnifiFa7088Ee0802Default => new(_haContext, "device_tracker.unifi_fa_70_88_ee_08_02_default"); public DeviceTrackerEntity UnifiFe5a3957E388Default => new(_haContext, "device_tracker.unifi_fe_5a_39_57_e3_88_default"); - ///Upstairs Upstairs + ///Upstairs public DeviceTrackerEntity Upstairs => new(_haContext, "device_tracker.upstairs"); - ///Wallpanel Fire HD8 Wallpanel Fire HD8 + ///Wallpanel Fire HD8 public DeviceTrackerEntity WallpanelFireHd8 => new(_haContext, "device_tracker.wallpanel_fire_hd8"); - ///washer Samsung-Washer + ///Samsung-Washer public DeviceTrackerEntity Washer => new(_haContext, "device_tracker.washer"); - ///Wiser HeatHub (WiserHeat031C5E) WiserHeat031C5E + ///WiserHeat031C5E public DeviceTrackerEntity Wiserheat031c5e => new(_haContext, "device_tracker.wiserheat031c5e"); - ///wlan0 RX wlan0 + ///wlan0 public DeviceTrackerEntity Wlan0 => new(_haContext, "device_tracker.wlan0"); ///wlan0 public DeviceTrackerEntity Wlan02 => new(_haContext, "device_tracker.wlan0_2"); - ///XBOX XBOX + ///XBOX public DeviceTrackerEntity Xbox => new(_haContext, "device_tracker.xbox"); } @@ -1326,12 +1319,10 @@ public InputBooleanEntities(IHaContext haContext) public InputBooleanEntity NetdaemonNiemandKitchen => new(_haContext, "input_boolean.netdaemon_niemand_kitchen"); ///netdaemon_niemand_motion_alerts public InputBooleanEntity NetdaemonNiemandMotionAlerts => new(_haContext, "input_boolean.netdaemon_niemand_motion_alerts"); + ///netdaemon_niemand_notifications_manager + public InputBooleanEntity NetdaemonNiemandNotificationsManager => new(_haContext, "input_boolean.netdaemon_niemand_notifications_manager"); ///netdaemon_niemand_office public InputBooleanEntity NetdaemonNiemandOffice => new(_haContext, "input_boolean.netdaemon_niemand_office"); - ///netdaemon_niemand_test_app_alarm - public InputBooleanEntity NetdaemonNiemandTestAppAlarm => new(_haContext, "input_boolean.netdaemon_niemand_test_app_alarm"); - ///netdaemon_niemand_test_app_notifications_manager - public InputBooleanEntity NetdaemonNiemandTestAppNotificationsManager => new(_haContext, "input_boolean.netdaemon_niemand_test_app_notifications_manager"); ///netdaemon_niemand_test_app_test_app public InputBooleanEntity NetdaemonNiemandTestAppTestApp => new(_haContext, "input_boolean.netdaemon_niemand_test_app_test_app"); ///netdaemon_niemand_vacation_app @@ -1375,6 +1366,10 @@ public InputNumberEntities(IHaContext haContext) public InputNumberEntity AaronLuxLimit => new(_haContext, "input_number.aaron_lux_limit"); public InputNumberEntity BoysLuxLimit => new(_haContext, "input_number.boys_lux_limit"); public InputNumberEntity DiningLuxLimit => new(_haContext, "input_number.dining_lux_limit"); + ///Energy Rate Threshold Cheap + public InputNumberEntity EnergyRateThresholdCheap => new(_haContext, "input_number.energy_rate_threshold_cheap"); + ///Energy Rate Threshold Expensive + public InputNumberEntity EnergyRateThresholdExpensive => new(_haContext, "input_number.energy_rate_threshold_expensive"); public InputNumberEntity EntranceLuxLimit => new(_haContext, "input_number.entrance_lux_limit"); public InputNumberEntity HallwayLuxLimit => new(_haContext, "input_number.hallway_lux_limit"); public InputNumberEntity JaydenLuxLimit => new(_haContext, "input_number.jayden_lux_limit"); @@ -1438,7 +1433,7 @@ public LightEntities(IHaContext haContext) public LightEntity Aaron4 => new(_haContext, "light.aaron_4"); ///Aaron Main public LightEntity AaronMain => new(_haContext, "light.aaron_main"); - ///Aubrecia Drive light + ///Aubrecia Drive Light public LightEntity AubreciaDriveLight => new(_haContext, "light.aubrecia_drive_light"); ///Dining public LightEntity Dining => new(_haContext, "light.dining"); @@ -1464,7 +1459,7 @@ public LightEntities(IHaContext haContext) public LightEntity Entrance => new(_haContext, "light.entrance"); ///Floor public LightEntity Floor => new(_haContext, "light.floor"); - ///Garden light + ///Garden Light public LightEntity GardenLight2 => new(_haContext, "light.garden_light_2"); ///Hallway public LightEntity Hallway => new(_haContext, "light.hallway"); @@ -1522,11 +1517,11 @@ public LightEntities(IHaContext haContext) public LightEntity Master4 => new(_haContext, "light.master_4"); ///Master Nightlight public LightEntity Master5 => new(_haContext, "light.master_5"); - ///Niemand Drive light + ///Niemand Drive Light public LightEntity NiemandDriveLight => new(_haContext, "light.niemand_drive_light"); ///Niemand Drive Light public LightEntity NiemandDriveLight2 => new(_haContext, "light.niemand_drive_light_2"); - ///Niemand Garden light + ///Niemand Garden Light public LightEntity NiemandGardenLight => new(_haContext, "light.niemand_garden_light"); ///Niemand Garden Light public LightEntity NiemandGardenLight2 => new(_haContext, "light.niemand_garden_light_2"); @@ -1584,8 +1579,6 @@ public MediaPlayerEntities(IHaContext haContext) ///Aaron public MediaPlayerEntity Aaron => new(_haContext, "media_player.aaron"); - ///Aaron ATV - public MediaPlayerEntity AaronAtv => new(_haContext, "media_player.aaron_atv"); ///Alarm Clock Devices public MediaPlayerEntity AlarmClockDevices => new(_haContext, "media_player.alarm_clock_devices"); ///Dining @@ -2012,8 +2005,6 @@ public RemoteEntities(IHaContext haContext) _haContext = haContext; } - ///Aaron ATV - public RemoteEntity AaronAtv => new(_haContext, "remote.aaron_atv"); ///Xbox Remote public RemoteEntity XboxRemote => new(_haContext, "remote.xbox_remote"); } @@ -2241,23 +2232,23 @@ public SensorEntities(IHaContext haContext) public SensorEntity AubreciaBssid => new(_haContext, "sensor.aubrecia_bssid"); ///Aubrecia Connection Type public SensorEntity AubreciaConnectionType => new(_haContext, "sensor.aubrecia_connection_type"); - ///Aubrecia Drive Last Activity + ///Aubrecia Drive Last activity public SensorEntity AubreciaDriveLastActivity => new(_haContext, "sensor.aubrecia_drive_last_activity"); - ///Aubrecia Drive Last Motion + ///Aubrecia Drive Last motion public SensorEntity AubreciaDriveLastMotion => new(_haContext, "sensor.aubrecia_drive_last_motion"); ///Aubrecia Drive Volume public SensorEntity AubreciaDriveVolume => new(_haContext, "sensor.aubrecia_drive_volume"); ///Aubrecia Front Door Last Activity public SensorEntity AubreciaFrontDoorLastActivity => new(_haContext, "sensor.aubrecia_front_door_last_activity"); - ///Aubrecia Front Door Last Activity + ///Aubrecia Front Door Last activity public SensorEntity AubreciaFrontDoorLastActivity2 => new(_haContext, "sensor.aubrecia_front_door_last_activity_2"); ///Aubrecia Front Door Last Ding public SensorEntity AubreciaFrontDoorLastDing => new(_haContext, "sensor.aubrecia_front_door_last_ding"); - ///Aubrecia Front Door Last Ding + ///Aubrecia Front Door Last ding public SensorEntity AubreciaFrontDoorLastDing2 => new(_haContext, "sensor.aubrecia_front_door_last_ding_2"); ///Aubrecia Front Door Last Motion public SensorEntity AubreciaFrontDoorLastMotion => new(_haContext, "sensor.aubrecia_front_door_last_motion"); - ///Aubrecia Front Door Last Motion + ///Aubrecia Front Door Last motion public SensorEntity AubreciaFrontDoorLastMotion2 => new(_haContext, "sensor.aubrecia_front_door_last_motion_2"); ///Aubrecia Front Door Volume public SensorEntity AubreciaFrontDoorVolume => new(_haContext, "sensor.aubrecia_front_door_volume"); @@ -2319,12 +2310,14 @@ public SensorEntities(IHaContext haContext) public SensorEntity EufyRobovacUptime => new(_haContext, "sensor.eufy_robovac_uptime"); ///eufy RoboVac Uptime public SensorEntity EufyRobovacUptime2 => new(_haContext, "sensor.eufy_robovac_uptime_2"); - ///EUGENE_DESKTOP_lastactive + ///EUGENE_DESKTOP _lastactive public SensorEntity EugeneDesktopLastactive => new(_haContext, "sensor.eugene_desktop_lastactive"); - ///EUGENE_DESKTOP_lastsystemstatechange + ///EUGENE_DESKTOP _lastsystemstatechange public SensorEntity EugeneDesktopLastsystemstatechange => new(_haContext, "sensor.eugene_desktop_lastsystemstatechange"); - ///EUGENE_DESKTOP_microphoneprocess + ///EUGENE_DESKTOP _microphoneprocess public SensorEntity EugeneDesktopMicrophoneprocess => new(_haContext, "sensor.eugene_desktop_microphoneprocess"); + ///EUGENE_DESKTOP _monitorpowerstate + public SensorEntity EugeneDesktopMonitorpowerstate => new(_haContext, "sensor.eugene_desktop_monitorpowerstate"); ///EUGENE-DESKTOP Uptime public SensorEntity EugeneDesktopUptime => new(_haContext, "sensor.eugene_desktop_uptime"); ///Garden next Alarm @@ -2421,9 +2414,9 @@ public SensorEntities(IHaContext haContext) public SensorEntity GardenEchoUptime => new(_haContext, "sensor.garden_echo_uptime"); ///Garden Floodlights Uptime public SensorEntity GardenFloodlightsUptime => new(_haContext, "sensor.garden_floodlights_uptime"); - ///Garden Last Activity + ///Garden Last activity public SensorEntity GardenLastActivity2 => new(_haContext, "sensor.garden_last_activity_2"); - ///Garden Last Motion + ///Garden Last motion public SensorEntity GardenLastMotion2 => new(_haContext, "sensor.garden_last_motion_2"); ///Garden Volume public SensorEntity GardenVolume2 => new(_haContext, "sensor.garden_volume_2"); @@ -2483,7 +2476,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity HaileysMacbookAirSsid => new(_haContext, "sensor.haileys_macbook_air_ssid"); ///HP Color LaserJet 4500 hpijs pcl3, 3.18.12 public SensorEntity HpColorLaserjet4500HpijsPcl331812 => new(_haContext, "sensor.hp_color_laserjet_4500_hpijs_pcl3_3_18_12"); - ///HUAWEI_P_smart_2019-86203 Uptime + ///Uptime public SensorEntity HuaweiPSmart201986203Uptime => new(_haContext, "sensor.huawei_p_smart_2019_86203_uptime"); ///iPad Uptime public SensorEntity IpadUptime => new(_haContext, "sensor.ipad_uptime"); @@ -2557,7 +2550,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity JaydenSIphoneSim1 => new(_haContext, "sensor.jayden_s_iphone_sim_1"); ///Jayden ’s iPhone SSID public SensorEntity JaydenSIphoneSsid => new(_haContext, "sensor.jayden_s_iphone_ssid"); - ///Uptime + ///Jayden-s-iPhone RX Uptime public SensorEntity JaydenSIphoneUptime => new(_haContext, "sensor.jayden_s_iphone_uptime"); ///Uptime public SensorEntity JaydenSIphoneUptime2 => new(_haContext, "sensor.jayden_s_iphone_uptime_2"); @@ -2565,11 +2558,11 @@ public SensorEntities(IHaContext haContext) public SensorEntity JaydenSIphoneUptime3 => new(_haContext, "sensor.jayden_s_iphone_uptime_3"); ///Jayden Uptime public SensorEntity JaydenUptime => new(_haContext, "sensor.jayden_uptime"); - ///Johan Front Door Last Activity + ///Johan Front Door Last activity public SensorEntity JohanFrontDoorLastActivity => new(_haContext, "sensor.johan_front_door_last_activity"); - ///Johan Front Door Last Ding + ///Johan Front Door Last ding public SensorEntity JohanFrontDoorLastDing => new(_haContext, "sensor.johan_front_door_last_ding"); - ///Johan Front Door Last Motion + ///Johan Front Door Last motion public SensorEntity JohanFrontDoorLastMotion => new(_haContext, "sensor.johan_front_door_last_motion"); ///Johan Front Door Volume public SensorEntity JohanFrontDoorVolume => new(_haContext, "sensor.johan_front_door_volume"); @@ -2629,45 +2622,53 @@ public SensorEntities(IHaContext haContext) public SensorEntity NeerslagBuienradarRegenData => new(_haContext, "sensor.neerslag_buienradar_regen_data"); ///netdaemon_status public SensorEntity NetdaemonStatus => new(_haContext, "sensor.netdaemon_status"); + ///Niemand + public SensorEntity Niemand => new(_haContext, "sensor.niemand"); ///Niemand Drive Info public SensorEntity NiemandDriveInfo => new(_haContext, "sensor.niemand_drive_info"); - ///Niemand Drive Last Activity + ///Niemand Drive Last activity public SensorEntity NiemandDriveLastActivity => new(_haContext, "sensor.niemand_drive_last_activity"); - ///Niemand Drive Last Motion + ///Niemand Drive Last motion public SensorEntity NiemandDriveLastMotion => new(_haContext, "sensor.niemand_drive_last_motion"); ///Niemand Drive Volume public SensorEntity NiemandDriveVolume => new(_haContext, "sensor.niemand_drive_volume"); ///Niemand Front Door Info public SensorEntity NiemandFrontDoorInfo => new(_haContext, "sensor.niemand_front_door_info"); - ///Niemand Front Door Last Activity + ///Niemand Front Door Last activity public SensorEntity NiemandFrontDoorLastActivity => new(_haContext, "sensor.niemand_front_door_last_activity"); - ///Niemand Front Door Last Ding + ///Niemand Front Door Last ding public SensorEntity NiemandFrontDoorLastDing => new(_haContext, "sensor.niemand_front_door_last_ding"); - ///Niemand Front Door Last Motion + ///Niemand Front Door Last motion public SensorEntity NiemandFrontDoorLastMotion => new(_haContext, "sensor.niemand_front_door_last_motion"); ///Niemand Front Door Volume public SensorEntity NiemandFrontDoorVolume => new(_haContext, "sensor.niemand_front_door_volume"); ///Niemand Garage Info public SensorEntity NiemandGarageInfo => new(_haContext, "sensor.niemand_garage_info"); - ///Niemand Garage Last Activity + ///Niemand Garage Last activity public SensorEntity NiemandGarageLastActivity => new(_haContext, "sensor.niemand_garage_last_activity"); - ///Niemand Garage Last Motion + ///Niemand Garage Last motion public SensorEntity NiemandGarageLastMotion => new(_haContext, "sensor.niemand_garage_last_motion"); ///Niemand Garage Volume public SensorEntity NiemandGarageVolume => new(_haContext, "sensor.niemand_garage_volume"); ///Niemand Garden Info public SensorEntity NiemandGardenInfo => new(_haContext, "sensor.niemand_garden_info"); - ///Niemand Garden Last Activity + ///Niemand Garden Last activity public SensorEntity NiemandGardenLastActivity => new(_haContext, "sensor.niemand_garden_last_activity"); - ///Niemand Garden Last Motion + ///Niemand Garden Last motion public SensorEntity NiemandGardenLastMotion => new(_haContext, "sensor.niemand_garden_last_motion"); ///Niemand Garden Volume public SensorEntity NiemandGardenVolume => new(_haContext, "sensor.niemand_garden_volume"); + ///Niemand-Guest + public SensorEntity NiemandGuest => new(_haContext, "sensor.niemand_guest"); + ///Niemand-IOT + public SensorEntity NiemandIot => new(_haContext, "sensor.niemand_iot"); + ///Niemand-Mesh + public SensorEntity NiemandMesh => new(_haContext, "sensor.niemand_mesh"); ///Niemand Side Info public SensorEntity NiemandSideInfo => new(_haContext, "sensor.niemand_side_info"); - ///Niemand Side Last Activity + ///Niemand Side Last activity public SensorEntity NiemandSideLastActivity => new(_haContext, "sensor.niemand_side_last_activity"); - ///Niemand Side Last Motion + ///Niemand Side Last motion public SensorEntity NiemandSideLastMotion => new(_haContext, "sensor.niemand_side_last_motion"); ///Niemand Side Volume public SensorEntity NiemandSideVolume => new(_haContext, "sensor.niemand_side_volume"); @@ -2737,7 +2738,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity SmartMeterIhdHardware => new(_haContext, "sensor.smart_meter_ihd_hardware"); ///Smart Meter IHD Software Version public SensorEntity SmartMeterIhdSoftwareVersion => new(_haContext, "sensor.smart_meter_ihd_software_version"); - ///Uptime + ///smart-plug-1 Uptime public SensorEntity SmartPlug1Uptime => new(_haContext, "sensor.smart_plug_1_uptime"); ///smart-plug-2 Uptime public SensorEntity SmartPlug2Uptime => new(_haContext, "sensor.smart_plug_2_uptime"); @@ -2793,7 +2794,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity UkPc0jskuxUptime => new(_haContext, "sensor.uk_pc0jskux_uptime"); /// Uptime public SensorEntity Uptime => new(_haContext, "sensor.uptime"); - /// RX Uptime + ///Uptime public SensorEntity Uptime10 => new(_haContext, "sensor.uptime_10"); /// Uptime public SensorEntity Uptime11 => new(_haContext, "sensor.uptime_11"); @@ -2805,7 +2806,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity Uptime14 => new(_haContext, "sensor.uptime_14"); /// Uptime public SensorEntity Uptime15 => new(_haContext, "sensor.uptime_15"); - /// Uptime + ///Uptime public SensorEntity Uptime16 => new(_haContext, "sensor.uptime_16"); /// Uptime public SensorEntity Uptime17 => new(_haContext, "sensor.uptime_17"); @@ -2823,7 +2824,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity Uptime22 => new(_haContext, "sensor.uptime_22"); /// Uptime public SensorEntity Uptime23 => new(_haContext, "sensor.uptime_23"); - /// Uptime + ///Uptime public SensorEntity Uptime24 => new(_haContext, "sensor.uptime_24"); /// Uptime public SensorEntity Uptime25 => new(_haContext, "sensor.uptime_25"); @@ -2867,13 +2868,13 @@ public SensorEntities(IHaContext haContext) public SensorEntity Uptime42 => new(_haContext, "sensor.uptime_42"); /// Uptime public SensorEntity Uptime43 => new(_haContext, "sensor.uptime_43"); - /// RX Uptime + ///Uptime public SensorEntity Uptime44 => new(_haContext, "sensor.uptime_44"); - /// Uptime + ///Uptime public SensorEntity Uptime45 => new(_haContext, "sensor.uptime_45"); /// Uptime public SensorEntity Uptime46 => new(_haContext, "sensor.uptime_46"); - /// Uptime + ///Uptime public SensorEntity Uptime47 => new(_haContext, "sensor.uptime_47"); /// Uptime public SensorEntity Uptime48 => new(_haContext, "sensor.uptime_48"); @@ -2923,7 +2924,7 @@ public SensorEntities(IHaContext haContext) public SensorEntity Uptime7 => new(_haContext, "sensor.uptime_7"); /// Uptime public SensorEntity Uptime8 => new(_haContext, "sensor.uptime_8"); - /// Uptime + ///Uptime public SensorEntity Uptime9 => new(_haContext, "sensor.uptime_9"); ///Vacation Next State public SensorEntity VacationNextState => new(_haContext, "sensor.vacation_next_state"); @@ -2979,8 +2980,6 @@ public SensorEntities(IHaContext haContext) public SensorEntity WiserItrvUtilitySignal => new(_haContext, "sensor.wiser_itrv_utility_signal"); ///Wiser LTS Target Temperature Boys public SensorEntity WiserLtsTargetTemperatureBoys => new(_haContext, "sensor.wiser_lts_target_temperature_boys"); - ///Wiser LTS Target Temperature Guest Room - public SensorEntity WiserLtsTargetTemperatureGuestRoom => new(_haContext, "sensor.wiser_lts_target_temperature_guest_room"); ///Wiser RoomStat Utility Signal public SensorEntity WiserRoomstatUtilitySignal => new(_haContext, "sensor.wiser_roomstat_utility_signal"); ///Wiser HeatHub (WiserHeat031C5E) Uptime @@ -3517,9 +3516,9 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity HottubcontrolRx => new(_haContext, "sensor.hottubcontrol_rx"); ///Hottubcontrol TX public NumericSensorEntity HottubcontrolTx => new(_haContext, "sensor.hottubcontrol_tx"); - ///HUAWEI_P_smart_2019-86203 RX + ///RX public NumericSensorEntity HuaweiPSmart201986203Rx => new(_haContext, "sensor.huawei_p_smart_2019_86203_rx"); - ///HUAWEI_P_smart_2019-86203 TX + ///TX public NumericSensorEntity HuaweiPSmart201986203Tx => new(_haContext, "sensor.huawei_p_smart_2019_86203_tx"); ///IKEA of Sweden TRADFRI remote control Battery public NumericSensorEntity IkeaOfSwedenTradfriRemoteControl580e51fePower => new(_haContext, "sensor.ikea_of_sweden_tradfri_remote_control_580e51fe_power"); @@ -3597,7 +3596,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity JaydenSIphoneFloorsAscended => new(_haContext, "sensor.jayden_s_iphone_floors_ascended"); ///Jayden ’s iPhone Floors Descended public NumericSensorEntity JaydenSIphoneFloorsDescended => new(_haContext, "sensor.jayden_s_iphone_floors_descended"); - ///RX + ///Jayden-s-iPhone RX RX public NumericSensorEntity JaydenSIphoneRx => new(_haContext, "sensor.jayden_s_iphone_rx"); ///RX public NumericSensorEntity JaydenSIphoneRx2 => new(_haContext, "sensor.jayden_s_iphone_rx_2"); @@ -3607,7 +3606,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity JaydenSIphoneSteps => new(_haContext, "sensor.jayden_s_iphone_steps"); ///Jayden ’s iPhone Storage public NumericSensorEntity JaydenSIphoneStorage => new(_haContext, "sensor.jayden_s_iphone_storage"); - ///TX + ///Jayden-s-iPhone RX TX public NumericSensorEntity JaydenSIphoneTx => new(_haContext, "sensor.jayden_s_iphone_tx"); ///TX public NumericSensorEntity JaydenSIphoneTx2 => new(_haContext, "sensor.jayden_s_iphone_tx_2"); @@ -3647,6 +3646,10 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity KitchenEchoRx => new(_haContext, "sensor.kitchen_echo_rx"); ///Kitchen Echo TX public NumericSensorEntity KitchenEchoTx => new(_haContext, "sensor.kitchen_echo_tx"); + ///Kitchen Lights energy + public NumericSensorEntity KitchenLightsEnergy => new(_haContext, "sensor.kitchen_lights_energy"); + ///Kitchen Lights power + public NumericSensorEntity KitchenLightsPower => new(_haContext, "sensor.kitchen_lights_power"); ///Kitchen Lux public NumericSensorEntity KitchenLux => new(_haContext, "sensor.kitchen_lux"); ///Kitchen Motion Battery @@ -3753,13 +3756,13 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity LumiLumiSensorMagnetAq29e0b1203DeviceTemperature => new(_haContext, "sensor.lumi_lumi_sensor_magnet_aq2_9e0b1203_device_temperature"); ///Lounge Door Battery public NumericSensorEntity LumiLumiSensorMagnetAq29e0b1203Power => new(_haContext, "sensor.lumi_lumi_sensor_magnet_aq2_9e0b1203_power"); - ///Officer Contact Device temperature + ///Office Door Device temperature public NumericSensorEntity LumiLumiSensorMagnetAq2Ac831303DeviceTemperature => new(_haContext, "sensor.lumi_lumi_sensor_magnet_aq2_ac831303_device_temperature"); ///Garage Door Device temperature public NumericSensorEntity LumiLumiSensorMagnetAq2E6b02103DeviceTemperature => new(_haContext, "sensor.lumi_lumi_sensor_magnet_aq2_e6b02103_device_temperature"); ///Garage Door Battery public NumericSensorEntity LumiLumiSensorMagnetAq2E6b02103Power => new(_haContext, "sensor.lumi_lumi_sensor_magnet_aq2_e6b02103_power"); - ///Officer Contact power + ///Office Door power public NumericSensorEntity LumiLumiSensorMagnetAq2Power => new(_haContext, "sensor.lumi_lumi_sensor_magnet_aq2_power"); ///Dining Motion Device temperature public NumericSensorEntity LumiLumiSensorMotionAq234796603DeviceTemperature => new(_haContext, "sensor.lumi_lumi_sensor_motion_aq2_34796603_device_temperature"); @@ -3787,6 +3790,10 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity LumiLumiSensorMotionAq2Ef2f1404DeviceTemperature => new(_haContext, "sensor.lumi_lumi_sensor_motion_aq2_ef2f1404_device_temperature"); ///office motion Device temperature public NumericSensorEntity LumiLumiSensorMotionAq2F33b1404DeviceTemperature => new(_haContext, "sensor.lumi_lumi_sensor_motion_aq2_f33b1404_device_temperature"); + ///MacBook-Air RX + public NumericSensorEntity MacbookAirRx => new(_haContext, "sensor.macbook_air_rx"); + ///MacBook-Air TX + public NumericSensorEntity MacbookAirTx => new(_haContext, "sensor.macbook_air_tx"); ///master 1 energy public NumericSensorEntity Master1Energy => new(_haContext, "sensor.master_1_energy"); ///master 1 power @@ -3867,12 +3874,16 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210CurrentRate => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_current_rate"); ///Gas E6S16735201861 7401432210 Current Standing Charge public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210CurrentStandingCharge => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_current_standing_charge"); + ///Gas E6S16735201861 7401432210 Next Rate + public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210NextRate => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_next_rate"); ///Gas E6S16735201861 7401432210 Previous Accumulative Consumption public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210PreviousAccumulativeConsumption => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_previous_accumulative_consumption"); ///Gas E6S16735201861 7401432210 Previous Accumulative Consumption (kWh) public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210PreviousAccumulativeConsumptionKwh => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_previous_accumulative_consumption_kwh"); ///Gas E6S16735201861 7401432210 Previous Accumulative Cost public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210PreviousAccumulativeCost => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_previous_accumulative_cost"); + ///Gas E6S16735201861 7401432210 Previous Rate + public NumericSensorEntity OctopusEnergyGasE6s167352018617401432210PreviousRate => new(_haContext, "sensor.octopus_energy_gas_e6s16735201861_7401432210_previous_rate"); ///office 1 energy public NumericSensorEntity Office1Energy => new(_haContext, "sensor.office_1_energy"); ///office 1 power @@ -4057,14 +4068,28 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity RmminiD92b62Tx => new(_haContext, "sensor.rmmini_d9_2b_62_tx"); /// RX public NumericSensorEntity Rx => new(_haContext, "sensor.rx"); - /// RX RX + ///RX public NumericSensorEntity Rx10 => new(_haContext, "sensor.rx_10"); - /// RX + ///RX public NumericSensorEntity Rx100 => new(_haContext, "sensor.rx_100"); - /// RX + ///RX public NumericSensorEntity Rx101 => new(_haContext, "sensor.rx_101"); - /// RX + ///RX public NumericSensorEntity Rx102 => new(_haContext, "sensor.rx_102"); + ///RX + public NumericSensorEntity Rx103 => new(_haContext, "sensor.rx_103"); + ///RX + public NumericSensorEntity Rx104 => new(_haContext, "sensor.rx_104"); + ///RX + public NumericSensorEntity Rx105 => new(_haContext, "sensor.rx_105"); + ///RX + public NumericSensorEntity Rx106 => new(_haContext, "sensor.rx_106"); + ///RX + public NumericSensorEntity Rx107 => new(_haContext, "sensor.rx_107"); + ///RX + public NumericSensorEntity Rx108 => new(_haContext, "sensor.rx_108"); + ///RX + public NumericSensorEntity Rx109 => new(_haContext, "sensor.rx_109"); /// RX public NumericSensorEntity Rx11 => new(_haContext, "sensor.rx_11"); /// RX @@ -4075,7 +4100,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Rx14 => new(_haContext, "sensor.rx_14"); /// RX public NumericSensorEntity Rx15 => new(_haContext, "sensor.rx_15"); - /// RX + ///RX public NumericSensorEntity Rx16 => new(_haContext, "sensor.rx_16"); /// RX public NumericSensorEntity Rx17 => new(_haContext, "sensor.rx_17"); @@ -4093,7 +4118,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Rx22 => new(_haContext, "sensor.rx_22"); /// RX public NumericSensorEntity Rx23 => new(_haContext, "sensor.rx_23"); - /// RX + ///RX public NumericSensorEntity Rx24 => new(_haContext, "sensor.rx_24"); /// RX public NumericSensorEntity Rx25 => new(_haContext, "sensor.rx_25"); @@ -4137,13 +4162,13 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Rx42 => new(_haContext, "sensor.rx_42"); /// RX public NumericSensorEntity Rx43 => new(_haContext, "sensor.rx_43"); - /// RX RX + ///RX public NumericSensorEntity Rx44 => new(_haContext, "sensor.rx_44"); - /// RX + ///RX public NumericSensorEntity Rx45 => new(_haContext, "sensor.rx_45"); /// RX public NumericSensorEntity Rx46 => new(_haContext, "sensor.rx_46"); - /// RX + ///RX public NumericSensorEntity Rx47 => new(_haContext, "sensor.rx_47"); /// RX public NumericSensorEntity Rx48 => new(_haContext, "sensor.rx_48"); @@ -4189,7 +4214,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Rx66 => new(_haContext, "sensor.rx_66"); ///RX public NumericSensorEntity Rx67 => new(_haContext, "sensor.rx_67"); - /// RX + ///RX public NumericSensorEntity Rx68 => new(_haContext, "sensor.rx_68"); ///RX public NumericSensorEntity Rx69 => new(_haContext, "sensor.rx_69"); @@ -4207,57 +4232,57 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Rx74 => new(_haContext, "sensor.rx_74"); ///RX public NumericSensorEntity Rx75 => new(_haContext, "sensor.rx_75"); - /// RX + ///RX public NumericSensorEntity Rx76 => new(_haContext, "sensor.rx_76"); ///RX public NumericSensorEntity Rx77 => new(_haContext, "sensor.rx_77"); ///RX public NumericSensorEntity Rx78 => new(_haContext, "sensor.rx_78"); - /// RX + ///RX public NumericSensorEntity Rx79 => new(_haContext, "sensor.rx_79"); /// RX public NumericSensorEntity Rx8 => new(_haContext, "sensor.rx_8"); ///RX public NumericSensorEntity Rx80 => new(_haContext, "sensor.rx_80"); - /// RX + ///RX public NumericSensorEntity Rx81 => new(_haContext, "sensor.rx_81"); - /// RX + ///RX public NumericSensorEntity Rx82 => new(_haContext, "sensor.rx_82"); - /// RX + ///RX public NumericSensorEntity Rx83 => new(_haContext, "sensor.rx_83"); - /// RX + ///RX public NumericSensorEntity Rx84 => new(_haContext, "sensor.rx_84"); - /// RX + ///RX public NumericSensorEntity Rx85 => new(_haContext, "sensor.rx_85"); - /// RX + ///RX public NumericSensorEntity Rx86 => new(_haContext, "sensor.rx_86"); - /// RX + ///RX public NumericSensorEntity Rx87 => new(_haContext, "sensor.rx_87"); - /// RX + ///RX public NumericSensorEntity Rx88 => new(_haContext, "sensor.rx_88"); - /// RX + ///RX public NumericSensorEntity Rx89 => new(_haContext, "sensor.rx_89"); - /// RX + ///RX public NumericSensorEntity Rx9 => new(_haContext, "sensor.rx_9"); - /// RX + ///RX public NumericSensorEntity Rx90 => new(_haContext, "sensor.rx_90"); - /// RX + ///RX public NumericSensorEntity Rx91 => new(_haContext, "sensor.rx_91"); - /// RX + ///RX public NumericSensorEntity Rx92 => new(_haContext, "sensor.rx_92"); - /// RX + ///RX public NumericSensorEntity Rx93 => new(_haContext, "sensor.rx_93"); - /// RX + ///RX public NumericSensorEntity Rx94 => new(_haContext, "sensor.rx_94"); - /// RX + ///RX public NumericSensorEntity Rx95 => new(_haContext, "sensor.rx_95"); - /// RX + ///RX public NumericSensorEntity Rx96 => new(_haContext, "sensor.rx_96"); - /// RX + ///RX public NumericSensorEntity Rx97 => new(_haContext, "sensor.rx_97"); - /// RX + ///RX public NumericSensorEntity Rx98 => new(_haContext, "sensor.rx_98"); - /// RX + ///RX public NumericSensorEntity Rx99 => new(_haContext, "sensor.rx_99"); ///RX public NumericSensorEntity SammiLeighSA52Rx => new(_haContext, "sensor.sammi_leigh_s_a52_rx"); @@ -4323,9 +4348,9 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity SmartMeterGasImportVolToday => new(_haContext, "sensor.smart_meter_gas_import_vol_today"); ///Smart Meter IHD HAN RSSI public NumericSensorEntity SmartMeterIhdHanRssi => new(_haContext, "sensor.smart_meter_ihd_han_rssi"); - ///RX + ///smart-plug-1 RX public NumericSensorEntity SmartPlug1Rx => new(_haContext, "sensor.smart_plug_1_rx"); - ///TX + ///smart-plug-1 TX public NumericSensorEntity SmartPlug1Tx => new(_haContext, "sensor.smart_plug_1_tx"); ///smart-plug-2 RX public NumericSensorEntity SmartPlug2Rx => new(_haContext, "sensor.smart_plug_2_rx"); @@ -4427,14 +4452,28 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity TuyaSocket3Voltage => new(_haContext, "sensor.tuya_socket_3_voltage"); /// TX public NumericSensorEntity Tx => new(_haContext, "sensor.tx"); - /// RX TX + ///TX public NumericSensorEntity Tx10 => new(_haContext, "sensor.tx_10"); - /// TX + ///TX public NumericSensorEntity Tx100 => new(_haContext, "sensor.tx_100"); - /// TX + ///TX public NumericSensorEntity Tx101 => new(_haContext, "sensor.tx_101"); - /// TX + ///TX public NumericSensorEntity Tx102 => new(_haContext, "sensor.tx_102"); + ///TX + public NumericSensorEntity Tx103 => new(_haContext, "sensor.tx_103"); + ///TX + public NumericSensorEntity Tx104 => new(_haContext, "sensor.tx_104"); + ///TX + public NumericSensorEntity Tx105 => new(_haContext, "sensor.tx_105"); + ///TX + public NumericSensorEntity Tx106 => new(_haContext, "sensor.tx_106"); + ///TX + public NumericSensorEntity Tx107 => new(_haContext, "sensor.tx_107"); + ///TX + public NumericSensorEntity Tx108 => new(_haContext, "sensor.tx_108"); + ///TX + public NumericSensorEntity Tx109 => new(_haContext, "sensor.tx_109"); /// TX public NumericSensorEntity Tx11 => new(_haContext, "sensor.tx_11"); /// TX @@ -4445,7 +4484,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Tx14 => new(_haContext, "sensor.tx_14"); /// TX public NumericSensorEntity Tx15 => new(_haContext, "sensor.tx_15"); - /// TX + ///TX public NumericSensorEntity Tx16 => new(_haContext, "sensor.tx_16"); /// TX public NumericSensorEntity Tx17 => new(_haContext, "sensor.tx_17"); @@ -4463,7 +4502,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Tx22 => new(_haContext, "sensor.tx_22"); /// TX public NumericSensorEntity Tx23 => new(_haContext, "sensor.tx_23"); - /// TX + ///TX public NumericSensorEntity Tx24 => new(_haContext, "sensor.tx_24"); /// TX public NumericSensorEntity Tx25 => new(_haContext, "sensor.tx_25"); @@ -4507,13 +4546,13 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Tx42 => new(_haContext, "sensor.tx_42"); /// TX public NumericSensorEntity Tx43 => new(_haContext, "sensor.tx_43"); - /// RX TX + ///TX public NumericSensorEntity Tx44 => new(_haContext, "sensor.tx_44"); - /// TX + ///TX public NumericSensorEntity Tx45 => new(_haContext, "sensor.tx_45"); /// TX public NumericSensorEntity Tx46 => new(_haContext, "sensor.tx_46"); - /// TX + ///TX public NumericSensorEntity Tx47 => new(_haContext, "sensor.tx_47"); /// TX public NumericSensorEntity Tx48 => new(_haContext, "sensor.tx_48"); @@ -4559,7 +4598,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Tx66 => new(_haContext, "sensor.tx_66"); ///TX public NumericSensorEntity Tx67 => new(_haContext, "sensor.tx_67"); - /// TX + ///TX public NumericSensorEntity Tx68 => new(_haContext, "sensor.tx_68"); ///TX public NumericSensorEntity Tx69 => new(_haContext, "sensor.tx_69"); @@ -4577,57 +4616,57 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity Tx74 => new(_haContext, "sensor.tx_74"); ///TX public NumericSensorEntity Tx75 => new(_haContext, "sensor.tx_75"); - /// TX + ///TX public NumericSensorEntity Tx76 => new(_haContext, "sensor.tx_76"); ///TX public NumericSensorEntity Tx77 => new(_haContext, "sensor.tx_77"); ///TX public NumericSensorEntity Tx78 => new(_haContext, "sensor.tx_78"); - /// TX + ///TX public NumericSensorEntity Tx79 => new(_haContext, "sensor.tx_79"); /// TX public NumericSensorEntity Tx8 => new(_haContext, "sensor.tx_8"); ///TX public NumericSensorEntity Tx80 => new(_haContext, "sensor.tx_80"); - /// TX + ///TX public NumericSensorEntity Tx81 => new(_haContext, "sensor.tx_81"); - /// TX + ///TX public NumericSensorEntity Tx82 => new(_haContext, "sensor.tx_82"); - /// TX + ///TX public NumericSensorEntity Tx83 => new(_haContext, "sensor.tx_83"); - /// TX + ///TX public NumericSensorEntity Tx84 => new(_haContext, "sensor.tx_84"); - /// TX + ///TX public NumericSensorEntity Tx85 => new(_haContext, "sensor.tx_85"); - /// TX + ///TX public NumericSensorEntity Tx86 => new(_haContext, "sensor.tx_86"); - /// TX + ///TX public NumericSensorEntity Tx87 => new(_haContext, "sensor.tx_87"); - /// TX + ///TX public NumericSensorEntity Tx88 => new(_haContext, "sensor.tx_88"); - /// TX + ///TX public NumericSensorEntity Tx89 => new(_haContext, "sensor.tx_89"); - /// TX + ///TX public NumericSensorEntity Tx9 => new(_haContext, "sensor.tx_9"); - /// TX + ///TX public NumericSensorEntity Tx90 => new(_haContext, "sensor.tx_90"); - /// TX + ///TX public NumericSensorEntity Tx91 => new(_haContext, "sensor.tx_91"); - /// TX + ///TX public NumericSensorEntity Tx92 => new(_haContext, "sensor.tx_92"); - /// TX + ///TX public NumericSensorEntity Tx93 => new(_haContext, "sensor.tx_93"); - /// TX + ///TX public NumericSensorEntity Tx94 => new(_haContext, "sensor.tx_94"); - /// TX + ///TX public NumericSensorEntity Tx95 => new(_haContext, "sensor.tx_95"); - /// TX + ///TX public NumericSensorEntity Tx96 => new(_haContext, "sensor.tx_96"); - /// TX + ///TX public NumericSensorEntity Tx97 => new(_haContext, "sensor.tx_97"); - /// TX + ///TX public NumericSensorEntity Tx98 => new(_haContext, "sensor.tx_98"); - /// TX + ///TX public NumericSensorEntity Tx99 => new(_haContext, "sensor.tx_99"); ///UK-020287222957 RX public NumericSensorEntity Uk020287222957Rx => new(_haContext, "sensor.uk_020287222957_rx"); @@ -4681,7 +4720,7 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity WashingMachinePowerenergy => new(_haContext, "sensor.washing_machine_powerenergy"); ///Washing machine powerEnergy public NumericSensorEntity WashingMachinePowerenergy2 => new(_haContext, "sensor.washing_machine_powerenergy_2"); - ///Water Temperature + ///hottubmanager Water Temperature public NumericSensorEntity WaterTemperature => new(_haContext, "sensor.water_temperature"); ///Wiser iTRV Boys Battery public NumericSensorEntity WiserItrvAaronBattery => new(_haContext, "sensor.wiser_itrv_aaron_battery"); @@ -4737,6 +4776,8 @@ public SensorEntities(IHaContext haContext) public NumericSensorEntity WiserLtsTargetTemperatureDining => new(_haContext, "sensor.wiser_lts_target_temperature_dining"); ///Wiser LTS Target Temperature Entrance public NumericSensorEntity WiserLtsTargetTemperatureEntrance => new(_haContext, "sensor.wiser_lts_target_temperature_entrance"); + ///Wiser LTS Target Temperature Guest Room + public NumericSensorEntity WiserLtsTargetTemperatureGuestRoom => new(_haContext, "sensor.wiser_lts_target_temperature_guest_room"); ///Wiser LTS Target Temperature Landing public NumericSensorEntity WiserLtsTargetTemperatureLanding => new(_haContext, "sensor.wiser_lts_target_temperature_landing"); ///Wiser LTS Target Temperature Lounge @@ -4946,9 +4987,9 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity AlarmBeepTwo => new(_haContext, "switch.alarm_beep_two"); ///Alarm Siren Beep Two public SwitchEntity AlarmSirenBeepTwo2 => new(_haContext, "switch.alarm_siren_beep_two_2"); - ///Aubrecia Drive siren + ///Aubrecia Drive Siren public SwitchEntity AubreciaDriveSiren => new(_haContext, "switch.aubrecia_drive_siren"); - ///Bubbles + ///hottubmanager Bubbles public SwitchEntity Bubbles => new(_haContext, "switch.bubbles"); ///Christmas Indoor Sonoff public SwitchEntity ChristmasIndoorSonoff => new(_haContext, "switch.christmas_indoor_sonoff"); @@ -5060,7 +5101,7 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity GarageRepeatSwitch => new(_haContext, "switch.garage_repeat_switch"); ///Garage shuffle switch public SwitchEntity GarageShuffleSwitch => new(_haContext, "switch.garage_shuffle_switch"); - ///Garden siren + ///Garden Siren public SwitchEntity GardenSiren2 => new(_haContext, "switch.garden_siren_2"); ///Hot Tub Heater public SwitchEntity Heaters => new(_haContext, "switch.heaters"); @@ -5080,6 +5121,7 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity JaydenRepeatSwitch => new(_haContext, "switch.jayden_repeat_switch"); ///Jayden repeat switch public SwitchEntity JaydenRepeatSwitch2 => new(_haContext, "switch.jayden_repeat_switch_2"); + ///Jayden-s-iPhone RX public SwitchEntity JaydenSIphone => new(_haContext, "switch.jayden_s_iphone"); public SwitchEntity JaydenSIphone2 => new(_haContext, "switch.jayden_s_iphone_2"); ///Aaron shuffle switch @@ -5150,7 +5192,7 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity LoungeSurroundMusicFullVolume => new(_haContext, "switch.lounge_surround_music_full_volume"); ///Lounge TV Socket public SwitchEntity LoungeTvSocket => new(_haContext, "switch.lounge_tv_socket"); - ///Massage + ///hottubmanager Massage public SwitchEntity Massage => new(_haContext, "switch.massage"); ///Master do not disturb switch public SwitchEntity MasterDoNotDisturbSwitch => new(_haContext, "switch.master_do_not_disturb_switch"); @@ -5160,11 +5202,13 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity MasterShuffleSwitch => new(_haContext, "switch.master_shuffle_switch"); ///netdaemon_lightsmanager public SwitchEntity NetdaemonLightsmanager => new(_haContext, "switch.netdaemon_lightsmanager"); + ///Niemand + public SwitchEntity Niemand => new(_haContext, "switch.niemand"); ///Niemand Drive Event Stream public SwitchEntity NiemandDriveEventStream => new(_haContext, "switch.niemand_drive_event_stream"); ///Niemand Drive Live Stream public SwitchEntity NiemandDriveLiveStream => new(_haContext, "switch.niemand_drive_live_stream"); - ///Niemand Drive siren + ///Niemand Drive Siren public SwitchEntity NiemandDriveSiren => new(_haContext, "switch.niemand_drive_siren"); ///Niemand Drive Siren public SwitchEntity NiemandDriveSiren2 => new(_haContext, "switch.niemand_drive_siren_2"); @@ -5176,7 +5220,7 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity NiemandGarageEventStream => new(_haContext, "switch.niemand_garage_event_stream"); ///Niemand Garage Live Stream public SwitchEntity NiemandGarageLiveStream => new(_haContext, "switch.niemand_garage_live_stream"); - ///Niemand Garage siren + ///Niemand Garage Siren public SwitchEntity NiemandGarageSiren => new(_haContext, "switch.niemand_garage_siren"); ///Niemand Garage Siren public SwitchEntity NiemandGarageSiren2 => new(_haContext, "switch.niemand_garage_siren_2"); @@ -5184,15 +5228,21 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity NiemandGardenEventStream => new(_haContext, "switch.niemand_garden_event_stream"); ///Niemand Garden Live Stream public SwitchEntity NiemandGardenLiveStream => new(_haContext, "switch.niemand_garden_live_stream"); - ///Niemand Garden siren + ///Niemand Garden Siren public SwitchEntity NiemandGardenSiren => new(_haContext, "switch.niemand_garden_siren"); ///Niemand Garden Siren public SwitchEntity NiemandGardenSiren2 => new(_haContext, "switch.niemand_garden_siren_2"); + ///Niemand-Guest + public SwitchEntity NiemandGuest => new(_haContext, "switch.niemand_guest"); + ///Niemand-IOT + public SwitchEntity NiemandIot => new(_haContext, "switch.niemand_iot"); + ///Niemand-Mesh + public SwitchEntity NiemandMesh => new(_haContext, "switch.niemand_mesh"); ///Niemand Side Event Stream public SwitchEntity NiemandSideEventStream => new(_haContext, "switch.niemand_side_event_stream"); ///Niemand Side Live Stream public SwitchEntity NiemandSideLiveStream => new(_haContext, "switch.niemand_side_live_stream"); - ///Niemand Side siren + ///Niemand Side Siren public SwitchEntity NiemandSideSiren => new(_haContext, "switch.niemand_side_siren"); ///Niemand Side Siren public SwitchEntity NiemandSideSiren2 => new(_haContext, "switch.niemand_side_siren_2"); @@ -5262,7 +5312,7 @@ public SwitchEntities(IHaContext haContext) public SwitchEntity WallpanelDoNotDisturbSwitch => new(_haContext, "switch.wallpanel_do_not_disturb_switch"); ///Washing machine public SwitchEntity WashingMachine => new(_haContext, "switch.washing_machine"); - ///Water Pump + ///hottubmanager Water Pump public SwitchEntity WaterPump => new(_haContext, "switch.water_pump"); ///Wiser Boys Window Detection public SwitchEntity WiserAaronWindowDetection => new(_haContext, "switch.wiser_aaron_window_detection"); @@ -5443,7 +5493,7 @@ public InputDatetimeEntities(IHaContext haContext) public InputDatetimeEntity Energy1HourWindow => new(_haContext, "input_datetime.energy_1_hour_window"); ///Energy 2 Hour Window public InputDatetimeEntity Energy2HourWindow => new(_haContext, "input_datetime.energy_2_hour_window"); - ///Energy 3 hour Window + ///Energy 3 Hour Window public InputDatetimeEntity Energy3HourWindow => new(_haContext, "input_datetime.energy_3_hour_window"); } @@ -5453,7 +5503,7 @@ public AlarmControlPanelEntity(IHaContext haContext, string entityId) : base(haC { } - public AlarmControlPanelEntity(Entity entity) : base(entity) + public AlarmControlPanelEntity(IEntityCore entity) : base(entity) { } } @@ -5491,13 +5541,13 @@ public partial record AlarmControlPanelAttributes public double? SupportedFeatures { get; init; } } -public partial record AutomationEntity : Entity, AutomationAttributes> +public partial record AutomationEntity : Entity, AutomationAttributes>, IAutomationEntityCore { public AutomationEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public AutomationEntity(Entity entity) : base(entity) + public AutomationEntity(IEntityCore entity) : base(entity) { } } @@ -5526,13 +5576,13 @@ public partial record AutomationAttributes public double? SupportedFeatures { get; init; } } -public partial record BinarySensorEntity : Entity, BinarySensorAttributes> +public partial record BinarySensorEntity : Entity, BinarySensorAttributes>, IBinarySensorEntityCore { public BinarySensorEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public BinarySensorEntity(Entity entity) : base(entity) + public BinarySensorEntity(IEntityCore entity) : base(entity) { } } @@ -5711,13 +5761,13 @@ public partial record BinarySensorAttributes public object? NextMaxCost { get; init; } } -public partial record ButtonEntity : Entity, ButtonAttributes> +public partial record ButtonEntity : Entity, ButtonAttributes>, IButtonEntityCore { public ButtonEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public ButtonEntity(Entity entity) : base(entity) + public ButtonEntity(IEntityCore entity) : base(entity) { } } @@ -5734,13 +5784,13 @@ public partial record ButtonAttributes public string? DeviceClass { get; init; } } -public partial record CalendarEntity : Entity, CalendarAttributes> +public partial record CalendarEntity : Entity, CalendarAttributes>, ICalendarEntityCore { public CalendarEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public CalendarEntity(Entity entity) : base(entity) + public CalendarEntity(IEntityCore entity) : base(entity) { } } @@ -5772,13 +5822,13 @@ public partial record CalendarAttributes public string? Description { get; init; } } -public partial record CameraEntity : Entity, CameraAttributes> +public partial record CameraEntity : Entity, CameraAttributes>, ICameraEntityCore { public CameraEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public CameraEntity(Entity entity) : base(entity) + public CameraEntity(IEntityCore entity) : base(entity) { } } @@ -5816,13 +5866,13 @@ public partial record CameraAttributes public double? Timestamp { get; init; } } -public partial record ClimateEntity : Entity, ClimateAttributes> +public partial record ClimateEntity : Entity, ClimateAttributes>, IClimateEntityCore { public ClimateEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public ClimateEntity(Entity entity) : base(entity) + public ClimateEntity(IEntityCore entity) : base(entity) { } } @@ -5968,13 +6018,13 @@ public partial record ClimateAttributes public bool? IsPassive { get; init; } } -public partial record CoverEntity : Entity, CoverAttributes> +public partial record CoverEntity : Entity, CoverAttributes>, ICoverEntityCore { public CoverEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public CoverEntity(Entity entity) : base(entity) + public CoverEntity(IEntityCore entity) : base(entity) { } } @@ -5991,13 +6041,13 @@ public partial record CoverAttributes public double? SupportedFeatures { get; init; } } -public partial record DeviceTrackerEntity : Entity, DeviceTrackerAttributes> +public partial record DeviceTrackerEntity : Entity, DeviceTrackerAttributes>, IDeviceTrackerEntityCore { public DeviceTrackerEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public DeviceTrackerEntity(Entity entity) : base(entity) + public DeviceTrackerEntity(IEntityCore entity) : base(entity) { } } @@ -6092,13 +6142,13 @@ public partial record DeviceTrackerAttributes public double? Course { get; init; } } -public partial record GroupEntity : Entity, GroupAttributes> +public partial record GroupEntity : Entity, GroupAttributes>, IGroupEntityCore { public GroupEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public GroupEntity(Entity entity) : base(entity) + public GroupEntity(IEntityCore entity) : base(entity) { } } @@ -6115,13 +6165,13 @@ public partial record GroupAttributes public string? FriendlyName { get; init; } } -public partial record InputBooleanEntity : Entity, InputBooleanAttributes> +public partial record InputBooleanEntity : Entity, InputBooleanAttributes>, IInputBooleanEntityCore { public InputBooleanEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public InputBooleanEntity(Entity entity) : base(entity) + public InputBooleanEntity(IEntityCore entity) : base(entity) { } } @@ -6138,13 +6188,13 @@ public partial record InputBooleanAttributes public string? FriendlyName { get; init; } } -public partial record InputButtonEntity : Entity, InputButtonAttributes> +public partial record InputButtonEntity : Entity, InputButtonAttributes>, IInputButtonEntityCore { public InputButtonEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public InputButtonEntity(Entity entity) : base(entity) + public InputButtonEntity(IEntityCore entity) : base(entity) { } } @@ -6161,13 +6211,13 @@ public partial record InputButtonAttributes public string? FriendlyName { get; init; } } -public partial record InputNumberEntity : NumericEntity, InputNumberAttributes> +public partial record InputNumberEntity : NumericEntity, InputNumberAttributes>, IInputNumberEntityCore { public InputNumberEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public InputNumberEntity(Entity entity) : base(entity) + public InputNumberEntity(IEntityCore entity) : base(entity) { } } @@ -6197,15 +6247,24 @@ public partial record InputNumberAttributes [JsonPropertyName("supported_features")] public double? SupportedFeatures { get; init; } + + [JsonPropertyName("unit_of_measurement")] + public string? UnitOfMeasurement { get; init; } + + [JsonPropertyName("icon")] + public string? Icon { get; init; } + + [JsonPropertyName("friendly_name")] + public string? FriendlyName { get; init; } } -public partial record InputSelectEntity : Entity, InputSelectAttributes> +public partial record InputSelectEntity : Entity, InputSelectAttributes>, IInputSelectEntityCore { public InputSelectEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public InputSelectEntity(Entity entity) : base(entity) + public InputSelectEntity(IEntityCore entity) : base(entity) { } } @@ -6225,13 +6284,13 @@ public partial record InputSelectAttributes public string? Icon { get; init; } } -public partial record InputTextEntity : Entity, InputTextAttributes> +public partial record InputTextEntity : Entity, InputTextAttributes>, IInputTextEntityCore { public InputTextEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public InputTextEntity(Entity entity) : base(entity) + public InputTextEntity(IEntityCore entity) : base(entity) { } } @@ -6254,13 +6313,13 @@ public partial record InputTextAttributes public string? Mode { get; init; } } -public partial record LightEntity : Entity, LightAttributes> +public partial record LightEntity : Entity, LightAttributes>, ILightEntityCore { public LightEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public LightEntity(Entity entity) : base(entity) + public LightEntity(IEntityCore entity) : base(entity) { } } @@ -6328,13 +6387,13 @@ public partial record LightAttributes public bool? Restored { get; init; } } -public partial record MediaPlayerEntity : Entity, MediaPlayerAttributes> +public partial record MediaPlayerEntity : Entity, MediaPlayerAttributes>, IMediaPlayerEntityCore { public MediaPlayerEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public MediaPlayerEntity(Entity entity) : base(entity) + public MediaPlayerEntity(IEntityCore entity) : base(entity) { } } @@ -6438,13 +6497,13 @@ public partial record MediaPlayerAttributes public double? QueueSize { get; init; } } -public partial record NumberEntity : NumericEntity, NumberAttributes> +public partial record NumberEntity : NumericEntity, NumberAttributes>, INumberEntityCore { public NumberEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public NumberEntity(Entity entity) : base(entity) + public NumberEntity(IEntityCore entity) : base(entity) { } } @@ -6473,13 +6532,13 @@ public partial record NumberAttributes public string? UnitOfMeasurement { get; init; } } -public partial record PersonEntity : Entity, PersonAttributes> +public partial record PersonEntity : Entity, PersonAttributes>, IPersonEntityCore { public PersonEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public PersonEntity(Entity entity) : base(entity) + public PersonEntity(IEntityCore entity) : base(entity) { } } @@ -6517,13 +6576,13 @@ public partial record PersonAttributes public string? FriendlyName { get; init; } } -public partial record ProximityEntity : NumericEntity, ProximityAttributes> +public partial record ProximityEntity : NumericEntity, ProximityAttributes>, IProximityEntityCore { public ProximityEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public ProximityEntity(Entity entity) : base(entity) + public ProximityEntity(IEntityCore entity) : base(entity) { } } @@ -6543,13 +6602,13 @@ public partial record ProximityAttributes public string? FriendlyName { get; init; } } -public partial record RemoteEntity : Entity, RemoteAttributes> +public partial record RemoteEntity : Entity, RemoteAttributes>, IRemoteEntityCore { public RemoteEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public RemoteEntity(Entity entity) : base(entity) + public RemoteEntity(IEntityCore entity) : base(entity) { } } @@ -6566,13 +6625,13 @@ public partial record RemoteAttributes public bool? Restored { get; init; } } -public partial record SceneEntity : Entity, SceneAttributes> +public partial record SceneEntity : Entity, SceneAttributes>, ISceneEntityCore { public SceneEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public SceneEntity(Entity entity) : base(entity) + public SceneEntity(IEntityCore entity) : base(entity) { } } @@ -6592,13 +6651,13 @@ public partial record SceneAttributes public string? FriendlyName { get; init; } } -public partial record ScriptEntity : Entity, ScriptAttributes> +public partial record ScriptEntity : Entity, ScriptAttributes>, IScriptEntityCore { public ScriptEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public ScriptEntity(Entity entity) : base(entity) + public ScriptEntity(IEntityCore entity) : base(entity) { } } @@ -6630,13 +6689,13 @@ public partial record ScriptAttributes public double? SupportedFeatures { get; init; } } -public partial record SelectEntity : Entity, SelectAttributes> +public partial record SelectEntity : Entity, SelectAttributes>, ISelectEntityCore { public SelectEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public SelectEntity(Entity entity) : base(entity) + public SelectEntity(IEntityCore entity) : base(entity) { } } @@ -6656,13 +6715,13 @@ public partial record SelectAttributes public string? EventId { get; init; } } -public partial record SensorEntity : Entity, SensorAttributes> +public partial record SensorEntity : Entity, SensorAttributes>, ISensorEntityCore { public SensorEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public SensorEntity(Entity entity) : base(entity) + public SensorEntity(IEntityCore entity) : base(entity) { } } @@ -6679,7 +6738,7 @@ public partial record SensorAttributes public object? CurrentBans { get; init; } [JsonPropertyName("total_bans")] - public IReadOnlyList? TotalBans { get; init; } + public object? TotalBans { get; init; } [JsonPropertyName("device_class")] public string? DeviceClass { get; init; } @@ -7598,15 +7657,60 @@ public partial record SensorAttributes [JsonPropertyName("2023-08-04T13:00:00Z")] public double? _20230804T130000Z { get; init; } + + [JsonPropertyName("2023-09-08T21:30:00Z")] + public double? _20230908T213000Z { get; init; } + + [JsonPropertyName("2023-09-08T21:00:00Z")] + public double? _20230908T210000Z { get; init; } + + [JsonPropertyName("2023-09-08T20:30:00Z")] + public double? _20230908T203000Z { get; init; } + + [JsonPropertyName("2023-09-08T20:00:00Z")] + public double? _20230908T200000Z { get; init; } + + [JsonPropertyName("2023-09-08T19:30:00Z")] + public double? _20230908T193000Z { get; init; } + + [JsonPropertyName("2023-09-08T19:00:00Z")] + public double? _20230908T190000Z { get; init; } + + [JsonPropertyName("2023-09-08T18:30:00Z")] + public double? _20230908T183000Z { get; init; } + + [JsonPropertyName("2023-09-08T18:00:00Z")] + public double? _20230908T180000Z { get; init; } + + [JsonPropertyName("2023-09-08T17:30:00Z")] + public double? _20230908T173000Z { get; init; } + + [JsonPropertyName("2023-09-08T17:00:00Z")] + public double? _20230908T170000Z { get; init; } + + [JsonPropertyName("2023-09-08T16:30:00Z")] + public double? _20230908T163000Z { get; init; } + + [JsonPropertyName("2023-09-08T16:00:00Z")] + public double? _20230908T160000Z { get; init; } + + [JsonPropertyName("2023-09-08T15:30:00Z")] + public double? _20230908T153000Z { get; init; } + + [JsonPropertyName("2023-09-08T15:00:00Z")] + public double? _20230908T150000Z { get; init; } + + [JsonPropertyName("2023-09-08T14:30:00Z")] + public double? _20230908T143000Z { get; init; } } -public partial record NumericSensorEntity : NumericEntity, NumericSensorAttributes> +public partial record NumericSensorEntity : NumericEntity, NumericSensorAttributes>, ISensorEntityCore { public NumericSensorEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public NumericSensorEntity(Entity entity) : base(entity) + public NumericSensorEntity(IEntityCore entity) : base(entity) { } } @@ -7903,6 +8007,18 @@ public partial record NumericSensorAttributes [JsonPropertyName("Is Finishing Charge")] public bool? IsFinishingCharge { get; init; } + + [JsonPropertyName("applicable_rates")] + public IReadOnlyList? ApplicableRates { get; init; } + + [JsonPropertyName("tariff")] + public string? Tariff { get; init; } + + [JsonPropertyName("is_intelligent_adjusted")] + public bool? IsIntelligentAdjusted { get; init; } + + [JsonPropertyName("all_rates")] + public IReadOnlyList? AllRates { get; init; } } public partial record SirenEntity : Entity, SirenAttributes> @@ -7911,7 +8027,7 @@ public SirenEntity(IHaContext haContext, string entityId) : base(haContext, enti { } - public SirenEntity(Entity entity) : base(entity) + public SirenEntity(IEntityCore entity) : base(entity) { } } @@ -7931,13 +8047,13 @@ public partial record SirenAttributes public double? SupportedFeatures { get; init; } } -public partial record SunEntity : Entity, SunAttributes> +public partial record SunEntity : Entity, SunAttributes>, ISunEntityCore { public SunEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public SunEntity(Entity entity) : base(entity) + public SunEntity(IEntityCore entity) : base(entity) { } } @@ -7975,13 +8091,13 @@ public partial record SunAttributes public string? FriendlyName { get; init; } } -public partial record SwitchEntity : Entity, SwitchAttributes> +public partial record SwitchEntity : Entity, SwitchAttributes>, ISwitchEntityCore { public SwitchEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public SwitchEntity(Entity entity) : base(entity) + public SwitchEntity(IEntityCore entity) : base(entity) { } } @@ -8013,7 +8129,7 @@ public partial record SwitchAttributes public double? SunPosition { get; init; } [JsonPropertyName("manual_control")] - public IReadOnlyList? ManualControl { get; init; } + public object? ManualControl { get; init; } [JsonPropertyName("icon")] public string? Icon { get; init; } @@ -8118,13 +8234,13 @@ public partial record SwitchAttributes public bool? ForceRgbColor { get; init; } } -public partial record TimerEntity : Entity, TimerAttributes> +public partial record TimerEntity : Entity, TimerAttributes>, ITimerEntityCore { public TimerEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public TimerEntity(Entity entity) : base(entity) + public TimerEntity(IEntityCore entity) : base(entity) { } } @@ -8141,13 +8257,13 @@ public partial record TimerAttributes public double? SupportedFeatures { get; init; } } -public partial record UpdateEntity : Entity, UpdateAttributes> +public partial record UpdateEntity : Entity, UpdateAttributes>, IUpdateEntityCore { public UpdateEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public UpdateEntity(Entity entity) : base(entity) + public UpdateEntity(IEntityCore entity) : base(entity) { } } @@ -8191,13 +8307,13 @@ public partial record UpdateAttributes public string? DeviceClass { get; init; } } -public partial record WeatherEntity : Entity, WeatherAttributes> +public partial record WeatherEntity : Entity, WeatherAttributes>, IWeatherEntityCore { public WeatherEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public WeatherEntity(Entity entity) : base(entity) + public WeatherEntity(IEntityCore entity) : base(entity) { } } @@ -8245,15 +8361,30 @@ public partial record WeatherAttributes [JsonPropertyName("visibility")] public double? Visibility { get; init; } + + [JsonPropertyName("apparent_temperature")] + public double? ApparentTemperature { get; init; } + + [JsonPropertyName("dew_point")] + public double? DewPoint { get; init; } + + [JsonPropertyName("cloud_coverage")] + public double? CloudCoverage { get; init; } + + [JsonPropertyName("uv_index")] + public double? UvIndex { get; init; } + + [JsonPropertyName("wind_gust_speed")] + public double? WindGustSpeed { get; init; } } -public partial record ZoneEntity : Entity, ZoneAttributes> +public partial record ZoneEntity : Entity, ZoneAttributes>, IZoneEntityCore { public ZoneEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public ZoneEntity(Entity entity) : base(entity) + public ZoneEntity(IEntityCore entity) : base(entity) { } } @@ -8285,13 +8416,13 @@ public partial record ZoneAttributes public string? FriendlyName { get; init; } } -public partial record InputDatetimeEntity : Entity, InputDatetimeAttributes> +public partial record InputDatetimeEntity : Entity, InputDatetimeAttributes>, IInputDatetimeEntityCore { public InputDatetimeEntity(IHaContext haContext, string entityId) : base(haContext, entityId) { } - public InputDatetimeEntity(Entity entity) : base(entity) + public InputDatetimeEntity(IEntityCore entity) : base(entity) { } } @@ -8629,8 +8760,8 @@ public void ChangeSwitchSettings(AdaptiveLightingChangeSwitchSettingsParameters ///Set a fixed time (HH:MM:SS) for sunrise. 🌅 ///Adjust sunset time with a positive or negative offset in seconds. ⏰ ///Set a fixed time (HH:MM:SS) for sunset. 🌇 - ///Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier real sunrises. 🌅 - ///Set the earliest virtual sunset time (HH:MM:SS), allowing for later real sunsets. 🌇 + ///Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅 + ///Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇 ///Disable Adaptive Lighting if another source calls `light.turn_on` while lights are on and being adapted. Note that this calls `homeassistant.update_entity` every `interval`! 🔒 eg: True ///Detects and halts adaptations for non-`light.turn_on` state changes. Needs `take_over_control` enabled. 🕵️ Caution: ⚠️ Some lights might falsely indicate an 'on' state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues. eg: False ///Duration of transition when lights change, in seconds. 🕑 eg: 45 @@ -8778,11 +8909,11 @@ public partial record AdaptiveLightingChangeSwitchSettingsParameters [JsonPropertyName("sunset_time")] public DateTime? SunsetTime { get; init; } - ///Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier real sunrises. 🌅 + ///Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. 🌅 [JsonPropertyName("max_sunrise_time")] public DateTime? MaxSunriseTime { get; init; } - ///Set the earliest virtual sunset time (HH:MM:SS), allowing for later real sunsets. 🌇 + ///Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. 🌇 [JsonPropertyName("min_sunset_time")] public DateTime? MinSunsetTime { get; init; } @@ -8830,106 +8961,106 @@ public AlarmControlPanelServices(IHaContext haContext) _haContext = haContext; } - ///Send the alarm the command for arm away. + ///Sets the alarm to: _armed, no one home_. ///The target for this service call public void AlarmArmAway(ServiceTarget target, AlarmControlPanelAlarmArmAwayParameters data) { _haContext.CallService("alarm_control_panel", "alarm_arm_away", target, data); } - ///Send the alarm the command for arm away. + ///Sets the alarm to: _armed, no one home_. ///The target for this service call - ///An optional code to arm away the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public void AlarmArmAway(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_arm_away", target, new AlarmControlPanelAlarmArmAwayParameters { Code = code }); } - ///Send arm custom bypass command. + ///Arms the alarm while allowing to bypass a custom area. ///The target for this service call public void AlarmArmCustomBypass(ServiceTarget target, AlarmControlPanelAlarmArmCustomBypassParameters data) { _haContext.CallService("alarm_control_panel", "alarm_arm_custom_bypass", target, data); } - ///Send arm custom bypass command. + ///Arms the alarm while allowing to bypass a custom area. ///The target for this service call - ///An optional code to arm custom bypass the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public void AlarmArmCustomBypass(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_arm_custom_bypass", target, new AlarmControlPanelAlarmArmCustomBypassParameters { Code = code }); } - ///Send the alarm the command for arm home. + ///Sets the alarm to: _armed, but someone is home_. ///The target for this service call public void AlarmArmHome(ServiceTarget target, AlarmControlPanelAlarmArmHomeParameters data) { _haContext.CallService("alarm_control_panel", "alarm_arm_home", target, data); } - ///Send the alarm the command for arm home. + ///Sets the alarm to: _armed, but someone is home_. ///The target for this service call - ///An optional code to arm home the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public void AlarmArmHome(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_arm_home", target, new AlarmControlPanelAlarmArmHomeParameters { Code = code }); } - ///Send the alarm the command for arm night. + ///Sets the alarm to: _armed for the night_. ///The target for this service call public void AlarmArmNight(ServiceTarget target, AlarmControlPanelAlarmArmNightParameters data) { _haContext.CallService("alarm_control_panel", "alarm_arm_night", target, data); } - ///Send the alarm the command for arm night. + ///Sets the alarm to: _armed for the night_. ///The target for this service call - ///An optional code to arm night the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public void AlarmArmNight(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_arm_night", target, new AlarmControlPanelAlarmArmNightParameters { Code = code }); } - ///Send the alarm the command for arm vacation. + ///Sets the alarm to: _armed for vacation_. ///The target for this service call public void AlarmArmVacation(ServiceTarget target, AlarmControlPanelAlarmArmVacationParameters data) { _haContext.CallService("alarm_control_panel", "alarm_arm_vacation", target, data); } - ///Send the alarm the command for arm vacation. + ///Sets the alarm to: _armed for vacation_. ///The target for this service call - ///An optional code to arm vacation the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public void AlarmArmVacation(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_arm_vacation", target, new AlarmControlPanelAlarmArmVacationParameters { Code = code }); } - ///Send the alarm the command for disarm. + ///Disarms the alarm. ///The target for this service call public void AlarmDisarm(ServiceTarget target, AlarmControlPanelAlarmDisarmParameters data) { _haContext.CallService("alarm_control_panel", "alarm_disarm", target, data); } - ///Send the alarm the command for disarm. + ///Disarms the alarm. ///The target for this service call - ///An optional code to disarm the alarm control panel with. eg: 1234 + ///Code to disarm the alarm. eg: 1234 public void AlarmDisarm(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_disarm", target, new AlarmControlPanelAlarmDisarmParameters { Code = code }); } - ///Send the alarm the command for trigger. + ///Enables an external alarm trigger. ///The target for this service call public void AlarmTrigger(ServiceTarget target, AlarmControlPanelAlarmTriggerParameters data) { _haContext.CallService("alarm_control_panel", "alarm_trigger", target, data); } - ///Send the alarm the command for trigger. + ///Enables an external alarm trigger. ///The target for this service call - ///An optional code to trigger the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public void AlarmTrigger(ServiceTarget target, string? code = null) { _haContext.CallService("alarm_control_panel", "alarm_trigger", target, new AlarmControlPanelAlarmTriggerParameters { Code = code }); @@ -8938,49 +9069,49 @@ public void AlarmTrigger(ServiceTarget target, string? code = null) public partial record AlarmControlPanelAlarmArmAwayParameters { - ///An optional code to arm away the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record AlarmControlPanelAlarmArmCustomBypassParameters { - ///An optional code to arm custom bypass the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record AlarmControlPanelAlarmArmHomeParameters { - ///An optional code to arm home the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record AlarmControlPanelAlarmArmNightParameters { - ///An optional code to arm night the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record AlarmControlPanelAlarmArmVacationParameters { - ///An optional code to arm vacation the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record AlarmControlPanelAlarmDisarmParameters { - ///An optional code to disarm the alarm control panel with. eg: 1234 + ///Code to disarm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record AlarmControlPanelAlarmTriggerParameters { - ///An optional code to trigger the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } @@ -9181,50 +9312,50 @@ public AutomationServices(IHaContext haContext) _haContext = haContext; } - ///Reload the automation configuration. + ///Reloads the automation configuration. public void Reload() { _haContext.CallService("automation", "reload", null); } - ///Toggle (enable / disable) an automation. + ///Toggles (enable / disable) an automation. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("automation", "toggle", target); } - ///Trigger the actions of an automation. + ///Triggers the actions of an automation. ///The target for this service call public void Trigger(ServiceTarget target, AutomationTriggerParameters data) { _haContext.CallService("automation", "trigger", target, data); } - ///Trigger the actions of an automation. + ///Triggers the actions of an automation. ///The target for this service call - ///Whether or not the conditions will be skipped. + ///Defines whether or not the conditions will be skipped. public void Trigger(ServiceTarget target, bool? skipCondition = null) { _haContext.CallService("automation", "trigger", target, new AutomationTriggerParameters { SkipCondition = skipCondition }); } - ///Disable an automation. + ///Disables an automation. ///The target for this service call public void TurnOff(ServiceTarget target, AutomationTurnOffParameters data) { _haContext.CallService("automation", "turn_off", target, data); } - ///Disable an automation. + ///Disables an automation. ///The target for this service call - ///Stop currently running actions. + ///Stops currently running actions. public void TurnOff(ServiceTarget target, bool? stopActions = null) { _haContext.CallService("automation", "turn_off", target, new AutomationTurnOffParameters { StopActions = stopActions }); } - ///Enable an automation. + ///Enables an automation. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -9234,14 +9365,14 @@ public void TurnOn(ServiceTarget target) public partial record AutomationTriggerParameters { - ///Whether or not the conditions will be skipped. + ///Defines whether or not the conditions will be skipped. [JsonPropertyName("skip_condition")] public bool? SkipCondition { get; init; } } public partial record AutomationTurnOffParameters { - ///Stop currently running actions. + ///Stops currently running actions. [JsonPropertyName("stop_actions")] public bool? StopActions { get; init; } } @@ -9254,7 +9385,7 @@ public BackupServices(IHaContext haContext) _haContext = haContext; } - ///Create a new backup. + ///Creates a new backup. public void Create() { _haContext.CallService("backup", "create", null); @@ -9285,17 +9416,17 @@ public CalendarServices(IHaContext haContext) _haContext = haContext; } - ///Add a new calendar event. + ///Adds a new calendar event. ///The target for this service call public void CreateEvent(ServiceTarget target, CalendarCreateEventParameters data) { _haContext.CallService("calendar", "create_event", target, data); } - ///Add a new calendar event. + ///Adds a new calendar event. ///The target for this service call - ///Defines the short summary or subject for the event eg: Department Party - ///A more complete description of the event than that provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. + ///Defines the short summary or subject for the event. eg: Department Party + ///A more complete description of the event than the one provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. ///The date and time the event should start. eg: 2022-03-22 20:00:00 ///The date and time the event should end. eg: 2022-03-22 22:00:00 ///The date the all-day event should start. eg: 2022-03-22 @@ -9306,15 +9437,32 @@ public void CreateEvent(ServiceTarget target, string summary, string? descriptio { _haContext.CallService("calendar", "create_event", target, new CalendarCreateEventParameters { Summary = summary, Description = description, StartDateTime = startDateTime, EndDateTime = endDateTime, StartDate = startDate, EndDate = endDate, In = @in, Location = location }); } + + ///Lists events on a calendar within a time range. + ///The target for this service call + public void ListEvents(ServiceTarget target, CalendarListEventsParameters data) + { + _haContext.CallService("calendar", "list_events", target, data); + } + + ///Lists events on a calendar within a time range. + ///The target for this service call + ///Returns active events after this time (exclusive). When not set, defaults to now. eg: 2022-03-22 20:00:00 + ///Returns active events before this time (exclusive). Cannot be used with 'duration'. eg: 2022-03-22 22:00:00 + ///Returns active events from start_date_time until the specified duration. + public void ListEvents(ServiceTarget target, object? startDateTime = null, object? endDateTime = null, object? duration = null) + { + _haContext.CallService("calendar", "list_events", target, new CalendarListEventsParameters { StartDateTime = startDateTime, EndDateTime = endDateTime, Duration = duration }); + } } public partial record CalendarCreateEventParameters { - ///Defines the short summary or subject for the event eg: Department Party + ///Defines the short summary or subject for the event. eg: Department Party [JsonPropertyName("summary")] public string? Summary { get; init; } - ///A more complete description of the event than that provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. + ///A more complete description of the event than the one provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. [JsonPropertyName("description")] public string? Description { get; init; } @@ -9343,6 +9491,21 @@ public partial record CalendarCreateEventParameters public string? Location { get; init; } } +public partial record CalendarListEventsParameters +{ + ///Returns active events after this time (exclusive). When not set, defaults to now. eg: 2022-03-22 20:00:00 + [JsonPropertyName("start_date_time")] + public object? StartDateTime { get; init; } + + ///Returns active events before this time (exclusive). Cannot be used with 'duration'. eg: 2022-03-22 22:00:00 + [JsonPropertyName("end_date_time")] + public object? EndDateTime { get; init; } + + ///Returns active events from start_date_time until the specified duration. + [JsonPropertyName("duration")] + public object? Duration { get; init; } +} + public partial class CameraServices { private readonly IHaContext _haContext; @@ -9351,76 +9514,76 @@ public CameraServices(IHaContext haContext) _haContext = haContext; } - ///Disable the motion detection in a camera. + ///Disables the motion detection. ///The target for this service call public void DisableMotionDetection(ServiceTarget target) { _haContext.CallService("camera", "disable_motion_detection", target); } - ///Enable the motion detection in a camera. + ///Enables the motion detection. ///The target for this service call public void EnableMotionDetection(ServiceTarget target) { _haContext.CallService("camera", "enable_motion_detection", target); } - ///Play camera stream on supported media player. + ///Plays the camera stream on a supported media player. ///The target for this service call public void PlayStream(ServiceTarget target, CameraPlayStreamParameters data) { _haContext.CallService("camera", "play_stream", target, data); } - ///Play camera stream on supported media player. + ///Plays the camera stream on a supported media player. ///The target for this service call - ///Name(s) of media player to stream to. - ///Stream format supported by media player. + ///Media players to stream to. + ///Stream format supported by the media player. public void PlayStream(ServiceTarget target, string mediaPlayer, object? format = null) { _haContext.CallService("camera", "play_stream", target, new CameraPlayStreamParameters { MediaPlayer = mediaPlayer, Format = format }); } - ///Record live camera feed. + ///Creates a recording of a live camera feed. ///The target for this service call public void Record(ServiceTarget target, CameraRecordParameters data) { _haContext.CallService("camera", "record", target, data); } - ///Record live camera feed. + ///Creates a recording of a live camera feed. ///The target for this service call - ///Template of a Filename. Variable is entity_id. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 - ///Target recording length. - ///Target lookback period to include in addition to duration. Only available if there is currently an active HLS stream. + ///Template of a filename. Variable available is `entity_id`. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 + ///Planned duration of the recording. The actual duration may vary. + ///Planned lookback period to include in the recording (in addition to the duration). Only available if there is currently an active HLS stream. The actual length of the lookback period may vary. public void Record(ServiceTarget target, string filename, long? duration = null, long? lookback = null) { _haContext.CallService("camera", "record", target, new CameraRecordParameters { Filename = filename, Duration = duration, Lookback = lookback }); } - ///Take a snapshot from a camera. + ///Takes a snapshot from a camera. ///The target for this service call public void Snapshot(ServiceTarget target, CameraSnapshotParameters data) { _haContext.CallService("camera", "snapshot", target, data); } - ///Take a snapshot from a camera. + ///Takes a snapshot from a camera. ///The target for this service call - ///Template of a Filename. Variable is entity_id. eg: /tmp/snapshot_{{ entity_id.name }}.jpg + ///Template of a filename. Variable available is `entity_id`. eg: /tmp/snapshot_{{ entity_id.name }}.jpg public void Snapshot(ServiceTarget target, string filename) { _haContext.CallService("camera", "snapshot", target, new CameraSnapshotParameters { Filename = filename }); } - ///Turn off camera. + ///Turns off the camera. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("camera", "turn_off", target); } - ///Turn on camera. + ///Turns on the camera. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -9430,33 +9593,33 @@ public void TurnOn(ServiceTarget target) public partial record CameraPlayStreamParameters { - ///Name(s) of media player to stream to. + ///Media players to stream to. [JsonPropertyName("media_player")] public string? MediaPlayer { get; init; } - ///Stream format supported by media player. + ///Stream format supported by the media player. [JsonPropertyName("format")] public object? Format { get; init; } } public partial record CameraRecordParameters { - ///Template of a Filename. Variable is entity_id. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 + ///Template of a filename. Variable available is `entity_id`. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 [JsonPropertyName("filename")] public string? Filename { get; init; } - ///Target recording length. + ///Planned duration of the recording. The actual duration may vary. [JsonPropertyName("duration")] public long? Duration { get; init; } - ///Target lookback period to include in addition to duration. Only available if there is currently an active HLS stream. + ///Planned lookback period to include in the recording (in addition to the duration). Only available if there is currently an active HLS stream. The actual length of the lookback period may vary. [JsonPropertyName("lookback")] public long? Lookback { get; init; } } public partial record CameraSnapshotParameters { - ///Template of a Filename. Variable is entity_id. eg: /tmp/snapshot_{{ entity_id.name }}.jpg + ///Template of a filename. Variable available is `entity_id`. eg: /tmp/snapshot_{{ entity_id.name }}.jpg [JsonPropertyName("filename")] public string? Filename { get; init; } } @@ -9469,14 +9632,14 @@ public ClimateServices(IHaContext haContext) _haContext = haContext; } - ///Turn auxiliary heater on/off for climate device. + ///Turns auxiliary heater on/off. ///The target for this service call public void SetAuxHeat(ServiceTarget target, ClimateSetAuxHeatParameters data) { _haContext.CallService("climate", "set_aux_heat", target, data); } - ///Turn auxiliary heater on/off for climate device. + ///Turns auxiliary heater on/off. ///The target for this service call ///New value of auxiliary heater. public void SetAuxHeat(ServiceTarget target, bool auxHeat) @@ -9484,107 +9647,107 @@ public void SetAuxHeat(ServiceTarget target, bool auxHeat) _haContext.CallService("climate", "set_aux_heat", target, new ClimateSetAuxHeatParameters { AuxHeat = auxHeat }); } - ///Set fan operation for climate device. + ///Sets fan operation mode. ///The target for this service call public void SetFanMode(ServiceTarget target, ClimateSetFanModeParameters data) { _haContext.CallService("climate", "set_fan_mode", target, data); } - ///Set fan operation for climate device. + ///Sets fan operation mode. ///The target for this service call - ///New value of fan mode. eg: low + ///Fan operation mode. eg: low public void SetFanMode(ServiceTarget target, string fanMode) { _haContext.CallService("climate", "set_fan_mode", target, new ClimateSetFanModeParameters { FanMode = fanMode }); } - ///Set target humidity of climate device. + ///Sets target humidity. ///The target for this service call public void SetHumidity(ServiceTarget target, ClimateSetHumidityParameters data) { _haContext.CallService("climate", "set_humidity", target, data); } - ///Set target humidity of climate device. + ///Sets target humidity. ///The target for this service call - ///New target humidity for climate device. + ///Target humidity. public void SetHumidity(ServiceTarget target, long humidity) { _haContext.CallService("climate", "set_humidity", target, new ClimateSetHumidityParameters { Humidity = humidity }); } - ///Set HVAC operation mode for climate device. + ///Sets HVAC operation mode. ///The target for this service call public void SetHvacMode(ServiceTarget target, ClimateSetHvacModeParameters data) { _haContext.CallService("climate", "set_hvac_mode", target, data); } - ///Set HVAC operation mode for climate device. + ///Sets HVAC operation mode. ///The target for this service call - ///New value of operation mode. + ///HVAC operation mode. public void SetHvacMode(ServiceTarget target, object? hvacMode = null) { _haContext.CallService("climate", "set_hvac_mode", target, new ClimateSetHvacModeParameters { HvacMode = hvacMode }); } - ///Set preset mode for climate device. + ///Sets preset mode. ///The target for this service call public void SetPresetMode(ServiceTarget target, ClimateSetPresetModeParameters data) { _haContext.CallService("climate", "set_preset_mode", target, data); } - ///Set preset mode for climate device. + ///Sets preset mode. ///The target for this service call - ///New value of preset mode. eg: away + ///Preset mode. eg: away public void SetPresetMode(ServiceTarget target, string presetMode) { _haContext.CallService("climate", "set_preset_mode", target, new ClimateSetPresetModeParameters { PresetMode = presetMode }); } - ///Set swing operation for climate device. + ///Sets swing operation mode. ///The target for this service call public void SetSwingMode(ServiceTarget target, ClimateSetSwingModeParameters data) { _haContext.CallService("climate", "set_swing_mode", target, data); } - ///Set swing operation for climate device. + ///Sets swing operation mode. ///The target for this service call - ///New value of swing mode. eg: horizontal + ///Swing operation mode. eg: horizontal public void SetSwingMode(ServiceTarget target, string swingMode) { _haContext.CallService("climate", "set_swing_mode", target, new ClimateSetSwingModeParameters { SwingMode = swingMode }); } - ///Set target temperature of climate device. + ///Sets target temperature. ///The target for this service call public void SetTemperature(ServiceTarget target, ClimateSetTemperatureParameters data) { _haContext.CallService("climate", "set_temperature", target, data); } - ///Set target temperature of climate device. + ///Sets target temperature. ///The target for this service call - ///New target temperature for HVAC. - ///New target high temperature for HVAC. - ///New target low temperature for HVAC. - ///HVAC operation mode to set temperature to. + ///Target temperature. + ///High target temperature. + ///Low target temperature. + ///HVAC operation mode. public void SetTemperature(ServiceTarget target, double? temperature = null, double? targetTempHigh = null, double? targetTempLow = null, object? hvacMode = null) { _haContext.CallService("climate", "set_temperature", target, new ClimateSetTemperatureParameters { Temperature = temperature, TargetTempHigh = targetTempHigh, TargetTempLow = targetTempLow, HvacMode = hvacMode }); } - ///Turn climate device off. + ///Turns climate device off. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("climate", "turn_off", target); } - ///Turn climate device on. + ///Turns climate device on. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -9601,54 +9764,54 @@ public partial record ClimateSetAuxHeatParameters public partial record ClimateSetFanModeParameters { - ///New value of fan mode. eg: low + ///Fan operation mode. eg: low [JsonPropertyName("fan_mode")] public string? FanMode { get; init; } } public partial record ClimateSetHumidityParameters { - ///New target humidity for climate device. + ///Target humidity. [JsonPropertyName("humidity")] public long? Humidity { get; init; } } public partial record ClimateSetHvacModeParameters { - ///New value of operation mode. + ///HVAC operation mode. [JsonPropertyName("hvac_mode")] public object? HvacMode { get; init; } } public partial record ClimateSetPresetModeParameters { - ///New value of preset mode. eg: away + ///Preset mode. eg: away [JsonPropertyName("preset_mode")] public string? PresetMode { get; init; } } public partial record ClimateSetSwingModeParameters { - ///New value of swing mode. eg: horizontal + ///Swing operation mode. eg: horizontal [JsonPropertyName("swing_mode")] public string? SwingMode { get; init; } } public partial record ClimateSetTemperatureParameters { - ///New target temperature for HVAC. + ///Target temperature. [JsonPropertyName("temperature")] public double? Temperature { get; init; } - ///New target high temperature for HVAC. + ///High target temperature. [JsonPropertyName("target_temp_high")] public double? TargetTempHigh { get; init; } - ///New target low temperature for HVAC. + ///Low target temperature. [JsonPropertyName("target_temp_low")] public double? TargetTempLow { get; init; } - ///HVAC operation mode to set temperature to. + ///HVAC operation mode. [JsonPropertyName("hvac_mode")] public object? HvacMode { get; init; } } @@ -9661,13 +9824,13 @@ public CloudServices(IHaContext haContext) _haContext = haContext; } - ///Make instance UI available outside over NabuCasa cloud + ///Makes the instance UI accessible from outside of the local network by using Home Assistant Cloud. public void RemoteConnect() { _haContext.CallService("cloud", "remote_connect", null); } - ///Disconnect UI from NabuCasa cloud + ///Disconnects the Home Assistant UI from the Home Assistant Cloud. You will no longer be able to access your Home Assistant instance from outside your local network. public void RemoteDisconnect() { _haContext.CallService("cloud", "remote_disconnect", null); @@ -9682,17 +9845,17 @@ public ConversationServices(IHaContext haContext) _haContext = haContext; } - ///Launch a conversation from a transcribed text. + ///Launches a conversation from a transcribed text. public void Process(ConversationProcessParameters data) { _haContext.CallService("conversation", "process", null, data); } - ///Launch a conversation from a transcribed text. - ///Transcribed text eg: Turn all lights on - ///Language of text. Defaults to server language eg: NL - ///Assist engine to process your request eg: homeassistant - public void Process(string? text = null, string? language = null, string? agentId = null) + ///Launches a conversation from a transcribed text. + ///Transcribed text input. eg: Turn all lights on + ///Language of text. Defaults to server language. eg: NL + ///Conversation agent to process your request. The conversation agent is the brains of your assistant. It processes the incoming text commands. eg: homeassistant + public void Process(string text, string? language = null, object? agentId = null) { _haContext.CallService("conversation", "process", null, new ConversationProcessParameters { Text = text, Language = language, AgentId = agentId }); } @@ -9705,17 +9868,17 @@ public void Reload() public partial record ConversationProcessParameters { - ///Transcribed text eg: Turn all lights on + ///Transcribed text input. eg: Turn all lights on [JsonPropertyName("text")] public string? Text { get; init; } - ///Language of text. Defaults to server language eg: NL + ///Language of text. Defaults to server language. eg: NL [JsonPropertyName("language")] public string? Language { get; init; } - ///Assist engine to process your request eg: homeassistant + ///Conversation agent to process your request. The conversation agent is the brains of your assistant. It processes the incoming text commands. eg: homeassistant [JsonPropertyName("agent_id")] - public string? AgentId { get; init; } + public object? AgentId { get; init; } } public partial class CounterServices @@ -9731,35 +9894,35 @@ public void Configure() _haContext.CallService("counter", "configure", null); } - ///Decrement a counter. + ///Decrements a counter. ///The target for this service call public void Decrement(ServiceTarget target) { _haContext.CallService("counter", "decrement", target); } - ///Increment a counter. + ///Increments a counter. ///The target for this service call public void Increment(ServiceTarget target) { _haContext.CallService("counter", "increment", target); } - ///Reset a counter. + ///Resets a counter. ///The target for this service call public void Reset(ServiceTarget target) { _haContext.CallService("counter", "reset", target); } - ///Set the counter value + ///Sets the counter value. ///The target for this service call public void SetValue(ServiceTarget target, CounterSetValueParameters data) { _haContext.CallService("counter", "set_value", target, data); } - ///Set the counter value + ///Sets the counter value. ///The target for this service call ///The new counter value the entity should be set to. public void SetValue(ServiceTarget target, long value) @@ -9783,86 +9946,86 @@ public CoverServices(IHaContext haContext) _haContext = haContext; } - ///Close all or specified cover. + ///Closes a cover. ///The target for this service call public void CloseCover(ServiceTarget target) { _haContext.CallService("cover", "close_cover", target); } - ///Close all or specified cover tilt. + ///Tilts a cover to close. ///The target for this service call public void CloseCoverTilt(ServiceTarget target) { _haContext.CallService("cover", "close_cover_tilt", target); } - ///Open all or specified cover. + ///Opens a cover. ///The target for this service call public void OpenCover(ServiceTarget target) { _haContext.CallService("cover", "open_cover", target); } - ///Open all or specified cover tilt. + ///Tilts a cover open. ///The target for this service call public void OpenCoverTilt(ServiceTarget target) { _haContext.CallService("cover", "open_cover_tilt", target); } - ///Move to specific position all or specified cover. + ///Moves a cover to a specific position. ///The target for this service call public void SetCoverPosition(ServiceTarget target, CoverSetCoverPositionParameters data) { _haContext.CallService("cover", "set_cover_position", target, data); } - ///Move to specific position all or specified cover. + ///Moves a cover to a specific position. ///The target for this service call - ///Position of the cover + ///Target position. public void SetCoverPosition(ServiceTarget target, long position) { _haContext.CallService("cover", "set_cover_position", target, new CoverSetCoverPositionParameters { Position = position }); } - ///Move to specific position all or specified cover tilt. + ///Moves a cover tilt to a specific position. ///The target for this service call public void SetCoverTiltPosition(ServiceTarget target, CoverSetCoverTiltPositionParameters data) { _haContext.CallService("cover", "set_cover_tilt_position", target, data); } - ///Move to specific position all or specified cover tilt. + ///Moves a cover tilt to a specific position. ///The target for this service call - ///Tilt position of the cover. + ///Target tilt positition. public void SetCoverTiltPosition(ServiceTarget target, long tiltPosition) { _haContext.CallService("cover", "set_cover_tilt_position", target, new CoverSetCoverTiltPositionParameters { TiltPosition = tiltPosition }); } - ///Stop all or specified cover. + ///Stops the cover movement. ///The target for this service call public void StopCover(ServiceTarget target) { _haContext.CallService("cover", "stop_cover", target); } - ///Stop all or specified cover. + ///Stops a tilting cover movement. ///The target for this service call public void StopCoverTilt(ServiceTarget target) { _haContext.CallService("cover", "stop_cover_tilt", target); } - ///Toggle a cover open/closed. + ///Toggles a cover open/closed. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("cover", "toggle", target); } - ///Toggle a cover tilt open/closed. + ///Toggles a cover tilt open/closed. ///The target for this service call public void ToggleCoverTilt(ServiceTarget target) { @@ -9872,14 +10035,14 @@ public void ToggleCoverTilt(ServiceTarget target) public partial record CoverSetCoverPositionParameters { - ///Position of the cover + ///Target position. [JsonPropertyName("position")] public long? Position { get; init; } } public partial record CoverSetCoverTiltPositionParameters { - ///Tilt position of the cover. + ///Target tilt positition. [JsonPropertyName("tilt_position")] public long? TiltPosition { get; init; } } @@ -9892,20 +10055,20 @@ public DeviceTrackerServices(IHaContext haContext) _haContext = haContext; } - ///Control tracked device. + ///Records a seen tracked device. public void See(DeviceTrackerSeeParameters data) { _haContext.CallService("device_tracker", "see", null, data); } - ///Control tracked device. - ///MAC address of device eg: FF:FF:FF:FF:FF:FF - ///Id of device (find id in known_devices.yaml). eg: phonedave - ///Hostname of device eg: Dave - ///Name of location where device is located (not_home is away). eg: home - ///GPS coordinates where device is located (latitude, longitude). eg: [51.509802, -0.086692] - ///Accuracy of GPS coordinates. - ///Battery level of device. + ///Records a seen tracked device. + ///MAC address of the device. eg: FF:FF:FF:FF:FF:FF + ///ID of the device (find the ID in `known_devices.yaml`). eg: phonedave + ///Hostname of the device. eg: Dave + ///Name of the location where the device is located. The options are: `home`, `not_home`, or the name of the zone. eg: home + ///GPS coordinates where the device is located, specified by latitude and longitude (for example: [51.513845, -0.100539]). eg: [51.509802, -0.086692] + ///Accuracy of the GPS coordinates. + ///Battery level of the device. public void See(string? mac = null, string? devId = null, string? hostName = null, string? locationName = null, object? gps = null, long? gpsAccuracy = null, long? battery = null) { _haContext.CallService("device_tracker", "see", null, new DeviceTrackerSeeParameters { Mac = mac, DevId = devId, HostName = hostName, LocationName = locationName, Gps = gps, GpsAccuracy = gpsAccuracy, Battery = battery }); @@ -9914,31 +10077,31 @@ public void See(string? mac = null, string? devId = null, string? hostName = nul public partial record DeviceTrackerSeeParameters { - ///MAC address of device eg: FF:FF:FF:FF:FF:FF + ///MAC address of the device. eg: FF:FF:FF:FF:FF:FF [JsonPropertyName("mac")] public string? Mac { get; init; } - ///Id of device (find id in known_devices.yaml). eg: phonedave + ///ID of the device (find the ID in `known_devices.yaml`). eg: phonedave [JsonPropertyName("dev_id")] public string? DevId { get; init; } - ///Hostname of device eg: Dave + ///Hostname of the device. eg: Dave [JsonPropertyName("host_name")] public string? HostName { get; init; } - ///Name of location where device is located (not_home is away). eg: home + ///Name of the location where the device is located. The options are: `home`, `not_home`, or the name of the zone. eg: home [JsonPropertyName("location_name")] public string? LocationName { get; init; } - ///GPS coordinates where device is located (latitude, longitude). eg: [51.509802, -0.086692] + ///GPS coordinates where the device is located, specified by latitude and longitude (for example: [51.513845, -0.100539]). eg: [51.509802, -0.086692] [JsonPropertyName("gps")] public object? Gps { get; init; } - ///Accuracy of GPS coordinates. + ///Accuracy of the GPS coordinates. [JsonPropertyName("gps_accuracy")] public long? GpsAccuracy { get; init; } - ///Battery level of device. + ///Battery level of the device. [JsonPropertyName("battery")] public long? Battery { get; init; } } @@ -9951,181 +10114,176 @@ public FanServices(IHaContext haContext) _haContext = haContext; } - ///Decrease the speed of the fan by one speed or a percentage_step. + ///Decreases the speed of the fan. ///The target for this service call public void DecreaseSpeed(ServiceTarget target, FanDecreaseSpeedParameters data) { _haContext.CallService("fan", "decrease_speed", target, data); } - ///Decrease the speed of the fan by one speed or a percentage_step. + ///Decreases the speed of the fan. ///The target for this service call - ///Decrease speed by a percentage. + ///Decreases the speed by a percentage step. public void DecreaseSpeed(ServiceTarget target, long? percentageStep = null) { _haContext.CallService("fan", "decrease_speed", target, new FanDecreaseSpeedParameters { PercentageStep = percentageStep }); } - ///Increase the speed of the fan by one speed or a percentage_step. + ///Increases the speed of the fan. ///The target for this service call public void IncreaseSpeed(ServiceTarget target, FanIncreaseSpeedParameters data) { _haContext.CallService("fan", "increase_speed", target, data); } - ///Increase the speed of the fan by one speed or a percentage_step. + ///Increases the speed of the fan. ///The target for this service call - ///Increase speed by a percentage. + ///Increases the speed by a percentage step. public void IncreaseSpeed(ServiceTarget target, long? percentageStep = null) { _haContext.CallService("fan", "increase_speed", target, new FanIncreaseSpeedParameters { PercentageStep = percentageStep }); } - ///Oscillate the fan. + ///Controls oscillatation of the fan. ///The target for this service call public void Oscillate(ServiceTarget target, FanOscillateParameters data) { _haContext.CallService("fan", "oscillate", target, data); } - ///Oscillate the fan. + ///Controls oscillatation of the fan. ///The target for this service call - ///Flag to turn on/off oscillation. + ///Turn on/off oscillation. public void Oscillate(ServiceTarget target, bool oscillating) { _haContext.CallService("fan", "oscillate", target, new FanOscillateParameters { Oscillating = oscillating }); } - ///Set the fan rotation. + ///Sets the fan rotation direction. ///The target for this service call public void SetDirection(ServiceTarget target, FanSetDirectionParameters data) { _haContext.CallService("fan", "set_direction", target, data); } - ///Set the fan rotation. + ///Sets the fan rotation direction. ///The target for this service call - ///The direction to rotate. + ///Direction to rotate. public void SetDirection(ServiceTarget target, object direction) { _haContext.CallService("fan", "set_direction", target, new FanSetDirectionParameters { Direction = direction }); } - ///Set fan speed percentage. + ///Sets the fan speed. ///The target for this service call public void SetPercentage(ServiceTarget target, FanSetPercentageParameters data) { _haContext.CallService("fan", "set_percentage", target, data); } - ///Set fan speed percentage. + ///Sets the fan speed. ///The target for this service call - ///Percentage speed setting. + ///Speed of the fan. public void SetPercentage(ServiceTarget target, long percentage) { _haContext.CallService("fan", "set_percentage", target, new FanSetPercentageParameters { Percentage = percentage }); } - ///Set preset mode for a fan device. + ///Sets preset mode. ///The target for this service call public void SetPresetMode(ServiceTarget target, FanSetPresetModeParameters data) { _haContext.CallService("fan", "set_preset_mode", target, data); } - ///Set preset mode for a fan device. + ///Sets preset mode. ///The target for this service call - ///New value of preset mode. eg: auto + ///Preset mode. eg: auto public void SetPresetMode(ServiceTarget target, string presetMode) { _haContext.CallService("fan", "set_preset_mode", target, new FanSetPresetModeParameters { PresetMode = presetMode }); } - ///Toggle the fan on/off. + ///Toggles the fan on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("fan", "toggle", target); } - ///Turn fan off. + ///Turns fan off. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("fan", "turn_off", target); } - ///Turn fan on. + ///Turns fan on. ///The target for this service call public void TurnOn(ServiceTarget target, FanTurnOnParameters data) { _haContext.CallService("fan", "turn_on", target, data); } - ///Turn fan on. + ///Turns fan on. ///The target for this service call - ///Speed setting. eg: high - ///Percentage speed setting. - ///Preset mode setting. eg: auto - public void TurnOn(ServiceTarget target, string? speed = null, long? percentage = null, string? presetMode = null) + ///Speed of the fan. + ///Preset mode. eg: auto + public void TurnOn(ServiceTarget target, long? percentage = null, string? presetMode = null) { - _haContext.CallService("fan", "turn_on", target, new FanTurnOnParameters { Speed = speed, Percentage = percentage, PresetMode = presetMode }); + _haContext.CallService("fan", "turn_on", target, new FanTurnOnParameters { Percentage = percentage, PresetMode = presetMode }); } } public partial record FanDecreaseSpeedParameters { - ///Decrease speed by a percentage. + ///Decreases the speed by a percentage step. [JsonPropertyName("percentage_step")] public long? PercentageStep { get; init; } } public partial record FanIncreaseSpeedParameters { - ///Increase speed by a percentage. + ///Increases the speed by a percentage step. [JsonPropertyName("percentage_step")] public long? PercentageStep { get; init; } } public partial record FanOscillateParameters { - ///Flag to turn on/off oscillation. + ///Turn on/off oscillation. [JsonPropertyName("oscillating")] public bool? Oscillating { get; init; } } public partial record FanSetDirectionParameters { - ///The direction to rotate. + ///Direction to rotate. [JsonPropertyName("direction")] public object? Direction { get; init; } } public partial record FanSetPercentageParameters { - ///Percentage speed setting. + ///Speed of the fan. [JsonPropertyName("percentage")] public long? Percentage { get; init; } } public partial record FanSetPresetModeParameters { - ///New value of preset mode. eg: auto + ///Preset mode. eg: auto [JsonPropertyName("preset_mode")] public string? PresetMode { get; init; } } public partial record FanTurnOnParameters { - ///Speed setting. eg: high - [JsonPropertyName("speed")] - public string? Speed { get; init; } - - ///Percentage speed setting. + ///Speed of the fan. [JsonPropertyName("percentage")] public long? Percentage { get; init; } - ///Preset mode setting. eg: auto + ///Preset mode. eg: auto [JsonPropertyName("preset_mode")] public string? PresetMode { get; init; } } @@ -10138,39 +10296,39 @@ public FfmpegServices(IHaContext haContext) _haContext = haContext; } - ///Send a restart command to a ffmpeg based sensor. + ///Sends a restart command to a ffmpeg based sensor. public void Restart(FfmpegRestartParameters data) { _haContext.CallService("ffmpeg", "restart", null, data); } - ///Send a restart command to a ffmpeg based sensor. + ///Sends a restart command to a ffmpeg based sensor. ///Name of entity that will restart. Platform dependent. public void Restart(string? entityId = null) { _haContext.CallService("ffmpeg", "restart", null, new FfmpegRestartParameters { EntityId = entityId }); } - ///Send a start command to a ffmpeg based sensor. + ///Sends a start command to a ffmpeg based sensor. public void Start(FfmpegStartParameters data) { _haContext.CallService("ffmpeg", "start", null, data); } - ///Send a start command to a ffmpeg based sensor. + ///Sends a start command to a ffmpeg based sensor. ///Name of entity that will start. Platform dependent. public void Start(string? entityId = null) { _haContext.CallService("ffmpeg", "start", null, new FfmpegStartParameters { EntityId = entityId }); } - ///Send a stop command to a ffmpeg based sensor. + ///Sends a stop command to a ffmpeg based sensor. public void Stop(FfmpegStopParameters data) { _haContext.CallService("ffmpeg", "stop", null, data); } - ///Send a stop command to a ffmpeg based sensor. + ///Sends a stop command to a ffmpeg based sensor. ///Name of entity that will stop. Platform dependent. public void Stop(string? entityId = null) { @@ -10207,21 +10365,21 @@ public FrontendServices(IHaContext haContext) _haContext = haContext; } - ///Reload themes from YAML configuration. + ///Reloads themes from the YAML-configuration. public void ReloadThemes() { _haContext.CallService("frontend", "reload_themes", null); } - ///Set a theme unless the client selected per-device theme. + ///Sets the default theme Home Assistant uses. Can be overridden by a user. public void SetTheme(FrontendSetThemeParameters data) { _haContext.CallService("frontend", "set_theme", null, data); } - ///Set a theme unless the client selected per-device theme. - ///Name of a predefined theme eg: default - ///The mode the theme is for. + ///Sets the default theme Home Assistant uses. Can be overridden by a user. + ///Name of a theme. eg: default + ///Theme mode. public void SetTheme(object name, object? mode = null) { _haContext.CallService("frontend", "set_theme", null, new FrontendSetThemeParameters { Name = name, Mode = mode }); @@ -10230,11 +10388,11 @@ public void SetTheme(object name, object? mode = null) public partial record FrontendSetThemeParameters { - ///Name of a predefined theme eg: default + ///Name of a theme. eg: default [JsonPropertyName("name")] public object? Name { get; init; } - ///The mode the theme is for. + ///Theme mode. [JsonPropertyName("mode")] public object? Mode { get; init; } } @@ -10247,7 +10405,7 @@ public GenericThermostatServices(IHaContext haContext) _haContext = haContext; } - ///Reload all generic_thermostat entities. + ///Reloads generic thermostats from the YAML-configuration. public void Reload() { _haContext.CallService("generic_thermostat", "reload", null); @@ -10262,39 +10420,39 @@ public GroupServices(IHaContext haContext) _haContext = haContext; } - ///Reload group configuration, entities, and notify services. + ///Reloads group configuration, entities, and notify services from YAML-configuration. public void Reload() { _haContext.CallService("group", "reload", null); } - ///Remove a user group. + ///Removes a group. public void Remove(GroupRemoveParameters data) { _haContext.CallService("group", "remove", null, data); } - ///Remove a user group. - ///Group id and part of entity id. eg: test_group + ///Removes a group. + ///Object ID of this group. This object ID is used as part of the entity ID. Entity ID format: [domain].[object_id]. eg: test_group public void Remove(object objectId) { _haContext.CallService("group", "remove", null, new GroupRemoveParameters { ObjectId = objectId }); } - ///Create/Update a user group. + ///Creates/Updates a user group. public void Set(GroupSetParameters data) { _haContext.CallService("group", "set", null, data); } - ///Create/Update a user group. - ///Group id and part of entity id. eg: test_group - ///Name of group eg: My test group - ///Name of icon for the group. eg: mdi:camera - ///List of all members in the group. Not compatible with 'delta'. eg: domain.entity_id1, domain.entity_id2 - ///List of members that will change on group listening. eg: domain.entity_id1, domain.entity_id2 - ///List of members that will be removed from group listening. eg: domain.entity_id1, domain.entity_id2 - ///Enable this option if the group should only turn on when all entities are on. + ///Creates/Updates a user group. + ///Object ID of this group. This object ID is used as part of the entity ID. Entity ID format: [domain].[object_id]. eg: test_group + ///Name of the group. eg: My test group + ///Name of the icon for the group. eg: mdi:camera + ///List of all members in the group. Cannot be used in combination with `Add entities` or `Remove entities`. eg: domain.entity_id1, domain.entity_id2 + ///List of members to be added to the group. Cannot be used in combination with `Entities` or `Remove entities`. eg: domain.entity_id1, domain.entity_id2 + ///List of members to be removed from a group. Cannot be used in combination with `Entities` or `Add entities`. eg: domain.entity_id1, domain.entity_id2 + ///Enable this option if the group should only be used when all entities are in state `on`. public void Set(string objectId, string? name = null, object? icon = null, object? entities = null, object? addEntities = null, object? removeEntities = null, bool? all = null) { _haContext.CallService("group", "set", null, new GroupSetParameters { ObjectId = objectId, Name = name, Icon = icon, Entities = entities, AddEntities = addEntities, RemoveEntities = removeEntities, All = all }); @@ -10303,38 +10461,38 @@ public void Set(string objectId, string? name = null, object? icon = null, objec public partial record GroupRemoveParameters { - ///Group id and part of entity id. eg: test_group + ///Object ID of this group. This object ID is used as part of the entity ID. Entity ID format: [domain].[object_id]. eg: test_group [JsonPropertyName("object_id")] public object? ObjectId { get; init; } } public partial record GroupSetParameters { - ///Group id and part of entity id. eg: test_group + ///Object ID of this group. This object ID is used as part of the entity ID. Entity ID format: [domain].[object_id]. eg: test_group [JsonPropertyName("object_id")] public string? ObjectId { get; init; } - ///Name of group eg: My test group + ///Name of the group. eg: My test group [JsonPropertyName("name")] public string? Name { get; init; } - ///Name of icon for the group. eg: mdi:camera + ///Name of the icon for the group. eg: mdi:camera [JsonPropertyName("icon")] public object? Icon { get; init; } - ///List of all members in the group. Not compatible with 'delta'. eg: domain.entity_id1, domain.entity_id2 + ///List of all members in the group. Cannot be used in combination with `Add entities` or `Remove entities`. eg: domain.entity_id1, domain.entity_id2 [JsonPropertyName("entities")] public object? Entities { get; init; } - ///List of members that will change on group listening. eg: domain.entity_id1, domain.entity_id2 + ///List of members to be added to the group. Cannot be used in combination with `Entities` or `Remove entities`. eg: domain.entity_id1, domain.entity_id2 [JsonPropertyName("add_entities")] public object? AddEntities { get; init; } - ///List of members that will be removed from group listening. eg: domain.entity_id1, domain.entity_id2 + ///List of members to be removed from a group. Cannot be used in combination with `Entities` or `Add entities`. eg: domain.entity_id1, domain.entity_id2 [JsonPropertyName("remove_entities")] public object? RemoveEntities { get; init; } - ///Enable this option if the group should only turn on when all entities are on. + ///Enable this option if the group should only be used when all entities are in state `on`. [JsonPropertyName("all")] public bool? All { get; init; } } @@ -10347,7 +10505,7 @@ public HistoryStatsServices(IHaContext haContext) _haContext = haContext; } - ///Reload all history_stats entities. + ///Reloads history stats sensors from the YAML-configuration. public void Reload() { _haContext.CallService("history_stats", "reload", null); @@ -10411,7 +10569,7 @@ public void SelectProgram(HomeConnectSelectProgramParameters data) ///Selects a program without starting it. ///Id of the device. - ///Program to select eg: Dishcare.Dishwasher.Program.Auto2 + ///Program to select. eg: Dishcare.Dishwasher.Program.Auto2 ///Key of the option. eg: BSH.Common.Option.StartInRelative ///Value of the option. eg: 1800 ///Unit for the option. eg: seconds @@ -10458,7 +10616,7 @@ public void StartProgram(HomeConnectStartProgramParameters data) ///Selects a program and starts it. ///Id of the device. - ///Program to select eg: Dishcare.Dishwasher.Program.Auto2 + ///Program to select. eg: Dishcare.Dishwasher.Program.Auto2 ///Key of the option. eg: BSH.Common.Option.StartInRelative ///Value of the option. eg: 1800 ///Unit for the option. eg: seconds @@ -10503,7 +10661,7 @@ public partial record HomeConnectSelectProgramParameters [JsonPropertyName("device_id")] public string? DeviceId { get; init; } - ///Program to select eg: Dishcare.Dishwasher.Program.Auto2 + ///Program to select. eg: Dishcare.Dishwasher.Program.Auto2 [JsonPropertyName("program")] public string? Program { get; init; } @@ -10556,7 +10714,7 @@ public partial record HomeConnectStartProgramParameters [JsonPropertyName("device_id")] public string? DeviceId { get; init; } - ///Program to select eg: Dishcare.Dishwasher.Program.Auto2 + ///Program to select. eg: Dishcare.Dishwasher.Program.Auto2 [JsonPropertyName("program")] public string? Program { get; init; } @@ -10581,7 +10739,7 @@ public HomeassistantServices(IHaContext haContext) _haContext = haContext; } - ///Check the Home Assistant configuration files for errors. Errors will be displayed in the Home Assistant log. + ///Checks the Home Assistant YAML-configuration files for errors. Errors will be shown in the Home Assistant logs. public void CheckConfig() { _haContext.CallService("homeassistant", "check_config", null); @@ -10592,52 +10750,52 @@ public void ReloadAll() _haContext.CallService("homeassistant", "reload_all", null); } - ///Reload a config entry that matches a target. + ///Reloads the specified config entry. ///The target for this service call public void ReloadConfigEntry(ServiceTarget target, HomeassistantReloadConfigEntryParameters data) { _haContext.CallService("homeassistant", "reload_config_entry", target, data); } - ///Reload a config entry that matches a target. + ///Reloads the specified config entry. ///The target for this service call - ///A configuration entry id eg: 8955375327824e14ba89e4b29cc3ec9a + ///The configuration entry ID of the entry to be reloaded. eg: 8955375327824e14ba89e4b29cc3ec9a public void ReloadConfigEntry(ServiceTarget target, string? entryId = null) { _haContext.CallService("homeassistant", "reload_config_entry", target, new HomeassistantReloadConfigEntryParameters { EntryId = entryId }); } - ///Reload the core configuration. + ///Reloads the core configuration from the YAML-configuration. public void ReloadCoreConfig() { _haContext.CallService("homeassistant", "reload_core_config", null); } - ///Reload Jinja2 templates found in the custom_templates folder in your config. New values will be applied on the next render of the template. + ///Reloads Jinja2 templates found in the `custom_templates` folder in your config. New values will be applied on the next render of the template. public void ReloadCustomTemplates() { _haContext.CallService("homeassistant", "reload_custom_templates", null); } - ///Restart the Home Assistant service. + ///Restarts Home Assistant. public void Restart() { _haContext.CallService("homeassistant", "restart", null); } - ///Save the persistent states (for entities derived from RestoreEntity) immediately. Maintain the normal periodic saving interval. + ///Saves the persistent states immediately. Maintains the normal periodic saving interval. public void SavePersistentStates() { _haContext.CallService("homeassistant", "save_persistent_states", null); } - ///Update the Home Assistant location. + ///Updates the Home Assistant location. public void SetLocation(HomeassistantSetLocationParameters data) { _haContext.CallService("homeassistant", "set_location", null, data); } - ///Update the Home Assistant location. + ///Updates the Home Assistant location. ///Latitude of your location. eg: 32.87336 ///Longitude of your location. eg: 117.22743 public void SetLocation(string latitude, string longitude) @@ -10645,13 +10803,13 @@ public void SetLocation(string latitude, string longitude) _haContext.CallService("homeassistant", "set_location", null, new HomeassistantSetLocationParameters { Latitude = latitude, Longitude = longitude }); } - ///Stop the Home Assistant service. + ///Stops Home Assistant. public void Stop() { _haContext.CallService("homeassistant", "stop", null); } - ///Generic service to toggle devices on/off under any domain + ///Generic service to toggle devices on/off under any domain. ///The target for this service call public void Toggle(ServiceTarget target) { @@ -10672,7 +10830,7 @@ public void TurnOn(ServiceTarget target) _haContext.CallService("homeassistant", "turn_on", target); } - ///Force one or more entities to update its data + ///Forces one or more entities to update its data. ///The target for this service call public void UpdateEntity(ServiceTarget target) { @@ -10682,7 +10840,7 @@ public void UpdateEntity(ServiceTarget target) public partial record HomeassistantReloadConfigEntryParameters { - ///A configuration entry id eg: 8955375327824e14ba89e4b29cc3ec9a + ///The configuration entry ID of the entry to be reloaded. eg: 8955375327824e14ba89e4b29cc3ec9a [JsonPropertyName("entry_id")] public string? EntryId { get; init; } } @@ -10706,51 +10864,51 @@ public HumidifierServices(IHaContext haContext) _haContext = haContext; } - ///Set target humidity of humidifier device. + ///Sets the target humidity. ///The target for this service call public void SetHumidity(ServiceTarget target, HumidifierSetHumidityParameters data) { _haContext.CallService("humidifier", "set_humidity", target, data); } - ///Set target humidity of humidifier device. + ///Sets the target humidity. ///The target for this service call - ///New target humidity for humidifier device. + ///Target humidity. public void SetHumidity(ServiceTarget target, long humidity) { _haContext.CallService("humidifier", "set_humidity", target, new HumidifierSetHumidityParameters { Humidity = humidity }); } - ///Set mode for humidifier device. + ///Sets the humidifier operation mode. ///The target for this service call public void SetMode(ServiceTarget target, HumidifierSetModeParameters data) { _haContext.CallService("humidifier", "set_mode", target, data); } - ///Set mode for humidifier device. + ///Sets the humidifier operation mode. ///The target for this service call - ///New mode eg: away + ///Operation mode. For example, _normal_, _eco_, or _away_. For a list of possible values, refer to the integration documentation. eg: away public void SetMode(ServiceTarget target, string mode) { _haContext.CallService("humidifier", "set_mode", target, new HumidifierSetModeParameters { Mode = mode }); } - ///Toggles a humidifier device. + ///Toggles the humidifier on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("humidifier", "toggle", target); } - ///Turn humidifier device off. + ///Turns the humidifier off. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("humidifier", "turn_off", target); } - ///Turn humidifier device on. + ///Turns the humidifier on. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -10760,14 +10918,14 @@ public void TurnOn(ServiceTarget target) public partial record HumidifierSetHumidityParameters { - ///New target humidity for humidifier device. + ///Target humidity. [JsonPropertyName("humidity")] public long? Humidity { get; init; } } public partial record HumidifierSetModeParameters { - ///New mode eg: away + ///Operation mode. For example, _normal_, _eco_, or _away_. For a list of possible values, refer to the integration documentation. eg: away [JsonPropertyName("mode")] public string? Mode { get; init; } } @@ -10780,27 +10938,27 @@ public InputBooleanServices(IHaContext haContext) _haContext = haContext; } - ///Reload the input_boolean configuration + ///Reloads helpers from the YAML-configuration. public void Reload() { _haContext.CallService("input_boolean", "reload", null); } - ///Toggle an input boolean + ///Toggles the helper on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("input_boolean", "toggle", target); } - ///Turn off an input boolean + ///Turns off the helper. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("input_boolean", "turn_off", target); } - ///Turn on an input boolean + ///Turns on the helper. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -10816,7 +10974,7 @@ public InputButtonServices(IHaContext haContext) _haContext = haContext; } - ///Press the input button entity. + ///Mimics the physical button press on the device. ///The target for this service call public void Press(ServiceTarget target) { @@ -10837,25 +10995,25 @@ public InputDatetimeServices(IHaContext haContext) _haContext = haContext; } - ///Reload the input_datetime configuration. + ///Reloads helpers from the YAML-configuration. public void Reload() { _haContext.CallService("input_datetime", "reload", null); } - ///This can be used to dynamically set the date and/or time. + ///Sets the date and/or time. ///The target for this service call public void SetDatetime(ServiceTarget target, InputDatetimeSetDatetimeParameters data) { _haContext.CallService("input_datetime", "set_datetime", target, data); } - ///This can be used to dynamically set the date and/or time. + ///Sets the date and/or time. ///The target for this service call - ///The target date the entity should be set to. eg: "2019-04-20" - ///The target time the entity should be set to. eg: "05:04:20" - ///The target date & time the entity should be set to. eg: "2019-04-20 05:04:20" - ///The target date & time the entity should be set to as expressed by a UNIX timestamp. + ///The target date. eg: "2019-04-20" + ///The target time. eg: "05:04:20" + ///The target date & time. eg: "2019-04-20 05:04:20" + ///The target date & time, expressed by a UNIX timestamp. public void SetDatetime(ServiceTarget target, string? date = null, string? time = null, string? datetime = null, long? timestamp = null) { _haContext.CallService("input_datetime", "set_datetime", target, new InputDatetimeSetDatetimeParameters { Date = date, Time = time, Datetime = datetime, Timestamp = timestamp }); @@ -10864,19 +11022,19 @@ public void SetDatetime(ServiceTarget target, string? date = null, string? time public partial record InputDatetimeSetDatetimeParameters { - ///The target date the entity should be set to. eg: "2019-04-20" + ///The target date. eg: "2019-04-20" [JsonPropertyName("date")] public string? Date { get; init; } - ///The target time the entity should be set to. eg: "05:04:20" + ///The target time. eg: "05:04:20" [JsonPropertyName("time")] public string? Time { get; init; } - ///The target date & time the entity should be set to. eg: "2019-04-20 05:04:20" + ///The target date & time. eg: "2019-04-20 05:04:20" [JsonPropertyName("datetime")] public string? Datetime { get; init; } - ///The target date & time the entity should be set to as expressed by a UNIX timestamp. + ///The target date & time, expressed by a UNIX timestamp. [JsonPropertyName("timestamp")] public long? Timestamp { get; init; } } @@ -10889,36 +11047,36 @@ public InputNumberServices(IHaContext haContext) _haContext = haContext; } - ///Decrement the value of an input number entity by its stepping. + ///Decrements the current value by 1 step. ///The target for this service call public void Decrement(ServiceTarget target) { _haContext.CallService("input_number", "decrement", target); } - ///Increment the value of an input number entity by its stepping. + ///Increments the value by 1 step. ///The target for this service call public void Increment(ServiceTarget target) { _haContext.CallService("input_number", "increment", target); } - ///Reload the input_number configuration. + ///Reloads helpers from the YAML-configuration. public void Reload() { _haContext.CallService("input_number", "reload", null); } - ///Set the value of an input number entity. + ///Sets the value. ///The target for this service call public void SetValue(ServiceTarget target, InputNumberSetValueParameters data) { _haContext.CallService("input_number", "set_value", target, data); } - ///Set the value of an input number entity. + ///Sets the value. ///The target for this service call - ///The target value the entity should be set to. + ///The target value. public void SetValue(ServiceTarget target, double value) { _haContext.CallService("input_number", "set_value", target, new InputNumberSetValueParameters { Value = value }); @@ -10927,7 +11085,7 @@ public void SetValue(ServiceTarget target, double value) public partial record InputNumberSetValueParameters { - ///The target value the entity should be set to. + ///The target value. [JsonPropertyName("value")] public double? Value { get; init; } } @@ -10940,49 +11098,49 @@ public InputSelectServices(IHaContext haContext) _haContext = haContext; } - ///Reload the input_select configuration. + ///Reloads helpers from the YAML-configuration. public void Reload() { _haContext.CallService("input_select", "reload", null); } - ///Select the first option of an input select entity. + ///Selects the first option. ///The target for this service call public void SelectFirst(ServiceTarget target) { _haContext.CallService("input_select", "select_first", target); } - ///Select the last option of an input select entity. + ///Selects the last option. ///The target for this service call public void SelectLast(ServiceTarget target) { _haContext.CallService("input_select", "select_last", target); } - ///Select the next options of an input select entity. + ///Select the next option. ///The target for this service call public void SelectNext(ServiceTarget target, InputSelectSelectNextParameters data) { _haContext.CallService("input_select", "select_next", target, data); } - ///Select the next options of an input select entity. + ///Select the next option. ///The target for this service call - ///If the option should cycle from the last to the first. + ///If the option should cycle from the last to the first option on the list. public void SelectNext(ServiceTarget target, bool? cycle = null) { _haContext.CallService("input_select", "select_next", target, new InputSelectSelectNextParameters { Cycle = cycle }); } - ///Select an option of an input select entity. + ///Selects an option. ///The target for this service call public void SelectOption(ServiceTarget target, InputSelectSelectOptionParameters data) { _haContext.CallService("input_select", "select_option", target, data); } - ///Select an option of an input select entity. + ///Selects an option. ///The target for this service call ///Option to be selected. eg: "Item A" public void SelectOption(ServiceTarget target, string option) @@ -10990,31 +11148,31 @@ public void SelectOption(ServiceTarget target, string option) _haContext.CallService("input_select", "select_option", target, new InputSelectSelectOptionParameters { Option = option }); } - ///Select the previous options of an input select entity. + ///Selects the previous option. ///The target for this service call public void SelectPrevious(ServiceTarget target, InputSelectSelectPreviousParameters data) { _haContext.CallService("input_select", "select_previous", target, data); } - ///Select the previous options of an input select entity. + ///Selects the previous option. ///The target for this service call - ///If the option should cycle from the first to the last. + ///If the option should cycle from the last to the first option on the list. public void SelectPrevious(ServiceTarget target, bool? cycle = null) { _haContext.CallService("input_select", "select_previous", target, new InputSelectSelectPreviousParameters { Cycle = cycle }); } - ///Set the options of an input select entity. + ///Sets the options. ///The target for this service call public void SetOptions(ServiceTarget target, InputSelectSetOptionsParameters data) { _haContext.CallService("input_select", "set_options", target, data); } - ///Set the options of an input select entity. + ///Sets the options. ///The target for this service call - ///Options for the input select entity. eg: ["Item A", "Item B", "Item C"] + ///List of options. eg: ["Item A", "Item B", "Item C"] public void SetOptions(ServiceTarget target, object options) { _haContext.CallService("input_select", "set_options", target, new InputSelectSetOptionsParameters { Options = options }); @@ -11023,7 +11181,7 @@ public void SetOptions(ServiceTarget target, object options) public partial record InputSelectSelectNextParameters { - ///If the option should cycle from the last to the first. + ///If the option should cycle from the last to the first option on the list. [JsonPropertyName("cycle")] public bool? Cycle { get; init; } } @@ -11037,14 +11195,14 @@ public partial record InputSelectSelectOptionParameters public partial record InputSelectSelectPreviousParameters { - ///If the option should cycle from the first to the last. + ///If the option should cycle from the last to the first option on the list. [JsonPropertyName("cycle")] public bool? Cycle { get; init; } } public partial record InputSelectSetOptionsParameters { - ///Options for the input select entity. eg: ["Item A", "Item B", "Item C"] + ///List of options. eg: ["Item A", "Item B", "Item C"] [JsonPropertyName("options")] public object? Options { get; init; } } @@ -11057,22 +11215,22 @@ public InputTextServices(IHaContext haContext) _haContext = haContext; } - ///Reload the input_text configuration. + ///Reloads helpers from the YAML-configuration. public void Reload() { _haContext.CallService("input_text", "reload", null); } - ///Set the value of an input text entity. + ///Sets the value. ///The target for this service call public void SetValue(ServiceTarget target, InputTextSetValueParameters data) { _haContext.CallService("input_text", "set_value", target, data); } - ///Set the value of an input text entity. + ///Sets the value. ///The target for this service call - ///The target value the entity should be set to. eg: This is an example text + ///The target value. eg: This is an example text public void SetValue(ServiceTarget target, string value) { _haContext.CallService("input_text", "set_value", target, new InputTextSetValueParameters { Value = value }); @@ -11081,7 +11239,7 @@ public void SetValue(ServiceTarget target, string value) public partial record InputTextSetValueParameters { - ///The target value the entity should be set to. eg: This is an example text + ///The target value. eg: This is an example text [JsonPropertyName("value")] public string? Value { get; init; } } @@ -11094,74 +11252,74 @@ public LightServices(IHaContext haContext) _haContext = haContext; } - ///Toggles one or more lights, from on to off, or, off to on, based on their current state. + ///Toggles one or more lights, from on to off, or, off to on, based on their current state. ///The target for this service call public void Toggle(ServiceTarget target, LightToggleParameters data) { _haContext.CallService("light", "toggle", target, data); } - ///Toggles one or more lights, from on to off, or, off to on, based on their current state. + ///Toggles one or more lights, from on to off, or, off to on, based on their current state. ///The target for this service call ///Duration it takes to get to next state. - ///Color for the light in RGB-format. eg: [255, 100, 100] - ///A human readable color name. - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] - ///Color for the light in XY-format. eg: [0.52, 0.43] - ///Color temperature for the light in mireds. - ///Color temperature for the light in Kelvin. - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. eg: [255, 100, 100] + ///A human-readable color name. + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] + ///Color temperature in mireds. + ///Color temperature in Kelvin. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. ///Set the light to white mode. ///Name of a light profile to use. eg: relax - ///If the light should flash. + ///Tell light to flash, can be either value short or long. ///Light effect. public void Toggle(ServiceTarget target, long? transition = null, object? rgbColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) { _haContext.CallService("light", "toggle", target, new LightToggleParameters { Transition = transition, RgbColor = rgbColor, ColorName = colorName, HsColor = hsColor, XyColor = xyColor, ColorTemp = colorTemp, Kelvin = kelvin, Brightness = brightness, BrightnessPct = brightnessPct, White = white, Profile = profile, Flash = flash, Effect = effect }); } - ///Turns off one or more lights. + ///Turn off one or more lights. ///The target for this service call public void TurnOff(ServiceTarget target, LightTurnOffParameters data) { _haContext.CallService("light", "turn_off", target, data); } - ///Turns off one or more lights. + ///Turn off one or more lights. ///The target for this service call ///Duration it takes to get to next state. - ///If the light should flash. + ///Tell light to flash, can be either value short or long. public void TurnOff(ServiceTarget target, long? transition = null, object? flash = null) { _haContext.CallService("light", "turn_off", target, new LightTurnOffParameters { Transition = transition, Flash = flash }); } - ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. + ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. ///The target for this service call public void TurnOn(ServiceTarget target, LightTurnOnParameters data) { _haContext.CallService("light", "turn_on", target, data); } - ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. + ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. ///The target for this service call ///Duration it takes to get to next state. - ///The color for the light (based on RGB - red, green, blue). - ///A list containing four integers between 0 and 255 representing the RGBW (red, green, blue, white) color for the light. eg: [255, 100, 100, 50] - ///A list containing five integers between 0 and 255 representing the RGBWW (red, green, blue, cold white, warm white) color for the light. eg: [255, 100, 100, 50, 70] - ///A human readable color name. - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] - ///Color for the light in XY-format. eg: [0.52, 0.43] - ///Color temperature for the light in mireds. - ///Color temperature for the light in Kelvin. - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. + ///The color in RGBW format. A list of four integers between 0 and 255 representing the values of red, green, blue, and white. eg: [255, 100, 100, 50] + ///The color in RGBWW format. A list of five integers between 0 and 255 representing the values of red, green, blue, cold white, and warm white. eg: [255, 100, 100, 50, 70] + ///A human-readable color name. + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] + ///Color temperature in mireds. + ///Color temperature in Kelvin. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. ///Change brightness by an amount. ///Change brightness by a percentage. ///Set the light to white mode. ///Name of a light profile to use. eg: relax - ///If the light should flash. + ///Tell light to flash, can be either value short or long. ///Light effect. public void TurnOn(ServiceTarget target, long? transition = null, object? rgbColor = null, object? rgbwColor = null, object? rgbwwColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, long? brightnessStep = null, long? brightnessStepPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) { @@ -11175,35 +11333,35 @@ public partial record LightToggleParameters [JsonPropertyName("transition")] public long? Transition { get; init; } - ///Color for the light in RGB-format. eg: [255, 100, 100] + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. eg: [255, 100, 100] [JsonPropertyName("rgb_color")] public object? RgbColor { get; init; } - ///A human readable color name. + ///A human-readable color name. [JsonPropertyName("color_name")] public object? ColorName { get; init; } - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] [JsonPropertyName("hs_color")] public object? HsColor { get; init; } - ///Color for the light in XY-format. eg: [0.52, 0.43] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] [JsonPropertyName("xy_color")] public object? XyColor { get; init; } - ///Color temperature for the light in mireds. + ///Color temperature in mireds. [JsonPropertyName("color_temp")] public object? ColorTemp { get; init; } - ///Color temperature for the light in Kelvin. + ///Color temperature in Kelvin. [JsonPropertyName("kelvin")] public long? Kelvin { get; init; } - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. [JsonPropertyName("brightness")] public long? Brightness { get; init; } - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. [JsonPropertyName("brightness_pct")] public long? BrightnessPct { get; init; } @@ -11215,7 +11373,7 @@ public partial record LightToggleParameters [JsonPropertyName("profile")] public string? Profile { get; init; } - ///If the light should flash. + ///Tell light to flash, can be either value short or long. [JsonPropertyName("flash")] public object? Flash { get; init; } @@ -11230,7 +11388,7 @@ public partial record LightTurnOffParameters [JsonPropertyName("transition")] public long? Transition { get; init; } - ///If the light should flash. + ///Tell light to flash, can be either value short or long. [JsonPropertyName("flash")] public object? Flash { get; init; } } @@ -11241,43 +11399,43 @@ public partial record LightTurnOnParameters [JsonPropertyName("transition")] public long? Transition { get; init; } - ///The color for the light (based on RGB - red, green, blue). + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. [JsonPropertyName("rgb_color")] public object? RgbColor { get; init; } - ///A list containing four integers between 0 and 255 representing the RGBW (red, green, blue, white) color for the light. eg: [255, 100, 100, 50] + ///The color in RGBW format. A list of four integers between 0 and 255 representing the values of red, green, blue, and white. eg: [255, 100, 100, 50] [JsonPropertyName("rgbw_color")] public object? RgbwColor { get; init; } - ///A list containing five integers between 0 and 255 representing the RGBWW (red, green, blue, cold white, warm white) color for the light. eg: [255, 100, 100, 50, 70] + ///The color in RGBWW format. A list of five integers between 0 and 255 representing the values of red, green, blue, cold white, and warm white. eg: [255, 100, 100, 50, 70] [JsonPropertyName("rgbww_color")] public object? RgbwwColor { get; init; } - ///A human readable color name. + ///A human-readable color name. [JsonPropertyName("color_name")] public object? ColorName { get; init; } - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] [JsonPropertyName("hs_color")] public object? HsColor { get; init; } - ///Color for the light in XY-format. eg: [0.52, 0.43] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] [JsonPropertyName("xy_color")] public object? XyColor { get; init; } - ///Color temperature for the light in mireds. + ///Color temperature in mireds. [JsonPropertyName("color_temp")] public object? ColorTemp { get; init; } - ///Color temperature for the light in Kelvin. + ///Color temperature in Kelvin. [JsonPropertyName("kelvin")] public long? Kelvin { get; init; } - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. [JsonPropertyName("brightness")] public long? Brightness { get; init; } - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. [JsonPropertyName("brightness_pct")] public long? BrightnessPct { get; init; } @@ -11297,7 +11455,7 @@ public partial record LightTurnOnParameters [JsonPropertyName("profile")] public string? Profile { get; init; } - ///If the light should flash. + ///Tell light to flash, can be either value short or long. [JsonPropertyName("flash")] public object? Flash { get; init; } @@ -11359,46 +11517,46 @@ public LockServices(IHaContext haContext) _haContext = haContext; } - ///Lock all or specified locks. + ///Locks a lock. ///The target for this service call public void Lock(ServiceTarget target, LockLockParameters data) { _haContext.CallService("lock", "lock", target, data); } - ///Lock all or specified locks. + ///Locks a lock. ///The target for this service call - ///An optional code to lock the lock with. eg: 1234 + ///Code used to lock the lock. eg: 1234 public void Lock(ServiceTarget target, string? code = null) { _haContext.CallService("lock", "lock", target, new LockLockParameters { Code = code }); } - ///Open all or specified locks. + ///Opens a lock. ///The target for this service call public void Open(ServiceTarget target, LockOpenParameters data) { _haContext.CallService("lock", "open", target, data); } - ///Open all or specified locks. + ///Opens a lock. ///The target for this service call - ///An optional code to open the lock with. eg: 1234 + ///Code used to open the lock. eg: 1234 public void Open(ServiceTarget target, string? code = null) { _haContext.CallService("lock", "open", target, new LockOpenParameters { Code = code }); } - ///Unlock all or specified locks. + ///Unlocks a lock. ///The target for this service call public void Unlock(ServiceTarget target, LockUnlockParameters data) { _haContext.CallService("lock", "unlock", target, data); } - ///Unlock all or specified locks. + ///Unlocks a lock. ///The target for this service call - ///An optional code to unlock the lock with. eg: 1234 + ///Code used to unlock the lock. eg: 1234 public void Unlock(ServiceTarget target, string? code = null) { _haContext.CallService("lock", "unlock", target, new LockUnlockParameters { Code = code }); @@ -11407,21 +11565,21 @@ public void Unlock(ServiceTarget target, string? code = null) public partial record LockLockParameters { - ///An optional code to lock the lock with. eg: 1234 + ///Code used to lock the lock. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record LockOpenParameters { - ///An optional code to open the lock with. eg: 1234 + ///Code used to open the lock. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } public partial record LockUnlockParameters { - ///An optional code to unlock the lock with. eg: 1234 + ///Code used to unlock the lock. eg: 1234 [JsonPropertyName("code")] public string? Code { get; init; } } @@ -11434,17 +11592,17 @@ public LogbookServices(IHaContext haContext) _haContext = haContext; } - ///Create a custom entry in your logbook. + ///Creates a custom entry in the logbook. public void Log(LogbookLogParameters data) { _haContext.CallService("logbook", "log", null, data); } - ///Create a custom entry in your logbook. - ///Custom name for an entity, can be referenced with entity_id. eg: Kitchen - ///Message of the custom logbook entry. eg: is being used - ///Entity to reference in custom logbook entry. - ///Icon of domain to display in custom logbook entry. eg: light + ///Creates a custom entry in the logbook. + ///Custom name for an entity, can be referenced using an `entity_id`. eg: Kitchen + ///Message of the logbook entry. eg: is being used + ///Entity to reference in the logbook entry. + ///Determines which icon is used in the logbook entry. The icon illustrates the integration domain related to this logbook entry. eg: light public void Log(string name, string message, string? entityId = null, string? domain = null) { _haContext.CallService("logbook", "log", null, new LogbookLogParameters { Name = name, Message = message, EntityId = entityId, Domain = domain }); @@ -11453,19 +11611,19 @@ public void Log(string name, string message, string? entityId = null, string? do public partial record LogbookLogParameters { - ///Custom name for an entity, can be referenced with entity_id. eg: Kitchen + ///Custom name for an entity, can be referenced using an `entity_id`. eg: Kitchen [JsonPropertyName("name")] public string? Name { get; init; } - ///Message of the custom logbook entry. eg: is being used + ///Message of the logbook entry. eg: is being used [JsonPropertyName("message")] public string? Message { get; init; } - ///Entity to reference in custom logbook entry. + ///Entity to reference in the logbook entry. [JsonPropertyName("entity_id")] public string? EntityId { get; init; } - ///Icon of domain to display in custom logbook entry. eg: light + ///Determines which icon is used in the logbook entry. The icon illustrates the integration domain related to this logbook entry. eg: light [JsonPropertyName("domain")] public string? Domain { get; init; } } @@ -11478,20 +11636,20 @@ public LoggerServices(IHaContext haContext) _haContext = haContext; } - ///Set the default log level for integrations. + ///Sets the default log level for integrations. public void SetDefaultLevel(LoggerSetDefaultLevelParameters data) { _haContext.CallService("logger", "set_default_level", null, data); } - ///Set the default log level for integrations. + ///Sets the default log level for integrations. ///Default severity level for all integrations. public void SetDefaultLevel(object? level = null) { _haContext.CallService("logger", "set_default_level", null, new LoggerSetDefaultLevelParameters { Level = level }); } - ///Set log level for integrations. + ///Sets the log level for one or more integrations. public void SetLevel() { _haContext.CallService("logger", "set_level", null); @@ -11513,96 +11671,96 @@ public MediaPlayerServices(IHaContext haContext) _haContext = haContext; } - ///Send the media player the command to clear players playlist. + ///Clears the playlist. ///The target for this service call public void ClearPlaylist(ServiceTarget target) { _haContext.CallService("media_player", "clear_playlist", target); } - ///Group players together. Only works on platforms with support for player groups. + ///Groups media players together for synchronous playback. Only works on supported multiroom audio systems. ///The target for this service call public void Join(ServiceTarget target, MediaPlayerJoinParameters data) { _haContext.CallService("media_player", "join", target, data); } - ///Group players together. Only works on platforms with support for player groups. + ///Groups media players together for synchronous playback. Only works on supported multiroom audio systems. ///The target for this service call - ///The players which will be synced with the target player. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 + ///The players which will be synced with the playback specified in `target`. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 public void Join(ServiceTarget target, string groupMembers) { _haContext.CallService("media_player", "join", target, new MediaPlayerJoinParameters { GroupMembers = groupMembers }); } - ///Send the media player the command for next track. + ///Selects the next track. ///The target for this service call public void MediaNextTrack(ServiceTarget target) { _haContext.CallService("media_player", "media_next_track", target); } - ///Send the media player the command for pause. + ///Pauses. ///The target for this service call public void MediaPause(ServiceTarget target) { _haContext.CallService("media_player", "media_pause", target); } - ///Send the media player the command for play. + ///Starts playing. ///The target for this service call public void MediaPlay(ServiceTarget target) { _haContext.CallService("media_player", "media_play", target); } - ///Toggle media player play/pause state. + ///Toggles play/pause. ///The target for this service call public void MediaPlayPause(ServiceTarget target) { _haContext.CallService("media_player", "media_play_pause", target); } - ///Send the media player the command for previous track. + ///Selects the previous track. ///The target for this service call public void MediaPreviousTrack(ServiceTarget target) { _haContext.CallService("media_player", "media_previous_track", target); } - ///Send the media player the command to seek in current playing media. + ///Allows you to go to a different part of the media that is currently playing. ///The target for this service call public void MediaSeek(ServiceTarget target, MediaPlayerMediaSeekParameters data) { _haContext.CallService("media_player", "media_seek", target, data); } - ///Send the media player the command to seek in current playing media. + ///Allows you to go to a different part of the media that is currently playing. ///The target for this service call - ///Position to seek to. The format is platform dependent. + ///Target position in the currently playing media. The format is platform dependent. public void MediaSeek(ServiceTarget target, double seekPosition) { _haContext.CallService("media_player", "media_seek", target, new MediaPlayerMediaSeekParameters { SeekPosition = seekPosition }); } - ///Send the media player the stop command. + ///Stops playing. ///The target for this service call public void MediaStop(ServiceTarget target) { _haContext.CallService("media_player", "media_stop", target); } - ///Send the media player the command for playing media. + ///Starts playing specified media. ///The target for this service call public void PlayMedia(ServiceTarget target, MediaPlayerPlayMediaParameters data) { _haContext.CallService("media_player", "play_media", target, data); } - ///Send the media player the command for playing media. + ///Starts playing specified media. ///The target for this service call ///The ID of the content to play. Platform dependent. eg: https://home-assistant.io/images/cast/splash.png - ///The type of the content to play. Like image, music, tvshow, video, episode, channel or playlist. eg: music + ///The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music ///If the content should be played now or be added to the queue. ///If the media should be played as an announcement. eg: true public void PlayMedia(ServiceTarget target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null) @@ -11610,14 +11768,14 @@ public void PlayMedia(ServiceTarget target, string mediaContentId, string mediaC _haContext.CallService("media_player", "play_media", target, new MediaPlayerPlayMediaParameters { MediaContentId = mediaContentId, MediaContentType = mediaContentType, Enqueue = enqueue, Announce = announce }); } - ///Set repeat mode + ///Playback mode that plays the media in a loop. ///The target for this service call public void RepeatSet(ServiceTarget target, MediaPlayerRepeatSetParameters data) { _haContext.CallService("media_player", "repeat_set", target, data); } - ///Set repeat mode + ///Playback mode that plays the media in a loop. ///The target for this service call ///Repeat mode to set. public void RepeatSet(ServiceTarget target, object repeat) @@ -11625,14 +11783,14 @@ public void RepeatSet(ServiceTarget target, object repeat) _haContext.CallService("media_player", "repeat_set", target, new MediaPlayerRepeatSetParameters { Repeat = repeat }); } - ///Send the media player the command to change sound mode. + ///Selects a specific sound mode. ///The target for this service call public void SelectSoundMode(ServiceTarget target, MediaPlayerSelectSoundModeParameters data) { _haContext.CallService("media_player", "select_sound_mode", target, data); } - ///Send the media player the command to change sound mode. + ///Selects a specific sound mode. ///The target for this service call ///Name of the sound mode to switch to. eg: Music public void SelectSoundMode(ServiceTarget target, string? soundMode = null) @@ -11640,14 +11798,14 @@ public void SelectSoundMode(ServiceTarget target, string? soundMode = null) _haContext.CallService("media_player", "select_sound_mode", target, new MediaPlayerSelectSoundModeParameters { SoundMode = soundMode }); } - ///Send the media player the command to change input source. + ///Sends the media player the command to change input source. ///The target for this service call public void SelectSource(ServiceTarget target, MediaPlayerSelectSourceParameters data) { _haContext.CallService("media_player", "select_source", target, data); } - ///Send the media player the command to change input source. + ///Sends the media player the command to change input source. ///The target for this service call ///Name of the source to switch to. Platform dependent. eg: video1 public void SelectSource(ServiceTarget target, string source) @@ -11655,87 +11813,87 @@ public void SelectSource(ServiceTarget target, string source) _haContext.CallService("media_player", "select_source", target, new MediaPlayerSelectSourceParameters { Source = source }); } - ///Set shuffling state. + ///Playback mode that selects the media in randomized order. ///The target for this service call public void ShuffleSet(ServiceTarget target, MediaPlayerShuffleSetParameters data) { _haContext.CallService("media_player", "shuffle_set", target, data); } - ///Set shuffling state. + ///Playback mode that selects the media in randomized order. ///The target for this service call - ///True/false for enabling/disabling shuffle. + ///Whether or not shuffle mode is enabled. public void ShuffleSet(ServiceTarget target, bool shuffle) { _haContext.CallService("media_player", "shuffle_set", target, new MediaPlayerShuffleSetParameters { Shuffle = shuffle }); } - ///Toggles a media player power state. + ///Toggles a media player on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("media_player", "toggle", target); } - ///Turn a media player power off. + ///Turns off the power of the media player. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("media_player", "turn_off", target); } - ///Turn a media player power on. + ///Turns on the power of the media player. ///The target for this service call public void TurnOn(ServiceTarget target) { _haContext.CallService("media_player", "turn_on", target); } - ///Unjoin the player from a group. Only works on platforms with support for player groups. + ///Removes the player from a group. Only works on platforms which support player groups. ///The target for this service call public void Unjoin(ServiceTarget target) { _haContext.CallService("media_player", "unjoin", target); } - ///Turn a media player volume down. + ///Turns down the volume. ///The target for this service call public void VolumeDown(ServiceTarget target) { _haContext.CallService("media_player", "volume_down", target); } - ///Mute a media player's volume. + ///Mutes or unmutes the media player. ///The target for this service call public void VolumeMute(ServiceTarget target, MediaPlayerVolumeMuteParameters data) { _haContext.CallService("media_player", "volume_mute", target, data); } - ///Mute a media player's volume. + ///Mutes or unmutes the media player. ///The target for this service call - ///True/false for mute/unmute. + ///Defines whether or not it is muted. public void VolumeMute(ServiceTarget target, bool isVolumeMuted) { _haContext.CallService("media_player", "volume_mute", target, new MediaPlayerVolumeMuteParameters { IsVolumeMuted = isVolumeMuted }); } - ///Set a media player's volume level. + ///Sets the volume level. ///The target for this service call public void VolumeSet(ServiceTarget target, MediaPlayerVolumeSetParameters data) { _haContext.CallService("media_player", "volume_set", target, data); } - ///Set a media player's volume level. + ///Sets the volume level. ///The target for this service call - ///Volume level to set as float. + ///The volume. 0 is inaudible, 1 is the maximum volume. public void VolumeSet(ServiceTarget target, double volumeLevel) { _haContext.CallService("media_player", "volume_set", target, new MediaPlayerVolumeSetParameters { VolumeLevel = volumeLevel }); } - ///Turn a media player volume up. + ///Turns up the volume. ///The target for this service call public void VolumeUp(ServiceTarget target) { @@ -11745,14 +11903,14 @@ public void VolumeUp(ServiceTarget target) public partial record MediaPlayerJoinParameters { - ///The players which will be synced with the target player. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 + ///The players which will be synced with the playback specified in `target`. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 [JsonPropertyName("group_members")] public string? GroupMembers { get; init; } } public partial record MediaPlayerMediaSeekParameters { - ///Position to seek to. The format is platform dependent. + ///Target position in the currently playing media. The format is platform dependent. [JsonPropertyName("seek_position")] public double? SeekPosition { get; init; } } @@ -11763,7 +11921,7 @@ public partial record MediaPlayerPlayMediaParameters [JsonPropertyName("media_content_id")] public string? MediaContentId { get; init; } - ///The type of the content to play. Like image, music, tvshow, video, episode, channel or playlist. eg: music + ///The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music [JsonPropertyName("media_content_type")] public string? MediaContentType { get; init; } @@ -11799,21 +11957,21 @@ public partial record MediaPlayerSelectSourceParameters public partial record MediaPlayerShuffleSetParameters { - ///True/false for enabling/disabling shuffle. + ///Whether or not shuffle mode is enabled. [JsonPropertyName("shuffle")] public bool? Shuffle { get; init; } } public partial record MediaPlayerVolumeMuteParameters { - ///True/false for mute/unmute. + ///Defines whether or not it is muted. [JsonPropertyName("is_volume_muted")] public bool? IsVolumeMuted { get; init; } } public partial record MediaPlayerVolumeSetParameters { - ///Volume level to set as float. + ///The volume. 0 is inaudible, 1 is the maximum volume. [JsonPropertyName("volume_level")] public double? VolumeLevel { get; init; } } @@ -11835,7 +11993,7 @@ public void SetVaneHorizontal(ServiceTarget target, MelcloudSetVaneHorizontalPar ///Sets horizontal vane position. ///The target for this service call - ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto + ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto public void SetVaneHorizontal(ServiceTarget target, string position) { _haContext.CallService("melcloud", "set_vane_horizontal", target, new MelcloudSetVaneHorizontalParameters { Position = position }); @@ -11850,7 +12008,7 @@ public void SetVaneVertical(ServiceTarget target, MelcloudSetVaneVerticalParamet ///Sets vertical vane position. ///The target for this service call - ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto + ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto public void SetVaneVertical(ServiceTarget target, string position) { _haContext.CallService("melcloud", "set_vane_vertical", target, new MelcloudSetVaneVerticalParameters { Position = position }); @@ -11859,14 +12017,14 @@ public void SetVaneVertical(ServiceTarget target, string position) public partial record MelcloudSetVaneHorizontalParameters { - ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto + ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto [JsonPropertyName("position")] public string? Position { get; init; } } public partial record MelcloudSetVaneVerticalParameters { - ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto + ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto [JsonPropertyName("position")] public string? Position { get; init; } } @@ -11879,7 +12037,7 @@ public MinMaxServices(IHaContext haContext) _haContext = haContext; } - ///Reload all min_max entities. + ///Reloads min/max sensors from the YAML-configuration. public void Reload() { _haContext.CallService("min_max", "reload", null); @@ -11894,38 +12052,38 @@ public MqttServices(IHaContext haContext) _haContext = haContext; } - ///Dump messages on a topic selector to the 'mqtt_dump.txt' file in your configuration folder. + ///Writes all messages on a specific topic into the `mqtt_dump.txt` file in your configuration folder. public void Dump(MqttDumpParameters data) { _haContext.CallService("mqtt", "dump", null, data); } - ///Dump messages on a topic selector to the 'mqtt_dump.txt' file in your configuration folder. - ///topic to listen to eg: OpenZWave/# - ///how long we should listen for messages in seconds + ///Writes all messages on a specific topic into the `mqtt_dump.txt` file in your configuration folder. + ///Topic to listen to. eg: OpenZWave/# + ///How long we should listen for messages in seconds. public void Dump(string? topic = null, long? duration = null) { _haContext.CallService("mqtt", "dump", null, new MqttDumpParameters { Topic = topic, Duration = duration }); } - ///Publish a message to an MQTT topic. + ///Publishes a message to an MQTT topic. public void Publish(MqttPublishParameters data) { _haContext.CallService("mqtt", "publish", null, data); } - ///Publish a message to an MQTT topic. - ///Topic to publish payload. eg: /homeassistant/hello - ///Payload to publish. eg: This is great - ///Template to render as payload value. Ignored if payload given. eg: {{ states('sensor.temperature') }} - ///Quality of Service to use. - ///If message should have the retain flag set. + ///Publishes a message to an MQTT topic. + ///Topic to publish to. eg: /homeassistant/hello + ///The payload to publish. eg: This is great + ///Template to render as a payload value. If a payload is provided, the template is ignored. eg: {{ states('sensor.temperature') }} + ///Quality of Service to use. O. At most once. 1: At least once. 2: Exactly once. + ///If the message should have the retain flag set. If set, the broker stores the most recent message on a topic. public void Publish(string topic, string? payload = null, object? payloadTemplate = null, object? qos = null, bool? retain = null) { _haContext.CallService("mqtt", "publish", null, new MqttPublishParameters { Topic = topic, Payload = payload, PayloadTemplate = payloadTemplate, Qos = qos, Retain = retain }); } - ///Reload all MQTT entities from YAML. + ///Reloads MQTT entities from the YAML-configuration. public void Reload() { _haContext.CallService("mqtt", "reload", null); @@ -11934,34 +12092,34 @@ public void Reload() public partial record MqttDumpParameters { - ///topic to listen to eg: OpenZWave/# + ///Topic to listen to. eg: OpenZWave/# [JsonPropertyName("topic")] public string? Topic { get; init; } - ///how long we should listen for messages in seconds + ///How long we should listen for messages in seconds. [JsonPropertyName("duration")] public long? Duration { get; init; } } public partial record MqttPublishParameters { - ///Topic to publish payload. eg: /homeassistant/hello + ///Topic to publish to. eg: /homeassistant/hello [JsonPropertyName("topic")] public string? Topic { get; init; } - ///Payload to publish. eg: This is great + ///The payload to publish. eg: This is great [JsonPropertyName("payload")] public string? Payload { get; init; } - ///Template to render as payload value. Ignored if payload given. eg: {{ states('sensor.temperature') }} + ///Template to render as a payload value. If a payload is provided, the template is ignored. eg: {{ states('sensor.temperature') }} [JsonPropertyName("payload_template")] public object? PayloadTemplate { get; init; } - ///Quality of Service to use. + ///Quality of Service to use. O. At most once. 1: At least once. 2: Exactly once. [JsonPropertyName("qos")] public object? Qos { get; init; } - ///If message should have the retain flag set. + ///If the message should have the retain flag set. If set, the broker stores the most recent message on a topic. [JsonPropertyName("retain")] public bool? Retain { get; init; } } @@ -12135,10 +12293,10 @@ public void AlexaMedia(NotifyAlexaMediaParameters data) } ///Sends a notification message using the alexa_media service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMedia(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media", null, new NotifyAlexaMediaParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12151,10 +12309,10 @@ public void AlexaMediaAaron(NotifyAlexaMediaAaronParameters data) } ///Sends a notification message using the alexa_media_aaron integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaAaron(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_aaron", null, new NotifyAlexaMediaAaronParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12167,10 +12325,10 @@ public void AlexaMediaBoseQc35Ii(NotifyAlexaMediaBoseQc35IiParameters data) } ///Sends a notification message using the alexa_media_bose_qc35_ii integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaBoseQc35Ii(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_bose_qc35_ii", null, new NotifyAlexaMediaBoseQc35IiParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12183,10 +12341,10 @@ public void AlexaMediaDining(NotifyAlexaMediaDiningParameters data) } ///Sends a notification message using the alexa_media_dining integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaDining(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_dining", null, new NotifyAlexaMediaDiningParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12199,10 +12357,10 @@ public void AlexaMediaDownstairs(NotifyAlexaMediaDownstairsParameters data) } ///Sends a notification message using the alexa_media_downstairs integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaDownstairs(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_downstairs", null, new NotifyAlexaMediaDownstairsParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12215,10 +12373,10 @@ public void AlexaMediaEugeneS2ndEchoDot(NotifyAlexaMediaEugeneS2ndEchoDotParamet } ///Sends a notification message using the alexa_media_eugene_s_2nd_echo_dot integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaEugeneS2ndEchoDot(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_eugene_s_2nd_echo_dot", null, new NotifyAlexaMediaEugeneS2ndEchoDotParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12231,10 +12389,10 @@ public void AlexaMediaEugeneS5thEchoDot(NotifyAlexaMediaEugeneS5thEchoDotParamet } ///Sends a notification message using the alexa_media_eugene_s_5th_echo_dot integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaEugeneS5thEchoDot(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_eugene_s_5th_echo_dot", null, new NotifyAlexaMediaEugeneS5thEchoDotParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12247,10 +12405,10 @@ public void AlexaMediaEugeneSFire(NotifyAlexaMediaEugeneSFireParameters data) } ///Sends a notification message using the alexa_media_eugene_s_fire integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaEugeneSFire(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_eugene_s_fire", null, new NotifyAlexaMediaEugeneSFireParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12263,10 +12421,10 @@ public void AlexaMediaEugeneSLgOledWebos2021Tv(NotifyAlexaMediaEugeneSLgOledWebo } ///Sends a notification message using the alexa_media_eugene_s_lg_oled_webos_2021_tv integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaEugeneSLgOledWebos2021Tv(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_eugene_s_lg_oled_webos_2021_tv", null, new NotifyAlexaMediaEugeneSLgOledWebos2021TvParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12279,10 +12437,10 @@ public void AlexaMediaEugeneSSonosArc(NotifyAlexaMediaEugeneSSonosArcParameters } ///Sends a notification message using the alexa_media_eugene_s_sonos_arc integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaEugeneSSonosArc(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_eugene_s_sonos_arc", null, new NotifyAlexaMediaEugeneSSonosArcParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12295,10 +12453,10 @@ public void AlexaMediaEverywhere2(NotifyAlexaMediaEverywhere2Parameters data) } ///Sends a notification message using the alexa_media_everywhere_2 integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaEverywhere2(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_everywhere_2", null, new NotifyAlexaMediaEverywhere2Parameters { Message = message, Title = title, Target = target, Data = data }); @@ -12311,10 +12469,10 @@ public void AlexaMediaJayden(NotifyAlexaMediaJaydenParameters data) } ///Sends a notification message using the alexa_media_jayden integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaJayden(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_jayden", null, new NotifyAlexaMediaJaydenParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12327,10 +12485,10 @@ public void AlexaMediaKitchen(NotifyAlexaMediaKitchenParameters data) } ///Sends a notification message using the alexa_media_kitchen integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaKitchen(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_kitchen", null, new NotifyAlexaMediaKitchenParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12343,10 +12501,10 @@ public void AlexaMediaLastCalled(NotifyAlexaMediaLastCalledParameters data) } ///Sends a notification message using the alexa_media_last_called integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaLastCalled(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_last_called", null, new NotifyAlexaMediaLastCalledParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12359,10 +12517,10 @@ public void AlexaMediaLoungeSonos(NotifyAlexaMediaLoungeSonosParameters data) } ///Sends a notification message using the alexa_media_lounge_sonos integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaLoungeSonos(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_lounge_sonos", null, new NotifyAlexaMediaLoungeSonosParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12375,10 +12533,10 @@ public void AlexaMediaMaster(NotifyAlexaMediaMasterParameters data) } ///Sends a notification message using the alexa_media_master integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaMaster(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_master", null, new NotifyAlexaMediaMasterParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12391,10 +12549,10 @@ public void AlexaMediaMasterTvAlexa(NotifyAlexaMediaMasterTvAlexaParameters data } ///Sends a notification message using the alexa_media_master_tv_alexa integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaMasterTvAlexa(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_master_tv_alexa", null, new NotifyAlexaMediaMasterTvAlexaParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12407,10 +12565,10 @@ public void AlexaMediaOffice(NotifyAlexaMediaOfficeParameters data) } ///Sends a notification message using the alexa_media_office integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaOffice(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_office", null, new NotifyAlexaMediaOfficeParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12423,10 +12581,10 @@ public void AlexaMediaPlayroom(NotifyAlexaMediaPlayroomParameters data) } ///Sends a notification message using the alexa_media_playroom integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaPlayroom(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_playroom", null, new NotifyAlexaMediaPlayroomParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12439,10 +12597,10 @@ public void AlexaMediaThisDevice(NotifyAlexaMediaThisDeviceParameters data) } ///Sends a notification message using the alexa_media_this_device integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaThisDevice(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_this_device", null, new NotifyAlexaMediaThisDeviceParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12455,10 +12613,10 @@ public void AlexaMediaThisDevice3(NotifyAlexaMediaThisDevice3Parameters data) } ///Sends a notification message using the alexa_media_this_device_3 integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaThisDevice3(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_this_device_3", null, new NotifyAlexaMediaThisDevice3Parameters { Message = message, Title = title, Target = target, Data = data }); @@ -12471,10 +12629,10 @@ public void AlexaMediaUpstairs(NotifyAlexaMediaUpstairsParameters data) } ///Sends a notification message using the alexa_media_upstairs integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void AlexaMediaUpstairs(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "alexa_media_upstairs", null, new NotifyAlexaMediaUpstairsParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12487,10 +12645,10 @@ public void Eugene(NotifyEugeneParameters data) } ///Sends a notification message using the eugene service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void Eugene(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "eugene", null, new NotifyEugeneParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12503,10 +12661,10 @@ public void Hailey(NotifyHaileyParameters data) } ///Sends a notification message using the hailey service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void Hailey(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "hailey", null, new NotifyHaileyParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12519,10 +12677,10 @@ public void LoungeTv(NotifyLoungeTvParameters data) } ///Sends a notification message using the lounge_tv service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void LoungeTv(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "lounge_tv", null, new NotifyLoungeTvParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12535,10 +12693,10 @@ public void MasterTv(NotifyMasterTvParameters data) } ///Sends a notification message using the master_tv service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MasterTv(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "master_tv", null, new NotifyMasterTvParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12551,10 +12709,10 @@ public void MobileAppEugeneSIphone(NotifyMobileAppEugeneSIphoneParameters data) } ///Sends a notification message using the mobile_app_eugene_s_iphone integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppEugeneSIphone(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_eugene_s_iphone", null, new NotifyMobileAppEugeneSIphoneParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12567,10 +12725,10 @@ public void MobileAppHaileySIphone(NotifyMobileAppHaileySIphoneParameters data) } ///Sends a notification message using the mobile_app_hailey_s_iphone integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppHaileySIphone(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_hailey_s_iphone", null, new NotifyMobileAppHaileySIphoneParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12583,10 +12741,10 @@ public void MobileAppHaileysMacbookAir(NotifyMobileAppHaileysMacbookAirParameter } ///Sends a notification message using the mobile_app_haileys_macbook_air integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppHaileysMacbookAir(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_haileys_macbook_air", null, new NotifyMobileAppHaileysMacbookAirParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12599,10 +12757,10 @@ public void MobileAppIphone(NotifyMobileAppIphoneParameters data) } ///Sends a notification message using the mobile_app_iphone integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppIphone(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_iphone", null, new NotifyMobileAppIphoneParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12615,10 +12773,10 @@ public void MobileAppIphone8p(NotifyMobileAppIphone8pParameters data) } ///Sends a notification message using the mobile_app_iphone8p integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppIphone8p(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_iphone8p", null, new NotifyMobileAppIphone8pParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12631,10 +12789,10 @@ public void MobileAppJaydenSIpad(NotifyMobileAppJaydenSIpadParameters data) } ///Sends a notification message using the mobile_app_jayden_s_ipad integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppJaydenSIpad(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_jayden_s_ipad", null, new NotifyMobileAppJaydenSIpadParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12647,10 +12805,10 @@ public void MobileAppJaydenSIphone(NotifyMobileAppJaydenSIphoneParameters data) } ///Sends a notification message using the mobile_app_jayden_s_iphone integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppJaydenSIphone(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_jayden_s_iphone", null, new NotifyMobileAppJaydenSIphoneParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12663,10 +12821,10 @@ public void MobileAppMlNx07kg671n(NotifyMobileAppMlNx07kg671nParameters data) } ///Sends a notification message using the mobile_app_ml_nx07kg671n integration. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void MobileAppMlNx07kg671n(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "mobile_app_ml_nx07kg671n", null, new NotifyMobileAppMlNx07kg671nParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12679,27 +12837,28 @@ public void Notify(NotifyNotifyParameters data) } ///Sends a notification message using the notify service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void Notify(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "notify", null, new NotifyNotifyParameters { Message = message, Title = title, Target = target, Data = data }); } - ///Sends a notification that is visible in the front-end. + ///Sends a notification that is visible in the **Notifications** panel. public void PersistentNotification(NotifyPersistentNotificationParameters data) { _haContext.CallService("notify", "persistent_notification", null, data); } - ///Sends a notification that is visible in the front-end. + ///Sends a notification that is visible in the **Notifications** panel. ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - public void PersistentNotification(string message, string? title = null) + ///Title of the notification. eg: Your Garage Door Friend + ///Some integrations provide extended functionality. For information on how to use _data_, refer to the integration documentation.. eg: platform specific + public void PersistentNotification(string message, string? title = null, object? data = null) { - _haContext.CallService("notify", "persistent_notification", null, new NotifyPersistentNotificationParameters { Message = message, Title = title }); + _haContext.CallService("notify", "persistent_notification", null, new NotifyPersistentNotificationParameters { Message = message, Title = title, Data = data }); } ///Sends a notification message using the twinstead service. @@ -12709,10 +12868,10 @@ public void Twinstead(NotifyTwinsteadParameters data) } ///Sends a notification message using the twinstead service. - ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Title for your notification. eg: Your Garage Door Friend - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: The garage door has been open for 10 minutes. + /// eg: Your Garage Door Friend + /// eg: platform specific + /// eg: platform specific public void Twinstead(string message, string? title = null, object? target = null, object? data = null) { _haContext.CallService("notify", "twinstead", null, new NotifyTwinsteadParameters { Message = message, Title = title, Target = target, Data = data }); @@ -12721,665 +12880,665 @@ public void Twinstead(string message, string? title = null, object? target = nul public partial record NotifyAlexaMediaParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaAaronParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaBoseQc35IiParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaDiningParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaDownstairsParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaEugeneS2ndEchoDotParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaEugeneS5thEchoDotParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaEugeneSFireParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaEugeneSLgOledWebos2021TvParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaEugeneSSonosArcParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaEverywhere2Parameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaJaydenParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaKitchenParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaLastCalledParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaLoungeSonosParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaMasterParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaMasterTvAlexaParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaOfficeParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaPlayroomParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaThisDeviceParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaThisDevice3Parameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyAlexaMediaUpstairsParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyEugeneParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyHaileyParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyLoungeTvParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMasterTvParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppEugeneSIphoneParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppHaileySIphoneParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppHaileysMacbookAirParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppIphoneParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppIphone8pParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppJaydenSIpadParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppJaydenSIphoneParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyMobileAppMlNx07kg671nParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } public partial record NotifyNotifyParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } @@ -13390,26 +13549,30 @@ public partial record NotifyPersistentNotificationParameters [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + ///Title of the notification. eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } + + ///Some integrations provide extended functionality. For information on how to use _data_, refer to the integration documentation.. eg: platform specific + [JsonPropertyName("data")] + public object? Data { get; init; } } public partial record NotifyTwinsteadParameters { - ///Message body of the notification. eg: The garage door has been open for 10 minutes. + /// eg: The garage door has been open for 10 minutes. [JsonPropertyName("message")] public string? Message { get; init; } - ///Title for your notification. eg: Your Garage Door Friend + /// eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } - ///An array of targets to send the notification to. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("target")] public object? Target { get; init; } - ///Extended information for notification. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("data")] public object? Data { get; init; } } @@ -13422,16 +13585,16 @@ public NumberServices(IHaContext haContext) _haContext = haContext; } - ///Set the value of a Number entity. + ///Sets the value of a number. ///The target for this service call public void SetValue(ServiceTarget target, NumberSetValueParameters data) { _haContext.CallService("number", "set_value", target, data); } - ///Set the value of a Number entity. + ///Sets the value of a number. ///The target for this service call - ///The target value the entity should be set to. eg: 42 + ///The target value to set. eg: 42 public void SetValue(ServiceTarget target, string? value = null) { _haContext.CallService("number", "set_value", target, new NumberSetValueParameters { Value = value }); @@ -13440,7 +13603,7 @@ public void SetValue(ServiceTarget target, string? value = null) public partial record NumberSetValueParameters { - ///The target value the entity should be set to. eg: 42 + ///The target value to set. eg: 42 [JsonPropertyName("value")] public string? Value { get; init; } } @@ -13499,53 +13662,59 @@ public PersistentNotificationServices(IHaContext haContext) _haContext = haContext; } - ///Show a notification in the frontend. + ///Shows a notification on the **Notifications** panel. public void Create(PersistentNotificationCreateParameters data) { _haContext.CallService("persistent_notification", "create", null, data); } - ///Show a notification in the frontend. - ///Message body of the notification. [Templates accepted] eg: Please check your configuration.yaml. - ///Optional title for your notification. [Templates accepted] eg: Test notification - ///Target ID of the notification, will replace a notification with the same ID. eg: 1234 + ///Shows a notification on the **Notifications** panel. + ///Message body of the notification. eg: Please check your configuration.yaml. + ///Optional title of the notification. eg: Test notification + ///ID of the notification. This new notification will overwrite an existing notification with the same ID. eg: 1234 public void Create(string message, string? title = null, string? notificationId = null) { _haContext.CallService("persistent_notification", "create", null, new PersistentNotificationCreateParameters { Message = message, Title = title, NotificationId = notificationId }); } - ///Remove a notification from the frontend. + ///Removes a notification from the **Notifications** panel. public void Dismiss(PersistentNotificationDismissParameters data) { _haContext.CallService("persistent_notification", "dismiss", null, data); } - ///Remove a notification from the frontend. - ///Target ID of the notification, which should be removed. eg: 1234 + ///Removes a notification from the **Notifications** panel. + ///ID of the notification to be removed. eg: 1234 public void Dismiss(string notificationId) { _haContext.CallService("persistent_notification", "dismiss", null, new PersistentNotificationDismissParameters { NotificationId = notificationId }); } + + ///Removes all notifications from the **Notifications** panel. + public void DismissAll() + { + _haContext.CallService("persistent_notification", "dismiss_all", null); + } } public partial record PersistentNotificationCreateParameters { - ///Message body of the notification. [Templates accepted] eg: Please check your configuration.yaml. + ///Message body of the notification. eg: Please check your configuration.yaml. [JsonPropertyName("message")] public string? Message { get; init; } - ///Optional title for your notification. [Templates accepted] eg: Test notification + ///Optional title of the notification. eg: Test notification [JsonPropertyName("title")] public string? Title { get; init; } - ///Target ID of the notification, will replace a notification with the same ID. eg: 1234 + ///ID of the notification. This new notification will overwrite an existing notification with the same ID. eg: 1234 [JsonPropertyName("notification_id")] public string? NotificationId { get; init; } } public partial record PersistentNotificationDismissParameters { - ///Target ID of the notification, which should be removed. eg: 1234 + ///ID of the notification to be removed. eg: 1234 [JsonPropertyName("notification_id")] public string? NotificationId { get; init; } } @@ -13558,7 +13727,7 @@ public PersonServices(IHaContext haContext) _haContext = haContext; } - ///Reload the person configuration. + ///Reloads persons from the YAML-configuration. public void Reload() { _haContext.CallService("person", "reload", null); @@ -13573,16 +13742,16 @@ public PiHoleServices(IHaContext haContext) _haContext = haContext; } - ///Disable configured Pi-hole(s) for an amount of time + ///Disables configured Pi-hole(s) for an amount of time. ///The target for this service call public void Disable(ServiceTarget target, PiHoleDisableParameters data) { _haContext.CallService("pi_hole", "disable", target, data); } - ///Disable configured Pi-hole(s) for an amount of time + ///Disables configured Pi-hole(s) for an amount of time. ///The target for this service call - ///Time that the Pi-hole should be disabled for eg: 00:00:15 + ///Time that the Pi-hole should be disabled for. eg: 00:00:15 public void Disable(ServiceTarget target, string duration) { _haContext.CallService("pi_hole", "disable", target, new PiHoleDisableParameters { Duration = duration }); @@ -13591,7 +13760,7 @@ public void Disable(ServiceTarget target, string duration) public partial record PiHoleDisableParameters { - ///Time that the Pi-hole should be disabled for eg: 00:00:15 + ///Time that the Pi-hole should be disabled for. eg: 00:00:15 [JsonPropertyName("duration")] public string? Duration { get; init; } } @@ -13604,7 +13773,7 @@ public PingServices(IHaContext haContext) _haContext = haContext; } - ///Reload all ping entities. + ///Reloads ping sensors from the YAML-configuration. public void Reload() { _haContext.CallService("ping", "reload", null); @@ -13619,16 +13788,16 @@ public PowercalcServices(IHaContext haContext) _haContext = haContext; } - ///Activate playbook + ///Start execution of a playbook. ///The target for this service call public void ActivatePlaybook(ServiceTarget target, PowercalcActivatePlaybookParameters data) { _haContext.CallService("powercalc", "activate_playbook", target, data); } - ///Activate playbook + ///Start execution of a playbook. ///The target for this service call - ///Playbook identifier eg: program1 + ///Playbook identifier. eg: program1 public void ActivatePlaybook(ServiceTarget target, string playbookId) { _haContext.CallService("powercalc", "activate_playbook", target, new PowercalcActivatePlaybookParameters { PlaybookId = playbookId }); @@ -13643,7 +13812,7 @@ public void CalibrateEnergy(ServiceTarget target, PowercalcCalibrateEnergyParame ///Sets the energy sensor to a given kWh value. ///The target for this service call - ///Value to which set the meter eg: 100 + ///The value to set. eg: 100 public void CalibrateEnergy(ServiceTarget target, string value) { _haContext.CallService("powercalc", "calibrate_energy", target, new PowercalcCalibrateEnergyParameters { Value = value }); @@ -13658,70 +13827,92 @@ public void CalibrateUtilityMeter(ServiceTarget target, PowercalcCalibrateUtilit ///Calibrates a utility meter sensor. ///The target for this service call - ///Value to which set the meter eg: 100 + ///The value to set. eg: 100 public void CalibrateUtilityMeter(ServiceTarget target, string value) { _haContext.CallService("powercalc", "calibrate_utility_meter", target, new PowercalcCalibrateUtilityMeterParameters { Value = value }); } - ///Increases the sensor with a given amount + ///Increases the sensor with a given amount. ///The target for this service call public void IncreaseDailyEnergy(ServiceTarget target, PowercalcIncreaseDailyEnergyParameters data) { _haContext.CallService("powercalc", "increase_daily_energy", target, data); } - ///Increases the sensor with a given amount + ///Increases the sensor with a given amount. ///The target for this service call - ///Amount to add to the sensor eg: 100 + ///Amount to add to the sensor. eg: 100 public void IncreaseDailyEnergy(ServiceTarget target, string value) { _haContext.CallService("powercalc", "increase_daily_energy", target, new PowercalcIncreaseDailyEnergyParameters { Value = value }); } - ///Reset an energy sensor to zero kWh + ///Reset an energy sensor to zero kWh. ///The target for this service call public void ResetEnergy(ServiceTarget target) { _haContext.CallService("powercalc", "reset_energy", target); } - ///Stop active playbook + ///Stop currently active playbook. ///The target for this service call public void StopPlaybook(ServiceTarget target) { _haContext.CallService("powercalc", "stop_playbook", target); } + + ///Some profiles in the library has different sub profiles. This service allows you to switch to another one. + ///The target for this service call + public void SwitchSubProfile(ServiceTarget target, PowercalcSwitchSubProfileParameters data) + { + _haContext.CallService("powercalc", "switch_sub_profile", target, data); + } + + ///Some profiles in the library has different sub profiles. This service allows you to switch to another one. + ///The target for this service call + ///Define one of the possible sub profiles eg: nigh_vision + public void SwitchSubProfile(ServiceTarget target, string profile) + { + _haContext.CallService("powercalc", "switch_sub_profile", target, new PowercalcSwitchSubProfileParameters { Profile = profile }); + } } public partial record PowercalcActivatePlaybookParameters { - ///Playbook identifier eg: program1 + ///Playbook identifier. eg: program1 [JsonPropertyName("playbook_id")] public string? PlaybookId { get; init; } } public partial record PowercalcCalibrateEnergyParameters { - ///Value to which set the meter eg: 100 + ///The value to set. eg: 100 [JsonPropertyName("value")] public string? Value { get; init; } } public partial record PowercalcCalibrateUtilityMeterParameters { - ///Value to which set the meter eg: 100 + ///The value to set. eg: 100 [JsonPropertyName("value")] public string? Value { get; init; } } public partial record PowercalcIncreaseDailyEnergyParameters { - ///Amount to add to the sensor eg: 100 + ///Amount to add to the sensor. eg: 100 [JsonPropertyName("value")] public string? Value { get; init; } } +public partial record PowercalcSwitchSubProfileParameters +{ + ///Define one of the possible sub profiles eg: nigh_vision + [JsonPropertyName("profile")] + public string? Profile { get; init; } +} + public partial class RecorderServices { private readonly IHaContext _haContext; @@ -13730,45 +13921,45 @@ public RecorderServices(IHaContext haContext) _haContext = haContext; } - ///Stop the recording of events and state changes + ///Stops the recording of events and state changes. public void Disable() { _haContext.CallService("recorder", "disable", null); } - ///Start the recording of events and state changes + ///Starts the recording of events and state changes. public void Enable() { _haContext.CallService("recorder", "enable", null); } - ///Start purge task - to clean up old data from your database. + ///Starts purge task - to clean up old data from your database. public void Purge(RecorderPurgeParameters data) { _haContext.CallService("recorder", "purge", null, data); } - ///Start purge task - to clean up old data from your database. - ///Number of history days to keep in database after purge. + ///Starts purge task - to clean up old data from your database. + ///Number of days to keep the data in the database. Starting today, counting backward. A value of `7` means that everything older than a week will be purged. ///Attempt to save disk space by rewriting the entire database file. - ///Apply entity_id and event_type filter in addition to time based purge. + ///Applys `entity_id` and `event_type` filters in addition to time-based purge. public void Purge(long? keepDays = null, bool? repack = null, bool? applyFilter = null) { _haContext.CallService("recorder", "purge", null, new RecorderPurgeParameters { KeepDays = keepDays, Repack = repack, ApplyFilter = applyFilter }); } - ///Start purge task to remove specific entities from your database. + ///Starts a purge task to remove the data related to specific entities from your database. ///The target for this service call public void PurgeEntities(ServiceTarget target, RecorderPurgeEntitiesParameters data) { _haContext.CallService("recorder", "purge_entities", target, data); } - ///Start purge task to remove specific entities from your database. + ///Starts a purge task to remove the data related to specific entities from your database. ///The target for this service call - ///List the domains that need to be removed from the recorder database. eg: sun - ///List the glob patterns to select entities for removal from the recorder database. eg: domain*.object_id* - ///Number of history days to keep in database of matching rows. The default of 0 days will remove all matching rows. + ///List of domains for which the data needs to be removed from the recorder database. eg: sun + ///List of glob patterns used to select the entities for which the data is to be removed from the recorder database. eg: domain*.object_id* + ///Number of days to keep the data for rows matching the filter. Starting today, counting backward. A value of `7` means that everything older than a week will be purged. The default of 0 days will remove all matching rows immediately. public void PurgeEntities(ServiceTarget target, object? domains = null, object? entityGlobs = null, long? keepDays = null) { _haContext.CallService("recorder", "purge_entities", target, new RecorderPurgeEntitiesParameters { Domains = domains, EntityGlobs = entityGlobs, KeepDays = keepDays }); @@ -13777,7 +13968,7 @@ public void PurgeEntities(ServiceTarget target, object? domains = null, object? public partial record RecorderPurgeParameters { - ///Number of history days to keep in database after purge. + ///Number of days to keep the data in the database. Starting today, counting backward. A value of `7` means that everything older than a week will be purged. [JsonPropertyName("keep_days")] public long? KeepDays { get; init; } @@ -13785,22 +13976,22 @@ public partial record RecorderPurgeParameters [JsonPropertyName("repack")] public bool? Repack { get; init; } - ///Apply entity_id and event_type filter in addition to time based purge. + ///Applys `entity_id` and `event_type` filters in addition to time-based purge. [JsonPropertyName("apply_filter")] public bool? ApplyFilter { get; init; } } public partial record RecorderPurgeEntitiesParameters { - ///List the domains that need to be removed from the recorder database. eg: sun + ///List of domains for which the data needs to be removed from the recorder database. eg: sun [JsonPropertyName("domains")] public object? Domains { get; init; } - ///List the glob patterns to select entities for removal from the recorder database. eg: domain*.object_id* + ///List of glob patterns used to select the entities for which the data is to be removed from the recorder database. eg: domain*.object_id* [JsonPropertyName("entity_globs")] public object? EntityGlobs { get; init; } - ///Number of history days to keep in database of matching rows. The default of 0 days will remove all matching rows. + ///Number of days to keep the data for rows matching the filter. Starting today, counting backward. A value of `7` means that everything older than a week will be purged. The default of 0 days will remove all matching rows immediately. [JsonPropertyName("keep_days")] public long? KeepDays { get; init; } } @@ -13822,8 +14013,8 @@ public void DeleteCommand(ServiceTarget target, RemoteDeleteCommandParameters da ///Deletes a command or a list of commands from the database. ///The target for this service call - ///Name of the device from which commands will be deleted. eg: television - ///A single command or a list of commands to delete. eg: Mute + ///Device from which commands will be deleted. eg: television + ///The single command or the list of commands to be deleted. eg: Mute public void DeleteCommand(ServiceTarget target, object command, string? device = null) { _haContext.CallService("remote", "delete_command", target, new RemoteDeleteCommandParameters { Device = device, Command = command }); @@ -13841,7 +14032,7 @@ public void LearnCommand(ServiceTarget target, RemoteLearnCommandParameters data ///Device ID to learn command from. eg: television ///A single command or a list of commands to learn. eg: Turn on ///The type of command to be learned. - ///If code must be stored as alternative (useful for discrete remotes). + ///If code must be stored as an alternative. This is useful for discrete codes. Discrete codes are used for toggles that only perform one function. For example, a code to only turn a device on. If it is on already, sending the code won't change the state. ///Timeout for the command to be learned. public void LearnCommand(ServiceTarget target, string? device = null, object? command = null, object? commandType = null, bool? alternative = null, long? timeout = null) { @@ -13859,7 +14050,7 @@ public void SendCommand(ServiceTarget target, RemoteSendCommandParameters data) ///The target for this service call ///Device ID to send command to. eg: 32756745 ///A single command or a list of commands to send. eg: Play - ///The number of times you want to repeat the command(s). + ///The number of times you want to repeat the commands. ///The time you want to wait in between repeated commands. ///The time you want to have it held before the release is send. public void SendCommand(ServiceTarget target, object command, string? device = null, long? numRepeats = null, double? delaySecs = null, double? holdSecs = null) @@ -13867,30 +14058,30 @@ public void SendCommand(ServiceTarget target, object command, string? device = n _haContext.CallService("remote", "send_command", target, new RemoteSendCommandParameters { Device = device, Command = command, NumRepeats = numRepeats, DelaySecs = delaySecs, HoldSecs = holdSecs }); } - ///Toggles a device. + ///Toggles a device on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("remote", "toggle", target); } - ///Sends the Power Off Command. + ///Turns the device off. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("remote", "turn_off", target); } - ///Sends the Power On Command. + ///Sends the power on command. ///The target for this service call public void TurnOn(ServiceTarget target, RemoteTurnOnParameters data) { _haContext.CallService("remote", "turn_on", target, data); } - ///Sends the Power On Command. + ///Sends the power on command. ///The target for this service call - ///Activity ID or Activity Name to start. eg: BedroomTV + ///Activity ID or activity name to be started. eg: BedroomTV public void TurnOn(ServiceTarget target, string? activity = null) { _haContext.CallService("remote", "turn_on", target, new RemoteTurnOnParameters { Activity = activity }); @@ -13899,11 +14090,11 @@ public void TurnOn(ServiceTarget target, string? activity = null) public partial record RemoteDeleteCommandParameters { - ///Name of the device from which commands will be deleted. eg: television + ///Device from which commands will be deleted. eg: television [JsonPropertyName("device")] public string? Device { get; init; } - ///A single command or a list of commands to delete. eg: Mute + ///The single command or the list of commands to be deleted. eg: Mute [JsonPropertyName("command")] public object? Command { get; init; } } @@ -13922,7 +14113,7 @@ public partial record RemoteLearnCommandParameters [JsonPropertyName("command_type")] public object? CommandType { get; init; } - ///If code must be stored as alternative (useful for discrete remotes). + ///If code must be stored as an alternative. This is useful for discrete codes. Discrete codes are used for toggles that only perform one function. For example, a code to only turn a device on. If it is on already, sending the code won't change the state. [JsonPropertyName("alternative")] public bool? Alternative { get; init; } @@ -13941,7 +14132,7 @@ public partial record RemoteSendCommandParameters [JsonPropertyName("command")] public object? Command { get; init; } - ///The number of times you want to repeat the command(s). + ///The number of times you want to repeat the commands. [JsonPropertyName("num_repeats")] public long? NumRepeats { get; init; } @@ -13956,7 +14147,7 @@ public partial record RemoteSendCommandParameters public partial record RemoteTurnOnParameters { - ///Activity ID or Activity Name to start. eg: BedroomTV + ///Activity ID or activity name to be started. eg: BedroomTV [JsonPropertyName("activity")] public string? Activity { get; init; } } @@ -13969,7 +14160,7 @@ public RingServices(IHaContext haContext) _haContext = haContext; } - ///Updates the data we have for all your ring devices + ///Updates the data we have for all your ring devices. public void Update() { _haContext.CallService("ring", "update", null); @@ -13984,15 +14175,15 @@ public SceneServices(IHaContext haContext) _haContext = haContext; } - ///Activate a scene with configuration. + ///Activates a scene with configuration. public void Apply(SceneApplyParameters data) { _haContext.CallService("scene", "apply", null, data); } - ///Activate a scene with configuration. - ///The entities and the state that they need to be. eg: light.kitchen: "on" light.ceiling: state: "on" brightness: 80 - ///Transition duration it takes to bring devices to the state defined in the scene. + ///Activates a scene with configuration. + ///List of entities and their target state. eg: light.kitchen: "on" light.ceiling: state: "on" brightness: 80 + ///Time it takes the devices to transition into the states defined in the scene. public void Apply(object entities, long? transition = null) { _haContext.CallService("scene", "apply", null, new SceneApplyParameters { Entities = entities, Transition = transition }); @@ -14005,30 +14196,30 @@ public void Create(SceneCreateParameters data) } ///Creates a new scene. - ///The entity_id of the new scene. eg: all_lights - ///The entities to control with the scene. eg: light.tv_back_light: "on" light.ceiling: state: "on" brightness: 200 - ///The entities of which a snapshot is to be taken eg: - light.ceiling - light.kitchen + ///The entity ID of the new scene. eg: all_lights + ///List of entities and their target state. If your entities are already in the target state right now, use `snapshot_entities` instead. eg: light.tv_back_light: "on" light.ceiling: state: "on" brightness: 200 + ///List of entities to be included in the snapshot. By taking a snapshot, you record the current state of those entities. If you do not want to use the current state of all your entities for this scene, you can combine the `snapshot_entities` with `entities`. eg: - light.ceiling - light.kitchen public void Create(string sceneId, object? entities = null, object? snapshotEntities = null) { _haContext.CallService("scene", "create", null, new SceneCreateParameters { SceneId = sceneId, Entities = entities, SnapshotEntities = snapshotEntities }); } - ///Reload the scene configuration. + ///Reloads the scenes from the YAML-configuration. public void Reload() { _haContext.CallService("scene", "reload", null); } - ///Activate a scene. + ///Activates a scene. ///The target for this service call public void TurnOn(ServiceTarget target, SceneTurnOnParameters data) { _haContext.CallService("scene", "turn_on", target, data); } - ///Activate a scene. + ///Activates a scene. ///The target for this service call - ///Transition duration it takes to bring devices to the state defined in the scene. + ///Time it takes the devices to transition into the states defined in the scene. public void TurnOn(ServiceTarget target, long? transition = null) { _haContext.CallService("scene", "turn_on", target, new SceneTurnOnParameters { Transition = transition }); @@ -14037,33 +14228,33 @@ public void TurnOn(ServiceTarget target, long? transition = null) public partial record SceneApplyParameters { - ///The entities and the state that they need to be. eg: light.kitchen: "on" light.ceiling: state: "on" brightness: 80 + ///List of entities and their target state. eg: light.kitchen: "on" light.ceiling: state: "on" brightness: 80 [JsonPropertyName("entities")] public object? Entities { get; init; } - ///Transition duration it takes to bring devices to the state defined in the scene. + ///Time it takes the devices to transition into the states defined in the scene. [JsonPropertyName("transition")] public long? Transition { get; init; } } public partial record SceneCreateParameters { - ///The entity_id of the new scene. eg: all_lights + ///The entity ID of the new scene. eg: all_lights [JsonPropertyName("scene_id")] public string? SceneId { get; init; } - ///The entities to control with the scene. eg: light.tv_back_light: "on" light.ceiling: state: "on" brightness: 200 + ///List of entities and their target state. If your entities are already in the target state right now, use `snapshot_entities` instead. eg: light.tv_back_light: "on" light.ceiling: state: "on" brightness: 200 [JsonPropertyName("entities")] public object? Entities { get; init; } - ///The entities of which a snapshot is to be taken eg: - light.ceiling - light.kitchen + ///List of entities to be included in the snapshot. By taking a snapshot, you record the current state of those entities. If you do not want to use the current state of all your entities for this scene, you can combine the `snapshot_entities` with `entities`. eg: - light.ceiling - light.kitchen [JsonPropertyName("snapshot_entities")] public object? SnapshotEntities { get; init; } } public partial record SceneTurnOnParameters { - ///Transition duration it takes to bring devices to the state defined in the scene. + ///Time it takes the devices to transition into the states defined in the scene. [JsonPropertyName("transition")] public long? Transition { get; init; } } @@ -14076,7 +14267,7 @@ public ScheduleServices(IHaContext haContext) _haContext = haContext; } - ///Reload the schedule configuration + ///Reloads schedules from the YAML-configuration. public void Reload() { _haContext.CallService("schedule", "reload", null); @@ -14295,7 +14486,7 @@ public void PlayYoutubeOnLg() _haContext.CallService("script", "play_youtube_on_lg", null); } - ///Reload all the available scripts + ///Reloads all the available scripts. public void Reload() { _haContext.CallService("script", "reload", null); @@ -14306,7 +14497,7 @@ public void RingMqttInterval() _haContext.CallService("script", "ring_mqtt_interval", null); } - ///Toggle script + ///Toggle a script. Starts it, if isn't running, stops it otherwise. ///The target for this service call public void Toggle(ServiceTarget target) { @@ -14323,14 +14514,14 @@ public void TtsText() _haContext.CallService("script", "tts_text", null); } - ///Turn off script + ///Stops a running script. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("script", "turn_off", target); } - ///Turn on script + ///Runs the sequence of actions defined in a script. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -14376,28 +14567,28 @@ public SelectServices(IHaContext haContext) _haContext = haContext; } - ///Select the first option of an select entity. + ///Selects the first option. ///The target for this service call public void SelectFirst(ServiceTarget target) { _haContext.CallService("select", "select_first", target); } - ///Select the last option of an select entity. + ///Selects the last option. ///The target for this service call public void SelectLast(ServiceTarget target) { _haContext.CallService("select", "select_last", target); } - ///Select the next options of an select entity. + ///Selects the next option. ///The target for this service call public void SelectNext(ServiceTarget target, SelectSelectNextParameters data) { _haContext.CallService("select", "select_next", target, data); } - ///Select the next options of an select entity. + ///Selects the next option. ///The target for this service call ///If the option should cycle from the last to the first. public void SelectNext(ServiceTarget target, bool? cycle = null) @@ -14405,14 +14596,14 @@ public void SelectNext(ServiceTarget target, bool? cycle = null) _haContext.CallService("select", "select_next", target, new SelectSelectNextParameters { Cycle = cycle }); } - ///Select an option of an select entity. + ///Selects an option. ///The target for this service call public void SelectOption(ServiceTarget target, SelectSelectOptionParameters data) { _haContext.CallService("select", "select_option", target, data); } - ///Select an option of an select entity. + ///Selects an option. ///The target for this service call ///Option to be selected. eg: "Item A" public void SelectOption(ServiceTarget target, string option) @@ -14420,14 +14611,14 @@ public void SelectOption(ServiceTarget target, string option) _haContext.CallService("select", "select_option", target, new SelectSelectOptionParameters { Option = option }); } - ///Select the previous options of an select entity. + ///Selects the previous option. ///The target for this service call public void SelectPrevious(ServiceTarget target, SelectSelectPreviousParameters data) { _haContext.CallService("select", "select_previous", target, data); } - ///Select the previous options of an select entity. + ///Selects the previous option. ///The target for this service call ///If the option should cycle from the first to the last. public void SelectPrevious(ServiceTarget target, bool? cycle = null) @@ -14465,32 +14656,32 @@ public SirenServices(IHaContext haContext) _haContext = haContext; } - ///Toggles a siren. + ///Toggles the siren on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("siren", "toggle", target); } - ///Turn siren off. + ///Turns the siren off. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("siren", "turn_off", target); } - ///Turn siren on. + ///Turns the siren on. ///The target for this service call public void TurnOn(ServiceTarget target, SirenTurnOnParameters data) { _haContext.CallService("siren", "turn_on", target, data); } - ///Turn siren on. + ///Turns the siren on. ///The target for this service call - ///The tone to emit when turning the siren on. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire - ///The volume level of the noise to emit when turning the siren on. Must be supported by the integration. eg: 0.5 - ///The duration in seconds of the noise to emit when turning the siren on. Must be supported by the integration. eg: 15 + ///The tone to emit. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire + ///The volume. 0 is inaudible, 1 is the maximum volume. Must be supported by the integration. eg: 0.5 + ///Number of seconds the sound is played. Must be supported by the integration. eg: 15 public void TurnOn(ServiceTarget target, string? tone = null, double? volumeLevel = null, string? duration = null) { _haContext.CallService("siren", "turn_on", target, new SirenTurnOnParameters { Tone = tone, VolumeLevel = volumeLevel, Duration = duration }); @@ -14499,15 +14690,15 @@ public void TurnOn(ServiceTarget target, string? tone = null, double? volumeLeve public partial record SirenTurnOnParameters { - ///The tone to emit when turning the siren on. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire + ///The tone to emit. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire [JsonPropertyName("tone")] public string? Tone { get; init; } - ///The volume level of the noise to emit when turning the siren on. Must be supported by the integration. eg: 0.5 + ///The volume. 0 is inaudible, 1 is the maximum volume. Must be supported by the integration. eg: 0.5 [JsonPropertyName("volume_level")] public double? VolumeLevel { get; init; } - ///The duration in seconds of the noise to emit when turning the siren on. Must be supported by the integration. eg: 15 + ///Number of seconds the sound is played. Must be supported by the integration. eg: 15 [JsonPropertyName("duration")] public string? Duration { get; init; } } @@ -14520,7 +14711,7 @@ public SonosServices(IHaContext haContext) _haContext = haContext; } - ///Clear a Sonos timer. + ///Clears a Sonos timer. ///The target for this service call public void ClearSleepTimer(ServiceTarget target) { @@ -14557,13 +14748,13 @@ public void RemoveFromQueue(ServiceTarget target, long? queuePosition = null) _haContext.CallService("sonos", "remove_from_queue", target, new SonosRemoveFromQueueParameters { QueuePosition = queuePosition }); } - ///Restore a snapshot of the media player. + ///Restores a snapshot of the media player. public void Restore(SonosRestoreParameters data) { _haContext.CallService("sonos", "restore", null, data); } - ///Restore a snapshot of the media player. + ///Restores a snapshot of the media player. ///Name of entity that will be restored. ///True or False. Also restore the group layout. public void Restore(string? entityId = null, bool? withGroup = null) @@ -14571,14 +14762,14 @@ public void Restore(string? entityId = null, bool? withGroup = null) _haContext.CallService("sonos", "restore", null, new SonosRestoreParameters { EntityId = entityId, WithGroup = withGroup }); } - ///Set a Sonos timer. + ///Sets a Sonos timer. ///The target for this service call public void SetSleepTimer(ServiceTarget target, SonosSetSleepTimerParameters data) { _haContext.CallService("sonos", "set_sleep_timer", target, data); } - ///Set a Sonos timer. + ///Sets a Sonos timer. ///The target for this service call ///Number of seconds to set the timer. public void SetSleepTimer(ServiceTarget target, long? sleepTime = null) @@ -14586,13 +14777,13 @@ public void SetSleepTimer(ServiceTarget target, long? sleepTime = null) _haContext.CallService("sonos", "set_sleep_timer", target, new SonosSetSleepTimerParameters { SleepTime = sleepTime }); } - ///Take a snapshot of the media player. + ///Takes a snapshot of the media player. public void Snapshot(SonosSnapshotParameters data) { _haContext.CallService("sonos", "snapshot", null, data); } - ///Take a snapshot of the media player. + ///Takes a snapshot of the media player. ///Name of entity that will be snapshot. ///True or False. Also snapshot the group layout. public void Snapshot(string? entityId = null, bool? withGroup = null) @@ -14694,21 +14885,21 @@ public SwitchServices(IHaContext haContext) _haContext = haContext; } - ///Toggles a switch state + ///Toggles a switch on/off. ///The target for this service call public void Toggle(ServiceTarget target) { _haContext.CallService("switch", "toggle", target); } - ///Turn a switch off + ///Turns a switch off. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("switch", "turn_off", target); } - ///Turn a switch on + ///Turns a switch on. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -14724,7 +14915,7 @@ public SystemLogServices(IHaContext haContext) _haContext = haContext; } - ///Clear all log entries. + ///Clears all log entries. public void Clear() { _haContext.CallService("system_log", "clear", null); @@ -14739,7 +14930,7 @@ public void Write(SystemLogWriteParameters data) ///Write log entry. ///Message to log. eg: Something went wrong ///Log level. - ///Logger name under which to log the message. Defaults to 'system_log.external'. eg: mycomponent.myplatform + ///Logger name under which to log the message. Defaults to `system_log.external`. eg: mycomponent.myplatform public void Write(string message, object? level = null, string? logger = null) { _haContext.CallService("system_log", "write", null, new SystemLogWriteParameters { Message = message, Level = level, Logger = logger }); @@ -14756,7 +14947,7 @@ public partial record SystemLogWriteParameters [JsonPropertyName("level")] public object? Level { get; init; } - ///Logger name under which to log the message. Defaults to 'system_log.external'. eg: mycomponent.myplatform + ///Logger name under which to log the message. Defaults to `system_log.external`. eg: mycomponent.myplatform [JsonPropertyName("logger")] public string? Logger { get; init; } } @@ -14769,7 +14960,7 @@ public TelegramServices(IHaContext haContext) _haContext = haContext; } - ///Reload telegram notify services. + ///Reloads telegram notify services. public void Reload() { _haContext.CallService("telegram", "reload", null); @@ -14784,44 +14975,44 @@ public TelegramBotServices(IHaContext haContext) _haContext = haContext; } - ///Respond to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. + ///Responds to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. public void AnswerCallbackQuery(TelegramBotAnswerCallbackQueryParameters data) { _haContext.CallService("telegram_bot", "answer_callback_query", null, data); } - ///Respond to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. + ///Responds to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. ///Unformatted text message body of the notification. eg: OK, I'm listening ///Unique id of the callback response. eg: {{ trigger.event.data.id }} ///Show a permanent notification. - ///Timeout for sending the answer. Will help with timeout errors (poor internet connection, etc) + ///Timeout for sending the answer. Will help with timeout errors (poor internet connection, etc). public void AnswerCallbackQuery(string message, string callbackQueryId, bool showAlert, long? timeout = null) { _haContext.CallService("telegram_bot", "answer_callback_query", null, new TelegramBotAnswerCallbackQueryParameters { Message = message, CallbackQueryId = callbackQueryId, ShowAlert = showAlert, Timeout = timeout }); } - ///Delete a previously sent message. + ///Deletes a previously sent message. public void DeleteMessage(TelegramBotDeleteMessageParameters data) { _haContext.CallService("telegram_bot", "delete_message", null, data); } - ///Delete a previously sent message. - ///id of the message to delete. eg: {{ trigger.event.data.message.message_id }} + ///Deletes a previously sent message. + ///Id of the message to delete. eg: {{ trigger.event.data.message.message_id }} ///The chat_id where to delete the message. eg: 12345 public void DeleteMessage(string messageId, string chatId) { _haContext.CallService("telegram_bot", "delete_message", null, new TelegramBotDeleteMessageParameters { MessageId = messageId, ChatId = chatId }); } - ///Edit the caption of a previously sent message. + ///Edits the caption of a previously sent message. public void EditCaption(TelegramBotEditCaptionParameters data) { _haContext.CallService("telegram_bot", "edit_caption", null, data); } - ///Edit the caption of a previously sent message. - ///id of the message to edit. eg: {{ trigger.event.data.message.message_id }} + ///Edits the caption of a previously sent message. + ///Id of the message to edit. eg: {{ trigger.event.data.message.message_id }} ///The chat_id where to edit the caption. eg: 12345 ///Message body of the notification. eg: The garage door has been open for 10 minutes. ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] @@ -14830,17 +15021,17 @@ public void EditCaption(string messageId, string chatId, string caption, object? _haContext.CallService("telegram_bot", "edit_caption", null, new TelegramBotEditCaptionParameters { MessageId = messageId, ChatId = chatId, Caption = caption, InlineKeyboard = inlineKeyboard }); } - ///Edit a previously sent message. + ///Edits a previously sent message. public void EditMessage(TelegramBotEditMessageParameters data) { _haContext.CallService("telegram_bot", "edit_message", null, data); } - ///Edit a previously sent message. - ///id of the message to edit. eg: {{ trigger.event.data.message.message_id }} + ///Edits a previously sent message. + ///Id of the message to edit. eg: {{ trigger.event.data.message.message_id }} ///The chat_id where to edit the message. eg: 12345 ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Optional title for your notification. Will be composed as '%title\n%message' eg: Your Garage Door Friend + ///Optional title for your notification. Will be composed as '%title %message'. eg: Your Garage Door Friend ///Parser for the message text. ///Disables link previews for links in the message. ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] @@ -14856,7 +15047,7 @@ public void EditReplymarkup(TelegramBotEditReplymarkupParameters data) } ///Edit the inline keyboard of a previously sent message. - ///id of the message to edit. eg: {{ trigger.event.data.message.message_id }} + ///Id of the message to edit. eg: {{ trigger.event.data.message.message_id }} ///The chat_id where to edit the reply_markup. eg: 12345 ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] public void EditReplymarkup(string messageId, string chatId, object inlineKeyboard) @@ -14869,13 +15060,13 @@ public void LeaveChat() _haContext.CallService("telegram_bot", "leave_chat", null); } - ///Send an anmiation. + ///Sends an animation. public void SendAnimation(TelegramBotSendAnimationParameters data) { _haContext.CallService("telegram_bot", "send_animation", null, data); } - ///Send an anmiation. + ///Sends an animation. ///Remote path to a GIF or H.264/MPEG-4 AVC video without sound. eg: http://example.org/path/to/the/animation.gif ///Local path to a GIF or H.264/MPEG-4 AVC video without sound. eg: /path/to/the/animation.gif ///The title of the animation. eg: My animation @@ -14886,7 +15077,7 @@ public void SendAnimation(TelegramBotSendAnimationParameters data) ///Parser for the message text. ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server. - ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] public void SendAnimation(string? url = null, string? @file = null, string? caption = null, string? username = null, string? password = null, object? authentication = null, object? target = null, object? parseMode = null, bool? disableNotification = null, bool? verifySsl = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null) @@ -14894,13 +15085,13 @@ public void SendAnimation(string? url = null, string? @file = null, string? capt _haContext.CallService("telegram_bot", "send_animation", null, new TelegramBotSendAnimationParameters { Url = url, File = @file, Caption = caption, Username = username, Password = password, Authentication = authentication, Target = target, ParseMode = parseMode, DisableNotification = disableNotification, VerifySsl = verifySsl, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard }); } - ///Send a document. + ///Sends a document. public void SendDocument(TelegramBotSendDocumentParameters data) { _haContext.CallService("telegram_bot", "send_document", null, data); } - ///Send a document. + ///Sends a document. ///Remote path to a document. eg: http://example.org/path/to/the/document.odf ///Local path to a document. eg: /tmp/whatever.odf ///The title of the document. eg: Document Title xy @@ -14911,64 +15102,64 @@ public void SendDocument(TelegramBotSendDocumentParameters data) ///Parser for the message text. ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server. - ///Timeout for send document. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send document. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendDocument(string? url = null, string? @file = null, string? caption = null, string? username = null, string? password = null, object? authentication = null, object? target = null, object? parseMode = null, bool? disableNotification = null, bool? verifySsl = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_document", null, new TelegramBotSendDocumentParameters { Url = url, File = @file, Caption = caption, Username = username, Password = password, Authentication = authentication, Target = target, ParseMode = parseMode, DisableNotification = disableNotification, VerifySsl = verifySsl, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); } - ///Send a location. + ///Sends a location. public void SendLocation(TelegramBotSendLocationParameters data) { _haContext.CallService("telegram_bot", "send_location", null, data); } - ///Send a location. + ///Sends a location. ///The latitude to send. ///The longitude to send. ///An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default. eg: [12345, 67890] or 12345 ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. - ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendLocation(double latitude, double longitude, object? target = null, bool? disableNotification = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_location", null, new TelegramBotSendLocationParameters { Latitude = latitude, Longitude = longitude, Target = target, DisableNotification = disableNotification, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); } - ///Send a notification. + ///Sends a notification. public void SendMessage(TelegramBotSendMessageParameters data) { _haContext.CallService("telegram_bot", "send_message", null, data); } - ///Send a notification. + ///Sends a notification. ///Message body of the notification. eg: The garage door has been open for 10 minutes. - ///Optional title for your notification. Will be composed as '%title\n%message' eg: Your Garage Door Friend + ///Optional title for your notification. Will be composed as '%title %message'. eg: Your Garage Door Friend ///An array of pre-authorized chat_ids to send the notification to. If not present, first allowed chat_id is the default. eg: [12345, 67890] or 12345 ///Parser for the message text. ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Disables link previews for links in the message. - ///Timeout for send message. Will help with timeout errors (poor internet connection, etc)s + ///Timeout for send message. Will help with timeout errors (poor internet connection, etc)s. ///List of rows of commands, comma-separated, to make a custom keyboard. Empty list clears a previously set keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or ["Text button1:/button1, Text button2:/button2", "Text button3:/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendMessage(string message, string? title = null, object? target = null, object? parseMode = null, bool? disableNotification = null, bool? disableWebPagePreview = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_message", null, new TelegramBotSendMessageParameters { Message = message, Title = title, Target = target, ParseMode = parseMode, DisableNotification = disableNotification, DisableWebPagePreview = disableWebPagePreview, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); } - ///Send a photo. + ///Sends a photo. public void SendPhoto(TelegramBotSendPhotoParameters data) { _haContext.CallService("telegram_bot", "send_photo", null, data); } - ///Send a photo. + ///Sends a photo. ///Remote path to an image. eg: http://example.org/path/to/the/image.png ///Local path to an image. eg: /path/to/the/image.png ///The title of the image. eg: My image @@ -14979,67 +15170,67 @@ public void SendPhoto(TelegramBotSendPhotoParameters data) ///Parser for the message text. ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server. - ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendPhoto(string? url = null, string? @file = null, string? caption = null, string? username = null, string? password = null, object? authentication = null, object? target = null, object? parseMode = null, bool? disableNotification = null, bool? verifySsl = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_photo", null, new TelegramBotSendPhotoParameters { Url = url, File = @file, Caption = caption, Username = username, Password = password, Authentication = authentication, Target = target, ParseMode = parseMode, DisableNotification = disableNotification, VerifySsl = verifySsl, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); } - ///Send a poll. + ///Sends a poll. public void SendPoll(TelegramBotSendPollParameters data) { _haContext.CallService("telegram_bot", "send_poll", null, data); } - ///Send a poll. + ///Sends a poll. ///An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default. eg: [12345, 67890] or 12345 - ///Poll question, 1-300 characters - ///List of answer options, 2-10 strings 1-100 characters each - ///If the poll needs to be anonymous, defaults to True - ///If the poll allows multiple answers, defaults to False + ///Poll question, 1-300 characters. + ///List of answer options, 2-10 strings 1-100 characters each. + ///If the poll needs to be anonymous, defaults to True. + ///If the poll allows multiple answers, defaults to False. ///Amount of time in seconds the poll will be active after creation, 5-600. ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. - ///Timeout for send poll. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send poll. Will help with timeout errors (poor internet connection, etc). public void SendPoll(string question, object options, object? target = null, bool? isAnonymous = null, bool? allowsMultipleAnswers = null, long? openPeriod = null, bool? disableNotification = null, long? timeout = null) { _haContext.CallService("telegram_bot", "send_poll", null, new TelegramBotSendPollParameters { Target = target, Question = question, Options = options, IsAnonymous = isAnonymous, AllowsMultipleAnswers = allowsMultipleAnswers, OpenPeriod = openPeriod, DisableNotification = disableNotification, Timeout = timeout }); } - ///Send a sticker. + ///Sends a sticker. public void SendSticker(TelegramBotSendStickerParameters data) { _haContext.CallService("telegram_bot", "send_sticker", null, data); } - ///Send a sticker. + ///Sends a sticker. ///Remote path to a static .webp or animated .tgs sticker. eg: http://example.org/path/to/the/sticker.webp ///Local path to a static .webp or animated .tgs sticker. eg: /path/to/the/sticker.webp - ///ID of a sticker that exists on telegram servers eg: CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE + ///ID of a sticker that exists on telegram servers. eg: CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE ///Username for a URL which require HTTP authentication. eg: myuser ///Password (or bearer token) for a URL which require HTTP authentication. eg: myuser_pwd ///Define which authentication method to use. Set to `digest` to use HTTP digest authentication, or `bearer_token` for OAuth 2.0 bearer token authentication. Defaults to `basic`. ///An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default. eg: [12345, 67890] or 12345 ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server. - ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendSticker(string? url = null, string? @file = null, string? stickerId = null, string? username = null, string? password = null, object? authentication = null, object? target = null, bool? disableNotification = null, bool? verifySsl = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_sticker", null, new TelegramBotSendStickerParameters { Url = url, File = @file, StickerId = stickerId, Username = username, Password = password, Authentication = authentication, Target = target, DisableNotification = disableNotification, VerifySsl = verifySsl, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); } - ///Send a video. + ///Sends a video. public void SendVideo(TelegramBotSendVideoParameters data) { _haContext.CallService("telegram_bot", "send_video", null, data); } - ///Send a video. + ///Sends a video. ///Remote path to a video. eg: http://example.org/path/to/the/video.mp4 ///Local path to a video. eg: /path/to/the/video.mp4 ///The title of the video. eg: My video @@ -15050,22 +15241,22 @@ public void SendVideo(TelegramBotSendVideoParameters data) ///Parser for the message text. ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server. - ///Timeout for send video. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send video. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendVideo(string? url = null, string? @file = null, string? caption = null, string? username = null, string? password = null, object? authentication = null, object? target = null, object? parseMode = null, bool? disableNotification = null, bool? verifySsl = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_video", null, new TelegramBotSendVideoParameters { Url = url, File = @file, Caption = caption, Username = username, Password = password, Authentication = authentication, Target = target, ParseMode = parseMode, DisableNotification = disableNotification, VerifySsl = verifySsl, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); } - ///Send a voice message. + ///Sends a voice message. public void SendVoice(TelegramBotSendVoiceParameters data) { _haContext.CallService("telegram_bot", "send_voice", null, data); } - ///Send a voice message. + ///Sends a voice message. ///Remote path to a voice message. eg: http://example.org/path/to/the/voice.opus ///Local path to a voice message. eg: /path/to/the/voice.opus ///The title of the voice message. eg: My microphone recording @@ -15075,10 +15266,10 @@ public void SendVoice(TelegramBotSendVoiceParameters data) ///An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default. eg: [12345, 67890] or 12345 ///Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound. ///Enable or disable SSL certificate verification. Set to false if you're downloading the file from a URL and you don't want to validate the SSL certificate of the server. - ///Timeout for send voice. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send voice. Will help with timeout errors (poor internet connection, etc). ///List of rows of commands, comma-separated, to make a custom keyboard. eg: ["/command1, /command2", "/command3"] ///List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. eg: ["/button1, /button2", "/button3"] or [[["Text button1", "/button1"], ["Text button2", "/button2"]], [["Text button3", "/button3"]]] - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit public void SendVoice(string? url = null, string? @file = null, string? caption = null, string? username = null, string? password = null, object? authentication = null, object? target = null, bool? disableNotification = null, bool? verifySsl = null, long? timeout = null, object? keyboard = null, object? inlineKeyboard = null, string? messageTag = null) { _haContext.CallService("telegram_bot", "send_voice", null, new TelegramBotSendVoiceParameters { Url = url, File = @file, Caption = caption, Username = username, Password = password, Authentication = authentication, Target = target, DisableNotification = disableNotification, VerifySsl = verifySsl, Timeout = timeout, Keyboard = keyboard, InlineKeyboard = inlineKeyboard, MessageTag = messageTag }); @@ -15099,14 +15290,14 @@ public partial record TelegramBotAnswerCallbackQueryParameters [JsonPropertyName("show_alert")] public bool? ShowAlert { get; init; } - ///Timeout for sending the answer. Will help with timeout errors (poor internet connection, etc) + ///Timeout for sending the answer. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } } public partial record TelegramBotDeleteMessageParameters { - ///id of the message to delete. eg: {{ trigger.event.data.message.message_id }} + ///Id of the message to delete. eg: {{ trigger.event.data.message.message_id }} [JsonPropertyName("message_id")] public string? MessageId { get; init; } @@ -15117,7 +15308,7 @@ public partial record TelegramBotDeleteMessageParameters public partial record TelegramBotEditCaptionParameters { - ///id of the message to edit. eg: {{ trigger.event.data.message.message_id }} + ///Id of the message to edit. eg: {{ trigger.event.data.message.message_id }} [JsonPropertyName("message_id")] public string? MessageId { get; init; } @@ -15136,7 +15327,7 @@ public partial record TelegramBotEditCaptionParameters public partial record TelegramBotEditMessageParameters { - ///id of the message to edit. eg: {{ trigger.event.data.message.message_id }} + ///Id of the message to edit. eg: {{ trigger.event.data.message.message_id }} [JsonPropertyName("message_id")] public string? MessageId { get; init; } @@ -15148,7 +15339,7 @@ public partial record TelegramBotEditMessageParameters [JsonPropertyName("message")] public string? Message { get; init; } - ///Optional title for your notification. Will be composed as '%title\n%message' eg: Your Garage Door Friend + ///Optional title for your notification. Will be composed as '%title %message'. eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } @@ -15167,7 +15358,7 @@ public partial record TelegramBotEditMessageParameters public partial record TelegramBotEditReplymarkupParameters { - ///id of the message to edit. eg: {{ trigger.event.data.message.message_id }} + ///Id of the message to edit. eg: {{ trigger.event.data.message.message_id }} [JsonPropertyName("message_id")] public string? MessageId { get; init; } @@ -15222,7 +15413,7 @@ public partial record TelegramBotSendAnimationParameters [JsonPropertyName("verify_ssl")] public bool? VerifySsl { get; init; } - ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15277,7 +15468,7 @@ public partial record TelegramBotSendDocumentParameters [JsonPropertyName("verify_ssl")] public bool? VerifySsl { get; init; } - ///Timeout for send document. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send document. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15289,7 +15480,7 @@ public partial record TelegramBotSendDocumentParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15312,7 +15503,7 @@ public partial record TelegramBotSendLocationParameters [JsonPropertyName("disable_notification")] public bool? DisableNotification { get; init; } - ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15324,7 +15515,7 @@ public partial record TelegramBotSendLocationParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15335,7 +15526,7 @@ public partial record TelegramBotSendMessageParameters [JsonPropertyName("message")] public string? Message { get; init; } - ///Optional title for your notification. Will be composed as '%title\n%message' eg: Your Garage Door Friend + ///Optional title for your notification. Will be composed as '%title %message'. eg: Your Garage Door Friend [JsonPropertyName("title")] public string? Title { get; init; } @@ -15355,7 +15546,7 @@ public partial record TelegramBotSendMessageParameters [JsonPropertyName("disable_web_page_preview")] public bool? DisableWebPagePreview { get; init; } - ///Timeout for send message. Will help with timeout errors (poor internet connection, etc)s + ///Timeout for send message. Will help with timeout errors (poor internet connection, etc)s. [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15367,7 +15558,7 @@ public partial record TelegramBotSendMessageParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15414,7 +15605,7 @@ public partial record TelegramBotSendPhotoParameters [JsonPropertyName("verify_ssl")] public bool? VerifySsl { get; init; } - ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send photo. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15426,7 +15617,7 @@ public partial record TelegramBotSendPhotoParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15437,19 +15628,19 @@ public partial record TelegramBotSendPollParameters [JsonPropertyName("target")] public object? Target { get; init; } - ///Poll question, 1-300 characters + ///Poll question, 1-300 characters. [JsonPropertyName("question")] public string? Question { get; init; } - ///List of answer options, 2-10 strings 1-100 characters each + ///List of answer options, 2-10 strings 1-100 characters each. [JsonPropertyName("options")] public object? Options { get; init; } - ///If the poll needs to be anonymous, defaults to True + ///If the poll needs to be anonymous, defaults to True. [JsonPropertyName("is_anonymous")] public bool? IsAnonymous { get; init; } - ///If the poll allows multiple answers, defaults to False + ///If the poll allows multiple answers, defaults to False. [JsonPropertyName("allows_multiple_answers")] public bool? AllowsMultipleAnswers { get; init; } @@ -15461,7 +15652,7 @@ public partial record TelegramBotSendPollParameters [JsonPropertyName("disable_notification")] public bool? DisableNotification { get; init; } - ///Timeout for send poll. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send poll. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } } @@ -15476,7 +15667,7 @@ public partial record TelegramBotSendStickerParameters [JsonPropertyName("file")] public string? File { get; init; } - ///ID of a sticker that exists on telegram servers eg: CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE + ///ID of a sticker that exists on telegram servers. eg: CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE [JsonPropertyName("sticker_id")] public string? StickerId { get; init; } @@ -15504,7 +15695,7 @@ public partial record TelegramBotSendStickerParameters [JsonPropertyName("verify_ssl")] public bool? VerifySsl { get; init; } - ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send sticker. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15516,7 +15707,7 @@ public partial record TelegramBotSendStickerParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15563,7 +15754,7 @@ public partial record TelegramBotSendVideoParameters [JsonPropertyName("verify_ssl")] public bool? VerifySsl { get; init; } - ///Timeout for send video. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send video. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15575,7 +15766,7 @@ public partial record TelegramBotSendVideoParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15618,7 +15809,7 @@ public partial record TelegramBotSendVoiceParameters [JsonPropertyName("verify_ssl")] public bool? VerifySsl { get; init; } - ///Timeout for send voice. Will help with timeout errors (poor internet connection, etc) + ///Timeout for send voice. Will help with timeout errors (poor internet connection, etc). [JsonPropertyName("timeout")] public long? Timeout { get; init; } @@ -15630,7 +15821,7 @@ public partial record TelegramBotSendVoiceParameters [JsonPropertyName("inline_keyboard")] public object? InlineKeyboard { get; init; } - ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}} eg: msg_to_edit + ///Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}. eg: msg_to_edit [JsonPropertyName("message_tag")] public string? MessageTag { get; init; } } @@ -15643,7 +15834,7 @@ public TemplateServices(IHaContext haContext) _haContext = haContext; } - ///Reload all template entities. + ///Reloads template entities from the YAML-configuration. public void Reload() { _haContext.CallService("template", "reload", null); @@ -15658,16 +15849,16 @@ public TextServices(IHaContext haContext) _haContext = haContext; } - ///Set value of a text entity. + ///Sets the value. ///The target for this service call public void SetValue(ServiceTarget target, TextSetValueParameters data) { _haContext.CallService("text", "set_value", target, data); } - ///Set value of a text entity. + ///Sets the value. ///The target for this service call - ///Value to set. eg: Hello world! + ///Enter your text. eg: Hello world! public void SetValue(ServiceTarget target, string value) { _haContext.CallService("text", "set_value", target, new TextSetValueParameters { Value = value }); @@ -15676,7 +15867,7 @@ public void SetValue(ServiceTarget target, string value) public partial record TextSetValueParameters { - ///Value to set. eg: Hello world! + ///Enter your text. eg: Hello world! [JsonPropertyName("value")] public string? Value { get; init; } } @@ -15689,14 +15880,14 @@ public TimeServices(IHaContext haContext) _haContext = haContext; } - ///Set the time for a time entity. + ///Sets the time. ///The target for this service call public void SetValue(ServiceTarget target, TimeSetValueParameters data) { _haContext.CallService("time", "set_value", target, data); } - ///Set the time for a time entity. + ///Sets the time. ///The target for this service call ///The time to set. eg: 22:15 public void SetValue(ServiceTarget target, DateTime time) @@ -15720,36 +15911,36 @@ public TimerServices(IHaContext haContext) _haContext = haContext; } - ///Cancel a timer. + ///Cancels a timer. ///The target for this service call public void Cancel(ServiceTarget target) { _haContext.CallService("timer", "cancel", target); } - ///Change a timer + ///Changes a timer. ///The target for this service call public void Change(ServiceTarget target, TimerChangeParameters data) { _haContext.CallService("timer", "change", target, data); } - ///Change a timer + ///Changes a timer. ///The target for this service call - ///Duration to add or subtract to the running timer eg: 00:01:00, 60 or -60 + ///Duration to add or subtract to the running timer. eg: 00:01:00, 60 or -60 public void Change(ServiceTarget target, string duration) { _haContext.CallService("timer", "change", target, new TimerChangeParameters { Duration = duration }); } - ///Finish a timer. + ///Finishes a timer. ///The target for this service call public void Finish(ServiceTarget target) { _haContext.CallService("timer", "finish", target); } - ///Pause a timer. + ///Pauses a timer. ///The target for this service call public void Pause(ServiceTarget target) { @@ -15761,16 +15952,16 @@ public void Reload() _haContext.CallService("timer", "reload", null); } - ///Start a timer + ///Starts a timer. ///The target for this service call public void Start(ServiceTarget target, TimerStartParameters data) { _haContext.CallService("timer", "start", target, data); } - ///Start a timer + ///Starts a timer. ///The target for this service call - ///Duration the timer requires to finish. [optional] eg: 00:01:00 or 60 + ///Duration the timer requires to finish. [optional]. eg: 00:01:00 or 60 public void Start(ServiceTarget target, string? duration = null) { _haContext.CallService("timer", "start", target, new TimerStartParameters { Duration = duration }); @@ -15779,14 +15970,14 @@ public void Start(ServiceTarget target, string? duration = null) public partial record TimerChangeParameters { - ///Duration to add or subtract to the running timer eg: 00:01:00, 60 or -60 + ///Duration to add or subtract to the running timer. eg: 00:01:00, 60 or -60 [JsonPropertyName("duration")] public string? Duration { get; init; } } public partial record TimerStartParameters { - ///Duration the timer requires to finish. [optional] eg: 00:01:00 or 60 + ///Duration the timer requires to finish. [optional]. eg: 00:01:00 or 60 [JsonPropertyName("duration")] public string? Duration { get; init; } } @@ -15799,7 +15990,7 @@ public TtsServices(IHaContext haContext) _haContext = haContext; } - ///Remove all text-to-speech cache files and RAM cache. + ///Removes all cached text-to-speech files and purges the memory. public void ClearCache() { _haContext.CallService("tts", "clear_cache", null); @@ -15812,11 +16003,11 @@ public void CloudSay(TtsCloudSayParameters data) } ///Say something using text-to-speech on a media player with cloud. - ///Name(s) of media player entities. - ///Text to speak on devices. eg: My name is hanna - ///Control file cache of this message. - ///Language to use for speech generation. eg: ru - ///A dictionary containing platform-specific options. Optional depending on the platform. eg: platform specific + /// + /// eg: My name is hanna + /// + /// eg: ru + /// eg: platform specific public void CloudSay(string entityId, string message, bool? cache = null, string? language = null, object? options = null) { _haContext.CallService("tts", "cloud_say", null, new TtsCloudSayParameters { EntityId = entityId, Message = message, Cache = cache, Language = language, Options = options }); @@ -15829,30 +16020,30 @@ public void GoogleTranslateSay(TtsGoogleTranslateSayParameters data) } ///Say something using text-to-speech on a media player with google_translate. - ///Name(s) of media player entities. - ///Text to speak on devices. eg: My name is hanna - ///Control file cache of this message. - ///Language to use for speech generation. eg: ru - ///A dictionary containing platform-specific options. Optional depending on the platform. eg: platform specific + /// + /// eg: My name is hanna + /// + /// eg: ru + /// eg: platform specific public void GoogleTranslateSay(string entityId, string message, bool? cache = null, string? language = null, object? options = null) { _haContext.CallService("tts", "google_translate_say", null, new TtsGoogleTranslateSayParameters { EntityId = entityId, Message = message, Cache = cache, Language = language, Options = options }); } - ///Speak something using text-to-speech on a media player. + ///Speaks something using text-to-speech on a media player. ///The target for this service call public void Speak(ServiceTarget target, TtsSpeakParameters data) { _haContext.CallService("tts", "speak", target, data); } - ///Speak something using text-to-speech on a media player. + ///Speaks something using text-to-speech on a media player. ///The target for this service call - ///Name(s) of media player entities. - ///Text to speak on devices. eg: My name is hanna - ///Control file cache of this message. + ///Media players to play the message. + ///The text you want to convert into speech so that you can listen to it on your device. eg: My name is hanna + ///Stores this message locally so that when the text is requested again, the output can be produced more quickly. ///Language to use for speech generation. eg: ru - ///A dictionary containing platform-specific options. Optional depending on the platform. eg: platform specific + ///A dictionary containing integration-specific options. eg: platform specific public void Speak(ServiceTarget target, string mediaPlayerEntityId, string message, bool? cache = null, string? language = null, object? options = null) { _haContext.CallService("tts", "speak", target, new TtsSpeakParameters { MediaPlayerEntityId = mediaPlayerEntityId, Message = message, Cache = cache, Language = language, Options = options }); @@ -15861,61 +16052,57 @@ public void Speak(ServiceTarget target, string mediaPlayerEntityId, string messa public partial record TtsCloudSayParameters { - ///Name(s) of media player entities. [JsonPropertyName("entity_id")] public string? EntityId { get; init; } - ///Text to speak on devices. eg: My name is hanna + /// eg: My name is hanna [JsonPropertyName("message")] public string? Message { get; init; } - ///Control file cache of this message. [JsonPropertyName("cache")] public bool? Cache { get; init; } - ///Language to use for speech generation. eg: ru + /// eg: ru [JsonPropertyName("language")] public string? Language { get; init; } - ///A dictionary containing platform-specific options. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("options")] public object? Options { get; init; } } public partial record TtsGoogleTranslateSayParameters { - ///Name(s) of media player entities. [JsonPropertyName("entity_id")] public string? EntityId { get; init; } - ///Text to speak on devices. eg: My name is hanna + /// eg: My name is hanna [JsonPropertyName("message")] public string? Message { get; init; } - ///Control file cache of this message. [JsonPropertyName("cache")] public bool? Cache { get; init; } - ///Language to use for speech generation. eg: ru + /// eg: ru [JsonPropertyName("language")] public string? Language { get; init; } - ///A dictionary containing platform-specific options. Optional depending on the platform. eg: platform specific + /// eg: platform specific [JsonPropertyName("options")] public object? Options { get; init; } } public partial record TtsSpeakParameters { - ///Name(s) of media player entities. + ///Media players to play the message. [JsonPropertyName("media_player_entity_id")] public string? MediaPlayerEntityId { get; init; } - ///Text to speak on devices. eg: My name is hanna + ///The text you want to convert into speech so that you can listen to it on your device. eg: My name is hanna [JsonPropertyName("message")] public string? Message { get; init; } - ///Control file cache of this message. + ///Stores this message locally so that when the text is requested again, the output can be produced more quickly. [JsonPropertyName("cache")] public bool? Cache { get; init; } @@ -15923,7 +16110,7 @@ public partial record TtsSpeakParameters [JsonPropertyName("language")] public string? Language { get; init; } - ///A dictionary containing platform-specific options. Optional depending on the platform. eg: platform specific + ///A dictionary containing integration-specific options. eg: platform specific [JsonPropertyName("options")] public object? Options { get; init; } } @@ -15936,20 +16123,20 @@ public UnifiServices(IHaContext haContext) _haContext = haContext; } - ///Try to get wireless client to reconnect to UniFi Network + ///Tries to get wireless client to reconnect to UniFi Network. public void ReconnectClient(UnifiReconnectClientParameters data) { _haContext.CallService("unifi", "reconnect_client", null, data); } - ///Try to get wireless client to reconnect to UniFi Network - ///Try reconnect client to wireless network + ///Tries to get wireless client to reconnect to UniFi Network. + ///Try reconnect client to wireless network. public void ReconnectClient(string deviceId) { _haContext.CallService("unifi", "reconnect_client", null, new UnifiReconnectClientParameters { DeviceId = deviceId }); } - ///Clean up clients that has only been associated with the controller for a short period of time. + ///Cleans up clients that has only been associated with the controller for a short period of time. public void RemoveClients() { _haContext.CallService("unifi", "remove_clients", null); @@ -15958,7 +16145,7 @@ public void RemoveClients() public partial record UnifiReconnectClientParameters { - ///Try reconnect client to wireless network + ///Try reconnect client to wireless network. [JsonPropertyName("device_id")] public string? DeviceId { get; init; } } @@ -15978,23 +16165,23 @@ public void ClearSkipped(ServiceTarget target) _haContext.CallService("update", "clear_skipped", target); } - ///Install an update for this device or service + ///Installs an update for this device or service. ///The target for this service call public void Install(ServiceTarget target, UpdateInstallParameters data) { _haContext.CallService("update", "install", target, data); } - ///Install an update for this device or service + ///Installs an update for this device or service. ///The target for this service call - ///Version to install, if omitted, the latest version will be installed. eg: 1.0.0 - ///Backup before installing the update, if supported by the integration. + ///The version to install. If omitted, the latest version will be installed. eg: 1.0.0 + ///If supported by the integration, this creates a backup before starting the update . public void Install(ServiceTarget target, string? version = null, bool? backup = null) { _haContext.CallService("update", "install", target, new UpdateInstallParameters { Version = version, Backup = backup }); } - ///Mark currently available update as skipped. + ///Marks currently available update as skipped. ///The target for this service call public void Skip(ServiceTarget target) { @@ -16004,11 +16191,11 @@ public void Skip(ServiceTarget target) public partial record UpdateInstallParameters { - ///Version to install, if omitted, the latest version will be installed. eg: 1.0.0 + ///The version to install. If omitted, the latest version will be installed. eg: 1.0.0 [JsonPropertyName("version")] public string? Version { get; init; } - ///Backup before installing the update, if supported by the integration. + ///If supported by the integration, this creates a backup before starting the update . [JsonPropertyName("backup")] public bool? Backup { get; init; } } @@ -16030,7 +16217,7 @@ public void Calibrate(ServiceTarget target, UtilityMeterCalibrateParameters data ///Calibrates a utility meter sensor. ///The target for this service call - ///Value to which set the meter eg: 100 + ///Value to which set the meter. eg: 100 public void Calibrate(ServiceTarget target, string value) { _haContext.CallService("utility_meter", "calibrate", target, new UtilityMeterCalibrateParameters { Value = value }); @@ -16046,7 +16233,7 @@ public void Reset(ServiceTarget target) public partial record UtilityMeterCalibrateParameters { - ///Value to which set the meter eg: 100 + ///Value to which set the meter. eg: 100 [JsonPropertyName("value")] public string? Value { get; init; } } @@ -16059,80 +16246,80 @@ public VacuumServices(IHaContext haContext) _haContext = haContext; } - ///Tell the vacuum cleaner to do a spot clean-up. + ///Tells the vacuum cleaner to do a spot clean-up. ///The target for this service call public void CleanSpot(ServiceTarget target) { _haContext.CallService("vacuum", "clean_spot", target); } - ///Locate the vacuum cleaner robot. + ///Locates the vacuum cleaner robot. ///The target for this service call public void Locate(ServiceTarget target) { _haContext.CallService("vacuum", "locate", target); } - ///Pause the cleaning task. + ///Pauses the cleaning task. ///The target for this service call public void Pause(ServiceTarget target) { _haContext.CallService("vacuum", "pause", target); } - ///Tell the vacuum cleaner to return to its dock. + ///Tells the vacuum cleaner to return to its dock. ///The target for this service call public void ReturnToBase(ServiceTarget target) { _haContext.CallService("vacuum", "return_to_base", target); } - ///Send a raw command to the vacuum cleaner. + ///Sends a command to the vacuum cleaner. ///The target for this service call public void SendCommand(ServiceTarget target, VacuumSendCommandParameters data) { _haContext.CallService("vacuum", "send_command", target, data); } - ///Send a raw command to the vacuum cleaner. + ///Sends a command to the vacuum cleaner. ///The target for this service call - ///Command to execute. eg: set_dnd_timer - ///Parameters for the command. eg: { "key": "value" } + ///Command to execute. The commands are integration-specific. eg: set_dnd_timer + ///Parameters for the command. The parameters are integration-specific. eg: { "key": "value" } public void SendCommand(ServiceTarget target, string command, object? @params = null) { _haContext.CallService("vacuum", "send_command", target, new VacuumSendCommandParameters { Command = command, Params = @params }); } - ///Set the fan speed of the vacuum cleaner. + ///Sets the fan speed of the vacuum cleaner. ///The target for this service call public void SetFanSpeed(ServiceTarget target, VacuumSetFanSpeedParameters data) { _haContext.CallService("vacuum", "set_fan_speed", target, data); } - ///Set the fan speed of the vacuum cleaner. + ///Sets the fan speed of the vacuum cleaner. ///The target for this service call - ///Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium' or by percentage, between 0 and 100. eg: low + ///Fan speed. The value depends on the integration. Some integrations have speed steps, like 'medium'. Some use a percentage, between 0 and 100. eg: low public void SetFanSpeed(ServiceTarget target, string fanSpeed) { _haContext.CallService("vacuum", "set_fan_speed", target, new VacuumSetFanSpeedParameters { FanSpeed = fanSpeed }); } - ///Start or resume the cleaning task. + ///Starts or resumes the cleaning task. ///The target for this service call public void Start(ServiceTarget target) { _haContext.CallService("vacuum", "start", target); } - ///Start, pause, or resume the cleaning task. + ///Starts, pauses, or resumes the cleaning task. ///The target for this service call public void StartPause(ServiceTarget target) { _haContext.CallService("vacuum", "start_pause", target); } - ///Stop the current cleaning task. + ///Stops the current cleaning task. ///The target for this service call public void Stop(ServiceTarget target) { @@ -16144,14 +16331,14 @@ public void Toggle() _haContext.CallService("vacuum", "toggle", null); } - ///Stop the current cleaning task and return to home. + ///Stops the current cleaning task and returns to its dock. ///The target for this service call public void TurnOff(ServiceTarget target) { _haContext.CallService("vacuum", "turn_off", target); } - ///Start a new cleaning task. + ///Starts a new cleaning task. ///The target for this service call public void TurnOn(ServiceTarget target) { @@ -16161,18 +16348,18 @@ public void TurnOn(ServiceTarget target) public partial record VacuumSendCommandParameters { - ///Command to execute. eg: set_dnd_timer + ///Command to execute. The commands are integration-specific. eg: set_dnd_timer [JsonPropertyName("command")] public string? Command { get; init; } - ///Parameters for the command. eg: { "key": "value" } + ///Parameters for the command. The parameters are integration-specific. eg: { "key": "value" } [JsonPropertyName("params")] public object? Params { get; init; } } public partial record VacuumSetFanSpeedParameters { - ///Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium' or by percentage, between 0 and 100. eg: low + ///Fan speed. The value depends on the integration. Some integrations have speed steps, like 'medium'. Some use a percentage, between 0 and 100. eg: low [JsonPropertyName("fan_speed")] public string? FanSpeed { get; init; } } @@ -16185,13 +16372,13 @@ public WakeOnLanServices(IHaContext haContext) _haContext = haContext; } - ///Send a 'magic packet' to wake up a device with 'Wake-On-LAN' capabilities. + ///Sends a 'magic packet' to wake up a device with 'Wake-On-LAN' capabilities. public void SendMagicPacket(WakeOnLanSendMagicPacketParameters data) { _haContext.CallService("wake_on_lan", "send_magic_packet", null, data); } - ///Send a 'magic packet' to wake up a device with 'Wake-On-LAN' capabilities. + ///Sends a 'magic packet' to wake up a device with 'Wake-On-LAN' capabilities. ///MAC address of the device to wake up. eg: aa:bb:cc:dd:ee:ff ///Broadcast IP where to send the magic packet. eg: 192.168.255.255 ///Port where to send the magic packet. @@ -16224,14 +16411,14 @@ public WaterHeaterServices(IHaContext haContext) _haContext = haContext; } - ///Turn away mode on/off for water_heater device. + ///Turns away mode on/off. ///The target for this service call public void SetAwayMode(ServiceTarget target, WaterHeaterSetAwayModeParameters data) { _haContext.CallService("water_heater", "set_away_mode", target, data); } - ///Turn away mode on/off for water_heater device. + ///Turns away mode on/off. ///The target for this service call ///New value of away mode. public void SetAwayMode(ServiceTarget target, bool awayMode) @@ -16239,45 +16426,49 @@ public void SetAwayMode(ServiceTarget target, bool awayMode) _haContext.CallService("water_heater", "set_away_mode", target, new WaterHeaterSetAwayModeParameters { AwayMode = awayMode }); } - ///Set operation mode for water_heater device. + ///Sets the operation mode. ///The target for this service call public void SetOperationMode(ServiceTarget target, WaterHeaterSetOperationModeParameters data) { _haContext.CallService("water_heater", "set_operation_mode", target, data); } - ///Set operation mode for water_heater device. + ///Sets the operation mode. ///The target for this service call - ///New value of operation mode. eg: eco + ///New value of the operation mode. For a list of possible modes, refer to the integration documentation. eg: eco public void SetOperationMode(ServiceTarget target, string operationMode) { _haContext.CallService("water_heater", "set_operation_mode", target, new WaterHeaterSetOperationModeParameters { OperationMode = operationMode }); } - ///Set target temperature of water_heater device. + ///Sets the target temperature. ///The target for this service call public void SetTemperature(ServiceTarget target, WaterHeaterSetTemperatureParameters data) { _haContext.CallService("water_heater", "set_temperature", target, data); } - ///Set target temperature of water_heater device. + ///Sets the target temperature. ///The target for this service call - ///New target temperature for water heater. - ///New value of operation mode. eg: eco + ///New target temperature for the water heater. + ///New value of the operation mode. For a list of possible modes, refer to the integration documentation. eg: eco public void SetTemperature(ServiceTarget target, double temperature, string? operationMode = null) { _haContext.CallService("water_heater", "set_temperature", target, new WaterHeaterSetTemperatureParameters { Temperature = temperature, OperationMode = operationMode }); } - public void TurnOff() + ///Turns water heater off. + ///The target for this service call + public void TurnOff(ServiceTarget target) { - _haContext.CallService("water_heater", "turn_off", null); + _haContext.CallService("water_heater", "turn_off", target); } - public void TurnOn() + ///Turns water heater on. + ///The target for this service call + public void TurnOn(ServiceTarget target) { - _haContext.CallService("water_heater", "turn_on", null); + _haContext.CallService("water_heater", "turn_on", target); } } @@ -16290,18 +16481,18 @@ public partial record WaterHeaterSetAwayModeParameters public partial record WaterHeaterSetOperationModeParameters { - ///New value of operation mode. eg: eco + ///New value of the operation mode. For a list of possible modes, refer to the integration documentation. eg: eco [JsonPropertyName("operation_mode")] public string? OperationMode { get; init; } } public partial record WaterHeaterSetTemperatureParameters { - ///New target temperature for water heater. + ///New target temperature for the water heater. [JsonPropertyName("temperature")] public double? Temperature { get; init; } - ///New value of operation mode. eg: eco + ///New value of the operation mode. For a list of possible modes, refer to the integration documentation. eg: eco [JsonPropertyName("operation_mode")] public string? OperationMode { get; init; } } @@ -16314,27 +16505,27 @@ public WebostvServices(IHaContext haContext) _haContext = haContext; } - ///Send a button press command. + ///Sends a button press command. public void Button(WebostvButtonParameters data) { _haContext.CallService("webostv", "button", null, data); } - ///Send a button press command. + ///Sends a button press command. ///Name(s) of the webostv entities where to run the API method. - ///Name of the button to press. Known possible values are LEFT, RIGHT, DOWN, UP, HOME, MENU, BACK, ENTER, DASH, INFO, ASTERISK, CC, EXIT, MUTE, RED, GREEN, BLUE, YELLOW, VOLUMEUP, VOLUMEDOWN, CHANNELUP, CHANNELDOWN, PLAY, PAUSE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 eg: LEFT + ///Name of the button to press. Known possible values are LEFT, RIGHT, DOWN, UP, HOME, MENU, BACK, ENTER, DASH, INFO, ASTERISK, CC, EXIT, MUTE, RED, GREEN, BLUE, YELLOW, VOLUMEUP, VOLUMEDOWN, CHANNELUP, CHANNELDOWN, PLAY, PAUSE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. eg: LEFT public void Button(string entityId, string button) { _haContext.CallService("webostv", "button", null, new WebostvButtonParameters { EntityId = entityId, Button = button }); } - ///Send a command. + ///Sends a command. public void Command(WebostvCommandParameters data) { _haContext.CallService("webostv", "command", null, data); } - ///Send a command. + ///Sends a command. ///Name(s) of the webostv entities where to run the API method. ///Endpoint of the command. eg: system.launcher/open ///An optional payload to provide to the endpoint in the format of key value pair(s). eg: target: https://www.google.com @@ -16343,13 +16534,13 @@ public void Command(string entityId, string command, object? payload = null) _haContext.CallService("webostv", "command", null, new WebostvCommandParameters { EntityId = entityId, Command = command, Payload = payload }); } - ///Send the TV the command to change sound output. + ///Sends the TV the command to change sound output. public void SelectSoundOutput(WebostvSelectSoundOutputParameters data) { _haContext.CallService("webostv", "select_sound_output", null, data); } - ///Send the TV the command to change sound output. + ///Sends the TV the command to change sound output. ///Name(s) of the webostv entities to change sound output on. ///Name of the sound output to switch to. eg: external_speaker public void SelectSoundOutput(string entityId, string soundOutput) @@ -16364,7 +16555,7 @@ public partial record WebostvButtonParameters [JsonPropertyName("entity_id")] public string? EntityId { get; init; } - ///Name of the button to press. Known possible values are LEFT, RIGHT, DOWN, UP, HOME, MENU, BACK, ENTER, DASH, INFO, ASTERISK, CC, EXIT, MUTE, RED, GREEN, BLUE, YELLOW, VOLUMEUP, VOLUMEDOWN, CHANNELUP, CHANNELDOWN, PLAY, PAUSE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 eg: LEFT + ///Name of the button to press. Known possible values are LEFT, RIGHT, DOWN, UP, HOME, MENU, BACK, ENTER, DASH, INFO, ASTERISK, CC, EXIT, MUTE, RED, GREEN, BLUE, YELLOW, VOLUMEUP, VOLUMEDOWN, CHANNELUP, CHANNELDOWN, PLAY, PAUSE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. eg: LEFT [JsonPropertyName("button")] public string? Button { get; init; } } @@ -16743,67 +16934,67 @@ public ZhaServices(IHaContext haContext) _haContext = haContext; } - ///Clear a user code from a lock + ///Clears a user code from a lock. ///The target for this service call public void ClearLockUserCode(ServiceTarget target, ZhaClearLockUserCodeParameters data) { _haContext.CallService("zha", "clear_lock_user_code", target, data); } - ///Clear a user code from a lock + ///Clears a user code from a lock. ///The target for this service call - ///Code slot to clear code from eg: 1 + ///Code slot to clear code from. eg: 1 public void ClearLockUserCode(ServiceTarget target, string codeSlot) { _haContext.CallService("zha", "clear_lock_user_code", target, new ZhaClearLockUserCodeParameters { CodeSlot = codeSlot }); } - ///Disable a user code on a lock + ///Disables a user code on a lock. ///The target for this service call public void DisableLockUserCode(ServiceTarget target, ZhaDisableLockUserCodeParameters data) { _haContext.CallService("zha", "disable_lock_user_code", target, data); } - ///Disable a user code on a lock + ///Disables a user code on a lock. ///The target for this service call - ///Code slot to disable eg: 1 + ///Code slot to disable. eg: 1 public void DisableLockUserCode(ServiceTarget target, string codeSlot) { _haContext.CallService("zha", "disable_lock_user_code", target, new ZhaDisableLockUserCodeParameters { CodeSlot = codeSlot }); } - ///Enable a user code on a lock + ///Enables a user code on a lock. ///The target for this service call public void EnableLockUserCode(ServiceTarget target, ZhaEnableLockUserCodeParameters data) { _haContext.CallService("zha", "enable_lock_user_code", target, data); } - ///Enable a user code on a lock + ///Enables a user code on a lock. ///The target for this service call - ///Code slot to enable eg: 1 + ///Code slot to enable. eg: 1 public void EnableLockUserCode(ServiceTarget target, string codeSlot) { _haContext.CallService("zha", "enable_lock_user_code", target, new ZhaEnableLockUserCodeParameters { CodeSlot = codeSlot }); } - ///Issue command on the specified cluster on the specified entity. + ///Issues a command on the specified cluster on the specified entity. public void IssueZigbeeClusterCommand(ZhaIssueZigbeeClusterCommandParameters data) { _haContext.CallService("zha", "issue_zigbee_cluster_command", null, data); } - ///Issue command on the specified cluster on the specified entity. - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 - ///Endpoint id for the cluster - ///ZCL cluster to retrieve attributes for - ///type of the cluster - ///id of the command to execute - ///type of the command to execute - ///args to pass to the command eg: [arg1, arg2, argN] - ///parameters to pass to the command - ///manufacturer code eg: 252 + ///Issues a command on the specified cluster on the specified entity. + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 + ///Endpoint ID for the cluster. + ///ZCL cluster to retrieve attributes for. + ///Type of the cluster. + ///ID of the command to execute. + ///Type of the command to execute. + ///Arguments to pass to the command. eg: [arg1, arg2, argN] + ///Parameters to pass to the command. + ///Manufacturer code. eg: 252 public void IssueZigbeeClusterCommand(string ieee, long endpointId, long clusterId, long command, object commandType, object? clusterType = null, object? args = null, object? @params = null, string? manufacturer = null) { _haContext.CallService("zha", "issue_zigbee_cluster_command", null, new ZhaIssueZigbeeClusterCommandParameters { Ieee = ieee, EndpointId = endpointId, ClusterId = clusterId, ClusterType = clusterType, Command = command, CommandType = commandType, Args = args, Params = @params, Manufacturer = manufacturer }); @@ -16816,77 +17007,77 @@ public void IssueZigbeeGroupCommand(ZhaIssueZigbeeGroupCommandParameters data) } ///Issue command on the specified cluster on the specified group. - ///Hexadecimal address of the group eg: 546 - ///ZCL cluster to send command to - ///type of the cluster - ///id of the command to execute - ///args to pass to the command eg: [arg1, arg2, argN] - ///manufacturer code eg: 252 + ///Hexadecimal address of the group. eg: 546 + ///ZCL cluster to send command to. + ///Type of the cluster. + ///ID of the command to execute. + ///Arguments to pass to the command. eg: [arg1, arg2, argN] + ///Manufacturer code. eg: 252 public void IssueZigbeeGroupCommand(string @group, long clusterId, long command, object? clusterType = null, object? args = null, string? manufacturer = null) { _haContext.CallService("zha", "issue_zigbee_group_command", null, new ZhaIssueZigbeeGroupCommandParameters { Group = @group, ClusterId = clusterId, ClusterType = clusterType, Command = command, Args = args, Manufacturer = manufacturer }); } - ///Allow nodes to join the Zigbee network. + ///Allows nodes to join the Zigbee network. public void Permit(ZhaPermitParameters data) { _haContext.CallService("zha", "permit", null, data); } - ///Allow nodes to join the Zigbee network. - ///Time to permit joins, in seconds - ///IEEE address of the node permitting new joins eg: 00:0d:6f:00:05:7d:2d:34 - ///IEEE address of the joining device (must be used with install code) eg: 00:0a:bf:00:01:10:23:35 - ///Install code of the joining device (must be used with source_ieee) eg: 1234-5678-1234-5678-AABB-CCDD-AABB-CCDD-EEFF - ///value of the QR install code (different between vendors) eg: Z:000D6FFFFED4163B$I:52797BF4A5084DAA8E1712B61741CA024051 + ///Allows nodes to join the Zigbee network. + ///Time to permit joins. + ///IEEE address of the node permitting new joins. eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address of the joining device (must be used with the install code). eg: 00:0a:bf:00:01:10:23:35 + ///Install code of the joining device (must be used with the source_ieee). eg: 1234-5678-1234-5678-AABB-CCDD-AABB-CCDD-EEFF + ///Value of the QR install code (different between vendors). eg: Z:000D6FFFFED4163B$I:52797BF4A5084DAA8E1712B61741CA024051 public void Permit(long? duration = null, string? ieee = null, string? sourceIeee = null, string? installCode = null, string? qrCode = null) { _haContext.CallService("zha", "permit", null, new ZhaPermitParameters { Duration = duration, Ieee = ieee, SourceIeee = sourceIeee, InstallCode = installCode, QrCode = qrCode }); } - ///Remove a node from the Zigbee network. + ///Removes a node from the Zigbee network. public void Remove(ZhaRemoveParameters data) { _haContext.CallService("zha", "remove", null, data); } - ///Remove a node from the Zigbee network. - ///IEEE address of the node to remove eg: 00:0d:6f:00:05:7d:2d:34 + ///Removes a node from the Zigbee network. + ///IEEE address of the node to remove. eg: 00:0d:6f:00:05:7d:2d:34 public void Remove(string ieee) { _haContext.CallService("zha", "remove", null, new ZhaRemoveParameters { Ieee = ieee }); } - ///Set a user code on a lock + ///Sets a user code on a lock. ///The target for this service call public void SetLockUserCode(ServiceTarget target, ZhaSetLockUserCodeParameters data) { _haContext.CallService("zha", "set_lock_user_code", target, data); } - ///Set a user code on a lock + ///Sets a user code on a lock. ///The target for this service call - ///Code slot to set the code in eg: 1 - ///Code to set eg: 1234 + ///Code slot to set the code in. eg: 1 + ///Code to set. eg: 1234 public void SetLockUserCode(ServiceTarget target, string codeSlot, string userCode) { _haContext.CallService("zha", "set_lock_user_code", target, new ZhaSetLockUserCodeParameters { CodeSlot = codeSlot, UserCode = userCode }); } - ///Set attribute value for the specified cluster on the specified entity. + ///Sets an attribute value for the specified cluster on the specified entity. public void SetZigbeeClusterAttribute(ZhaSetZigbeeClusterAttributeParameters data) { _haContext.CallService("zha", "set_zigbee_cluster_attribute", null, data); } - ///Set attribute value for the specified cluster on the specified entity. - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 - ///Endpoint id for the cluster - ///ZCL cluster to retrieve attributes for - ///type of the cluster - ///id of the attribute to set eg: 0 - ///value to write to the attribute eg: 1 - ///manufacturer code eg: 252 + ///Sets an attribute value for the specified cluster on the specified entity. + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 + ///Endpoint ID for the cluster. + ///ZCL cluster to retrieve attributes for. + ///Type of the cluster. + ///ID of the attribute to set. eg: 0 + ///Value to write to the attribute. eg: 1 + ///Manufacturer code. eg: 252 public void SetZigbeeClusterAttribute(string ieee, long endpointId, long clusterId, long attribute, string value, object? clusterType = null, string? manufacturer = null) { _haContext.CallService("zha", "set_zigbee_cluster_attribute", null, new ZhaSetZigbeeClusterAttributeParameters { Ieee = ieee, EndpointId = endpointId, ClusterId = clusterId, ClusterType = clusterType, Attribute = attribute, Value = value, Manufacturer = manufacturer }); @@ -16899,7 +17090,7 @@ public void WarningDeviceSquawk(ZhaWarningDeviceSquawkParameters data) } ///This service uses the WD capabilities to emit a quick audible/visible pulse called a "squawk". The squawk command has no effect if the WD is currently active (warning in progress). - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 ///The Squawk Mode field is used as a 4-bit enumeration, and can have one of the values shown in Table 8-24 of the ZCL spec - Squawk Mode Field. The exact operation of each mode (how the WD “squawks”) is implementation specific. ///The strobe field is used as a Boolean, and determines if the visual indication is also required in addition to the audible squawk, as shown in Table 8-25 of the ZCL spec - Strobe Bit. ///The squawk level field is used as a 2-bit enumeration, and determines the intensity of audible squawk sound as shown in Table 8-26 of the ZCL spec - Squawk Level Field Values. @@ -16908,19 +17099,19 @@ public void WarningDeviceSquawk(string ieee, long? mode = null, long? strobe = n _haContext.CallService("zha", "warning_device_squawk", null, new ZhaWarningDeviceSquawkParameters { Ieee = ieee, Mode = mode, Strobe = strobe, Level = level }); } - ///This service starts the WD operation. The WD alerts the surrounding area by audible (siren) and visual (strobe) signals. + ///This service starts the operation of the warning device. The warning device alerts the surrounding area by audible (siren) and visual (strobe) signals. public void WarningDeviceWarn(ZhaWarningDeviceWarnParameters data) { _haContext.CallService("zha", "warning_device_warn", null, data); } - ///This service starts the WD operation. The WD alerts the surrounding area by audible (siren) and visual (strobe) signals. - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 - ///The Warning Mode field is used as an 4-bit enumeration, can have one of the values 0-6 defined below in table 8-20 of the ZCL spec. The exact behavior of the WD device in each mode is according to the relevant security standards. - ///The Strobe field is used as a 2-bit enumeration, and determines if the visual indication is required in addition to the audible siren, as indicated in Table 8-21 of the ZCL spec. "0" means no strobe, "1" means strobe. If the strobe field is “1” and the Warning Mode is “0” (“Stop”) then only the strobe is activated. + ///This service starts the operation of the warning device. The warning device alerts the surrounding area by audible (siren) and visual (strobe) signals. + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 + ///The Warning Mode field is used as a 4-bit enumeration, can have one of the values 0-6 defined below in table 8-20 of the ZCL spec. The exact behavior of the warning device in each mode is according to the relevant security standards. + ///The Strobe field is used as a 2-bit enumeration, and determines if the visual indication is required in addition to the audible siren, as indicated in Table 8-21 of the ZCL spec. "0" means no strobe, "1" means strobe. If the strobe field is “1” and the Warning Mode is “0” (“Stop”), then only the strobe is activated. ///The Siren Level field is used as a 2-bit enumeration, and indicates the intensity of audible squawk sound as shown in Table 8-22 of the ZCL spec. - ///Requested duration of warning, in seconds (16 bit). If both Strobe and Warning Mode are "0" this field SHALL be ignored. - ///Indicates the length of the flash cycle. This provides a means of varying the flash duration for different alarm types (e.g., fire, police, burglar). Valid range is 0-100 in increments of 10. All other values SHALL be rounded to the nearest valid value. Strobe SHALL calculate duty cycle over a duration of one second. The ON state SHALL precede the OFF state. For example, if Strobe Duty Cycle Field specifies “40,” then the strobe SHALL flash ON for 4/10ths of a second and then turn OFF for 6/10ths of a second. + ///Requested duration of warning, in seconds (16 bit). If both Strobe and Warning Mode are "0" this field is ignored. + ///Indicates the length of the flash cycle. This allows you to vary the flash duration for different alarm types (e.g., fire, police, burglar). The valid range is 0-100 in increments of 10. All other values must be rounded to the nearest valid value. Strobe calculates a duty cycle over a duration of one second. The ON state must precede the OFF state. For example, if the Strobe Duty Cycle field specifies “40,”, then the strobe flashes ON for 4/10ths of a second and then turns OFF for 6/10ths of a second. ///Indicates the intensity of the strobe as shown in Table 8-23 of the ZCL spec. This attribute is designed to vary the output of the strobe (i.e., brightness) and not its frequency, which is detailed in section 8.4.2.3.1.6 of the ZCL spec. public void WarningDeviceWarn(string ieee, long? mode = null, long? strobe = null, long? level = null, long? duration = null, long? dutyCycle = null, long? intensity = null) { @@ -16930,166 +17121,166 @@ public void WarningDeviceWarn(string ieee, long? mode = null, long? strobe = nul public partial record ZhaClearLockUserCodeParameters { - ///Code slot to clear code from eg: 1 + ///Code slot to clear code from. eg: 1 [JsonPropertyName("code_slot")] public string? CodeSlot { get; init; } } public partial record ZhaDisableLockUserCodeParameters { - ///Code slot to disable eg: 1 + ///Code slot to disable. eg: 1 [JsonPropertyName("code_slot")] public string? CodeSlot { get; init; } } public partial record ZhaEnableLockUserCodeParameters { - ///Code slot to enable eg: 1 + ///Code slot to enable. eg: 1 [JsonPropertyName("code_slot")] public string? CodeSlot { get; init; } } public partial record ZhaIssueZigbeeClusterCommandParameters { - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 [JsonPropertyName("ieee")] public string? Ieee { get; init; } - ///Endpoint id for the cluster + ///Endpoint ID for the cluster. [JsonPropertyName("endpoint_id")] public long? EndpointId { get; init; } - ///ZCL cluster to retrieve attributes for + ///ZCL cluster to retrieve attributes for. [JsonPropertyName("cluster_id")] public long? ClusterId { get; init; } - ///type of the cluster + ///Type of the cluster. [JsonPropertyName("cluster_type")] public object? ClusterType { get; init; } - ///id of the command to execute + ///ID of the command to execute. [JsonPropertyName("command")] public long? Command { get; init; } - ///type of the command to execute + ///Type of the command to execute. [JsonPropertyName("command_type")] public object? CommandType { get; init; } - ///args to pass to the command eg: [arg1, arg2, argN] + ///Arguments to pass to the command. eg: [arg1, arg2, argN] [JsonPropertyName("args")] public object? Args { get; init; } - ///parameters to pass to the command + ///Parameters to pass to the command. [JsonPropertyName("params")] public object? Params { get; init; } - ///manufacturer code eg: 252 + ///Manufacturer code. eg: 252 [JsonPropertyName("manufacturer")] public string? Manufacturer { get; init; } } public partial record ZhaIssueZigbeeGroupCommandParameters { - ///Hexadecimal address of the group eg: 546 + ///Hexadecimal address of the group. eg: 546 [JsonPropertyName("group")] public string? Group { get; init; } - ///ZCL cluster to send command to + ///ZCL cluster to send command to. [JsonPropertyName("cluster_id")] public long? ClusterId { get; init; } - ///type of the cluster + ///Type of the cluster. [JsonPropertyName("cluster_type")] public object? ClusterType { get; init; } - ///id of the command to execute + ///ID of the command to execute. [JsonPropertyName("command")] public long? Command { get; init; } - ///args to pass to the command eg: [arg1, arg2, argN] + ///Arguments to pass to the command. eg: [arg1, arg2, argN] [JsonPropertyName("args")] public object? Args { get; init; } - ///manufacturer code eg: 252 + ///Manufacturer code. eg: 252 [JsonPropertyName("manufacturer")] public string? Manufacturer { get; init; } } public partial record ZhaPermitParameters { - ///Time to permit joins, in seconds + ///Time to permit joins. [JsonPropertyName("duration")] public long? Duration { get; init; } - ///IEEE address of the node permitting new joins eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address of the node permitting new joins. eg: 00:0d:6f:00:05:7d:2d:34 [JsonPropertyName("ieee")] public string? Ieee { get; init; } - ///IEEE address of the joining device (must be used with install code) eg: 00:0a:bf:00:01:10:23:35 + ///IEEE address of the joining device (must be used with the install code). eg: 00:0a:bf:00:01:10:23:35 [JsonPropertyName("source_ieee")] public string? SourceIeee { get; init; } - ///Install code of the joining device (must be used with source_ieee) eg: 1234-5678-1234-5678-AABB-CCDD-AABB-CCDD-EEFF + ///Install code of the joining device (must be used with the source_ieee). eg: 1234-5678-1234-5678-AABB-CCDD-AABB-CCDD-EEFF [JsonPropertyName("install_code")] public string? InstallCode { get; init; } - ///value of the QR install code (different between vendors) eg: Z:000D6FFFFED4163B$I:52797BF4A5084DAA8E1712B61741CA024051 + ///Value of the QR install code (different between vendors). eg: Z:000D6FFFFED4163B$I:52797BF4A5084DAA8E1712B61741CA024051 [JsonPropertyName("qr_code")] public string? QrCode { get; init; } } public partial record ZhaRemoveParameters { - ///IEEE address of the node to remove eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address of the node to remove. eg: 00:0d:6f:00:05:7d:2d:34 [JsonPropertyName("ieee")] public string? Ieee { get; init; } } public partial record ZhaSetLockUserCodeParameters { - ///Code slot to set the code in eg: 1 + ///Code slot to set the code in. eg: 1 [JsonPropertyName("code_slot")] public string? CodeSlot { get; init; } - ///Code to set eg: 1234 + ///Code to set. eg: 1234 [JsonPropertyName("user_code")] public string? UserCode { get; init; } } public partial record ZhaSetZigbeeClusterAttributeParameters { - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 [JsonPropertyName("ieee")] public string? Ieee { get; init; } - ///Endpoint id for the cluster + ///Endpoint ID for the cluster. [JsonPropertyName("endpoint_id")] public long? EndpointId { get; init; } - ///ZCL cluster to retrieve attributes for + ///ZCL cluster to retrieve attributes for. [JsonPropertyName("cluster_id")] public long? ClusterId { get; init; } - ///type of the cluster + ///Type of the cluster. [JsonPropertyName("cluster_type")] public object? ClusterType { get; init; } - ///id of the attribute to set eg: 0 + ///ID of the attribute to set. eg: 0 [JsonPropertyName("attribute")] public long? Attribute { get; init; } - ///value to write to the attribute eg: 1 + ///Value to write to the attribute. eg: 1 [JsonPropertyName("value")] public string? Value { get; init; } - ///manufacturer code eg: 252 + ///Manufacturer code. eg: 252 [JsonPropertyName("manufacturer")] public string? Manufacturer { get; init; } } public partial record ZhaWarningDeviceSquawkParameters { - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 [JsonPropertyName("ieee")] public string? Ieee { get; init; } @@ -17108,15 +17299,15 @@ public partial record ZhaWarningDeviceSquawkParameters public partial record ZhaWarningDeviceWarnParameters { - ///IEEE address for the device eg: 00:0d:6f:00:05:7d:2d:34 + ///IEEE address for the device. eg: 00:0d:6f:00:05:7d:2d:34 [JsonPropertyName("ieee")] public string? Ieee { get; init; } - ///The Warning Mode field is used as an 4-bit enumeration, can have one of the values 0-6 defined below in table 8-20 of the ZCL spec. The exact behavior of the WD device in each mode is according to the relevant security standards. + ///The Warning Mode field is used as a 4-bit enumeration, can have one of the values 0-6 defined below in table 8-20 of the ZCL spec. The exact behavior of the warning device in each mode is according to the relevant security standards. [JsonPropertyName("mode")] public long? Mode { get; init; } - ///The Strobe field is used as a 2-bit enumeration, and determines if the visual indication is required in addition to the audible siren, as indicated in Table 8-21 of the ZCL spec. "0" means no strobe, "1" means strobe. If the strobe field is “1” and the Warning Mode is “0” (“Stop”) then only the strobe is activated. + ///The Strobe field is used as a 2-bit enumeration, and determines if the visual indication is required in addition to the audible siren, as indicated in Table 8-21 of the ZCL spec. "0" means no strobe, "1" means strobe. If the strobe field is “1” and the Warning Mode is “0” (“Stop”), then only the strobe is activated. [JsonPropertyName("strobe")] public long? Strobe { get; init; } @@ -17124,11 +17315,11 @@ public partial record ZhaWarningDeviceWarnParameters [JsonPropertyName("level")] public long? Level { get; init; } - ///Requested duration of warning, in seconds (16 bit). If both Strobe and Warning Mode are "0" this field SHALL be ignored. + ///Requested duration of warning, in seconds (16 bit). If both Strobe and Warning Mode are "0" this field is ignored. [JsonPropertyName("duration")] public long? Duration { get; init; } - ///Indicates the length of the flash cycle. This provides a means of varying the flash duration for different alarm types (e.g., fire, police, burglar). Valid range is 0-100 in increments of 10. All other values SHALL be rounded to the nearest valid value. Strobe SHALL calculate duty cycle over a duration of one second. The ON state SHALL precede the OFF state. For example, if Strobe Duty Cycle Field specifies “40,” then the strobe SHALL flash ON for 4/10ths of a second and then turn OFF for 6/10ths of a second. + ///Indicates the length of the flash cycle. This allows you to vary the flash duration for different alarm types (e.g., fire, police, burglar). The valid range is 0-100 in increments of 10. All other values must be rounded to the nearest valid value. Strobe calculates a duty cycle over a duration of one second. The ON state must precede the OFF state. For example, if the Strobe Duty Cycle field specifies “40,”, then the strobe flashes ON for 4/10ths of a second and then turns OFF for 6/10ths of a second. [JsonPropertyName("duty_cycle")] public long? DutyCycle { get; init; } @@ -17145,7 +17336,7 @@ public ZoneServices(IHaContext haContext) _haContext = haContext; } - ///Reload the YAML-based zone configuration. + ///Reloads zones from the YAML-configuration. public void Reload() { _haContext.CallService("zone", "reload", null); @@ -17154,197 +17345,197 @@ public void Reload() public static class AlarmControlPanelEntityExtensionMethods { - ///Send the alarm the command for arm away. + ///Sets the alarm to: _armed, no one home_. public static void AlarmArmAway(this AlarmControlPanelEntity target, AlarmControlPanelAlarmArmAwayParameters data) { target.CallService("alarm_arm_away", data); } - ///Send the alarm the command for arm away. + ///Sets the alarm to: _armed, no one home_. public static void AlarmArmAway(this IEnumerable target, AlarmControlPanelAlarmArmAwayParameters data) { target.CallService("alarm_arm_away", data); } - ///Send the alarm the command for arm away. + ///Sets the alarm to: _armed, no one home_. ///The AlarmControlPanelEntity to call this service for - ///An optional code to arm away the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmAway(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_arm_away", new AlarmControlPanelAlarmArmAwayParameters { Code = code }); } - ///Send the alarm the command for arm away. + ///Sets the alarm to: _armed, no one home_. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to arm away the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmAway(this IEnumerable target, string? code = null) { target.CallService("alarm_arm_away", new AlarmControlPanelAlarmArmAwayParameters { Code = code }); } - ///Send arm custom bypass command. + ///Arms the alarm while allowing to bypass a custom area. public static void AlarmArmCustomBypass(this AlarmControlPanelEntity target, AlarmControlPanelAlarmArmCustomBypassParameters data) { target.CallService("alarm_arm_custom_bypass", data); } - ///Send arm custom bypass command. + ///Arms the alarm while allowing to bypass a custom area. public static void AlarmArmCustomBypass(this IEnumerable target, AlarmControlPanelAlarmArmCustomBypassParameters data) { target.CallService("alarm_arm_custom_bypass", data); } - ///Send arm custom bypass command. + ///Arms the alarm while allowing to bypass a custom area. ///The AlarmControlPanelEntity to call this service for - ///An optional code to arm custom bypass the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmCustomBypass(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_arm_custom_bypass", new AlarmControlPanelAlarmArmCustomBypassParameters { Code = code }); } - ///Send arm custom bypass command. + ///Arms the alarm while allowing to bypass a custom area. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to arm custom bypass the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmCustomBypass(this IEnumerable target, string? code = null) { target.CallService("alarm_arm_custom_bypass", new AlarmControlPanelAlarmArmCustomBypassParameters { Code = code }); } - ///Send the alarm the command for arm home. + ///Sets the alarm to: _armed, but someone is home_. public static void AlarmArmHome(this AlarmControlPanelEntity target, AlarmControlPanelAlarmArmHomeParameters data) { target.CallService("alarm_arm_home", data); } - ///Send the alarm the command for arm home. + ///Sets the alarm to: _armed, but someone is home_. public static void AlarmArmHome(this IEnumerable target, AlarmControlPanelAlarmArmHomeParameters data) { target.CallService("alarm_arm_home", data); } - ///Send the alarm the command for arm home. + ///Sets the alarm to: _armed, but someone is home_. ///The AlarmControlPanelEntity to call this service for - ///An optional code to arm home the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmHome(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_arm_home", new AlarmControlPanelAlarmArmHomeParameters { Code = code }); } - ///Send the alarm the command for arm home. + ///Sets the alarm to: _armed, but someone is home_. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to arm home the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmHome(this IEnumerable target, string? code = null) { target.CallService("alarm_arm_home", new AlarmControlPanelAlarmArmHomeParameters { Code = code }); } - ///Send the alarm the command for arm night. + ///Sets the alarm to: _armed for the night_. public static void AlarmArmNight(this AlarmControlPanelEntity target, AlarmControlPanelAlarmArmNightParameters data) { target.CallService("alarm_arm_night", data); } - ///Send the alarm the command for arm night. + ///Sets the alarm to: _armed for the night_. public static void AlarmArmNight(this IEnumerable target, AlarmControlPanelAlarmArmNightParameters data) { target.CallService("alarm_arm_night", data); } - ///Send the alarm the command for arm night. + ///Sets the alarm to: _armed for the night_. ///The AlarmControlPanelEntity to call this service for - ///An optional code to arm night the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmNight(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_arm_night", new AlarmControlPanelAlarmArmNightParameters { Code = code }); } - ///Send the alarm the command for arm night. + ///Sets the alarm to: _armed for the night_. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to arm night the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmNight(this IEnumerable target, string? code = null) { target.CallService("alarm_arm_night", new AlarmControlPanelAlarmArmNightParameters { Code = code }); } - ///Send the alarm the command for arm vacation. + ///Sets the alarm to: _armed for vacation_. public static void AlarmArmVacation(this AlarmControlPanelEntity target, AlarmControlPanelAlarmArmVacationParameters data) { target.CallService("alarm_arm_vacation", data); } - ///Send the alarm the command for arm vacation. + ///Sets the alarm to: _armed for vacation_. public static void AlarmArmVacation(this IEnumerable target, AlarmControlPanelAlarmArmVacationParameters data) { target.CallService("alarm_arm_vacation", data); } - ///Send the alarm the command for arm vacation. + ///Sets the alarm to: _armed for vacation_. ///The AlarmControlPanelEntity to call this service for - ///An optional code to arm vacation the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmVacation(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_arm_vacation", new AlarmControlPanelAlarmArmVacationParameters { Code = code }); } - ///Send the alarm the command for arm vacation. + ///Sets the alarm to: _armed for vacation_. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to arm vacation the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmArmVacation(this IEnumerable target, string? code = null) { target.CallService("alarm_arm_vacation", new AlarmControlPanelAlarmArmVacationParameters { Code = code }); } - ///Send the alarm the command for disarm. + ///Disarms the alarm. public static void AlarmDisarm(this AlarmControlPanelEntity target, AlarmControlPanelAlarmDisarmParameters data) { target.CallService("alarm_disarm", data); } - ///Send the alarm the command for disarm. + ///Disarms the alarm. public static void AlarmDisarm(this IEnumerable target, AlarmControlPanelAlarmDisarmParameters data) { target.CallService("alarm_disarm", data); } - ///Send the alarm the command for disarm. + ///Disarms the alarm. ///The AlarmControlPanelEntity to call this service for - ///An optional code to disarm the alarm control panel with. eg: 1234 + ///Code to disarm the alarm. eg: 1234 public static void AlarmDisarm(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_disarm", new AlarmControlPanelAlarmDisarmParameters { Code = code }); } - ///Send the alarm the command for disarm. + ///Disarms the alarm. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to disarm the alarm control panel with. eg: 1234 + ///Code to disarm the alarm. eg: 1234 public static void AlarmDisarm(this IEnumerable target, string? code = null) { target.CallService("alarm_disarm", new AlarmControlPanelAlarmDisarmParameters { Code = code }); } - ///Send the alarm the command for trigger. + ///Enables an external alarm trigger. public static void AlarmTrigger(this AlarmControlPanelEntity target, AlarmControlPanelAlarmTriggerParameters data) { target.CallService("alarm_trigger", data); } - ///Send the alarm the command for trigger. + ///Enables an external alarm trigger. public static void AlarmTrigger(this IEnumerable target, AlarmControlPanelAlarmTriggerParameters data) { target.CallService("alarm_trigger", data); } - ///Send the alarm the command for trigger. + ///Enables an external alarm trigger. ///The AlarmControlPanelEntity to call this service for - ///An optional code to trigger the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmTrigger(this AlarmControlPanelEntity target, string? code = null) { target.CallService("alarm_trigger", new AlarmControlPanelAlarmTriggerParameters { Code = code }); } - ///Send the alarm the command for trigger. + ///Enables an external alarm trigger. ///The IEnumerable<AlarmControlPanelEntity> to call this service for - ///An optional code to trigger the alarm control panel with. eg: 1234 + ///Code to arm the alarm. eg: 1234 public static void AlarmTrigger(this IEnumerable target, string? code = null) { target.CallService("alarm_trigger", new AlarmControlPanelAlarmTriggerParameters { Code = code }); @@ -17353,82 +17544,82 @@ public static void AlarmTrigger(this IEnumerable target public static class AutomationEntityExtensionMethods { - ///Toggle (enable / disable) an automation. - public static void Toggle(this AutomationEntity target) + ///Toggles (enable / disable) an automation. + public static void Toggle(this IAutomationEntityCore target) { target.CallService("toggle"); } - ///Toggle (enable / disable) an automation. - public static void Toggle(this IEnumerable target) + ///Toggles (enable / disable) an automation. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Trigger the actions of an automation. - public static void Trigger(this AutomationEntity target, AutomationTriggerParameters data) + ///Triggers the actions of an automation. + public static void Trigger(this IAutomationEntityCore target, AutomationTriggerParameters data) { target.CallService("trigger", data); } - ///Trigger the actions of an automation. - public static void Trigger(this IEnumerable target, AutomationTriggerParameters data) + ///Triggers the actions of an automation. + public static void Trigger(this IEnumerable target, AutomationTriggerParameters data) { target.CallService("trigger", data); } - ///Trigger the actions of an automation. - ///The AutomationEntity to call this service for - ///Whether or not the conditions will be skipped. - public static void Trigger(this AutomationEntity target, bool? skipCondition = null) + ///Triggers the actions of an automation. + ///The IAutomationEntityCore to call this service for + ///Defines whether or not the conditions will be skipped. + public static void Trigger(this IAutomationEntityCore target, bool? skipCondition = null) { target.CallService("trigger", new AutomationTriggerParameters { SkipCondition = skipCondition }); } - ///Trigger the actions of an automation. - ///The IEnumerable<AutomationEntity> to call this service for - ///Whether or not the conditions will be skipped. - public static void Trigger(this IEnumerable target, bool? skipCondition = null) + ///Triggers the actions of an automation. + ///The IEnumerable<IAutomationEntityCore> to call this service for + ///Defines whether or not the conditions will be skipped. + public static void Trigger(this IEnumerable target, bool? skipCondition = null) { target.CallService("trigger", new AutomationTriggerParameters { SkipCondition = skipCondition }); } - ///Disable an automation. - public static void TurnOff(this AutomationEntity target, AutomationTurnOffParameters data) + ///Disables an automation. + public static void TurnOff(this IAutomationEntityCore target, AutomationTurnOffParameters data) { target.CallService("turn_off", data); } - ///Disable an automation. - public static void TurnOff(this IEnumerable target, AutomationTurnOffParameters data) + ///Disables an automation. + public static void TurnOff(this IEnumerable target, AutomationTurnOffParameters data) { target.CallService("turn_off", data); } - ///Disable an automation. - ///The AutomationEntity to call this service for - ///Stop currently running actions. - public static void TurnOff(this AutomationEntity target, bool? stopActions = null) + ///Disables an automation. + ///The IAutomationEntityCore to call this service for + ///Stops currently running actions. + public static void TurnOff(this IAutomationEntityCore target, bool? stopActions = null) { target.CallService("turn_off", new AutomationTurnOffParameters { StopActions = stopActions }); } - ///Disable an automation. - ///The IEnumerable<AutomationEntity> to call this service for - ///Stop currently running actions. - public static void TurnOff(this IEnumerable target, bool? stopActions = null) + ///Disables an automation. + ///The IEnumerable<IAutomationEntityCore> to call this service for + ///Stops currently running actions. + public static void TurnOff(this IEnumerable target, bool? stopActions = null) { target.CallService("turn_off", new AutomationTurnOffParameters { StopActions = stopActions }); } - ///Enable an automation. - public static void TurnOn(this AutomationEntity target) + ///Enables an automation. + public static void TurnOn(this IAutomationEntityCore target) { target.CallService("turn_on"); } - ///Enable an automation. - public static void TurnOn(this IEnumerable target) + ///Enables an automation. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } @@ -17437,13 +17628,13 @@ public static void TurnOn(this IEnumerable target) public static class ButtonEntityExtensionMethods { ///Press the button entity. - public static void Press(this ButtonEntity target) + public static void Press(this IButtonEntityCore target) { target.CallService("press"); } ///Press the button entity. - public static void Press(this IEnumerable target) + public static void Press(this IEnumerable target) { target.CallService("press"); } @@ -17451,185 +17642,217 @@ public static void Press(this IEnumerable target) public static class CalendarEntityExtensionMethods { - ///Add a new calendar event. - public static void CreateEvent(this CalendarEntity target, CalendarCreateEventParameters data) + ///Adds a new calendar event. + public static void CreateEvent(this ICalendarEntityCore target, CalendarCreateEventParameters data) { target.CallService("create_event", data); } - ///Add a new calendar event. - public static void CreateEvent(this IEnumerable target, CalendarCreateEventParameters data) + ///Adds a new calendar event. + public static void CreateEvent(this IEnumerable target, CalendarCreateEventParameters data) { target.CallService("create_event", data); } - ///Add a new calendar event. - ///The CalendarEntity to call this service for - ///Defines the short summary or subject for the event eg: Department Party - ///A more complete description of the event than that provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. + ///Adds a new calendar event. + ///The ICalendarEntityCore to call this service for + ///Defines the short summary or subject for the event. eg: Department Party + ///A more complete description of the event than the one provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. ///The date and time the event should start. eg: 2022-03-22 20:00:00 ///The date and time the event should end. eg: 2022-03-22 22:00:00 ///The date the all-day event should start. eg: 2022-03-22 ///The date the all-day event should end (exclusive). eg: 2022-03-23 ///Days or weeks that you want to create the event in. eg: {"days": 2} or {"weeks": 2} ///The location of the event. eg: Conference Room - F123, Bldg. 002 - public static void CreateEvent(this CalendarEntity target, string summary, string? description = null, object? startDateTime = null, object? endDateTime = null, object? startDate = null, object? endDate = null, object? @in = null, string? location = null) + public static void CreateEvent(this ICalendarEntityCore target, string summary, string? description = null, object? startDateTime = null, object? endDateTime = null, object? startDate = null, object? endDate = null, object? @in = null, string? location = null) { target.CallService("create_event", new CalendarCreateEventParameters { Summary = summary, Description = description, StartDateTime = startDateTime, EndDateTime = endDateTime, StartDate = startDate, EndDate = endDate, In = @in, Location = location }); } - ///Add a new calendar event. - ///The IEnumerable<CalendarEntity> to call this service for - ///Defines the short summary or subject for the event eg: Department Party - ///A more complete description of the event than that provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. + ///Adds a new calendar event. + ///The IEnumerable<ICalendarEntityCore> to call this service for + ///Defines the short summary or subject for the event. eg: Department Party + ///A more complete description of the event than the one provided by the summary. eg: Meeting to provide technical review for 'Phoenix' design. ///The date and time the event should start. eg: 2022-03-22 20:00:00 ///The date and time the event should end. eg: 2022-03-22 22:00:00 ///The date the all-day event should start. eg: 2022-03-22 ///The date the all-day event should end (exclusive). eg: 2022-03-23 ///Days or weeks that you want to create the event in. eg: {"days": 2} or {"weeks": 2} ///The location of the event. eg: Conference Room - F123, Bldg. 002 - public static void CreateEvent(this IEnumerable target, string summary, string? description = null, object? startDateTime = null, object? endDateTime = null, object? startDate = null, object? endDate = null, object? @in = null, string? location = null) + public static void CreateEvent(this IEnumerable target, string summary, string? description = null, object? startDateTime = null, object? endDateTime = null, object? startDate = null, object? endDate = null, object? @in = null, string? location = null) { target.CallService("create_event", new CalendarCreateEventParameters { Summary = summary, Description = description, StartDateTime = startDateTime, EndDateTime = endDateTime, StartDate = startDate, EndDate = endDate, In = @in, Location = location }); } + + ///Lists events on a calendar within a time range. + public static void ListEvents(this ICalendarEntityCore target, CalendarListEventsParameters data) + { + target.CallService("list_events", data); + } + + ///Lists events on a calendar within a time range. + public static void ListEvents(this IEnumerable target, CalendarListEventsParameters data) + { + target.CallService("list_events", data); + } + + ///Lists events on a calendar within a time range. + ///The ICalendarEntityCore to call this service for + ///Returns active events after this time (exclusive). When not set, defaults to now. eg: 2022-03-22 20:00:00 + ///Returns active events before this time (exclusive). Cannot be used with 'duration'. eg: 2022-03-22 22:00:00 + ///Returns active events from start_date_time until the specified duration. + public static void ListEvents(this ICalendarEntityCore target, object? startDateTime = null, object? endDateTime = null, object? duration = null) + { + target.CallService("list_events", new CalendarListEventsParameters { StartDateTime = startDateTime, EndDateTime = endDateTime, Duration = duration }); + } + + ///Lists events on a calendar within a time range. + ///The IEnumerable<ICalendarEntityCore> to call this service for + ///Returns active events after this time (exclusive). When not set, defaults to now. eg: 2022-03-22 20:00:00 + ///Returns active events before this time (exclusive). Cannot be used with 'duration'. eg: 2022-03-22 22:00:00 + ///Returns active events from start_date_time until the specified duration. + public static void ListEvents(this IEnumerable target, object? startDateTime = null, object? endDateTime = null, object? duration = null) + { + target.CallService("list_events", new CalendarListEventsParameters { StartDateTime = startDateTime, EndDateTime = endDateTime, Duration = duration }); + } } public static class CameraEntityExtensionMethods { - ///Disable the motion detection in a camera. - public static void DisableMotionDetection(this CameraEntity target) + ///Disables the motion detection. + public static void DisableMotionDetection(this ICameraEntityCore target) { target.CallService("disable_motion_detection"); } - ///Disable the motion detection in a camera. - public static void DisableMotionDetection(this IEnumerable target) + ///Disables the motion detection. + public static void DisableMotionDetection(this IEnumerable target) { target.CallService("disable_motion_detection"); } - ///Enable the motion detection in a camera. - public static void EnableMotionDetection(this CameraEntity target) + ///Enables the motion detection. + public static void EnableMotionDetection(this ICameraEntityCore target) { target.CallService("enable_motion_detection"); } - ///Enable the motion detection in a camera. - public static void EnableMotionDetection(this IEnumerable target) + ///Enables the motion detection. + public static void EnableMotionDetection(this IEnumerable target) { target.CallService("enable_motion_detection"); } - ///Play camera stream on supported media player. - public static void PlayStream(this CameraEntity target, CameraPlayStreamParameters data) + ///Plays the camera stream on a supported media player. + public static void PlayStream(this ICameraEntityCore target, CameraPlayStreamParameters data) { target.CallService("play_stream", data); } - ///Play camera stream on supported media player. - public static void PlayStream(this IEnumerable target, CameraPlayStreamParameters data) + ///Plays the camera stream on a supported media player. + public static void PlayStream(this IEnumerable target, CameraPlayStreamParameters data) { target.CallService("play_stream", data); } - ///Play camera stream on supported media player. - ///The CameraEntity to call this service for - ///Name(s) of media player to stream to. - ///Stream format supported by media player. - public static void PlayStream(this CameraEntity target, string mediaPlayer, object? format = null) + ///Plays the camera stream on a supported media player. + ///The ICameraEntityCore to call this service for + ///Media players to stream to. + ///Stream format supported by the media player. + public static void PlayStream(this ICameraEntityCore target, string mediaPlayer, object? format = null) { target.CallService("play_stream", new CameraPlayStreamParameters { MediaPlayer = mediaPlayer, Format = format }); } - ///Play camera stream on supported media player. - ///The IEnumerable<CameraEntity> to call this service for - ///Name(s) of media player to stream to. - ///Stream format supported by media player. - public static void PlayStream(this IEnumerable target, string mediaPlayer, object? format = null) + ///Plays the camera stream on a supported media player. + ///The IEnumerable<ICameraEntityCore> to call this service for + ///Media players to stream to. + ///Stream format supported by the media player. + public static void PlayStream(this IEnumerable target, string mediaPlayer, object? format = null) { target.CallService("play_stream", new CameraPlayStreamParameters { MediaPlayer = mediaPlayer, Format = format }); } - ///Record live camera feed. - public static void Record(this CameraEntity target, CameraRecordParameters data) + ///Creates a recording of a live camera feed. + public static void Record(this ICameraEntityCore target, CameraRecordParameters data) { target.CallService("record", data); } - ///Record live camera feed. - public static void Record(this IEnumerable target, CameraRecordParameters data) + ///Creates a recording of a live camera feed. + public static void Record(this IEnumerable target, CameraRecordParameters data) { target.CallService("record", data); } - ///Record live camera feed. - ///The CameraEntity to call this service for - ///Template of a Filename. Variable is entity_id. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 - ///Target recording length. - ///Target lookback period to include in addition to duration. Only available if there is currently an active HLS stream. - public static void Record(this CameraEntity target, string filename, long? duration = null, long? lookback = null) + ///Creates a recording of a live camera feed. + ///The ICameraEntityCore to call this service for + ///Template of a filename. Variable available is `entity_id`. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 + ///Planned duration of the recording. The actual duration may vary. + ///Planned lookback period to include in the recording (in addition to the duration). Only available if there is currently an active HLS stream. The actual length of the lookback period may vary. + public static void Record(this ICameraEntityCore target, string filename, long? duration = null, long? lookback = null) { target.CallService("record", new CameraRecordParameters { Filename = filename, Duration = duration, Lookback = lookback }); } - ///Record live camera feed. - ///The IEnumerable<CameraEntity> to call this service for - ///Template of a Filename. Variable is entity_id. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 - ///Target recording length. - ///Target lookback period to include in addition to duration. Only available if there is currently an active HLS stream. - public static void Record(this IEnumerable target, string filename, long? duration = null, long? lookback = null) + ///Creates a recording of a live camera feed. + ///The IEnumerable<ICameraEntityCore> to call this service for + ///Template of a filename. Variable available is `entity_id`. Must be mp4. eg: /tmp/snapshot_{{ entity_id.name }}.mp4 + ///Planned duration of the recording. The actual duration may vary. + ///Planned lookback period to include in the recording (in addition to the duration). Only available if there is currently an active HLS stream. The actual length of the lookback period may vary. + public static void Record(this IEnumerable target, string filename, long? duration = null, long? lookback = null) { target.CallService("record", new CameraRecordParameters { Filename = filename, Duration = duration, Lookback = lookback }); } - ///Take a snapshot from a camera. - public static void Snapshot(this CameraEntity target, CameraSnapshotParameters data) + ///Takes a snapshot from a camera. + public static void Snapshot(this ICameraEntityCore target, CameraSnapshotParameters data) { target.CallService("snapshot", data); } - ///Take a snapshot from a camera. - public static void Snapshot(this IEnumerable target, CameraSnapshotParameters data) + ///Takes a snapshot from a camera. + public static void Snapshot(this IEnumerable target, CameraSnapshotParameters data) { target.CallService("snapshot", data); } - ///Take a snapshot from a camera. - ///The CameraEntity to call this service for - ///Template of a Filename. Variable is entity_id. eg: /tmp/snapshot_{{ entity_id.name }}.jpg - public static void Snapshot(this CameraEntity target, string filename) + ///Takes a snapshot from a camera. + ///The ICameraEntityCore to call this service for + ///Template of a filename. Variable available is `entity_id`. eg: /tmp/snapshot_{{ entity_id.name }}.jpg + public static void Snapshot(this ICameraEntityCore target, string filename) { target.CallService("snapshot", new CameraSnapshotParameters { Filename = filename }); } - ///Take a snapshot from a camera. - ///The IEnumerable<CameraEntity> to call this service for - ///Template of a Filename. Variable is entity_id. eg: /tmp/snapshot_{{ entity_id.name }}.jpg - public static void Snapshot(this IEnumerable target, string filename) + ///Takes a snapshot from a camera. + ///The IEnumerable<ICameraEntityCore> to call this service for + ///Template of a filename. Variable available is `entity_id`. eg: /tmp/snapshot_{{ entity_id.name }}.jpg + public static void Snapshot(this IEnumerable target, string filename) { target.CallService("snapshot", new CameraSnapshotParameters { Filename = filename }); } - ///Turn off camera. - public static void TurnOff(this CameraEntity target) + ///Turns off the camera. + public static void TurnOff(this ICameraEntityCore target) { target.CallService("turn_off"); } - ///Turn off camera. - public static void TurnOff(this IEnumerable target) + ///Turns off the camera. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn on camera. - public static void TurnOn(this CameraEntity target) + ///Turns on the camera. + public static void TurnOn(this ICameraEntityCore target) { target.CallService("turn_on"); } - ///Turn on camera. - public static void TurnOn(this IEnumerable target) + ///Turns on the camera. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } @@ -17637,228 +17860,228 @@ public static void TurnOn(this IEnumerable target) public static class ClimateEntityExtensionMethods { - ///Turn auxiliary heater on/off for climate device. - public static void SetAuxHeat(this ClimateEntity target, ClimateSetAuxHeatParameters data) + ///Turns auxiliary heater on/off. + public static void SetAuxHeat(this IClimateEntityCore target, ClimateSetAuxHeatParameters data) { target.CallService("set_aux_heat", data); } - ///Turn auxiliary heater on/off for climate device. - public static void SetAuxHeat(this IEnumerable target, ClimateSetAuxHeatParameters data) + ///Turns auxiliary heater on/off. + public static void SetAuxHeat(this IEnumerable target, ClimateSetAuxHeatParameters data) { target.CallService("set_aux_heat", data); } - ///Turn auxiliary heater on/off for climate device. - ///The ClimateEntity to call this service for + ///Turns auxiliary heater on/off. + ///The IClimateEntityCore to call this service for ///New value of auxiliary heater. - public static void SetAuxHeat(this ClimateEntity target, bool auxHeat) + public static void SetAuxHeat(this IClimateEntityCore target, bool auxHeat) { target.CallService("set_aux_heat", new ClimateSetAuxHeatParameters { AuxHeat = auxHeat }); } - ///Turn auxiliary heater on/off for climate device. - ///The IEnumerable<ClimateEntity> to call this service for + ///Turns auxiliary heater on/off. + ///The IEnumerable<IClimateEntityCore> to call this service for ///New value of auxiliary heater. - public static void SetAuxHeat(this IEnumerable target, bool auxHeat) + public static void SetAuxHeat(this IEnumerable target, bool auxHeat) { target.CallService("set_aux_heat", new ClimateSetAuxHeatParameters { AuxHeat = auxHeat }); } - ///Set fan operation for climate device. - public static void SetFanMode(this ClimateEntity target, ClimateSetFanModeParameters data) + ///Sets fan operation mode. + public static void SetFanMode(this IClimateEntityCore target, ClimateSetFanModeParameters data) { target.CallService("set_fan_mode", data); } - ///Set fan operation for climate device. - public static void SetFanMode(this IEnumerable target, ClimateSetFanModeParameters data) + ///Sets fan operation mode. + public static void SetFanMode(this IEnumerable target, ClimateSetFanModeParameters data) { target.CallService("set_fan_mode", data); } - ///Set fan operation for climate device. - ///The ClimateEntity to call this service for - ///New value of fan mode. eg: low - public static void SetFanMode(this ClimateEntity target, string fanMode) + ///Sets fan operation mode. + ///The IClimateEntityCore to call this service for + ///Fan operation mode. eg: low + public static void SetFanMode(this IClimateEntityCore target, string fanMode) { target.CallService("set_fan_mode", new ClimateSetFanModeParameters { FanMode = fanMode }); } - ///Set fan operation for climate device. - ///The IEnumerable<ClimateEntity> to call this service for - ///New value of fan mode. eg: low - public static void SetFanMode(this IEnumerable target, string fanMode) + ///Sets fan operation mode. + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Fan operation mode. eg: low + public static void SetFanMode(this IEnumerable target, string fanMode) { target.CallService("set_fan_mode", new ClimateSetFanModeParameters { FanMode = fanMode }); } - ///Set target humidity of climate device. - public static void SetHumidity(this ClimateEntity target, ClimateSetHumidityParameters data) + ///Sets target humidity. + public static void SetHumidity(this IClimateEntityCore target, ClimateSetHumidityParameters data) { target.CallService("set_humidity", data); } - ///Set target humidity of climate device. - public static void SetHumidity(this IEnumerable target, ClimateSetHumidityParameters data) + ///Sets target humidity. + public static void SetHumidity(this IEnumerable target, ClimateSetHumidityParameters data) { target.CallService("set_humidity", data); } - ///Set target humidity of climate device. - ///The ClimateEntity to call this service for - ///New target humidity for climate device. - public static void SetHumidity(this ClimateEntity target, long humidity) + ///Sets target humidity. + ///The IClimateEntityCore to call this service for + ///Target humidity. + public static void SetHumidity(this IClimateEntityCore target, long humidity) { target.CallService("set_humidity", new ClimateSetHumidityParameters { Humidity = humidity }); } - ///Set target humidity of climate device. - ///The IEnumerable<ClimateEntity> to call this service for - ///New target humidity for climate device. - public static void SetHumidity(this IEnumerable target, long humidity) + ///Sets target humidity. + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Target humidity. + public static void SetHumidity(this IEnumerable target, long humidity) { target.CallService("set_humidity", new ClimateSetHumidityParameters { Humidity = humidity }); } - ///Set HVAC operation mode for climate device. - public static void SetHvacMode(this ClimateEntity target, ClimateSetHvacModeParameters data) + ///Sets HVAC operation mode. + public static void SetHvacMode(this IClimateEntityCore target, ClimateSetHvacModeParameters data) { target.CallService("set_hvac_mode", data); } - ///Set HVAC operation mode for climate device. - public static void SetHvacMode(this IEnumerable target, ClimateSetHvacModeParameters data) + ///Sets HVAC operation mode. + public static void SetHvacMode(this IEnumerable target, ClimateSetHvacModeParameters data) { target.CallService("set_hvac_mode", data); } - ///Set HVAC operation mode for climate device. - ///The ClimateEntity to call this service for - ///New value of operation mode. - public static void SetHvacMode(this ClimateEntity target, object? hvacMode = null) + ///Sets HVAC operation mode. + ///The IClimateEntityCore to call this service for + ///HVAC operation mode. + public static void SetHvacMode(this IClimateEntityCore target, object? hvacMode = null) { target.CallService("set_hvac_mode", new ClimateSetHvacModeParameters { HvacMode = hvacMode }); } - ///Set HVAC operation mode for climate device. - ///The IEnumerable<ClimateEntity> to call this service for - ///New value of operation mode. - public static void SetHvacMode(this IEnumerable target, object? hvacMode = null) + ///Sets HVAC operation mode. + ///The IEnumerable<IClimateEntityCore> to call this service for + ///HVAC operation mode. + public static void SetHvacMode(this IEnumerable target, object? hvacMode = null) { target.CallService("set_hvac_mode", new ClimateSetHvacModeParameters { HvacMode = hvacMode }); } - ///Set preset mode for climate device. - public static void SetPresetMode(this ClimateEntity target, ClimateSetPresetModeParameters data) + ///Sets preset mode. + public static void SetPresetMode(this IClimateEntityCore target, ClimateSetPresetModeParameters data) { target.CallService("set_preset_mode", data); } - ///Set preset mode for climate device. - public static void SetPresetMode(this IEnumerable target, ClimateSetPresetModeParameters data) + ///Sets preset mode. + public static void SetPresetMode(this IEnumerable target, ClimateSetPresetModeParameters data) { target.CallService("set_preset_mode", data); } - ///Set preset mode for climate device. - ///The ClimateEntity to call this service for - ///New value of preset mode. eg: away - public static void SetPresetMode(this ClimateEntity target, string presetMode) + ///Sets preset mode. + ///The IClimateEntityCore to call this service for + ///Preset mode. eg: away + public static void SetPresetMode(this IClimateEntityCore target, string presetMode) { target.CallService("set_preset_mode", new ClimateSetPresetModeParameters { PresetMode = presetMode }); } - ///Set preset mode for climate device. - ///The IEnumerable<ClimateEntity> to call this service for - ///New value of preset mode. eg: away - public static void SetPresetMode(this IEnumerable target, string presetMode) + ///Sets preset mode. + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Preset mode. eg: away + public static void SetPresetMode(this IEnumerable target, string presetMode) { target.CallService("set_preset_mode", new ClimateSetPresetModeParameters { PresetMode = presetMode }); } - ///Set swing operation for climate device. - public static void SetSwingMode(this ClimateEntity target, ClimateSetSwingModeParameters data) + ///Sets swing operation mode. + public static void SetSwingMode(this IClimateEntityCore target, ClimateSetSwingModeParameters data) { target.CallService("set_swing_mode", data); } - ///Set swing operation for climate device. - public static void SetSwingMode(this IEnumerable target, ClimateSetSwingModeParameters data) + ///Sets swing operation mode. + public static void SetSwingMode(this IEnumerable target, ClimateSetSwingModeParameters data) { target.CallService("set_swing_mode", data); } - ///Set swing operation for climate device. - ///The ClimateEntity to call this service for - ///New value of swing mode. eg: horizontal - public static void SetSwingMode(this ClimateEntity target, string swingMode) + ///Sets swing operation mode. + ///The IClimateEntityCore to call this service for + ///Swing operation mode. eg: horizontal + public static void SetSwingMode(this IClimateEntityCore target, string swingMode) { target.CallService("set_swing_mode", new ClimateSetSwingModeParameters { SwingMode = swingMode }); } - ///Set swing operation for climate device. - ///The IEnumerable<ClimateEntity> to call this service for - ///New value of swing mode. eg: horizontal - public static void SetSwingMode(this IEnumerable target, string swingMode) + ///Sets swing operation mode. + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Swing operation mode. eg: horizontal + public static void SetSwingMode(this IEnumerable target, string swingMode) { target.CallService("set_swing_mode", new ClimateSetSwingModeParameters { SwingMode = swingMode }); } - ///Set target temperature of climate device. - public static void SetTemperature(this ClimateEntity target, ClimateSetTemperatureParameters data) + ///Sets target temperature. + public static void SetTemperature(this IClimateEntityCore target, ClimateSetTemperatureParameters data) { target.CallService("set_temperature", data); } - ///Set target temperature of climate device. - public static void SetTemperature(this IEnumerable target, ClimateSetTemperatureParameters data) + ///Sets target temperature. + public static void SetTemperature(this IEnumerable target, ClimateSetTemperatureParameters data) { target.CallService("set_temperature", data); } - ///Set target temperature of climate device. - ///The ClimateEntity to call this service for - ///New target temperature for HVAC. - ///New target high temperature for HVAC. - ///New target low temperature for HVAC. - ///HVAC operation mode to set temperature to. - public static void SetTemperature(this ClimateEntity target, double? temperature = null, double? targetTempHigh = null, double? targetTempLow = null, object? hvacMode = null) + ///Sets target temperature. + ///The IClimateEntityCore to call this service for + ///Target temperature. + ///High target temperature. + ///Low target temperature. + ///HVAC operation mode. + public static void SetTemperature(this IClimateEntityCore target, double? temperature = null, double? targetTempHigh = null, double? targetTempLow = null, object? hvacMode = null) { target.CallService("set_temperature", new ClimateSetTemperatureParameters { Temperature = temperature, TargetTempHigh = targetTempHigh, TargetTempLow = targetTempLow, HvacMode = hvacMode }); } - ///Set target temperature of climate device. - ///The IEnumerable<ClimateEntity> to call this service for - ///New target temperature for HVAC. - ///New target high temperature for HVAC. - ///New target low temperature for HVAC. - ///HVAC operation mode to set temperature to. - public static void SetTemperature(this IEnumerable target, double? temperature = null, double? targetTempHigh = null, double? targetTempLow = null, object? hvacMode = null) + ///Sets target temperature. + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Target temperature. + ///High target temperature. + ///Low target temperature. + ///HVAC operation mode. + public static void SetTemperature(this IEnumerable target, double? temperature = null, double? targetTempHigh = null, double? targetTempLow = null, object? hvacMode = null) { target.CallService("set_temperature", new ClimateSetTemperatureParameters { Temperature = temperature, TargetTempHigh = targetTempHigh, TargetTempLow = targetTempLow, HvacMode = hvacMode }); } - ///Turn climate device off. - public static void TurnOff(this ClimateEntity target) + ///Turns climate device off. + public static void TurnOff(this IClimateEntityCore target) { target.CallService("turn_off"); } - ///Turn climate device off. - public static void TurnOff(this IEnumerable target) + ///Turns climate device off. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn climate device on. - public static void TurnOn(this ClimateEntity target) + ///Turns climate device on. + public static void TurnOn(this IClimateEntityCore target) { target.CallService("turn_on"); } - ///Turn climate device on. - public static void TurnOn(this IEnumerable target) + ///Turns climate device on. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } @@ -17866,154 +18089,154 @@ public static void TurnOn(this IEnumerable target) public static class CoverEntityExtensionMethods { - ///Close all or specified cover. - public static void CloseCover(this CoverEntity target) + ///Closes a cover. + public static void CloseCover(this ICoverEntityCore target) { target.CallService("close_cover"); } - ///Close all or specified cover. - public static void CloseCover(this IEnumerable target) + ///Closes a cover. + public static void CloseCover(this IEnumerable target) { target.CallService("close_cover"); } - ///Close all or specified cover tilt. - public static void CloseCoverTilt(this CoverEntity target) + ///Tilts a cover to close. + public static void CloseCoverTilt(this ICoverEntityCore target) { target.CallService("close_cover_tilt"); } - ///Close all or specified cover tilt. - public static void CloseCoverTilt(this IEnumerable target) + ///Tilts a cover to close. + public static void CloseCoverTilt(this IEnumerable target) { target.CallService("close_cover_tilt"); } - ///Open all or specified cover. - public static void OpenCover(this CoverEntity target) + ///Opens a cover. + public static void OpenCover(this ICoverEntityCore target) { target.CallService("open_cover"); } - ///Open all or specified cover. - public static void OpenCover(this IEnumerable target) + ///Opens a cover. + public static void OpenCover(this IEnumerable target) { target.CallService("open_cover"); } - ///Open all or specified cover tilt. - public static void OpenCoverTilt(this CoverEntity target) + ///Tilts a cover open. + public static void OpenCoverTilt(this ICoverEntityCore target) { target.CallService("open_cover_tilt"); } - ///Open all or specified cover tilt. - public static void OpenCoverTilt(this IEnumerable target) + ///Tilts a cover open. + public static void OpenCoverTilt(this IEnumerable target) { target.CallService("open_cover_tilt"); } - ///Move to specific position all or specified cover. - public static void SetCoverPosition(this CoverEntity target, CoverSetCoverPositionParameters data) + ///Moves a cover to a specific position. + public static void SetCoverPosition(this ICoverEntityCore target, CoverSetCoverPositionParameters data) { target.CallService("set_cover_position", data); } - ///Move to specific position all or specified cover. - public static void SetCoverPosition(this IEnumerable target, CoverSetCoverPositionParameters data) + ///Moves a cover to a specific position. + public static void SetCoverPosition(this IEnumerable target, CoverSetCoverPositionParameters data) { target.CallService("set_cover_position", data); } - ///Move to specific position all or specified cover. - ///The CoverEntity to call this service for - ///Position of the cover - public static void SetCoverPosition(this CoverEntity target, long position) + ///Moves a cover to a specific position. + ///The ICoverEntityCore to call this service for + ///Target position. + public static void SetCoverPosition(this ICoverEntityCore target, long position) { target.CallService("set_cover_position", new CoverSetCoverPositionParameters { Position = position }); } - ///Move to specific position all or specified cover. - ///The IEnumerable<CoverEntity> to call this service for - ///Position of the cover - public static void SetCoverPosition(this IEnumerable target, long position) + ///Moves a cover to a specific position. + ///The IEnumerable<ICoverEntityCore> to call this service for + ///Target position. + public static void SetCoverPosition(this IEnumerable target, long position) { target.CallService("set_cover_position", new CoverSetCoverPositionParameters { Position = position }); } - ///Move to specific position all or specified cover tilt. - public static void SetCoverTiltPosition(this CoverEntity target, CoverSetCoverTiltPositionParameters data) + ///Moves a cover tilt to a specific position. + public static void SetCoverTiltPosition(this ICoverEntityCore target, CoverSetCoverTiltPositionParameters data) { target.CallService("set_cover_tilt_position", data); } - ///Move to specific position all or specified cover tilt. - public static void SetCoverTiltPosition(this IEnumerable target, CoverSetCoverTiltPositionParameters data) + ///Moves a cover tilt to a specific position. + public static void SetCoverTiltPosition(this IEnumerable target, CoverSetCoverTiltPositionParameters data) { target.CallService("set_cover_tilt_position", data); } - ///Move to specific position all or specified cover tilt. - ///The CoverEntity to call this service for - ///Tilt position of the cover. - public static void SetCoverTiltPosition(this CoverEntity target, long tiltPosition) + ///Moves a cover tilt to a specific position. + ///The ICoverEntityCore to call this service for + ///Target tilt positition. + public static void SetCoverTiltPosition(this ICoverEntityCore target, long tiltPosition) { target.CallService("set_cover_tilt_position", new CoverSetCoverTiltPositionParameters { TiltPosition = tiltPosition }); } - ///Move to specific position all or specified cover tilt. - ///The IEnumerable<CoverEntity> to call this service for - ///Tilt position of the cover. - public static void SetCoverTiltPosition(this IEnumerable target, long tiltPosition) + ///Moves a cover tilt to a specific position. + ///The IEnumerable<ICoverEntityCore> to call this service for + ///Target tilt positition. + public static void SetCoverTiltPosition(this IEnumerable target, long tiltPosition) { target.CallService("set_cover_tilt_position", new CoverSetCoverTiltPositionParameters { TiltPosition = tiltPosition }); } - ///Stop all or specified cover. - public static void StopCover(this CoverEntity target) + ///Stops the cover movement. + public static void StopCover(this ICoverEntityCore target) { target.CallService("stop_cover"); } - ///Stop all or specified cover. - public static void StopCover(this IEnumerable target) + ///Stops the cover movement. + public static void StopCover(this IEnumerable target) { target.CallService("stop_cover"); } - ///Stop all or specified cover. - public static void StopCoverTilt(this CoverEntity target) + ///Stops a tilting cover movement. + public static void StopCoverTilt(this ICoverEntityCore target) { target.CallService("stop_cover_tilt"); } - ///Stop all or specified cover. - public static void StopCoverTilt(this IEnumerable target) + ///Stops a tilting cover movement. + public static void StopCoverTilt(this IEnumerable target) { target.CallService("stop_cover_tilt"); } - ///Toggle a cover open/closed. - public static void Toggle(this CoverEntity target) + ///Toggles a cover open/closed. + public static void Toggle(this ICoverEntityCore target) { target.CallService("toggle"); } - ///Toggle a cover open/closed. - public static void Toggle(this IEnumerable target) + ///Toggles a cover open/closed. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Toggle a cover tilt open/closed. - public static void ToggleCoverTilt(this CoverEntity target) + ///Toggles a cover tilt open/closed. + public static void ToggleCoverTilt(this ICoverEntityCore target) { target.CallService("toggle_cover_tilt"); } - ///Toggle a cover tilt open/closed. - public static void ToggleCoverTilt(this IEnumerable target) + ///Toggles a cover tilt open/closed. + public static void ToggleCoverTilt(this IEnumerable target) { target.CallService("toggle_cover_tilt"); } @@ -18021,38 +18244,38 @@ public static void ToggleCoverTilt(this IEnumerable target) public static class InputBooleanEntityExtensionMethods { - ///Toggle an input boolean - public static void Toggle(this InputBooleanEntity target) + ///Toggles the helper on/off. + public static void Toggle(this IInputBooleanEntityCore target) { target.CallService("toggle"); } - ///Toggle an input boolean - public static void Toggle(this IEnumerable target) + ///Toggles the helper on/off. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Turn off an input boolean - public static void TurnOff(this InputBooleanEntity target) + ///Turns off the helper. + public static void TurnOff(this IInputBooleanEntityCore target) { target.CallService("turn_off"); } - ///Turn off an input boolean - public static void TurnOff(this IEnumerable target) + ///Turns off the helper. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn on an input boolean - public static void TurnOn(this InputBooleanEntity target) + ///Turns on the helper. + public static void TurnOn(this IInputBooleanEntityCore target) { target.CallService("turn_on"); } - ///Turn on an input boolean - public static void TurnOn(this IEnumerable target) + ///Turns on the helper. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } @@ -18060,14 +18283,14 @@ public static void TurnOn(this IEnumerable target) public static class InputButtonEntityExtensionMethods { - ///Press the input button entity. - public static void Press(this InputButtonEntity target) + ///Mimics the physical button press on the device. + public static void Press(this IInputButtonEntityCore target) { target.CallService("press"); } - ///Press the input button entity. - public static void Press(this IEnumerable target) + ///Mimics the physical button press on the device. + public static void Press(this IEnumerable target) { target.CallService("press"); } @@ -18075,36 +18298,36 @@ public static void Press(this IEnumerable target) public static class InputDatetimeEntityExtensionMethods { - ///This can be used to dynamically set the date and/or time. - public static void SetDatetime(this InputDatetimeEntity target, InputDatetimeSetDatetimeParameters data) + ///Sets the date and/or time. + public static void SetDatetime(this IInputDatetimeEntityCore target, InputDatetimeSetDatetimeParameters data) { target.CallService("set_datetime", data); } - ///This can be used to dynamically set the date and/or time. - public static void SetDatetime(this IEnumerable target, InputDatetimeSetDatetimeParameters data) + ///Sets the date and/or time. + public static void SetDatetime(this IEnumerable target, InputDatetimeSetDatetimeParameters data) { target.CallService("set_datetime", data); } - ///This can be used to dynamically set the date and/or time. - ///The InputDatetimeEntity to call this service for - ///The target date the entity should be set to. eg: "2019-04-20" - ///The target time the entity should be set to. eg: "05:04:20" - ///The target date & time the entity should be set to. eg: "2019-04-20 05:04:20" - ///The target date & time the entity should be set to as expressed by a UNIX timestamp. - public static void SetDatetime(this InputDatetimeEntity target, string? date = null, string? time = null, string? datetime = null, long? timestamp = null) + ///Sets the date and/or time. + ///The IInputDatetimeEntityCore to call this service for + ///The target date. eg: "2019-04-20" + ///The target time. eg: "05:04:20" + ///The target date & time. eg: "2019-04-20 05:04:20" + ///The target date & time, expressed by a UNIX timestamp. + public static void SetDatetime(this IInputDatetimeEntityCore target, string? date = null, string? time = null, string? datetime = null, long? timestamp = null) { target.CallService("set_datetime", new InputDatetimeSetDatetimeParameters { Date = date, Time = time, Datetime = datetime, Timestamp = timestamp }); } - ///This can be used to dynamically set the date and/or time. - ///The IEnumerable<InputDatetimeEntity> to call this service for - ///The target date the entity should be set to. eg: "2019-04-20" - ///The target time the entity should be set to. eg: "05:04:20" - ///The target date & time the entity should be set to. eg: "2019-04-20 05:04:20" - ///The target date & time the entity should be set to as expressed by a UNIX timestamp. - public static void SetDatetime(this IEnumerable target, string? date = null, string? time = null, string? datetime = null, long? timestamp = null) + ///Sets the date and/or time. + ///The IEnumerable<IInputDatetimeEntityCore> to call this service for + ///The target date. eg: "2019-04-20" + ///The target time. eg: "05:04:20" + ///The target date & time. eg: "2019-04-20 05:04:20" + ///The target date & time, expressed by a UNIX timestamp. + public static void SetDatetime(this IEnumerable target, string? date = null, string? time = null, string? datetime = null, long? timestamp = null) { target.CallService("set_datetime", new InputDatetimeSetDatetimeParameters { Date = date, Time = time, Datetime = datetime, Timestamp = timestamp }); } @@ -18112,54 +18335,54 @@ public static void SetDatetime(this IEnumerable target, str public static class InputNumberEntityExtensionMethods { - ///Decrement the value of an input number entity by its stepping. - public static void Decrement(this InputNumberEntity target) + ///Decrements the current value by 1 step. + public static void Decrement(this IInputNumberEntityCore target) { target.CallService("decrement"); } - ///Decrement the value of an input number entity by its stepping. - public static void Decrement(this IEnumerable target) + ///Decrements the current value by 1 step. + public static void Decrement(this IEnumerable target) { target.CallService("decrement"); } - ///Increment the value of an input number entity by its stepping. - public static void Increment(this InputNumberEntity target) + ///Increments the value by 1 step. + public static void Increment(this IInputNumberEntityCore target) { target.CallService("increment"); } - ///Increment the value of an input number entity by its stepping. - public static void Increment(this IEnumerable target) + ///Increments the value by 1 step. + public static void Increment(this IEnumerable target) { target.CallService("increment"); } - ///Set the value of an input number entity. - public static void SetValue(this InputNumberEntity target, InputNumberSetValueParameters data) + ///Sets the value. + public static void SetValue(this IInputNumberEntityCore target, InputNumberSetValueParameters data) { target.CallService("set_value", data); } - ///Set the value of an input number entity. - public static void SetValue(this IEnumerable target, InputNumberSetValueParameters data) + ///Sets the value. + public static void SetValue(this IEnumerable target, InputNumberSetValueParameters data) { target.CallService("set_value", data); } - ///Set the value of an input number entity. - ///The InputNumberEntity to call this service for - ///The target value the entity should be set to. - public static void SetValue(this InputNumberEntity target, double value) + ///Sets the value. + ///The IInputNumberEntityCore to call this service for + ///The target value. + public static void SetValue(this IInputNumberEntityCore target, double value) { target.CallService("set_value", new InputNumberSetValueParameters { Value = value }); } - ///Set the value of an input number entity. - ///The IEnumerable<InputNumberEntity> to call this service for - ///The target value the entity should be set to. - public static void SetValue(this IEnumerable target, double value) + ///Sets the value. + ///The IEnumerable<IInputNumberEntityCore> to call this service for + ///The target value. + public static void SetValue(this IEnumerable target, double value) { target.CallService("set_value", new InputNumberSetValueParameters { Value = value }); } @@ -18167,138 +18390,138 @@ public static void SetValue(this IEnumerable target, double v public static class InputSelectEntityExtensionMethods { - ///Select the first option of an input select entity. - public static void SelectFirst(this InputSelectEntity target) + ///Selects the first option. + public static void SelectFirst(this IInputSelectEntityCore target) { target.CallService("select_first"); } - ///Select the first option of an input select entity. - public static void SelectFirst(this IEnumerable target) + ///Selects the first option. + public static void SelectFirst(this IEnumerable target) { target.CallService("select_first"); } - ///Select the last option of an input select entity. - public static void SelectLast(this InputSelectEntity target) + ///Selects the last option. + public static void SelectLast(this IInputSelectEntityCore target) { target.CallService("select_last"); } - ///Select the last option of an input select entity. - public static void SelectLast(this IEnumerable target) + ///Selects the last option. + public static void SelectLast(this IEnumerable target) { target.CallService("select_last"); } - ///Select the next options of an input select entity. - public static void SelectNext(this InputSelectEntity target, InputSelectSelectNextParameters data) + ///Select the next option. + public static void SelectNext(this IInputSelectEntityCore target, InputSelectSelectNextParameters data) { target.CallService("select_next", data); } - ///Select the next options of an input select entity. - public static void SelectNext(this IEnumerable target, InputSelectSelectNextParameters data) + ///Select the next option. + public static void SelectNext(this IEnumerable target, InputSelectSelectNextParameters data) { target.CallService("select_next", data); } - ///Select the next options of an input select entity. - ///The InputSelectEntity to call this service for - ///If the option should cycle from the last to the first. - public static void SelectNext(this InputSelectEntity target, bool? cycle = null) + ///Select the next option. + ///The IInputSelectEntityCore to call this service for + ///If the option should cycle from the last to the first option on the list. + public static void SelectNext(this IInputSelectEntityCore target, bool? cycle = null) { target.CallService("select_next", new InputSelectSelectNextParameters { Cycle = cycle }); } - ///Select the next options of an input select entity. - ///The IEnumerable<InputSelectEntity> to call this service for - ///If the option should cycle from the last to the first. - public static void SelectNext(this IEnumerable target, bool? cycle = null) + ///Select the next option. + ///The IEnumerable<IInputSelectEntityCore> to call this service for + ///If the option should cycle from the last to the first option on the list. + public static void SelectNext(this IEnumerable target, bool? cycle = null) { target.CallService("select_next", new InputSelectSelectNextParameters { Cycle = cycle }); } - ///Select an option of an input select entity. - public static void SelectOption(this InputSelectEntity target, InputSelectSelectOptionParameters data) + ///Selects an option. + public static void SelectOption(this IInputSelectEntityCore target, InputSelectSelectOptionParameters data) { target.CallService("select_option", data); } - ///Select an option of an input select entity. - public static void SelectOption(this IEnumerable target, InputSelectSelectOptionParameters data) + ///Selects an option. + public static void SelectOption(this IEnumerable target, InputSelectSelectOptionParameters data) { target.CallService("select_option", data); } - ///Select an option of an input select entity. - ///The InputSelectEntity to call this service for + ///Selects an option. + ///The IInputSelectEntityCore to call this service for ///Option to be selected. eg: "Item A" - public static void SelectOption(this InputSelectEntity target, string option) + public static void SelectOption(this IInputSelectEntityCore target, string option) { target.CallService("select_option", new InputSelectSelectOptionParameters { Option = option }); } - ///Select an option of an input select entity. - ///The IEnumerable<InputSelectEntity> to call this service for + ///Selects an option. + ///The IEnumerable<IInputSelectEntityCore> to call this service for ///Option to be selected. eg: "Item A" - public static void SelectOption(this IEnumerable target, string option) + public static void SelectOption(this IEnumerable target, string option) { target.CallService("select_option", new InputSelectSelectOptionParameters { Option = option }); } - ///Select the previous options of an input select entity. - public static void SelectPrevious(this InputSelectEntity target, InputSelectSelectPreviousParameters data) + ///Selects the previous option. + public static void SelectPrevious(this IInputSelectEntityCore target, InputSelectSelectPreviousParameters data) { target.CallService("select_previous", data); } - ///Select the previous options of an input select entity. - public static void SelectPrevious(this IEnumerable target, InputSelectSelectPreviousParameters data) + ///Selects the previous option. + public static void SelectPrevious(this IEnumerable target, InputSelectSelectPreviousParameters data) { target.CallService("select_previous", data); } - ///Select the previous options of an input select entity. - ///The InputSelectEntity to call this service for - ///If the option should cycle from the first to the last. - public static void SelectPrevious(this InputSelectEntity target, bool? cycle = null) + ///Selects the previous option. + ///The IInputSelectEntityCore to call this service for + ///If the option should cycle from the last to the first option on the list. + public static void SelectPrevious(this IInputSelectEntityCore target, bool? cycle = null) { target.CallService("select_previous", new InputSelectSelectPreviousParameters { Cycle = cycle }); } - ///Select the previous options of an input select entity. - ///The IEnumerable<InputSelectEntity> to call this service for - ///If the option should cycle from the first to the last. - public static void SelectPrevious(this IEnumerable target, bool? cycle = null) + ///Selects the previous option. + ///The IEnumerable<IInputSelectEntityCore> to call this service for + ///If the option should cycle from the last to the first option on the list. + public static void SelectPrevious(this IEnumerable target, bool? cycle = null) { target.CallService("select_previous", new InputSelectSelectPreviousParameters { Cycle = cycle }); } - ///Set the options of an input select entity. - public static void SetOptions(this InputSelectEntity target, InputSelectSetOptionsParameters data) + ///Sets the options. + public static void SetOptions(this IInputSelectEntityCore target, InputSelectSetOptionsParameters data) { target.CallService("set_options", data); } - ///Set the options of an input select entity. - public static void SetOptions(this IEnumerable target, InputSelectSetOptionsParameters data) + ///Sets the options. + public static void SetOptions(this IEnumerable target, InputSelectSetOptionsParameters data) { target.CallService("set_options", data); } - ///Set the options of an input select entity. - ///The InputSelectEntity to call this service for - ///Options for the input select entity. eg: ["Item A", "Item B", "Item C"] - public static void SetOptions(this InputSelectEntity target, object options) + ///Sets the options. + ///The IInputSelectEntityCore to call this service for + ///List of options. eg: ["Item A", "Item B", "Item C"] + public static void SetOptions(this IInputSelectEntityCore target, object options) { target.CallService("set_options", new InputSelectSetOptionsParameters { Options = options }); } - ///Set the options of an input select entity. - ///The IEnumerable<InputSelectEntity> to call this service for - ///Options for the input select entity. eg: ["Item A", "Item B", "Item C"] - public static void SetOptions(this IEnumerable target, object options) + ///Sets the options. + ///The IEnumerable<IInputSelectEntityCore> to call this service for + ///List of options. eg: ["Item A", "Item B", "Item C"] + public static void SetOptions(this IEnumerable target, object options) { target.CallService("set_options", new InputSelectSetOptionsParameters { Options = options }); } @@ -18306,30 +18529,30 @@ public static void SetOptions(this IEnumerable target, object public static class InputTextEntityExtensionMethods { - ///Set the value of an input text entity. - public static void SetValue(this InputTextEntity target, InputTextSetValueParameters data) + ///Sets the value. + public static void SetValue(this IInputTextEntityCore target, InputTextSetValueParameters data) { target.CallService("set_value", data); } - ///Set the value of an input text entity. - public static void SetValue(this IEnumerable target, InputTextSetValueParameters data) + ///Sets the value. + public static void SetValue(this IEnumerable target, InputTextSetValueParameters data) { target.CallService("set_value", data); } - ///Set the value of an input text entity. - ///The InputTextEntity to call this service for - ///The target value the entity should be set to. eg: This is an example text - public static void SetValue(this InputTextEntity target, string value) + ///Sets the value. + ///The IInputTextEntityCore to call this service for + ///The target value. eg: This is an example text + public static void SetValue(this IInputTextEntityCore target, string value) { target.CallService("set_value", new InputTextSetValueParameters { Value = value }); } - ///Set the value of an input text entity. - ///The IEnumerable<InputTextEntity> to call this service for - ///The target value the entity should be set to. eg: This is an example text - public static void SetValue(this IEnumerable target, string value) + ///Sets the value. + ///The IEnumerable<IInputTextEntityCore> to call this service for + ///The target value. eg: This is an example text + public static void SetValue(this IEnumerable target, string value) { target.CallService("set_value", new InputTextSetValueParameters { Value = value }); } @@ -18337,144 +18560,144 @@ public static void SetValue(this IEnumerable target, string val public static class LightEntityExtensionMethods { - ///Toggles one or more lights, from on to off, or, off to on, based on their current state. - public static void Toggle(this LightEntity target, LightToggleParameters data) + ///Toggles one or more lights, from on to off, or, off to on, based on their current state. + public static void Toggle(this ILightEntityCore target, LightToggleParameters data) { target.CallService("toggle", data); } - ///Toggles one or more lights, from on to off, or, off to on, based on their current state. - public static void Toggle(this IEnumerable target, LightToggleParameters data) + ///Toggles one or more lights, from on to off, or, off to on, based on their current state. + public static void Toggle(this IEnumerable target, LightToggleParameters data) { target.CallService("toggle", data); } - ///Toggles one or more lights, from on to off, or, off to on, based on their current state. - ///The LightEntity to call this service for + ///Toggles one or more lights, from on to off, or, off to on, based on their current state. + ///The ILightEntityCore to call this service for ///Duration it takes to get to next state. - ///Color for the light in RGB-format. eg: [255, 100, 100] - ///A human readable color name. - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] - ///Color for the light in XY-format. eg: [0.52, 0.43] - ///Color temperature for the light in mireds. - ///Color temperature for the light in Kelvin. - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. eg: [255, 100, 100] + ///A human-readable color name. + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] + ///Color temperature in mireds. + ///Color temperature in Kelvin. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. ///Set the light to white mode. ///Name of a light profile to use. eg: relax - ///If the light should flash. + ///Tell light to flash, can be either value short or long. ///Light effect. - public static void Toggle(this LightEntity target, long? transition = null, object? rgbColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) + public static void Toggle(this ILightEntityCore target, long? transition = null, object? rgbColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) { target.CallService("toggle", new LightToggleParameters { Transition = transition, RgbColor = rgbColor, ColorName = colorName, HsColor = hsColor, XyColor = xyColor, ColorTemp = colorTemp, Kelvin = kelvin, Brightness = brightness, BrightnessPct = brightnessPct, White = white, Profile = profile, Flash = flash, Effect = effect }); } - ///Toggles one or more lights, from on to off, or, off to on, based on their current state. - ///The IEnumerable<LightEntity> to call this service for + ///Toggles one or more lights, from on to off, or, off to on, based on their current state. + ///The IEnumerable<ILightEntityCore> to call this service for ///Duration it takes to get to next state. - ///Color for the light in RGB-format. eg: [255, 100, 100] - ///A human readable color name. - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] - ///Color for the light in XY-format. eg: [0.52, 0.43] - ///Color temperature for the light in mireds. - ///Color temperature for the light in Kelvin. - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. eg: [255, 100, 100] + ///A human-readable color name. + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] + ///Color temperature in mireds. + ///Color temperature in Kelvin. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. ///Set the light to white mode. ///Name of a light profile to use. eg: relax - ///If the light should flash. + ///Tell light to flash, can be either value short or long. ///Light effect. - public static void Toggle(this IEnumerable target, long? transition = null, object? rgbColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) + public static void Toggle(this IEnumerable target, long? transition = null, object? rgbColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) { target.CallService("toggle", new LightToggleParameters { Transition = transition, RgbColor = rgbColor, ColorName = colorName, HsColor = hsColor, XyColor = xyColor, ColorTemp = colorTemp, Kelvin = kelvin, Brightness = brightness, BrightnessPct = brightnessPct, White = white, Profile = profile, Flash = flash, Effect = effect }); } - ///Turns off one or more lights. - public static void TurnOff(this LightEntity target, LightTurnOffParameters data) + ///Turn off one or more lights. + public static void TurnOff(this ILightEntityCore target, LightTurnOffParameters data) { target.CallService("turn_off", data); } - ///Turns off one or more lights. - public static void TurnOff(this IEnumerable target, LightTurnOffParameters data) + ///Turn off one or more lights. + public static void TurnOff(this IEnumerable target, LightTurnOffParameters data) { target.CallService("turn_off", data); } - ///Turns off one or more lights. - ///The LightEntity to call this service for + ///Turn off one or more lights. + ///The ILightEntityCore to call this service for ///Duration it takes to get to next state. - ///If the light should flash. - public static void TurnOff(this LightEntity target, long? transition = null, object? flash = null) + ///Tell light to flash, can be either value short or long. + public static void TurnOff(this ILightEntityCore target, long? transition = null, object? flash = null) { target.CallService("turn_off", new LightTurnOffParameters { Transition = transition, Flash = flash }); } - ///Turns off one or more lights. - ///The IEnumerable<LightEntity> to call this service for + ///Turn off one or more lights. + ///The IEnumerable<ILightEntityCore> to call this service for ///Duration it takes to get to next state. - ///If the light should flash. - public static void TurnOff(this IEnumerable target, long? transition = null, object? flash = null) + ///Tell light to flash, can be either value short or long. + public static void TurnOff(this IEnumerable target, long? transition = null, object? flash = null) { target.CallService("turn_off", new LightTurnOffParameters { Transition = transition, Flash = flash }); } - ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. - public static void TurnOn(this LightEntity target, LightTurnOnParameters data) + ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. + public static void TurnOn(this ILightEntityCore target, LightTurnOnParameters data) { target.CallService("turn_on", data); } - ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. - public static void TurnOn(this IEnumerable target, LightTurnOnParameters data) + ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. + public static void TurnOn(this IEnumerable target, LightTurnOnParameters data) { target.CallService("turn_on", data); } - ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. - ///The LightEntity to call this service for + ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. + ///The ILightEntityCore to call this service for ///Duration it takes to get to next state. - ///The color for the light (based on RGB - red, green, blue). - ///A list containing four integers between 0 and 255 representing the RGBW (red, green, blue, white) color for the light. eg: [255, 100, 100, 50] - ///A list containing five integers between 0 and 255 representing the RGBWW (red, green, blue, cold white, warm white) color for the light. eg: [255, 100, 100, 50, 70] - ///A human readable color name. - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] - ///Color for the light in XY-format. eg: [0.52, 0.43] - ///Color temperature for the light in mireds. - ///Color temperature for the light in Kelvin. - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. + ///The color in RGBW format. A list of four integers between 0 and 255 representing the values of red, green, blue, and white. eg: [255, 100, 100, 50] + ///The color in RGBWW format. A list of five integers between 0 and 255 representing the values of red, green, blue, cold white, and warm white. eg: [255, 100, 100, 50, 70] + ///A human-readable color name. + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] + ///Color temperature in mireds. + ///Color temperature in Kelvin. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. ///Change brightness by an amount. ///Change brightness by a percentage. ///Set the light to white mode. ///Name of a light profile to use. eg: relax - ///If the light should flash. + ///Tell light to flash, can be either value short or long. ///Light effect. - public static void TurnOn(this LightEntity target, long? transition = null, object? rgbColor = null, object? rgbwColor = null, object? rgbwwColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, long? brightnessStep = null, long? brightnessStepPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) + public static void TurnOn(this ILightEntityCore target, long? transition = null, object? rgbColor = null, object? rgbwColor = null, object? rgbwwColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, long? brightnessStep = null, long? brightnessStepPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) { target.CallService("turn_on", new LightTurnOnParameters { Transition = transition, RgbColor = rgbColor, RgbwColor = rgbwColor, RgbwwColor = rgbwwColor, ColorName = colorName, HsColor = hsColor, XyColor = xyColor, ColorTemp = colorTemp, Kelvin = kelvin, Brightness = brightness, BrightnessPct = brightnessPct, BrightnessStep = brightnessStep, BrightnessStepPct = brightnessStepPct, White = white, Profile = profile, Flash = flash, Effect = effect }); } - ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. - ///The IEnumerable<LightEntity> to call this service for + ///Turn on one or more lights and adjust properties of the light, even when they are turned on already. + ///The IEnumerable<ILightEntityCore> to call this service for ///Duration it takes to get to next state. - ///The color for the light (based on RGB - red, green, blue). - ///A list containing four integers between 0 and 255 representing the RGBW (red, green, blue, white) color for the light. eg: [255, 100, 100, 50] - ///A list containing five integers between 0 and 255 representing the RGBWW (red, green, blue, cold white, warm white) color for the light. eg: [255, 100, 100, 50, 70] - ///A human readable color name. - ///Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100. eg: [300, 70] - ///Color for the light in XY-format. eg: [0.52, 0.43] - ///Color temperature for the light in mireds. - ///Color temperature for the light in Kelvin. - ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. - ///Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. + ///The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue. + ///The color in RGBW format. A list of four integers between 0 and 255 representing the values of red, green, blue, and white. eg: [255, 100, 100, 50] + ///The color in RGBWW format. A list of five integers between 0 and 255 representing the values of red, green, blue, cold white, and warm white. eg: [255, 100, 100, 50, 70] + ///A human-readable color name. + ///Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100. eg: [300, 70] + ///Color in XY-format. A list of two decimal numbers between 0 and 1. eg: [0.52, 0.43] + ///Color temperature in mireds. + ///Color temperature in Kelvin. + ///Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness. + ///Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness. ///Change brightness by an amount. ///Change brightness by a percentage. ///Set the light to white mode. ///Name of a light profile to use. eg: relax - ///If the light should flash. + ///Tell light to flash, can be either value short or long. ///Light effect. - public static void TurnOn(this IEnumerable target, long? transition = null, object? rgbColor = null, object? rgbwColor = null, object? rgbwwColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, long? brightnessStep = null, long? brightnessStepPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) + public static void TurnOn(this IEnumerable target, long? transition = null, object? rgbColor = null, object? rgbwColor = null, object? rgbwwColor = null, object? colorName = null, object? hsColor = null, object? xyColor = null, object? colorTemp = null, long? kelvin = null, long? brightness = null, long? brightnessPct = null, long? brightnessStep = null, long? brightnessStepPct = null, object? white = null, string? profile = null, object? flash = null, string? effect = null) { target.CallService("turn_on", new LightTurnOnParameters { Transition = transition, RgbColor = rgbColor, RgbwColor = rgbwColor, RgbwwColor = rgbwwColor, ColorName = colorName, HsColor = hsColor, XyColor = xyColor, ColorTemp = colorTemp, Kelvin = kelvin, Brightness = brightness, BrightnessPct = brightnessPct, BrightnessStep = brightnessStep, BrightnessStepPct = brightnessStepPct, White = white, Profile = profile, Flash = flash, Effect = effect }); } @@ -18482,416 +18705,416 @@ public static void TurnOn(this IEnumerable target, long? transition public static class MediaPlayerEntityExtensionMethods { - ///Send the media player the command to clear players playlist. - public static void ClearPlaylist(this MediaPlayerEntity target) + ///Clears the playlist. + public static void ClearPlaylist(this IMediaPlayerEntityCore target) { target.CallService("clear_playlist"); } - ///Send the media player the command to clear players playlist. - public static void ClearPlaylist(this IEnumerable target) + ///Clears the playlist. + public static void ClearPlaylist(this IEnumerable target) { target.CallService("clear_playlist"); } - ///Group players together. Only works on platforms with support for player groups. - public static void Join(this MediaPlayerEntity target, MediaPlayerJoinParameters data) + ///Groups media players together for synchronous playback. Only works on supported multiroom audio systems. + public static void Join(this IMediaPlayerEntityCore target, MediaPlayerJoinParameters data) { target.CallService("join", data); } - ///Group players together. Only works on platforms with support for player groups. - public static void Join(this IEnumerable target, MediaPlayerJoinParameters data) + ///Groups media players together for synchronous playback. Only works on supported multiroom audio systems. + public static void Join(this IEnumerable target, MediaPlayerJoinParameters data) { target.CallService("join", data); } - ///Group players together. Only works on platforms with support for player groups. - ///The MediaPlayerEntity to call this service for - ///The players which will be synced with the target player. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 - public static void Join(this MediaPlayerEntity target, string groupMembers) + ///Groups media players together for synchronous playback. Only works on supported multiroom audio systems. + ///The IMediaPlayerEntityCore to call this service for + ///The players which will be synced with the playback specified in `target`. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 + public static void Join(this IMediaPlayerEntityCore target, string groupMembers) { target.CallService("join", new MediaPlayerJoinParameters { GroupMembers = groupMembers }); } - ///Group players together. Only works on platforms with support for player groups. - ///The IEnumerable<MediaPlayerEntity> to call this service for - ///The players which will be synced with the target player. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 - public static void Join(this IEnumerable target, string groupMembers) + ///Groups media players together for synchronous playback. Only works on supported multiroom audio systems. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for + ///The players which will be synced with the playback specified in `target`. eg: - media_player.multiroom_player2 - media_player.multiroom_player3 + public static void Join(this IEnumerable target, string groupMembers) { target.CallService("join", new MediaPlayerJoinParameters { GroupMembers = groupMembers }); } - ///Send the media player the command for next track. - public static void MediaNextTrack(this MediaPlayerEntity target) + ///Selects the next track. + public static void MediaNextTrack(this IMediaPlayerEntityCore target) { target.CallService("media_next_track"); } - ///Send the media player the command for next track. - public static void MediaNextTrack(this IEnumerable target) + ///Selects the next track. + public static void MediaNextTrack(this IEnumerable target) { target.CallService("media_next_track"); } - ///Send the media player the command for pause. - public static void MediaPause(this MediaPlayerEntity target) + ///Pauses. + public static void MediaPause(this IMediaPlayerEntityCore target) { target.CallService("media_pause"); } - ///Send the media player the command for pause. - public static void MediaPause(this IEnumerable target) + ///Pauses. + public static void MediaPause(this IEnumerable target) { target.CallService("media_pause"); } - ///Send the media player the command for play. - public static void MediaPlay(this MediaPlayerEntity target) + ///Starts playing. + public static void MediaPlay(this IMediaPlayerEntityCore target) { target.CallService("media_play"); } - ///Send the media player the command for play. - public static void MediaPlay(this IEnumerable target) + ///Starts playing. + public static void MediaPlay(this IEnumerable target) { target.CallService("media_play"); } - ///Toggle media player play/pause state. - public static void MediaPlayPause(this MediaPlayerEntity target) + ///Toggles play/pause. + public static void MediaPlayPause(this IMediaPlayerEntityCore target) { target.CallService("media_play_pause"); } - ///Toggle media player play/pause state. - public static void MediaPlayPause(this IEnumerable target) + ///Toggles play/pause. + public static void MediaPlayPause(this IEnumerable target) { target.CallService("media_play_pause"); } - ///Send the media player the command for previous track. - public static void MediaPreviousTrack(this MediaPlayerEntity target) + ///Selects the previous track. + public static void MediaPreviousTrack(this IMediaPlayerEntityCore target) { target.CallService("media_previous_track"); } - ///Send the media player the command for previous track. - public static void MediaPreviousTrack(this IEnumerable target) + ///Selects the previous track. + public static void MediaPreviousTrack(this IEnumerable target) { target.CallService("media_previous_track"); } - ///Send the media player the command to seek in current playing media. - public static void MediaSeek(this MediaPlayerEntity target, MediaPlayerMediaSeekParameters data) + ///Allows you to go to a different part of the media that is currently playing. + public static void MediaSeek(this IMediaPlayerEntityCore target, MediaPlayerMediaSeekParameters data) { target.CallService("media_seek", data); } - ///Send the media player the command to seek in current playing media. - public static void MediaSeek(this IEnumerable target, MediaPlayerMediaSeekParameters data) + ///Allows you to go to a different part of the media that is currently playing. + public static void MediaSeek(this IEnumerable target, MediaPlayerMediaSeekParameters data) { target.CallService("media_seek", data); } - ///Send the media player the command to seek in current playing media. - ///The MediaPlayerEntity to call this service for - ///Position to seek to. The format is platform dependent. - public static void MediaSeek(this MediaPlayerEntity target, double seekPosition) + ///Allows you to go to a different part of the media that is currently playing. + ///The IMediaPlayerEntityCore to call this service for + ///Target position in the currently playing media. The format is platform dependent. + public static void MediaSeek(this IMediaPlayerEntityCore target, double seekPosition) { target.CallService("media_seek", new MediaPlayerMediaSeekParameters { SeekPosition = seekPosition }); } - ///Send the media player the command to seek in current playing media. - ///The IEnumerable<MediaPlayerEntity> to call this service for - ///Position to seek to. The format is platform dependent. - public static void MediaSeek(this IEnumerable target, double seekPosition) + ///Allows you to go to a different part of the media that is currently playing. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for + ///Target position in the currently playing media. The format is platform dependent. + public static void MediaSeek(this IEnumerable target, double seekPosition) { target.CallService("media_seek", new MediaPlayerMediaSeekParameters { SeekPosition = seekPosition }); } - ///Send the media player the stop command. - public static void MediaStop(this MediaPlayerEntity target) + ///Stops playing. + public static void MediaStop(this IMediaPlayerEntityCore target) { target.CallService("media_stop"); } - ///Send the media player the stop command. - public static void MediaStop(this IEnumerable target) + ///Stops playing. + public static void MediaStop(this IEnumerable target) { target.CallService("media_stop"); } - ///Send the media player the command for playing media. - public static void PlayMedia(this MediaPlayerEntity target, MediaPlayerPlayMediaParameters data) + ///Starts playing specified media. + public static void PlayMedia(this IMediaPlayerEntityCore target, MediaPlayerPlayMediaParameters data) { target.CallService("play_media", data); } - ///Send the media player the command for playing media. - public static void PlayMedia(this IEnumerable target, MediaPlayerPlayMediaParameters data) + ///Starts playing specified media. + public static void PlayMedia(this IEnumerable target, MediaPlayerPlayMediaParameters data) { target.CallService("play_media", data); } - ///Send the media player the command for playing media. - ///The MediaPlayerEntity to call this service for + ///Starts playing specified media. + ///The IMediaPlayerEntityCore to call this service for ///The ID of the content to play. Platform dependent. eg: https://home-assistant.io/images/cast/splash.png - ///The type of the content to play. Like image, music, tvshow, video, episode, channel or playlist. eg: music + ///The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music ///If the content should be played now or be added to the queue. ///If the media should be played as an announcement. eg: true - public static void PlayMedia(this MediaPlayerEntity target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null) + public static void PlayMedia(this IMediaPlayerEntityCore target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null) { target.CallService("play_media", new MediaPlayerPlayMediaParameters { MediaContentId = mediaContentId, MediaContentType = mediaContentType, Enqueue = enqueue, Announce = announce }); } - ///Send the media player the command for playing media. - ///The IEnumerable<MediaPlayerEntity> to call this service for + ///Starts playing specified media. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for ///The ID of the content to play. Platform dependent. eg: https://home-assistant.io/images/cast/splash.png - ///The type of the content to play. Like image, music, tvshow, video, episode, channel or playlist. eg: music + ///The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist. eg: music ///If the content should be played now or be added to the queue. ///If the media should be played as an announcement. eg: true - public static void PlayMedia(this IEnumerable target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null) + public static void PlayMedia(this IEnumerable target, string mediaContentId, string mediaContentType, object? enqueue = null, bool? announce = null) { target.CallService("play_media", new MediaPlayerPlayMediaParameters { MediaContentId = mediaContentId, MediaContentType = mediaContentType, Enqueue = enqueue, Announce = announce }); } - ///Set repeat mode - public static void RepeatSet(this MediaPlayerEntity target, MediaPlayerRepeatSetParameters data) + ///Playback mode that plays the media in a loop. + public static void RepeatSet(this IMediaPlayerEntityCore target, MediaPlayerRepeatSetParameters data) { target.CallService("repeat_set", data); } - ///Set repeat mode - public static void RepeatSet(this IEnumerable target, MediaPlayerRepeatSetParameters data) + ///Playback mode that plays the media in a loop. + public static void RepeatSet(this IEnumerable target, MediaPlayerRepeatSetParameters data) { target.CallService("repeat_set", data); } - ///Set repeat mode - ///The MediaPlayerEntity to call this service for + ///Playback mode that plays the media in a loop. + ///The IMediaPlayerEntityCore to call this service for ///Repeat mode to set. - public static void RepeatSet(this MediaPlayerEntity target, object repeat) + public static void RepeatSet(this IMediaPlayerEntityCore target, object repeat) { target.CallService("repeat_set", new MediaPlayerRepeatSetParameters { Repeat = repeat }); } - ///Set repeat mode - ///The IEnumerable<MediaPlayerEntity> to call this service for + ///Playback mode that plays the media in a loop. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for ///Repeat mode to set. - public static void RepeatSet(this IEnumerable target, object repeat) + public static void RepeatSet(this IEnumerable target, object repeat) { target.CallService("repeat_set", new MediaPlayerRepeatSetParameters { Repeat = repeat }); } - ///Send the media player the command to change sound mode. - public static void SelectSoundMode(this MediaPlayerEntity target, MediaPlayerSelectSoundModeParameters data) + ///Selects a specific sound mode. + public static void SelectSoundMode(this IMediaPlayerEntityCore target, MediaPlayerSelectSoundModeParameters data) { target.CallService("select_sound_mode", data); } - ///Send the media player the command to change sound mode. - public static void SelectSoundMode(this IEnumerable target, MediaPlayerSelectSoundModeParameters data) + ///Selects a specific sound mode. + public static void SelectSoundMode(this IEnumerable target, MediaPlayerSelectSoundModeParameters data) { target.CallService("select_sound_mode", data); } - ///Send the media player the command to change sound mode. - ///The MediaPlayerEntity to call this service for + ///Selects a specific sound mode. + ///The IMediaPlayerEntityCore to call this service for ///Name of the sound mode to switch to. eg: Music - public static void SelectSoundMode(this MediaPlayerEntity target, string? soundMode = null) + public static void SelectSoundMode(this IMediaPlayerEntityCore target, string? soundMode = null) { target.CallService("select_sound_mode", new MediaPlayerSelectSoundModeParameters { SoundMode = soundMode }); } - ///Send the media player the command to change sound mode. - ///The IEnumerable<MediaPlayerEntity> to call this service for + ///Selects a specific sound mode. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for ///Name of the sound mode to switch to. eg: Music - public static void SelectSoundMode(this IEnumerable target, string? soundMode = null) + public static void SelectSoundMode(this IEnumerable target, string? soundMode = null) { target.CallService("select_sound_mode", new MediaPlayerSelectSoundModeParameters { SoundMode = soundMode }); } - ///Send the media player the command to change input source. - public static void SelectSource(this MediaPlayerEntity target, MediaPlayerSelectSourceParameters data) + ///Sends the media player the command to change input source. + public static void SelectSource(this IMediaPlayerEntityCore target, MediaPlayerSelectSourceParameters data) { target.CallService("select_source", data); } - ///Send the media player the command to change input source. - public static void SelectSource(this IEnumerable target, MediaPlayerSelectSourceParameters data) + ///Sends the media player the command to change input source. + public static void SelectSource(this IEnumerable target, MediaPlayerSelectSourceParameters data) { target.CallService("select_source", data); } - ///Send the media player the command to change input source. - ///The MediaPlayerEntity to call this service for + ///Sends the media player the command to change input source. + ///The IMediaPlayerEntityCore to call this service for ///Name of the source to switch to. Platform dependent. eg: video1 - public static void SelectSource(this MediaPlayerEntity target, string source) + public static void SelectSource(this IMediaPlayerEntityCore target, string source) { target.CallService("select_source", new MediaPlayerSelectSourceParameters { Source = source }); } - ///Send the media player the command to change input source. - ///The IEnumerable<MediaPlayerEntity> to call this service for + ///Sends the media player the command to change input source. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for ///Name of the source to switch to. Platform dependent. eg: video1 - public static void SelectSource(this IEnumerable target, string source) + public static void SelectSource(this IEnumerable target, string source) { target.CallService("select_source", new MediaPlayerSelectSourceParameters { Source = source }); } - ///Set shuffling state. - public static void ShuffleSet(this MediaPlayerEntity target, MediaPlayerShuffleSetParameters data) + ///Playback mode that selects the media in randomized order. + public static void ShuffleSet(this IMediaPlayerEntityCore target, MediaPlayerShuffleSetParameters data) { target.CallService("shuffle_set", data); } - ///Set shuffling state. - public static void ShuffleSet(this IEnumerable target, MediaPlayerShuffleSetParameters data) + ///Playback mode that selects the media in randomized order. + public static void ShuffleSet(this IEnumerable target, MediaPlayerShuffleSetParameters data) { target.CallService("shuffle_set", data); } - ///Set shuffling state. - ///The MediaPlayerEntity to call this service for - ///True/false for enabling/disabling shuffle. - public static void ShuffleSet(this MediaPlayerEntity target, bool shuffle) + ///Playback mode that selects the media in randomized order. + ///The IMediaPlayerEntityCore to call this service for + ///Whether or not shuffle mode is enabled. + public static void ShuffleSet(this IMediaPlayerEntityCore target, bool shuffle) { target.CallService("shuffle_set", new MediaPlayerShuffleSetParameters { Shuffle = shuffle }); } - ///Set shuffling state. - ///The IEnumerable<MediaPlayerEntity> to call this service for - ///True/false for enabling/disabling shuffle. - public static void ShuffleSet(this IEnumerable target, bool shuffle) + ///Playback mode that selects the media in randomized order. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for + ///Whether or not shuffle mode is enabled. + public static void ShuffleSet(this IEnumerable target, bool shuffle) { target.CallService("shuffle_set", new MediaPlayerShuffleSetParameters { Shuffle = shuffle }); } - ///Toggles a media player power state. - public static void Toggle(this MediaPlayerEntity target) + ///Toggles a media player on/off. + public static void Toggle(this IMediaPlayerEntityCore target) { target.CallService("toggle"); } - ///Toggles a media player power state. - public static void Toggle(this IEnumerable target) + ///Toggles a media player on/off. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Turn a media player power off. - public static void TurnOff(this MediaPlayerEntity target) + ///Turns off the power of the media player. + public static void TurnOff(this IMediaPlayerEntityCore target) { target.CallService("turn_off"); } - ///Turn a media player power off. - public static void TurnOff(this IEnumerable target) + ///Turns off the power of the media player. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn a media player power on. - public static void TurnOn(this MediaPlayerEntity target) + ///Turns on the power of the media player. + public static void TurnOn(this IMediaPlayerEntityCore target) { target.CallService("turn_on"); } - ///Turn a media player power on. - public static void TurnOn(this IEnumerable target) + ///Turns on the power of the media player. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } - ///Unjoin the player from a group. Only works on platforms with support for player groups. - public static void Unjoin(this MediaPlayerEntity target) + ///Removes the player from a group. Only works on platforms which support player groups. + public static void Unjoin(this IMediaPlayerEntityCore target) { target.CallService("unjoin"); } - ///Unjoin the player from a group. Only works on platforms with support for player groups. - public static void Unjoin(this IEnumerable target) + ///Removes the player from a group. Only works on platforms which support player groups. + public static void Unjoin(this IEnumerable target) { target.CallService("unjoin"); } - ///Turn a media player volume down. - public static void VolumeDown(this MediaPlayerEntity target) + ///Turns down the volume. + public static void VolumeDown(this IMediaPlayerEntityCore target) { target.CallService("volume_down"); } - ///Turn a media player volume down. - public static void VolumeDown(this IEnumerable target) + ///Turns down the volume. + public static void VolumeDown(this IEnumerable target) { target.CallService("volume_down"); } - ///Mute a media player's volume. - public static void VolumeMute(this MediaPlayerEntity target, MediaPlayerVolumeMuteParameters data) + ///Mutes or unmutes the media player. + public static void VolumeMute(this IMediaPlayerEntityCore target, MediaPlayerVolumeMuteParameters data) { target.CallService("volume_mute", data); } - ///Mute a media player's volume. - public static void VolumeMute(this IEnumerable target, MediaPlayerVolumeMuteParameters data) + ///Mutes or unmutes the media player. + public static void VolumeMute(this IEnumerable target, MediaPlayerVolumeMuteParameters data) { target.CallService("volume_mute", data); } - ///Mute a media player's volume. - ///The MediaPlayerEntity to call this service for - ///True/false for mute/unmute. - public static void VolumeMute(this MediaPlayerEntity target, bool isVolumeMuted) + ///Mutes or unmutes the media player. + ///The IMediaPlayerEntityCore to call this service for + ///Defines whether or not it is muted. + public static void VolumeMute(this IMediaPlayerEntityCore target, bool isVolumeMuted) { target.CallService("volume_mute", new MediaPlayerVolumeMuteParameters { IsVolumeMuted = isVolumeMuted }); } - ///Mute a media player's volume. - ///The IEnumerable<MediaPlayerEntity> to call this service for - ///True/false for mute/unmute. - public static void VolumeMute(this IEnumerable target, bool isVolumeMuted) + ///Mutes or unmutes the media player. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for + ///Defines whether or not it is muted. + public static void VolumeMute(this IEnumerable target, bool isVolumeMuted) { target.CallService("volume_mute", new MediaPlayerVolumeMuteParameters { IsVolumeMuted = isVolumeMuted }); } - ///Set a media player's volume level. - public static void VolumeSet(this MediaPlayerEntity target, MediaPlayerVolumeSetParameters data) + ///Sets the volume level. + public static void VolumeSet(this IMediaPlayerEntityCore target, MediaPlayerVolumeSetParameters data) { target.CallService("volume_set", data); } - ///Set a media player's volume level. - public static void VolumeSet(this IEnumerable target, MediaPlayerVolumeSetParameters data) + ///Sets the volume level. + public static void VolumeSet(this IEnumerable target, MediaPlayerVolumeSetParameters data) { target.CallService("volume_set", data); } - ///Set a media player's volume level. - ///The MediaPlayerEntity to call this service for - ///Volume level to set as float. - public static void VolumeSet(this MediaPlayerEntity target, double volumeLevel) + ///Sets the volume level. + ///The IMediaPlayerEntityCore to call this service for + ///The volume. 0 is inaudible, 1 is the maximum volume. + public static void VolumeSet(this IMediaPlayerEntityCore target, double volumeLevel) { target.CallService("volume_set", new MediaPlayerVolumeSetParameters { VolumeLevel = volumeLevel }); } - ///Set a media player's volume level. - ///The IEnumerable<MediaPlayerEntity> to call this service for - ///Volume level to set as float. - public static void VolumeSet(this IEnumerable target, double volumeLevel) + ///Sets the volume level. + ///The IEnumerable<IMediaPlayerEntityCore> to call this service for + ///The volume. 0 is inaudible, 1 is the maximum volume. + public static void VolumeSet(this IEnumerable target, double volumeLevel) { target.CallService("volume_set", new MediaPlayerVolumeSetParameters { VolumeLevel = volumeLevel }); } - ///Turn a media player volume up. - public static void VolumeUp(this MediaPlayerEntity target) + ///Turns up the volume. + public static void VolumeUp(this IMediaPlayerEntityCore target) { target.CallService("volume_up"); } - ///Turn a media player volume up. - public static void VolumeUp(this IEnumerable target) + ///Turns up the volume. + public static void VolumeUp(this IEnumerable target) { target.CallService("volume_up"); } @@ -18900,57 +19123,57 @@ public static void VolumeUp(this IEnumerable target) public static class MelcloudEntityExtensionMethods { ///Sets horizontal vane position. - public static void SetVaneHorizontal(this ClimateEntity target, MelcloudSetVaneHorizontalParameters data) + public static void SetVaneHorizontal(this IClimateEntityCore target, MelcloudSetVaneHorizontalParameters data) { target.CallService("set_vane_horizontal", data); } ///Sets horizontal vane position. - public static void SetVaneHorizontal(this IEnumerable target, MelcloudSetVaneHorizontalParameters data) + public static void SetVaneHorizontal(this IEnumerable target, MelcloudSetVaneHorizontalParameters data) { target.CallService("set_vane_horizontal", data); } ///Sets horizontal vane position. - ///The ClimateEntity to call this service for - ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto - public static void SetVaneHorizontal(this ClimateEntity target, string position) + ///The IClimateEntityCore to call this service for + ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto + public static void SetVaneHorizontal(this IClimateEntityCore target, string position) { target.CallService("set_vane_horizontal", new MelcloudSetVaneHorizontalParameters { Position = position }); } ///Sets horizontal vane position. - ///The IEnumerable<ClimateEntity> to call this service for - ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto - public static void SetVaneHorizontal(this IEnumerable target, string position) + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute. eg: auto + public static void SetVaneHorizontal(this IEnumerable target, string position) { target.CallService("set_vane_horizontal", new MelcloudSetVaneHorizontalParameters { Position = position }); } ///Sets vertical vane position. - public static void SetVaneVertical(this ClimateEntity target, MelcloudSetVaneVerticalParameters data) + public static void SetVaneVertical(this IClimateEntityCore target, MelcloudSetVaneVerticalParameters data) { target.CallService("set_vane_vertical", data); } ///Sets vertical vane position. - public static void SetVaneVertical(this IEnumerable target, MelcloudSetVaneVerticalParameters data) + public static void SetVaneVertical(this IEnumerable target, MelcloudSetVaneVerticalParameters data) { target.CallService("set_vane_vertical", data); } ///Sets vertical vane position. - ///The ClimateEntity to call this service for - ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto - public static void SetVaneVertical(this ClimateEntity target, string position) + ///The IClimateEntityCore to call this service for + ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto + public static void SetVaneVertical(this IClimateEntityCore target, string position) { target.CallService("set_vane_vertical", new MelcloudSetVaneVerticalParameters { Position = position }); } ///Sets vertical vane position. - ///The IEnumerable<ClimateEntity> to call this service for - ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto - public static void SetVaneVertical(this IEnumerable target, string position) + ///The IEnumerable<IClimateEntityCore> to call this service for + ///Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute. eg: auto + public static void SetVaneVertical(this IEnumerable target, string position) { target.CallService("set_vane_vertical", new MelcloudSetVaneVerticalParameters { Position = position }); } @@ -18958,30 +19181,30 @@ public static void SetVaneVertical(this IEnumerable target, strin public static class NumberEntityExtensionMethods { - ///Set the value of a Number entity. - public static void SetValue(this NumberEntity target, NumberSetValueParameters data) + ///Sets the value of a number. + public static void SetValue(this INumberEntityCore target, NumberSetValueParameters data) { target.CallService("set_value", data); } - ///Set the value of a Number entity. - public static void SetValue(this IEnumerable target, NumberSetValueParameters data) + ///Sets the value of a number. + public static void SetValue(this IEnumerable target, NumberSetValueParameters data) { target.CallService("set_value", data); } - ///Set the value of a Number entity. - ///The NumberEntity to call this service for - ///The target value the entity should be set to. eg: 42 - public static void SetValue(this NumberEntity target, string? value = null) + ///Sets the value of a number. + ///The INumberEntityCore to call this service for + ///The target value to set. eg: 42 + public static void SetValue(this INumberEntityCore target, string? value = null) { target.CallService("set_value", new NumberSetValueParameters { Value = value }); } - ///Set the value of a Number entity. - ///The IEnumerable<NumberEntity> to call this service for - ///The target value the entity should be set to. eg: 42 - public static void SetValue(this IEnumerable target, string? value = null) + ///Sets the value of a number. + ///The IEnumerable<INumberEntityCore> to call this service for + ///The target value to set. eg: 42 + public static void SetValue(this IEnumerable target, string? value = null) { target.CallService("set_value", new NumberSetValueParameters { Value = value }); } @@ -18990,35 +19213,35 @@ public static void SetValue(this IEnumerable target, string? value public static class OctopusEnergyEntityExtensionMethods { ///Updates a given target rate's config. Please note this is temporary and will not persist between restarts. - public static void UpdateTargetConfig(this BinarySensorEntity target, OctopusEnergyUpdateTargetConfigParameters data) + public static void UpdateTargetConfig(this IBinarySensorEntityCore target, OctopusEnergyUpdateTargetConfigParameters data) { target.CallService("update_target_config", data); } ///Updates a given target rate's config. Please note this is temporary and will not persist between restarts. - public static void UpdateTargetConfig(this IEnumerable target, OctopusEnergyUpdateTargetConfigParameters data) + public static void UpdateTargetConfig(this IEnumerable target, OctopusEnergyUpdateTargetConfigParameters data) { target.CallService("update_target_config", data); } ///Updates a given target rate's config. Please note this is temporary and will not persist between restarts. - ///The BinarySensorEntity to call this service for + ///The IBinarySensorEntityCore to call this service for ///The optional number of hours the target rate sensor should come on during a 24 hour period. eg: 1.5 ///The optional time the evaluation period should start. eg: 06:00 ///The optional time the evaluation period should end. eg: 19:00 ///The optional offset to apply to the target rate when it starts - public static void UpdateTargetConfig(this BinarySensorEntity target, string? targetHours = null, string? targetStartTime = null, string? targetEndTime = null, string? targetOffset = null) + public static void UpdateTargetConfig(this IBinarySensorEntityCore target, string? targetHours = null, string? targetStartTime = null, string? targetEndTime = null, string? targetOffset = null) { target.CallService("update_target_config", new OctopusEnergyUpdateTargetConfigParameters { TargetHours = targetHours, TargetStartTime = targetStartTime, TargetEndTime = targetEndTime, TargetOffset = targetOffset }); } ///Updates a given target rate's config. Please note this is temporary and will not persist between restarts. - ///The IEnumerable<BinarySensorEntity> to call this service for + ///The IEnumerable<IBinarySensorEntityCore> to call this service for ///The optional number of hours the target rate sensor should come on during a 24 hour period. eg: 1.5 ///The optional time the evaluation period should start. eg: 06:00 ///The optional time the evaluation period should end. eg: 19:00 ///The optional offset to apply to the target rate when it starts - public static void UpdateTargetConfig(this IEnumerable target, string? targetHours = null, string? targetStartTime = null, string? targetEndTime = null, string? targetOffset = null) + public static void UpdateTargetConfig(this IEnumerable target, string? targetHours = null, string? targetStartTime = null, string? targetEndTime = null, string? targetOffset = null) { target.CallService("update_target_config", new OctopusEnergyUpdateTargetConfigParameters { TargetHours = targetHours, TargetStartTime = targetStartTime, TargetEndTime = targetEndTime, TargetOffset = targetOffset }); } @@ -19026,30 +19249,30 @@ public static void UpdateTargetConfig(this IEnumerable targe public static class PiHoleEntityExtensionMethods { - ///Disable configured Pi-hole(s) for an amount of time - public static void Disable(this SwitchEntity target, PiHoleDisableParameters data) + ///Disables configured Pi-hole(s) for an amount of time. + public static void Disable(this ISwitchEntityCore target, PiHoleDisableParameters data) { target.CallService("disable", data); } - ///Disable configured Pi-hole(s) for an amount of time - public static void Disable(this IEnumerable target, PiHoleDisableParameters data) + ///Disables configured Pi-hole(s) for an amount of time. + public static void Disable(this IEnumerable target, PiHoleDisableParameters data) { target.CallService("disable", data); } - ///Disable configured Pi-hole(s) for an amount of time - ///The SwitchEntity to call this service for - ///Time that the Pi-hole should be disabled for eg: 00:00:15 - public static void Disable(this SwitchEntity target, string duration) + ///Disables configured Pi-hole(s) for an amount of time. + ///The ISwitchEntityCore to call this service for + ///Time that the Pi-hole should be disabled for. eg: 00:00:15 + public static void Disable(this ISwitchEntityCore target, string duration) { target.CallService("disable", new PiHoleDisableParameters { Duration = duration }); } - ///Disable configured Pi-hole(s) for an amount of time - ///The IEnumerable<SwitchEntity> to call this service for - ///Time that the Pi-hole should be disabled for eg: 00:00:15 - public static void Disable(this IEnumerable target, string duration) + ///Disables configured Pi-hole(s) for an amount of time. + ///The IEnumerable<ISwitchEntityCore> to call this service for + ///Time that the Pi-hole should be disabled for. eg: 00:00:15 + public static void Disable(this IEnumerable target, string duration) { target.CallService("disable", new PiHoleDisableParameters { Duration = duration }); } @@ -19057,295 +19280,323 @@ public static void Disable(this IEnumerable target, string duratio public static class PowercalcEntityExtensionMethods { - ///Activate playbook - public static void ActivatePlaybook(this SensorEntity target, PowercalcActivatePlaybookParameters data) + ///Start execution of a playbook. + public static void ActivatePlaybook(this ISensorEntityCore target, PowercalcActivatePlaybookParameters data) { target.CallService("activate_playbook", data); } - ///Activate playbook - public static void ActivatePlaybook(this IEnumerable target, PowercalcActivatePlaybookParameters data) + ///Start execution of a playbook. + public static void ActivatePlaybook(this IEnumerable target, PowercalcActivatePlaybookParameters data) { target.CallService("activate_playbook", data); } - ///Activate playbook - ///The SensorEntity to call this service for - ///Playbook identifier eg: program1 - public static void ActivatePlaybook(this SensorEntity target, string playbookId) + ///Start execution of a playbook. + ///The ISensorEntityCore to call this service for + ///Playbook identifier. eg: program1 + public static void ActivatePlaybook(this ISensorEntityCore target, string playbookId) { target.CallService("activate_playbook", new PowercalcActivatePlaybookParameters { PlaybookId = playbookId }); } - ///Activate playbook - ///The IEnumerable<SensorEntity> to call this service for - ///Playbook identifier eg: program1 - public static void ActivatePlaybook(this IEnumerable target, string playbookId) + ///Start execution of a playbook. + ///The IEnumerable<ISensorEntityCore> to call this service for + ///Playbook identifier. eg: program1 + public static void ActivatePlaybook(this IEnumerable target, string playbookId) { target.CallService("activate_playbook", new PowercalcActivatePlaybookParameters { PlaybookId = playbookId }); } ///Sets the energy sensor to a given kWh value. - public static void CalibrateEnergy(this SensorEntity target, PowercalcCalibrateEnergyParameters data) + public static void CalibrateEnergy(this ISensorEntityCore target, PowercalcCalibrateEnergyParameters data) { target.CallService("calibrate_energy", data); } ///Sets the energy sensor to a given kWh value. - public static void CalibrateEnergy(this IEnumerable target, PowercalcCalibrateEnergyParameters data) + public static void CalibrateEnergy(this IEnumerable target, PowercalcCalibrateEnergyParameters data) { target.CallService("calibrate_energy", data); } ///Sets the energy sensor to a given kWh value. - ///The SensorEntity to call this service for - ///Value to which set the meter eg: 100 - public static void CalibrateEnergy(this SensorEntity target, string value) + ///The ISensorEntityCore to call this service for + ///The value to set. eg: 100 + public static void CalibrateEnergy(this ISensorEntityCore target, string value) { target.CallService("calibrate_energy", new PowercalcCalibrateEnergyParameters { Value = value }); } ///Sets the energy sensor to a given kWh value. - ///The IEnumerable<SensorEntity> to call this service for - ///Value to which set the meter eg: 100 - public static void CalibrateEnergy(this IEnumerable target, string value) + ///The IEnumerable<ISensorEntityCore> to call this service for + ///The value to set. eg: 100 + public static void CalibrateEnergy(this IEnumerable target, string value) { target.CallService("calibrate_energy", new PowercalcCalibrateEnergyParameters { Value = value }); } ///Calibrates a utility meter sensor. - public static void CalibrateUtilityMeter(this SensorEntity target, PowercalcCalibrateUtilityMeterParameters data) + public static void CalibrateUtilityMeter(this ISensorEntityCore target, PowercalcCalibrateUtilityMeterParameters data) { target.CallService("calibrate_utility_meter", data); } ///Calibrates a utility meter sensor. - public static void CalibrateUtilityMeter(this IEnumerable target, PowercalcCalibrateUtilityMeterParameters data) + public static void CalibrateUtilityMeter(this IEnumerable target, PowercalcCalibrateUtilityMeterParameters data) { target.CallService("calibrate_utility_meter", data); } ///Calibrates a utility meter sensor. - ///The SensorEntity to call this service for - ///Value to which set the meter eg: 100 - public static void CalibrateUtilityMeter(this SensorEntity target, string value) + ///The ISensorEntityCore to call this service for + ///The value to set. eg: 100 + public static void CalibrateUtilityMeter(this ISensorEntityCore target, string value) { target.CallService("calibrate_utility_meter", new PowercalcCalibrateUtilityMeterParameters { Value = value }); } ///Calibrates a utility meter sensor. - ///The IEnumerable<SensorEntity> to call this service for - ///Value to which set the meter eg: 100 - public static void CalibrateUtilityMeter(this IEnumerable target, string value) + ///The IEnumerable<ISensorEntityCore> to call this service for + ///The value to set. eg: 100 + public static void CalibrateUtilityMeter(this IEnumerable target, string value) { target.CallService("calibrate_utility_meter", new PowercalcCalibrateUtilityMeterParameters { Value = value }); } - ///Increases the sensor with a given amount - public static void IncreaseDailyEnergy(this SensorEntity target, PowercalcIncreaseDailyEnergyParameters data) + ///Increases the sensor with a given amount. + public static void IncreaseDailyEnergy(this ISensorEntityCore target, PowercalcIncreaseDailyEnergyParameters data) { target.CallService("increase_daily_energy", data); } - ///Increases the sensor with a given amount - public static void IncreaseDailyEnergy(this IEnumerable target, PowercalcIncreaseDailyEnergyParameters data) + ///Increases the sensor with a given amount. + public static void IncreaseDailyEnergy(this IEnumerable target, PowercalcIncreaseDailyEnergyParameters data) { target.CallService("increase_daily_energy", data); } - ///Increases the sensor with a given amount - ///The SensorEntity to call this service for - ///Amount to add to the sensor eg: 100 - public static void IncreaseDailyEnergy(this SensorEntity target, string value) + ///Increases the sensor with a given amount. + ///The ISensorEntityCore to call this service for + ///Amount to add to the sensor. eg: 100 + public static void IncreaseDailyEnergy(this ISensorEntityCore target, string value) { target.CallService("increase_daily_energy", new PowercalcIncreaseDailyEnergyParameters { Value = value }); } - ///Increases the sensor with a given amount - ///The IEnumerable<SensorEntity> to call this service for - ///Amount to add to the sensor eg: 100 - public static void IncreaseDailyEnergy(this IEnumerable target, string value) + ///Increases the sensor with a given amount. + ///The IEnumerable<ISensorEntityCore> to call this service for + ///Amount to add to the sensor. eg: 100 + public static void IncreaseDailyEnergy(this IEnumerable target, string value) { target.CallService("increase_daily_energy", new PowercalcIncreaseDailyEnergyParameters { Value = value }); } - ///Reset an energy sensor to zero kWh - public static void ResetEnergy(this SensorEntity target) + ///Reset an energy sensor to zero kWh. + public static void ResetEnergy(this ISensorEntityCore target) { target.CallService("reset_energy"); } - ///Reset an energy sensor to zero kWh - public static void ResetEnergy(this IEnumerable target) + ///Reset an energy sensor to zero kWh. + public static void ResetEnergy(this IEnumerable target) { target.CallService("reset_energy"); } - ///Stop active playbook - public static void StopPlaybook(this SensorEntity target) + ///Stop currently active playbook. + public static void StopPlaybook(this ISensorEntityCore target) { target.CallService("stop_playbook"); } - ///Stop active playbook - public static void StopPlaybook(this IEnumerable target) + ///Stop currently active playbook. + public static void StopPlaybook(this IEnumerable target) { target.CallService("stop_playbook"); } + + ///Some profiles in the library has different sub profiles. This service allows you to switch to another one. + public static void SwitchSubProfile(this ISensorEntityCore target, PowercalcSwitchSubProfileParameters data) + { + target.CallService("switch_sub_profile", data); + } + + ///Some profiles in the library has different sub profiles. This service allows you to switch to another one. + public static void SwitchSubProfile(this IEnumerable target, PowercalcSwitchSubProfileParameters data) + { + target.CallService("switch_sub_profile", data); + } + + ///Some profiles in the library has different sub profiles. This service allows you to switch to another one. + ///The ISensorEntityCore to call this service for + ///Define one of the possible sub profiles eg: nigh_vision + public static void SwitchSubProfile(this ISensorEntityCore target, string profile) + { + target.CallService("switch_sub_profile", new PowercalcSwitchSubProfileParameters { Profile = profile }); + } + + ///Some profiles in the library has different sub profiles. This service allows you to switch to another one. + ///The IEnumerable<ISensorEntityCore> to call this service for + ///Define one of the possible sub profiles eg: nigh_vision + public static void SwitchSubProfile(this IEnumerable target, string profile) + { + target.CallService("switch_sub_profile", new PowercalcSwitchSubProfileParameters { Profile = profile }); + } } public static class RemoteEntityExtensionMethods { ///Deletes a command or a list of commands from the database. - public static void DeleteCommand(this RemoteEntity target, RemoteDeleteCommandParameters data) + public static void DeleteCommand(this IRemoteEntityCore target, RemoteDeleteCommandParameters data) { target.CallService("delete_command", data); } ///Deletes a command or a list of commands from the database. - public static void DeleteCommand(this IEnumerable target, RemoteDeleteCommandParameters data) + public static void DeleteCommand(this IEnumerable target, RemoteDeleteCommandParameters data) { target.CallService("delete_command", data); } ///Deletes a command or a list of commands from the database. - ///The RemoteEntity to call this service for - ///Name of the device from which commands will be deleted. eg: television - ///A single command or a list of commands to delete. eg: Mute - public static void DeleteCommand(this RemoteEntity target, object command, string? device = null) + ///The IRemoteEntityCore to call this service for + ///Device from which commands will be deleted. eg: television + ///The single command or the list of commands to be deleted. eg: Mute + public static void DeleteCommand(this IRemoteEntityCore target, object command, string? device = null) { target.CallService("delete_command", new RemoteDeleteCommandParameters { Device = device, Command = command }); } ///Deletes a command or a list of commands from the database. - ///The IEnumerable<RemoteEntity> to call this service for - ///Name of the device from which commands will be deleted. eg: television - ///A single command or a list of commands to delete. eg: Mute - public static void DeleteCommand(this IEnumerable target, object command, string? device = null) + ///The IEnumerable<IRemoteEntityCore> to call this service for + ///Device from which commands will be deleted. eg: television + ///The single command or the list of commands to be deleted. eg: Mute + public static void DeleteCommand(this IEnumerable target, object command, string? device = null) { target.CallService("delete_command", new RemoteDeleteCommandParameters { Device = device, Command = command }); } ///Learns a command or a list of commands from a device. - public static void LearnCommand(this RemoteEntity target, RemoteLearnCommandParameters data) + public static void LearnCommand(this IRemoteEntityCore target, RemoteLearnCommandParameters data) { target.CallService("learn_command", data); } ///Learns a command or a list of commands from a device. - public static void LearnCommand(this IEnumerable target, RemoteLearnCommandParameters data) + public static void LearnCommand(this IEnumerable target, RemoteLearnCommandParameters data) { target.CallService("learn_command", data); } ///Learns a command or a list of commands from a device. - ///The RemoteEntity to call this service for + ///The IRemoteEntityCore to call this service for ///Device ID to learn command from. eg: television ///A single command or a list of commands to learn. eg: Turn on ///The type of command to be learned. - ///If code must be stored as alternative (useful for discrete remotes). + ///If code must be stored as an alternative. This is useful for discrete codes. Discrete codes are used for toggles that only perform one function. For example, a code to only turn a device on. If it is on already, sending the code won't change the state. ///Timeout for the command to be learned. - public static void LearnCommand(this RemoteEntity target, string? device = null, object? command = null, object? commandType = null, bool? alternative = null, long? timeout = null) + public static void LearnCommand(this IRemoteEntityCore target, string? device = null, object? command = null, object? commandType = null, bool? alternative = null, long? timeout = null) { target.CallService("learn_command", new RemoteLearnCommandParameters { Device = device, Command = command, CommandType = commandType, Alternative = alternative, Timeout = timeout }); } ///Learns a command or a list of commands from a device. - ///The IEnumerable<RemoteEntity> to call this service for + ///The IEnumerable<IRemoteEntityCore> to call this service for ///Device ID to learn command from. eg: television ///A single command or a list of commands to learn. eg: Turn on ///The type of command to be learned. - ///If code must be stored as alternative (useful for discrete remotes). + ///If code must be stored as an alternative. This is useful for discrete codes. Discrete codes are used for toggles that only perform one function. For example, a code to only turn a device on. If it is on already, sending the code won't change the state. ///Timeout for the command to be learned. - public static void LearnCommand(this IEnumerable target, string? device = null, object? command = null, object? commandType = null, bool? alternative = null, long? timeout = null) + public static void LearnCommand(this IEnumerable target, string? device = null, object? command = null, object? commandType = null, bool? alternative = null, long? timeout = null) { target.CallService("learn_command", new RemoteLearnCommandParameters { Device = device, Command = command, CommandType = commandType, Alternative = alternative, Timeout = timeout }); } ///Sends a command or a list of commands to a device. - public static void SendCommand(this RemoteEntity target, RemoteSendCommandParameters data) + public static void SendCommand(this IRemoteEntityCore target, RemoteSendCommandParameters data) { target.CallService("send_command", data); } ///Sends a command or a list of commands to a device. - public static void SendCommand(this IEnumerable target, RemoteSendCommandParameters data) + public static void SendCommand(this IEnumerable target, RemoteSendCommandParameters data) { target.CallService("send_command", data); } ///Sends a command or a list of commands to a device. - ///The RemoteEntity to call this service for + ///The IRemoteEntityCore to call this service for ///Device ID to send command to. eg: 32756745 ///A single command or a list of commands to send. eg: Play - ///The number of times you want to repeat the command(s). + ///The number of times you want to repeat the commands. ///The time you want to wait in between repeated commands. ///The time you want to have it held before the release is send. - public static void SendCommand(this RemoteEntity target, object command, string? device = null, long? numRepeats = null, double? delaySecs = null, double? holdSecs = null) + public static void SendCommand(this IRemoteEntityCore target, object command, string? device = null, long? numRepeats = null, double? delaySecs = null, double? holdSecs = null) { target.CallService("send_command", new RemoteSendCommandParameters { Device = device, Command = command, NumRepeats = numRepeats, DelaySecs = delaySecs, HoldSecs = holdSecs }); } ///Sends a command or a list of commands to a device. - ///The IEnumerable<RemoteEntity> to call this service for + ///The IEnumerable<IRemoteEntityCore> to call this service for ///Device ID to send command to. eg: 32756745 ///A single command or a list of commands to send. eg: Play - ///The number of times you want to repeat the command(s). + ///The number of times you want to repeat the commands. ///The time you want to wait in between repeated commands. ///The time you want to have it held before the release is send. - public static void SendCommand(this IEnumerable target, object command, string? device = null, long? numRepeats = null, double? delaySecs = null, double? holdSecs = null) + public static void SendCommand(this IEnumerable target, object command, string? device = null, long? numRepeats = null, double? delaySecs = null, double? holdSecs = null) { target.CallService("send_command", new RemoteSendCommandParameters { Device = device, Command = command, NumRepeats = numRepeats, DelaySecs = delaySecs, HoldSecs = holdSecs }); } - ///Toggles a device. - public static void Toggle(this RemoteEntity target) + ///Toggles a device on/off. + public static void Toggle(this IRemoteEntityCore target) { target.CallService("toggle"); } - ///Toggles a device. - public static void Toggle(this IEnumerable target) + ///Toggles a device on/off. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Sends the Power Off Command. - public static void TurnOff(this RemoteEntity target) + ///Turns the device off. + public static void TurnOff(this IRemoteEntityCore target) { target.CallService("turn_off"); } - ///Sends the Power Off Command. - public static void TurnOff(this IEnumerable target) + ///Turns the device off. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Sends the Power On Command. - public static void TurnOn(this RemoteEntity target, RemoteTurnOnParameters data) + ///Sends the power on command. + public static void TurnOn(this IRemoteEntityCore target, RemoteTurnOnParameters data) { target.CallService("turn_on", data); } - ///Sends the Power On Command. - public static void TurnOn(this IEnumerable target, RemoteTurnOnParameters data) + ///Sends the power on command. + public static void TurnOn(this IEnumerable target, RemoteTurnOnParameters data) { target.CallService("turn_on", data); } - ///Sends the Power On Command. - ///The RemoteEntity to call this service for - ///Activity ID or Activity Name to start. eg: BedroomTV - public static void TurnOn(this RemoteEntity target, string? activity = null) + ///Sends the power on command. + ///The IRemoteEntityCore to call this service for + ///Activity ID or activity name to be started. eg: BedroomTV + public static void TurnOn(this IRemoteEntityCore target, string? activity = null) { target.CallService("turn_on", new RemoteTurnOnParameters { Activity = activity }); } - ///Sends the Power On Command. - ///The IEnumerable<RemoteEntity> to call this service for - ///Activity ID or Activity Name to start. eg: BedroomTV - public static void TurnOn(this IEnumerable target, string? activity = null) + ///Sends the power on command. + ///The IEnumerable<IRemoteEntityCore> to call this service for + ///Activity ID or activity name to be started. eg: BedroomTV + public static void TurnOn(this IEnumerable target, string? activity = null) { target.CallService("turn_on", new RemoteTurnOnParameters { Activity = activity }); } @@ -19353,30 +19604,30 @@ public static void TurnOn(this IEnumerable target, string? activit public static class SceneEntityExtensionMethods { - ///Activate a scene. - public static void TurnOn(this SceneEntity target, SceneTurnOnParameters data) + ///Activates a scene. + public static void TurnOn(this ISceneEntityCore target, SceneTurnOnParameters data) { target.CallService("turn_on", data); } - ///Activate a scene. - public static void TurnOn(this IEnumerable target, SceneTurnOnParameters data) + ///Activates a scene. + public static void TurnOn(this IEnumerable target, SceneTurnOnParameters data) { target.CallService("turn_on", data); } - ///Activate a scene. - ///The SceneEntity to call this service for - ///Transition duration it takes to bring devices to the state defined in the scene. - public static void TurnOn(this SceneEntity target, long? transition = null) + ///Activates a scene. + ///The ISceneEntityCore to call this service for + ///Time it takes the devices to transition into the states defined in the scene. + public static void TurnOn(this ISceneEntityCore target, long? transition = null) { target.CallService("turn_on", new SceneTurnOnParameters { Transition = transition }); } - ///Activate a scene. - ///The IEnumerable<SceneEntity> to call this service for - ///Transition duration it takes to bring devices to the state defined in the scene. - public static void TurnOn(this IEnumerable target, long? transition = null) + ///Activates a scene. + ///The IEnumerable<ISceneEntityCore> to call this service for + ///Time it takes the devices to transition into the states defined in the scene. + public static void TurnOn(this IEnumerable target, long? transition = null) { target.CallService("turn_on", new SceneTurnOnParameters { Transition = transition }); } @@ -19384,38 +19635,38 @@ public static void TurnOn(this IEnumerable target, long? transition public static class ScriptEntityExtensionMethods { - ///Toggle script - public static void Toggle(this ScriptEntity target) + ///Toggle a script. Starts it, if isn't running, stops it otherwise. + public static void Toggle(this IScriptEntityCore target) { target.CallService("toggle"); } - ///Toggle script - public static void Toggle(this IEnumerable target) + ///Toggle a script. Starts it, if isn't running, stops it otherwise. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Turn off script - public static void TurnOff(this ScriptEntity target) + ///Stops a running script. + public static void TurnOff(this IScriptEntityCore target) { target.CallService("turn_off"); } - ///Turn off script - public static void TurnOff(this IEnumerable target) + ///Stops a running script. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn on script - public static void TurnOn(this ScriptEntity target) + ///Runs the sequence of actions defined in a script. + public static void TurnOn(this IScriptEntityCore target) { target.CallService("turn_on"); } - ///Turn on script - public static void TurnOn(this IEnumerable target) + ///Runs the sequence of actions defined in a script. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } @@ -19423,110 +19674,110 @@ public static void TurnOn(this IEnumerable target) public static class SelectEntityExtensionMethods { - ///Select the first option of an select entity. - public static void SelectFirst(this SelectEntity target) + ///Selects the first option. + public static void SelectFirst(this ISelectEntityCore target) { target.CallService("select_first"); } - ///Select the first option of an select entity. - public static void SelectFirst(this IEnumerable target) + ///Selects the first option. + public static void SelectFirst(this IEnumerable target) { target.CallService("select_first"); } - ///Select the last option of an select entity. - public static void SelectLast(this SelectEntity target) + ///Selects the last option. + public static void SelectLast(this ISelectEntityCore target) { target.CallService("select_last"); } - ///Select the last option of an select entity. - public static void SelectLast(this IEnumerable target) + ///Selects the last option. + public static void SelectLast(this IEnumerable target) { target.CallService("select_last"); } - ///Select the next options of an select entity. - public static void SelectNext(this SelectEntity target, SelectSelectNextParameters data) + ///Selects the next option. + public static void SelectNext(this ISelectEntityCore target, SelectSelectNextParameters data) { target.CallService("select_next", data); } - ///Select the next options of an select entity. - public static void SelectNext(this IEnumerable target, SelectSelectNextParameters data) + ///Selects the next option. + public static void SelectNext(this IEnumerable target, SelectSelectNextParameters data) { target.CallService("select_next", data); } - ///Select the next options of an select entity. - ///The SelectEntity to call this service for + ///Selects the next option. + ///The ISelectEntityCore to call this service for ///If the option should cycle from the last to the first. - public static void SelectNext(this SelectEntity target, bool? cycle = null) + public static void SelectNext(this ISelectEntityCore target, bool? cycle = null) { target.CallService("select_next", new SelectSelectNextParameters { Cycle = cycle }); } - ///Select the next options of an select entity. - ///The IEnumerable<SelectEntity> to call this service for + ///Selects the next option. + ///The IEnumerable<ISelectEntityCore> to call this service for ///If the option should cycle from the last to the first. - public static void SelectNext(this IEnumerable target, bool? cycle = null) + public static void SelectNext(this IEnumerable target, bool? cycle = null) { target.CallService("select_next", new SelectSelectNextParameters { Cycle = cycle }); } - ///Select an option of an select entity. - public static void SelectOption(this SelectEntity target, SelectSelectOptionParameters data) + ///Selects an option. + public static void SelectOption(this ISelectEntityCore target, SelectSelectOptionParameters data) { target.CallService("select_option", data); } - ///Select an option of an select entity. - public static void SelectOption(this IEnumerable target, SelectSelectOptionParameters data) + ///Selects an option. + public static void SelectOption(this IEnumerable target, SelectSelectOptionParameters data) { target.CallService("select_option", data); } - ///Select an option of an select entity. - ///The SelectEntity to call this service for + ///Selects an option. + ///The ISelectEntityCore to call this service for ///Option to be selected. eg: "Item A" - public static void SelectOption(this SelectEntity target, string option) + public static void SelectOption(this ISelectEntityCore target, string option) { target.CallService("select_option", new SelectSelectOptionParameters { Option = option }); } - ///Select an option of an select entity. - ///The IEnumerable<SelectEntity> to call this service for + ///Selects an option. + ///The IEnumerable<ISelectEntityCore> to call this service for ///Option to be selected. eg: "Item A" - public static void SelectOption(this IEnumerable target, string option) + public static void SelectOption(this IEnumerable target, string option) { target.CallService("select_option", new SelectSelectOptionParameters { Option = option }); } - ///Select the previous options of an select entity. - public static void SelectPrevious(this SelectEntity target, SelectSelectPreviousParameters data) + ///Selects the previous option. + public static void SelectPrevious(this ISelectEntityCore target, SelectSelectPreviousParameters data) { target.CallService("select_previous", data); } - ///Select the previous options of an select entity. - public static void SelectPrevious(this IEnumerable target, SelectSelectPreviousParameters data) + ///Selects the previous option. + public static void SelectPrevious(this IEnumerable target, SelectSelectPreviousParameters data) { target.CallService("select_previous", data); } - ///Select the previous options of an select entity. - ///The SelectEntity to call this service for + ///Selects the previous option. + ///The ISelectEntityCore to call this service for ///If the option should cycle from the first to the last. - public static void SelectPrevious(this SelectEntity target, bool? cycle = null) + public static void SelectPrevious(this ISelectEntityCore target, bool? cycle = null) { target.CallService("select_previous", new SelectSelectPreviousParameters { Cycle = cycle }); } - ///Select the previous options of an select entity. - ///The IEnumerable<SelectEntity> to call this service for + ///Selects the previous option. + ///The IEnumerable<ISelectEntityCore> to call this service for ///If the option should cycle from the first to the last. - public static void SelectPrevious(this IEnumerable target, bool? cycle = null) + public static void SelectPrevious(this IEnumerable target, bool? cycle = null) { target.CallService("select_previous", new SelectSelectPreviousParameters { Cycle = cycle }); } @@ -19534,57 +19785,57 @@ public static void SelectPrevious(this IEnumerable target, bool? c public static class SirenEntityExtensionMethods { - ///Toggles a siren. + ///Toggles the siren on/off. public static void Toggle(this SirenEntity target) { target.CallService("toggle"); } - ///Toggles a siren. + ///Toggles the siren on/off. public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Turn siren off. + ///Turns the siren off. public static void TurnOff(this SirenEntity target) { target.CallService("turn_off"); } - ///Turn siren off. + ///Turns the siren off. public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn siren on. + ///Turns the siren on. public static void TurnOn(this SirenEntity target, SirenTurnOnParameters data) { target.CallService("turn_on", data); } - ///Turn siren on. + ///Turns the siren on. public static void TurnOn(this IEnumerable target, SirenTurnOnParameters data) { target.CallService("turn_on", data); } - ///Turn siren on. + ///Turns the siren on. ///The SirenEntity to call this service for - ///The tone to emit when turning the siren on. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire - ///The volume level of the noise to emit when turning the siren on. Must be supported by the integration. eg: 0.5 - ///The duration in seconds of the noise to emit when turning the siren on. Must be supported by the integration. eg: 15 + ///The tone to emit. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire + ///The volume. 0 is inaudible, 1 is the maximum volume. Must be supported by the integration. eg: 0.5 + ///Number of seconds the sound is played. Must be supported by the integration. eg: 15 public static void TurnOn(this SirenEntity target, string? tone = null, double? volumeLevel = null, string? duration = null) { target.CallService("turn_on", new SirenTurnOnParameters { Tone = tone, VolumeLevel = volumeLevel, Duration = duration }); } - ///Turn siren on. + ///Turns the siren on. ///The IEnumerable<SirenEntity> to call this service for - ///The tone to emit when turning the siren on. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire - ///The volume level of the noise to emit when turning the siren on. Must be supported by the integration. eg: 0.5 - ///The duration in seconds of the noise to emit when turning the siren on. Must be supported by the integration. eg: 15 + ///The tone to emit. When `available_tones` property is a map, either the key or the value can be used. Must be supported by the integration. eg: fire + ///The volume. 0 is inaudible, 1 is the maximum volume. Must be supported by the integration. eg: 0.5 + ///Number of seconds the sound is played. Must be supported by the integration. eg: 15 public static void TurnOn(this IEnumerable target, string? tone = null, double? volumeLevel = null, string? duration = null) { target.CallService("turn_on", new SirenTurnOnParameters { Tone = tone, VolumeLevel = volumeLevel, Duration = duration }); @@ -19593,38 +19844,38 @@ public static void TurnOn(this IEnumerable target, string? tone = n public static class SwitchEntityExtensionMethods { - ///Toggles a switch state - public static void Toggle(this SwitchEntity target) + ///Toggles a switch on/off. + public static void Toggle(this ISwitchEntityCore target) { target.CallService("toggle"); } - ///Toggles a switch state - public static void Toggle(this IEnumerable target) + ///Toggles a switch on/off. + public static void Toggle(this IEnumerable target) { target.CallService("toggle"); } - ///Turn a switch off - public static void TurnOff(this SwitchEntity target) + ///Turns a switch off. + public static void TurnOff(this ISwitchEntityCore target) { target.CallService("turn_off"); } - ///Turn a switch off - public static void TurnOff(this IEnumerable target) + ///Turns a switch off. + public static void TurnOff(this IEnumerable target) { target.CallService("turn_off"); } - ///Turn a switch on - public static void TurnOn(this SwitchEntity target) + ///Turns a switch on. + public static void TurnOn(this ISwitchEntityCore target) { target.CallService("turn_on"); } - ///Turn a switch on - public static void TurnOn(this IEnumerable target) + ///Turns a switch on. + public static void TurnOn(this IEnumerable target) { target.CallService("turn_on"); } @@ -19632,94 +19883,94 @@ public static void TurnOn(this IEnumerable target) public static class TimerEntityExtensionMethods { - ///Cancel a timer. - public static void Cancel(this TimerEntity target) + ///Cancels a timer. + public static void Cancel(this ITimerEntityCore target) { target.CallService("cancel"); } - ///Cancel a timer. - public static void Cancel(this IEnumerable target) + ///Cancels a timer. + public static void Cancel(this IEnumerable target) { target.CallService("cancel"); } - ///Change a timer - public static void Change(this TimerEntity target, TimerChangeParameters data) + ///Changes a timer. + public static void Change(this ITimerEntityCore target, TimerChangeParameters data) { target.CallService("change", data); } - ///Change a timer - public static void Change(this IEnumerable target, TimerChangeParameters data) + ///Changes a timer. + public static void Change(this IEnumerable target, TimerChangeParameters data) { target.CallService("change", data); } - ///Change a timer - ///The TimerEntity to call this service for - ///Duration to add or subtract to the running timer eg: 00:01:00, 60 or -60 - public static void Change(this TimerEntity target, string duration) + ///Changes a timer. + ///The ITimerEntityCore to call this service for + ///Duration to add or subtract to the running timer. eg: 00:01:00, 60 or -60 + public static void Change(this ITimerEntityCore target, string duration) { target.CallService("change", new TimerChangeParameters { Duration = duration }); } - ///Change a timer - ///The IEnumerable<TimerEntity> to call this service for - ///Duration to add or subtract to the running timer eg: 00:01:00, 60 or -60 - public static void Change(this IEnumerable target, string duration) + ///Changes a timer. + ///The IEnumerable<ITimerEntityCore> to call this service for + ///Duration to add or subtract to the running timer. eg: 00:01:00, 60 or -60 + public static void Change(this IEnumerable target, string duration) { target.CallService("change", new TimerChangeParameters { Duration = duration }); } - ///Finish a timer. - public static void Finish(this TimerEntity target) + ///Finishes a timer. + public static void Finish(this ITimerEntityCore target) { target.CallService("finish"); } - ///Finish a timer. - public static void Finish(this IEnumerable target) + ///Finishes a timer. + public static void Finish(this IEnumerable target) { target.CallService("finish"); } - ///Pause a timer. - public static void Pause(this TimerEntity target) + ///Pauses a timer. + public static void Pause(this ITimerEntityCore target) { target.CallService("pause"); } - ///Pause a timer. - public static void Pause(this IEnumerable target) + ///Pauses a timer. + public static void Pause(this IEnumerable target) { target.CallService("pause"); } - ///Start a timer - public static void Start(this TimerEntity target, TimerStartParameters data) + ///Starts a timer. + public static void Start(this ITimerEntityCore target, TimerStartParameters data) { target.CallService("start", data); } - ///Start a timer - public static void Start(this IEnumerable target, TimerStartParameters data) + ///Starts a timer. + public static void Start(this IEnumerable target, TimerStartParameters data) { target.CallService("start", data); } - ///Start a timer - ///The TimerEntity to call this service for - ///Duration the timer requires to finish. [optional] eg: 00:01:00 or 60 - public static void Start(this TimerEntity target, string? duration = null) + ///Starts a timer. + ///The ITimerEntityCore to call this service for + ///Duration the timer requires to finish. [optional]. eg: 00:01:00 or 60 + public static void Start(this ITimerEntityCore target, string? duration = null) { target.CallService("start", new TimerStartParameters { Duration = duration }); } - ///Start a timer - ///The IEnumerable<TimerEntity> to call this service for - ///Duration the timer requires to finish. [optional] eg: 00:01:00 or 60 - public static void Start(this IEnumerable target, string? duration = null) + ///Starts a timer. + ///The IEnumerable<ITimerEntityCore> to call this service for + ///Duration the timer requires to finish. [optional]. eg: 00:01:00 or 60 + public static void Start(this IEnumerable target, string? duration = null) { target.CallService("start", new TimerStartParameters { Duration = duration }); } @@ -19728,55 +19979,55 @@ public static void Start(this IEnumerable target, string? duration public static class UpdateEntityExtensionMethods { ///Removes the skipped version marker from an update. - public static void ClearSkipped(this UpdateEntity target) + public static void ClearSkipped(this IUpdateEntityCore target) { target.CallService("clear_skipped"); } ///Removes the skipped version marker from an update. - public static void ClearSkipped(this IEnumerable target) + public static void ClearSkipped(this IEnumerable target) { target.CallService("clear_skipped"); } - ///Install an update for this device or service - public static void Install(this UpdateEntity target, UpdateInstallParameters data) + ///Installs an update for this device or service. + public static void Install(this IUpdateEntityCore target, UpdateInstallParameters data) { target.CallService("install", data); } - ///Install an update for this device or service - public static void Install(this IEnumerable target, UpdateInstallParameters data) + ///Installs an update for this device or service. + public static void Install(this IEnumerable target, UpdateInstallParameters data) { target.CallService("install", data); } - ///Install an update for this device or service - ///The UpdateEntity to call this service for - ///Version to install, if omitted, the latest version will be installed. eg: 1.0.0 - ///Backup before installing the update, if supported by the integration. - public static void Install(this UpdateEntity target, string? version = null, bool? backup = null) + ///Installs an update for this device or service. + ///The IUpdateEntityCore to call this service for + ///The version to install. If omitted, the latest version will be installed. eg: 1.0.0 + ///If supported by the integration, this creates a backup before starting the update . + public static void Install(this IUpdateEntityCore target, string? version = null, bool? backup = null) { target.CallService("install", new UpdateInstallParameters { Version = version, Backup = backup }); } - ///Install an update for this device or service - ///The IEnumerable<UpdateEntity> to call this service for - ///Version to install, if omitted, the latest version will be installed. eg: 1.0.0 - ///Backup before installing the update, if supported by the integration. - public static void Install(this IEnumerable target, string? version = null, bool? backup = null) + ///Installs an update for this device or service. + ///The IEnumerable<IUpdateEntityCore> to call this service for + ///The version to install. If omitted, the latest version will be installed. eg: 1.0.0 + ///If supported by the integration, this creates a backup before starting the update . + public static void Install(this IEnumerable target, string? version = null, bool? backup = null) { target.CallService("install", new UpdateInstallParameters { Version = version, Backup = backup }); } - ///Mark currently available update as skipped. - public static void Skip(this UpdateEntity target) + ///Marks currently available update as skipped. + public static void Skip(this IUpdateEntityCore target) { target.CallService("skip"); } - ///Mark currently available update as skipped. - public static void Skip(this IEnumerable target) + ///Marks currently available update as skipped. + public static void Skip(this IEnumerable target) { target.CallService("skip"); } @@ -19785,41 +20036,41 @@ public static void Skip(this IEnumerable target) public static class UtilityMeterEntityExtensionMethods { ///Calibrates a utility meter sensor. - public static void Calibrate(this SensorEntity target, UtilityMeterCalibrateParameters data) + public static void Calibrate(this ISensorEntityCore target, UtilityMeterCalibrateParameters data) { target.CallService("calibrate", data); } ///Calibrates a utility meter sensor. - public static void Calibrate(this IEnumerable target, UtilityMeterCalibrateParameters data) + public static void Calibrate(this IEnumerable target, UtilityMeterCalibrateParameters data) { target.CallService("calibrate", data); } ///Calibrates a utility meter sensor. - ///The SensorEntity to call this service for - ///Value to which set the meter eg: 100 - public static void Calibrate(this SensorEntity target, string value) + ///The ISensorEntityCore to call this service for + ///Value to which set the meter. eg: 100 + public static void Calibrate(this ISensorEntityCore target, string value) { target.CallService("calibrate", new UtilityMeterCalibrateParameters { Value = value }); } ///Calibrates a utility meter sensor. - ///The IEnumerable<SensorEntity> to call this service for - ///Value to which set the meter eg: 100 - public static void Calibrate(this IEnumerable target, string value) + ///The IEnumerable<ISensorEntityCore> to call this service for + ///Value to which set the meter. eg: 100 + public static void Calibrate(this IEnumerable target, string value) { target.CallService("calibrate", new UtilityMeterCalibrateParameters { Value = value }); } ///Resets all counters of a utility meter. - public static void Reset(this SelectEntity target) + public static void Reset(this ISelectEntityCore target) { target.CallService("reset"); } ///Resets all counters of a utility meter. - public static void Reset(this IEnumerable target) + public static void Reset(this IEnumerable target) { target.CallService("reset"); } @@ -19828,33 +20079,33 @@ public static void Reset(this IEnumerable target) public static class WiserEntityExtensionMethods { ///Boost the temperature in the selected rooms/areas - public static void BoostHeating(this ClimateEntity target, WiserBoostHeatingParameters data) + public static void BoostHeating(this IClimateEntityCore target, WiserBoostHeatingParameters data) { target.CallService("boost_heating", data); } ///Boost the temperature in the selected rooms/areas - public static void BoostHeating(this IEnumerable target, WiserBoostHeatingParameters data) + public static void BoostHeating(this IEnumerable target, WiserBoostHeatingParameters data) { target.CallService("boost_heating", data); } ///Boost the temperature in the selected rooms/areas - ///The ClimateEntity to call this service for + ///The IClimateEntityCore to call this service for ///Set the time period for the boost in minutes eg: 60 ///Set the increase in temperature for the boost period eg: 3.0 ///Set the room target temperature for the boost period eg: 21.0 - public static void BoostHeating(this ClimateEntity target, long timePeriod, double? temperatureDelta = null, double? temperature = null) + public static void BoostHeating(this IClimateEntityCore target, long timePeriod, double? temperatureDelta = null, double? temperature = null) { target.CallService("boost_heating", new WiserBoostHeatingParameters { TimePeriod = timePeriod, TemperatureDelta = temperatureDelta, Temperature = temperature }); } ///Boost the temperature in the selected rooms/areas - ///The IEnumerable<ClimateEntity> to call this service for + ///The IEnumerable<IClimateEntityCore> to call this service for ///Set the time period for the boost in minutes eg: 60 ///Set the increase in temperature for the boost period eg: 3.0 ///Set the room target temperature for the boost period eg: 21.0 - public static void BoostHeating(this IEnumerable target, long timePeriod, double? temperatureDelta = null, double? temperature = null) + public static void BoostHeating(this IEnumerable target, long timePeriod, double? temperatureDelta = null, double? temperature = null) { target.CallService("boost_heating", new WiserBoostHeatingParameters { TimePeriod = timePeriod, TemperatureDelta = temperatureDelta, Temperature = temperature }); } diff --git a/NetDaemonApps.Tests/AlexaTests.cs b/NetDaemonApps.Tests/AlexaTests.cs index e743254..e61b036 100644 --- a/NetDaemonApps.Tests/AlexaTests.cs +++ b/NetDaemonApps.Tests/AlexaTests.cs @@ -5,7 +5,7 @@ using NetDaemon.HassModel.Entities; using NetDaemon.HassModel.Mocks; using NetDaemonApps.Tests.Helpers; -using Niemand.Helpers; +using NetDaemon.Helpers; namespace NetDaemonApps.Tests; diff --git a/NetDaemonApps.Tests/Batteries/BatteriesTests.cs b/NetDaemonApps.Tests/Batteries/BatteriesTests.cs index 0801453..38029ab 100644 --- a/NetDaemonApps.Tests/Batteries/BatteriesTests.cs +++ b/NetDaemonApps.Tests/Batteries/BatteriesTests.cs @@ -2,8 +2,8 @@ using Microsoft.Extensions.Logging; using Moq; using NetDaemonApps.Tests.Helpers; -using Niemand.Energy; -using Niemand.Helpers; +using NetDaemon.Energy; +using NetDaemon.Helpers; namespace NetDaemonApps.Tests; diff --git a/NetDaemonApps.Tests/EnergyRates/EnergyTests.cs b/NetDaemonApps.Tests/EnergyRates/EnergyTests.cs index a2bb32f..bdba539 100644 --- a/NetDaemonApps.Tests/EnergyRates/EnergyTests.cs +++ b/NetDaemonApps.Tests/EnergyRates/EnergyTests.cs @@ -5,8 +5,8 @@ using Moq; using NetDaemon.HassModel.Entities; using NetDaemonApps.Tests.Helpers; -using Niemand.Energy; -using Niemand.Helpers; +using NetDaemon.Energy; +using NetDaemon.Helpers; namespace NetDaemonApps.Tests; @@ -210,5 +210,5 @@ private class RateInfo public static class EnergyAppTestContextInstanceExtensions { - public static EnergyApp InitEnergy(this AppTestContext ctx) => new(ctx.HaContext, ctx.Scheduler, new Mock>().Object, new Mock().Object); + public static EnergyApp InitEnergy(this AppTestContext ctx) => new(ctx.HaContext, ctx.Scheduler, new Mock>().Object, new Mock().Object, new Mock().Object); } \ No newline at end of file diff --git a/NetDaemonApps.Tests/Helpers/AppTestContext.cs b/NetDaemonApps.Tests/Helpers/AppTestContext.cs index 4c59c79..7c0dedf 100644 --- a/NetDaemonApps.Tests/Helpers/AppTestContext.cs +++ b/NetDaemonApps.Tests/Helpers/AppTestContext.cs @@ -1,7 +1,10 @@ using Microsoft.Reactive.Testing; +using Moq; using NetDaemon.HassModel; using NetDaemon.HassModel.Entities; using NetDaemon.HassModel.Mocks.Moq; +using NetDaemon.Helpers; +using NetDaemon.Mocks; namespace NetDaemonApps.Tests.Helpers; @@ -12,6 +15,7 @@ public class AppTestContext { public HaContextMock HaContextMock { get; } = new(); public IHaContext HaContext => HaContextMock.HaContext; + public Mock AlexaMock { get; private set; } = new(); public TestScheduler Scheduler { get; } = new(); public void AdvanceTimeBy(long absoluteTime) @@ -33,11 +37,21 @@ public static AppTestContext New(DateTime startTime) return ctx; } + public void SetAlexaMock(Mock mock) + { + AlexaMock = mock; + } + public void SetCurrentTime(DateTime time) { AdvanceTimeTo(time.Ticks); } + public void TriggerAlexaResponse(PromptResponse response) + { + AlexaMock.Object.QueueResponse(response); + } + public void TriggerEvent(Event @event) { HaContextMock.TriggerEvent(@event); @@ -45,7 +59,7 @@ public void TriggerEvent(Event @event) public void TriggerStateChange(Entity entity, string newStatevalue, object? attributes = null) { - HaContextMock.TriggerStateChange(entity, newStatevalue, attributes); + HaContextMock.TriggerStateChange(entity, newStatevalue, null, null, attributes); } public void TriggerStateChange(Entity entity, EntityState newState) diff --git a/NetDaemonApps.Tests/Helpers/AppTestContextExtensions.cs b/NetDaemonApps.Tests/Helpers/AppTestContextExtensions.cs index bde95f4..90364fa 100644 --- a/NetDaemonApps.Tests/Helpers/AppTestContextExtensions.cs +++ b/NetDaemonApps.Tests/Helpers/AppTestContextExtensions.cs @@ -23,11 +23,11 @@ public static void ActivateScene(this AppTestContext ctx, string sceneName) public static T? GetEntity(this HaContextMock ctx, string entityId) where T : Entity => Activator.CreateInstance(typeof(T), ctx.HaContext, entityId) as T; - public static T? GetEntity(this AppTestContext ctx, string entityId, string state) where T : Entity + public static T? GetEntity(this AppTestContext ctx, string entityId, string state, DateTime? lastUpdated = null, DateTime? lastChanged = null) where T : Entity { var instance = Activator.CreateInstance(typeof(T), ctx.HaContext, entityId) as T; - ctx.HaContextMock.TriggerStateChange(instance, state); + ctx.HaContextMock.TriggerStateChange(instance, state, lastChanged, lastUpdated); return instance; } @@ -39,14 +39,27 @@ public static void ActivateScene(this AppTestContext ctx, string sceneName) return instance; } + public static void VerifyAnnounce(this AppTestContext ctx, string mediaPlayer, string message, Times times) + { + ctx.AlexaMock.Verify(m => m.Announce(mediaPlayer, message), times); + } + + public static void VerifyCallScript(this AppTestContext ctx, string scriptName, Func times, object? data = null) + { + ctx.HaContextMock.Verify(c => c.CallService("script", scriptName, null, It.Is(y => VerifyHelper.AreEqualObjects(data, y))), times); + } + + public static void VerifyCallScript(this AppTestContext ctx, string scriptName, Times times, object? data = null) + { + ctx.HaContextMock.Verify(c => c.CallService("script", scriptName, null, It.Is(y => VerifyHelper.AreEqualObjects(data, y))), times); + } + public static void VerifyCallService(this AppTestContext ctx, string serviceCall, string entityId, Func times, object? data = null) { var domain = serviceCall[..serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase)]; var service = serviceCall[( serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase) + 1 )..]; - ctx.HaContextMock.Verify(c => c.CallService(domain, service, - It.Is(s => Match(entityId, s)), - data), times + ctx.HaContextMock.Verify(c => c.CallService(domain, service, It.Is(s => Match(entityId, s)), data), times ); } @@ -55,7 +68,15 @@ public static void VerifyCallService(this AppTestContext ctx, string serviceCall var domain = serviceCall[..serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase)]; var service = serviceCall[( serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase) + 1 )..]; - ctx.HaContextMock.Verify(c => c.CallService(domain, service, null, It.Is(y => VerifyHelper.AreEqualObjects(data, y)))); + ctx.HaContextMock.Verify(c => c.CallService(domain, service, null, It.Is(y => VerifyHelper.AreEqualObjects(data, y))), times); + } + + public static void VerifyCallService(this AppTestContext ctx, string serviceCall, Times times, object? data = null) + { + var domain = serviceCall[..serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase)]; + var service = serviceCall[( serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase) + 1 )..]; + + ctx.HaContextMock.Verify(c => c.CallService(domain, service, null, It.Is(y => VerifyHelper.AreEqualObjects(data, y))), times); } public static void VerifyCallService(this AppTestContext ctx, string serviceCall, string entityId, Times times, object? data = null) @@ -63,10 +84,7 @@ public static void VerifyCallService(this AppTestContext ctx, string serviceCall var domain = serviceCall[..serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase)]; var service = serviceCall[( serviceCall.IndexOf(".", StringComparison.InvariantCultureIgnoreCase) + 1 )..]; - ctx.HaContextMock.Verify(c => c.CallService(domain, service, - It.Is(s => Match(entityId, s)), - data), times - ); + ctx.HaContextMock.Verify(c => c.CallService(domain, service, It.Is(s => Match(entityId, s)), data), times); } @@ -93,6 +111,11 @@ public static void VerifyLightTurnOn(this AppTestContext ctx, LightEntity entity ctx.VerifyCallService("light.turn_on", entity.EntityId, times, new LightTurnOnParameters()); } + public static void VerifyPrompt(this AppTestContext ctx, string mediaPlayer, string message, string eventId, Times times) + { + ctx.AlexaMock.Verify(m => m.Prompt(mediaPlayer, message, eventId), times); + } + public static void VerifySwitchTurnOff(this AppTestContext ctx, SwitchEntity entity, Func times) { ctx.VerifyCallService("switch.turn_off", entity.EntityId, times); @@ -103,6 +126,11 @@ public static void VerifySwitchTurnOn(this AppTestContext ctx, SwitchEntity enti ctx.VerifyCallService("switch.turn_on", entity.EntityId, times); } + public static void VerifyTextToSpeech(this AppTestContext ctx, string mediaPlayer, string message, Times times) + { + ctx.AlexaMock.Verify(m => m.TextToSpeech(mediaPlayer, message), times); + } + //public static void VerifyInputSelect_SelectOption(this AppTestContext ctx, string entityId, string option) //{ diff --git a/NetDaemonApps.Tests/Helpers/EntityExtensions.cs b/NetDaemonApps.Tests/Helpers/EntityExtensions.cs index 80e11ec..0b7e8b5 100644 --- a/NetDaemonApps.Tests/Helpers/EntityExtensions.cs +++ b/NetDaemonApps.Tests/Helpers/EntityExtensions.cs @@ -1,5 +1,4 @@ -using System; -using NetDaemon.HassModel.Entities; +using NetDaemon.HassModel.Entities; using NSubstitute; namespace NetDaemonApps.Tests.Helpers; @@ -10,12 +9,12 @@ public static void VerifyCallService(this Entity entity, string serviceCall, int { var domain = entity.EntityId[..entity.EntityId.IndexOf(".", StringComparison.InvariantCultureIgnoreCase)]; entity.HaContext - .Received(times) - .CallService( - domain, - serviceCall, - Arg.Any(), - Arg.Any() - ); + .Received(times) + .CallService( + domain, + serviceCall, + Arg.Any(), + Arg.Any() + ); } -} +} \ No newline at end of file diff --git a/NetDaemonApps.Tests/Helpers/FakeAppConfig.cs b/NetDaemonApps.Tests/Helpers/FakeAppConfig.cs index f434dd2..ddf9704 100644 --- a/NetDaemonApps.Tests/Helpers/FakeAppConfig.cs +++ b/NetDaemonApps.Tests/Helpers/FakeAppConfig.cs @@ -1,20 +1,15 @@ -using System; -using System.Linq; -using NetDaemon.AppModel; -using NetDaemon.HassModel.Entities; +using NetDaemon.AppModel; namespace NetDaemonApps.Tests.Helpers; public class FakeAppConfig : IAppConfig where T : class, new() { - private readonly T _value; - public FakeAppConfig(T instance) { - _value = instance; + Value = instance; } - public T Value => _value; + public T Value { get; } } -// (IHaContext haContext, string entityId) +// (IHaContext haContext, string entityId) \ No newline at end of file diff --git a/NetDaemonApps.Tests/Helpers/StateChangeContext.cs b/NetDaemonApps.Tests/Helpers/StateChangeContext.cs index d9cc752..d232170 100644 --- a/NetDaemonApps.Tests/Helpers/StateChangeContext.cs +++ b/NetDaemonApps.Tests/Helpers/StateChangeContext.cs @@ -1,4 +1,3 @@ -using System; using System.Globalization; using NetDaemon.HassModel.Entities; using NSubstitute; @@ -8,33 +7,45 @@ namespace NetDaemonApps.Tests.Helpers; public class StateChangeContext : IFromState, IToState, IWithState { private readonly AppTestContext _ctx; - private readonly string _entityId; + private readonly string _entityId; public StateChangeContext(AppTestContext ctx, string entityId) { - _ctx = ctx; + _ctx = ctx; _entityId = entityId; } private EntityState? FromState { get; set; } private EntityState? ToState { get; set; } + IToState IFromState.FromHassState(EntityState hassState) + { + ArgumentNullException.ThrowIfNull(hassState); + FromState = hassState; + return this; + } + IToState IFromState.FromState(T state) { ArgumentNullException.ThrowIfNull(state); FromState = new EntityState { EntityId = _entityId, - State = Convert.ToString(state, CultureInfo.InvariantCulture) + State = Convert.ToString(state, CultureInfo.InvariantCulture) }; return this; } - IToState IFromState.FromHassState(EntityState hassState) + void IToState.ToHassState(EntityState hassState) { ArgumentNullException.ThrowIfNull(hassState); - FromState = hassState; - return this; + ToState = hassState; + _ctx.HaContext.GetState(_entityId).Returns(FromState); + _ctx.HaContextMock.StateChangeSubject.OnNext( + new StateChange( + new Entity(_ctx.HaContext, _entityId), + FromState!, + ToState!)); } void IToState.ToState(T state) @@ -43,7 +54,7 @@ void IToState.ToState(T state) ToState = new EntityState { EntityId = _entityId, - State = state.ToString() + State = state.ToString() }; _ctx.HaContext.GetState(_entityId).Returns(ToState); _ctx.HaContextMock.StateChangeSubject.OnNext( @@ -53,17 +64,7 @@ void IToState.ToState(T state) ToState!)); } - void IToState.ToHassState(EntityState hassState) - { - ArgumentNullException.ThrowIfNull(hassState); - ToState = hassState; - _ctx.HaContext.GetState(_entityId).Returns(FromState); - _ctx.HaContextMock.StateChangeSubject.OnNext( - new StateChange( - new Entity(_ctx.HaContext, _entityId), - FromState!, - ToState!)); - } + public IFromState ChangeStateFor(string entityId) => new StateChangeContext(_ctx, entityId); public IWithState WithEntityState(string entityId, T state) { @@ -71,7 +72,7 @@ public IWithState WithEntityState(string entityId, T state) new EntityState { EntityId = _entityId, - State = Convert.ToString(state, CultureInfo.InvariantCulture) + State = Convert.ToString(state, CultureInfo.InvariantCulture) } ); return this; @@ -84,9 +85,4 @@ public IWithState WithEntityState(string entityId, EntityState state) ); return this; } - - public IFromState ChangeStateFor(string entityId) - { - return new StateChangeContext(_ctx, entityId); - } -} +} \ No newline at end of file diff --git a/NetDaemonApps.Tests/Helpers/StateChangeFluentInterfaces.cs b/NetDaemonApps.Tests/Helpers/StateChangeFluentInterfaces.cs index 741c0a7..0716cb8 100644 --- a/NetDaemonApps.Tests/Helpers/StateChangeFluentInterfaces.cs +++ b/NetDaemonApps.Tests/Helpers/StateChangeFluentInterfaces.cs @@ -4,19 +4,19 @@ namespace NetDaemonApps.Tests.Helpers; public interface IWithState : IFromState { + IFromState ChangeStateFor(string entityId); IWithState WithEntityState(string entityId, T state); IWithState WithEntityState(string entityId, EntityState state); - IFromState ChangeStateFor(string entityId); } public interface IFromState { - IToState FromState(T state); IToState FromHassState(EntityState hassState); + IToState FromState(T state); } public interface IToState { - void ToState(T state); void ToHassState(EntityState hassState); -} + void ToState(T state); +} \ No newline at end of file diff --git a/NetDaemonApps.Tests/HouseStateManagerTests.cs b/NetDaemonApps.Tests/HouseStateManagerTests.cs index 4b74f11..36443ba 100644 --- a/NetDaemonApps.Tests/HouseStateManagerTests.cs +++ b/NetDaemonApps.Tests/HouseStateManagerTests.cs @@ -94,7 +94,7 @@ // // Assert // _ctx.VerifyHouseState("Morgon"); // } - + // [Fact] // public void HouseState_ShouldNotChangeToMorning_WhenLightIsBrightAndNotWithinLowerTimeLimits() // { @@ -111,11 +111,11 @@ // .ToState(35.0d); // // Assert - + // // Check that no select option been called, i.e HouseState not set // _ctx.HaContext.DidNotReceiveWithAnyArgs().CallService("input_select", "select_option", null, null); // } - + // [Fact] // public void HouseState_ShouldNotChangeToMorning_WhenLightIsBrightAndNotWithinHigherTimeLimits() // { @@ -133,11 +133,11 @@ // .ToState(35.0d); // // Assert - + // // Check that no select option been called, i.e HouseState not set // _ctx.HaContext.DidNotReceiveWithAnyArgs().CallService("input_select", "select_option", null, null); // } - + // [Fact] // public void HouseState_ShouldChangeToEvening_WhenLightIsDarkAndWithinTimeLimits() // { @@ -180,7 +180,7 @@ // _ctx.VerifyHouseState("Kväll"); // } - + // [Fact] // public void HouseState_ShouldNotChangeToEvening_WhenLightIsBrightAndNotWithinLowerTimeLimits() // { @@ -198,10 +198,10 @@ // .ToState(EveningBrightness); // // Assert - + // _ctx.VerifyHouseStateNotChanged(); // } - + // [Fact] // public void HouseState_ShouldNotChangeToEvening_WhenLightIsBrightAndNotWithinHigherTimeLimits() // { @@ -219,7 +219,7 @@ // .ToState(EveningBrightness); // // Assert - + // _ctx.VerifyHouseStateNotChanged(); // } @@ -262,3 +262,4 @@ // ctx.VerifyInputSelect_SelectOption_NotChanged("input_select.house_mode_select"); // } //} + diff --git a/NetDaemonApps.Tests/LightManagerTests.cs b/NetDaemonApps.Tests/LightManagerTests.cs index 0237eb1..abce240 100644 --- a/NetDaemonApps.Tests/LightManagerTests.cs +++ b/NetDaemonApps.Tests/LightManagerTests.cs @@ -84,11 +84,12 @@ public void HouseModeSetToNightTurnsOffAllNonNightControlEntitiesAndTurnsOnAnyNi // Act ctx.TriggerStateChange(config.Room().NightTimeEntity, "night"); - + ctx.Scheduler.AdvanceBy(TimeSpan.FromSeconds(1).Ticks); + // Assert ctx.VerifyLightTurnOff(config.Light(), Times.Once); - ctx.VerifyLightTurnOff(config.NightLight(), Times.Never); - ctx.VerifyLightTurnOn(config.NightLight(), Times.Never); + ctx.VerifyLightTurnOff(config.NightLight(), Times.Once); + ctx.VerifyLightTurnOn(config.NightLight(), Times.Once); ctx.VerifyLightTurnOn(config.NightLight(2), Times.Once); } diff --git a/NetDaemonApps.Tests/Mocks/HaContextMockBase.cs b/NetDaemonApps.Tests/Mocks/HaContextMockBase.cs index 035ae5c..eede46f 100644 --- a/NetDaemonApps.Tests/Mocks/HaContextMockBase.cs +++ b/NetDaemonApps.Tests/Mocks/HaContextMockBase.cs @@ -3,6 +3,7 @@ using System.Reactive.Subjects; using System.Reflection; using System.Text.Json; +using System.Threading.Tasks; using NetDaemon.HassModel.Entities; namespace NetDaemon.HassModel.Mocks; @@ -17,6 +18,8 @@ public virtual void CallService(string domain, string service, ServiceTarget? ta { } + public Task CallServiceWithResponseAsync(string domain, string service, ServiceTarget? target = null, object? data = null) => throw new NotImplementedException(); + public IObservable Events => EventsSubject; public IReadOnlyList GetAllEntities() => _entityStates.Keys.Select(s => new Entity(this, s)).ToList(); @@ -31,9 +34,9 @@ public virtual void SendEvent(string eventType, object? data = null) public IObservable StateAllChanges() => StateAllChangeSubject; - public void TriggerStateChange(Entity entity, string newStatevalue, object? attributes = null) + public void TriggerStateChange(Entity entity, string newStatevalue, DateTime? lastUpdated = null, DateTime? lastChanged = null, object? attributes = null) { - var newState = new EntityState { State = newStatevalue }; + var newState = new EntityState { State = newStatevalue, LastUpdated = lastUpdated, LastChanged = lastChanged }; if (attributes != null) newState = newState.WithAttributes(attributes); TriggerStateChange(entity.EntityId, newState); @@ -64,7 +67,7 @@ public void TriggerStateChange(string entityId, EntityState oldState, EntityStat public interface IHaContextMock { - void TriggerStateChange(Entity entity, string newStatevalue, object? attributes = null); + void TriggerStateChange(Entity entity, string newStatevalue, DateTime? lastUpdated = null, DateTime? lastChanged = null, object? attributes = null); void TriggerStateChange(string entityId, EntityState newState); void VerifyServiceCalled(Entity entity, string domain, string service); } diff --git a/NetDaemonApps.Tests/Mocks/Moq/AlexaMock.cs b/NetDaemonApps.Tests/Mocks/Moq/AlexaMock.cs new file mode 100644 index 0000000..9ed7913 --- /dev/null +++ b/NetDaemonApps.Tests/Mocks/Moq/AlexaMock.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Reactive.Subjects; +using NetDaemon.Helpers; + +namespace NetDaemon.Mocks; + +public class AlexaMock : IAlexa +{ + private readonly Subject _promptResponses = new(); + + public virtual void Announce(Alexa.Config config) + { + } + + public virtual void Announce(string mediaPlayer, string message) + { + } + + public Dictionary People { get; } = new(); + + public virtual void Prompt(string mediaPlayer, string message, string eventId) + { + } + + public IObservable PromptResponses => _promptResponses; + + public virtual void TextToSpeech(Alexa.Config config) + { + } + + public virtual void TextToSpeech(string mediaPlayer, string message) + { + } + + public void QueueResponse(PromptResponse response) + { + _promptResponses.OnNext(response); + } +} \ No newline at end of file diff --git a/NetDaemonApps.Tests/Mocks/Moq/HaContextMock.cs b/NetDaemonApps.Tests/Mocks/Moq/HaContextMock.cs index 9355579..6383f86 100644 --- a/NetDaemonApps.Tests/Mocks/Moq/HaContextMock.cs +++ b/NetDaemonApps.Tests/Mocks/Moq/HaContextMock.cs @@ -13,19 +13,18 @@ public HaContextMock() void Callback(string domain, string service, ServiceTarget target, object? data) { if (target == null) return; - + switch (data) { case null: TriggerStateChange(target.EntityIds.First(), new EntityState { State = "" }); break; case InputSelectSelectOptionParameters: - TriggerStateChange(target.EntityIds.First(), new EntityState { State = ((InputSelectSelectOptionParameters)data).Option }); + TriggerStateChange(target.EntityIds.First(), new EntityState { State = ( (InputSelectSelectOptionParameters)data ).Option }); break; case object: TriggerStateChange(target.EntityIds.First(), new EntityState { State = data.ToString() }); break; - } @@ -48,9 +47,9 @@ void Callback(string domain, string service, ServiceTarget target, object? data) public Subject StateChangeSubject { get; } = new(); - public void TriggerStateChange(Entity entity, string newStatevalue, object? attributes = null) + public void TriggerStateChange(Entity entity, string newStatevalue, DateTime? lastUpdated = null, DateTime? lastChanged = null, object? attributes = null) { - Object.TriggerStateChange(entity, newStatevalue, attributes); + Object.TriggerStateChange(entity, newStatevalue, lastUpdated, lastChanged, attributes); } public void TriggerStateChange(string entityId, EntityState newState) diff --git a/NetDaemonApps.Tests/Mocks/NSubstitue/HaContextMock.cs b/NetDaemonApps.Tests/Mocks/NSubstitue/HaContextMock.cs index 445f2b6..b152309 100644 --- a/NetDaemonApps.Tests/Mocks/NSubstitue/HaContextMock.cs +++ b/NetDaemonApps.Tests/Mocks/NSubstitue/HaContextMock.cs @@ -8,16 +8,6 @@ public class HaContextMock : HaContextMockBase, IHaContextMock { public IHaContext Mock { get; } = Substitute.For(); - public override void CallService(string domain, string service, ServiceTarget? target = null, object? data = null) - { - Mock.CallService(domain, service, target, data); - } - - public override void SendEvent(string eventType, object? data = null) - { - Mock.SendEvent(eventType, data); - } - public override void VerifyServiceCalled(Entity entity, string domain, string service) { Mock @@ -29,4 +19,14 @@ public override void VerifyServiceCalled(Entity entity, string domain, string se Arg.Any() ); } -} + + public override void CallService(string domain, string service, ServiceTarget? target = null, object? data = null) + { + Mock.CallService(domain, service, target, data); + } + + public override void SendEvent(string eventType, object? data = null) + { + Mock.SendEvent(eventType, data); + } +} \ No newline at end of file diff --git a/NetDaemonApps.Tests/NetDaemonApps.Tests.csproj b/NetDaemonApps.Tests/NetDaemonApps.Tests.csproj index 2018485..f47a414 100644 --- a/NetDaemonApps.Tests/NetDaemonApps.Tests.csproj +++ b/NetDaemonApps.Tests/NetDaemonApps.Tests.csproj @@ -1,45 +1,45 @@ - - net7.0 - enable + + net7.0 + enable - false - - - - - - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - Always - - - Always - - - Always - - - Always - - + false + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + Always + + + Always + + + Always + + + Always + + diff --git a/NetDaemonApps.Tests/NotificationsManagerTests.cs b/NetDaemonApps.Tests/NotificationsManagerTests.cs new file mode 100644 index 0000000..a7d49b4 --- /dev/null +++ b/NetDaemonApps.Tests/NotificationsManagerTests.cs @@ -0,0 +1,158 @@ +using System.Threading.Tasks; +using HomeAssistantGenerated; +using Moq; +using NetDaemonApps.Tests.Helpers; +using NetDaemon; +using NetDaemon.Helpers; + +namespace NetDaemonApps.Tests; + +public class NotificationsManagerTests +{ + private IEntities _entities; + + [Test] + public Task AcknowledgePromptAndResetWhenPromptResponseIsYes() + { + var ctx = new AppTestContext(); + _entities = new Entities(ctx.HaContext); + + var ack = ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerAlexaResponse(new PromptResponse { EventId = "DishwasherTts", ResponseType = PromptResponseType.ResponseYes }); + + ctx.VerifyCallService("input_boolean.turn_on", _entities.InputBoolean.DishwasherAck.EntityId, Times.Once()); + ctx.VerifyTextToSpeech("media_player.kitchen", "Thanks", Times.Once()); + return Task.CompletedTask; + } + + [Test] + public Task AcknowledgePromptWhenPromptResponseIsNo() + { + var ctx = new AppTestContext(); + _entities = new Entities(ctx.HaContext); + + ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerAlexaResponse(new PromptResponse { EventId = "DishwasherTts", ResponseType = PromptResponseType.ResponseNo }); + + ctx.VerifyTextToSpeech("media_player.kitchen", "Ok", Times.Once()); + + return Task.CompletedTask; + } + + [Test] + public Task AnnounceWhenAnnouncedMoreThan60MinutesAgo() + { + var ctx = new AppTestContext(); + _entities = new Entities(ctx.HaContext); + + ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "on"); + var motion = ctx.GetEntity(_entities.BinarySensor.KitchenMotion.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerStateChange(motion, "on"); + + ctx.Scheduler.AdvanceBy(TimeSpan.FromMinutes(61).Ticks); + + ctx.TriggerStateChange(motion, "off"); + ctx.TriggerStateChange(motion, "on"); + + ctx.VerifyAnnounce("media_player.kitchen", "The Dishwasher is ready", Times.Exactly(2)); + return Task.CompletedTask; + } + + [Test] + public Task DontAnnounceWhenAnnouncedInTheLast60Minutes() + { + var ctx = new AppTestContext(); + _entities = new Entities(ctx.HaContext); + + ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "on"); + var motion = ctx.GetEntity(_entities.BinarySensor.KitchenMotion.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerStateChange(motion, "on"); + + ctx.Scheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks); + + ctx.TriggerStateChange(motion, "off"); + ctx.TriggerStateChange(motion, "on"); + + ctx.VerifyAnnounce("media_player.kitchen", "The Dishwasher is ready", Times.Once()); + return Task.CompletedTask; + } + + [Test] + public Task DontPromptWhenPromptedInTheLast15Minutes() + { + var ctx = new AppTestContext(); + _entities = new Entities(ctx.HaContext); + + ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "off"); + var motion = ctx.GetEntity(_entities.BinarySensor.KitchenMotion.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerStateChange(motion, "on"); + + ctx.Scheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks); + + ctx.TriggerStateChange(motion, "off"); + ctx.TriggerStateChange(motion, "on"); + + ctx.VerifyPrompt("media_player.kitchen", "The Dishwasher is done. Has it been unpacked?", "DishwasherTts", Times.Once()); + return Task.CompletedTask; + } + + [Test] + public Task PromptWhenPromptedMoreThan15MinutesAgo() + { + var ctx = new AppTestContext(); + _entities = new Entities(ctx.HaContext); + + ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "off"); + var motion = ctx.GetEntity(_entities.BinarySensor.KitchenMotion.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerStateChange(motion, "on"); + + ctx.Scheduler.AdvanceBy(TimeSpan.FromMinutes(16).Ticks); + + ctx.TriggerStateChange(motion, "off"); + ctx.TriggerStateChange(motion, "on"); + + ctx.VerifyPrompt("media_player.kitchen", "The Dishwasher is done. Has it been unpacked?", "DishwasherTts", Times.Exactly(2)); + return Task.CompletedTask; + } + + [Test] + public Task PromptWhenThereHasBeenNoPreviousPrompt() + { + var ctx = new AppTestContext(); + + _entities = new Entities(ctx.HaContext); + + ctx.GetEntity(_entities.InputBoolean.DishwasherAck.EntityId, "off"); + var motion = ctx.GetEntity(_entities.BinarySensor.KitchenMotion.EntityId, "off"); + + ctx.InitNotificationsManager(); + + ctx.TriggerStateChange(motion, "on"); + + ctx.VerifyPrompt("media_player.kitchen", "The Dishwasher is done. Has it been unpacked?", "DishwasherTts", Times.Once()); + return Task.CompletedTask; + } +} + +public static class NotificationsManagerTestContextInstanceExtensions +{ + public static NotificationsManager InitNotificationsManager(this AppTestContext ctx) => new(ctx.HaContext, new Entities(ctx.HaContext), ctx.AlexaMock.Object, ctx.Scheduler); +} \ No newline at end of file diff --git a/NetDaemonApps.Tests/VacationTests.cs b/NetDaemonApps.Tests/VacationTests.cs index c1f11a7..4df68cf 100644 --- a/NetDaemonApps.Tests/VacationTests.cs +++ b/NetDaemonApps.Tests/VacationTests.cs @@ -8,7 +8,7 @@ using NetDaemon.Client; using NetDaemon.Extensions.MqttEntityManager; using NetDaemonApps.Tests.Helpers; -using Niemand; +using NetDaemon; namespace NetDaemonApps.Tests; diff --git a/NetDaemonApps.Tests/test-data.json b/NetDaemonApps.Tests/test-data.json index d175c04..a28ee71 100644 --- a/NetDaemonApps.Tests/test-data.json +++ b/NetDaemonApps.Tests/test-data.json @@ -1,593 +1,8895 @@ -{"EntityId":"sensor.dishwasher_power","State":"30.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:05.277857+00:00","LastUpdated":"2022-10-17T23:00:05.277857+00:00","Context":{"Id":"0183e82cfa1dd3bc49a1c8be031bdec7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:14.279631+00:00","LastUpdated":"2022-10-17T23:00:14.279631+00:00","Context":{"Id":"0183e82d1d47a6050a2cba0ca51d55c9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"22.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:16.543382+00:00","LastUpdated":"2022-10-17T23:00:16.543382+00:00","Context":{"Id":"0183e82d261fd912b30dd42ed7fd2a04","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"22.73","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:19.287399+00:00","LastUpdated":"2022-10-17T23:00:19.287399+00:00","Context":{"Id":"0183e82d30d731a831208ee797fb9fd1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"29.83","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:25.278683+00:00","LastUpdated":"2022-10-17T23:00:25.278683+00:00","Context":{"Id":"0183e82d483ef825e520d0a13f8918e3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:33.278493+00:00","LastUpdated":"2022-10-17T23:00:33.278493+00:00","Context":{"Id":"0183e82d677e501289a0f2c0848b4ae8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"29.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:42.291981+00:00","LastUpdated":"2022-10-17T23:00:42.291981+00:00","Context":{"Id":"0183e82d8ab36827003b02c5f61e0757","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"30.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:46.61459+00:00","LastUpdated":"2022-10-17T23:00:46.61459+00:00","Context":{"Id":"0183e82d9b9602753b5c6292117570c9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"30.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:48.297761+00:00","LastUpdated":"2022-10-17T23:00:48.297761+00:00","Context":{"Id":"0183e82da229a48b20925beae2e8ba5c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:00:54.342488+00:00","LastUpdated":"2022-10-17T23:00:54.342488+00:00","Context":{"Id":"0183e82db9c68796c12903dff67be0b1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"25.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:00.717713+00:00","LastUpdated":"2022-10-17T23:01:00.717713+00:00","Context":{"Id":"0183e82dd2ad2be48deb9d2b3d795643","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"30.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:05.322897+00:00","LastUpdated":"2022-10-17T23:01:05.322897+00:00","Context":{"Id":"0183e82de4aa6a0cbee5e8da655c5e52","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:11.315231+00:00","LastUpdated":"2022-10-17T23:01:11.315231+00:00","Context":{"Id":"0183e82dfc13b651f39e382fd72df17e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"22.95","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:16.317517+00:00","LastUpdated":"2022-10-17T23:01:16.317517+00:00","Context":{"Id":"0183e82e0f9d3950a8fa9e8566c2d92b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"30.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:22.320561+00:00","LastUpdated":"2022-10-17T23:01:22.320561+00:00","Context":{"Id":"0183e82e2710f8e8a1ec73aaa16ed61c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"28.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:29.398837+00:00","LastUpdated":"2022-10-17T23:01:29.398837+00:00","Context":{"Id":"0183e82e42b68fc44d8b6e67dc6a6038","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.16","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:34.291754+00:00","LastUpdated":"2022-10-17T23:01:34.291754+00:00","Context":{"Id":"0183e82e55d3fae69cf5de1d62f9337f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:40.293977+00:00","LastUpdated":"2022-10-17T23:01:40.293977+00:00","Context":{"Id":"0183e82e6d45ce139e1bada6f9f0076a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"52.96","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:47.030679+00:00","LastUpdated":"2022-10-17T23:01:47.030679+00:00","Context":{"Id":"0183e82e8796af80f74101e4314cf09a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.08","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:52.281977+00:00","LastUpdated":"2022-10-17T23:01:52.281977+00:00","Context":{"Id":"0183e82e9c19a98de61f245a03e5ed32","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"21.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:01:58.2807+00:00","LastUpdated":"2022-10-17T23:01:58.2807+00:00","Context":{"Id":"0183e82eb3880db1fc4853ce458ccac8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"34.46","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:04.28705+00:00","LastUpdated":"2022-10-17T23:02:04.28705+00:00","Context":{"Id":"0183e82ecaff9a83d82341c11c69cef5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.67","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:10.280792+00:00","LastUpdated":"2022-10-17T23:02:10.280792+00:00","Context":{"Id":"0183e82ee268fb499ecf3fb740d74846","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.25","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:16.280744+00:00","LastUpdated":"2022-10-17T23:02:16.280744+00:00","Context":{"Id":"0183e82ef9d8336de52897d7b73bb392","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:21.281799+00:00","LastUpdated":"2022-10-17T23:02:21.281799+00:00","Context":{"Id":"0183e82f0d61b69f99a9e9f8d31c37ba","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"42.75","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:27.281058+00:00","LastUpdated":"2022-10-17T23:02:27.281058+00:00","Context":{"Id":"0183e82f24d1e905319527429d547183","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:32.285538+00:00","LastUpdated":"2022-10-17T23:02:32.285538+00:00","Context":{"Id":"0183e82f385ddae8540ef57974fccd6a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.04","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:38.282067+00:00","LastUpdated":"2022-10-17T23:02:38.282067+00:00","Context":{"Id":"0183e82f4fca99b1edc3778afe56bebc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"12.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:43.280938+00:00","LastUpdated":"2022-10-17T23:02:43.280938+00:00","Context":{"Id":"0183e82f6350aabfb7de530419ef38ad","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"53.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:46.573431+00:00","LastUpdated":"2022-10-17T23:02:46.573431+00:00","Context":{"Id":"0183e82f702dacc2a49bfd45dbe4e6ef","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.81","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:49.281522+00:00","LastUpdated":"2022-10-17T23:02:49.281522+00:00","Context":{"Id":"0183e82f7ac15e32685c387f5e0ccd83","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:02:55.281407+00:00","LastUpdated":"2022-10-17T23:02:55.281407+00:00","Context":{"Id":"0183e82f9231cc1277d6a1f6091e09b7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:01.282182+00:00","LastUpdated":"2022-10-17T23:03:01.282182+00:00","Context":{"Id":"0183e82fa9a28e7a34e0fb3ddaee4a80","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"53.16","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:06.282954+00:00","LastUpdated":"2022-10-17T23:03:06.282954+00:00","Context":{"Id":"0183e82fbd2aa9c82b175962d00a6297","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.12","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:11.28297+00:00","LastUpdated":"2022-10-17T23:03:11.28297+00:00","Context":{"Id":"0183e82fd0b2e013dcb6832a2015a0ab","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.17","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:16.583254+00:00","LastUpdated":"2022-10-17T23:03:16.583254+00:00","Context":{"Id":"0183e82fe5671a3ce0a71f312dcb0733","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"25.89","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:18.283035+00:00","LastUpdated":"2022-10-17T23:03:18.283035+00:00","Context":{"Id":"0183e82fec0b6e9413ab798f640e2aa0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"11.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:45.28215+00:00","LastUpdated":"2022-10-17T23:03:45.28215+00:00","Context":{"Id":"0183e8305582a98bb0da60b90704ca22","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:03:50.283869+00:00","LastUpdated":"2022-10-17T23:03:50.283869+00:00","Context":{"Id":"0183e830690ba87a582ea69b3f652d1e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"9.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:04:05.285577+00:00","LastUpdated":"2022-10-17T23:04:05.285577+00:00","Context":{"Id":"0183e830a3a5ff6081877a281eea3aec","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:04:11.285585+00:00","LastUpdated":"2022-10-17T23:04:11.285585+00:00","Context":{"Id":"0183e830bb15a4551a0fc9c3c599d7fb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.22","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:04:16.592024+00:00","LastUpdated":"2022-10-17T23:04:16.592024+00:00","Context":{"Id":"0183e830cfcf36511c2e0de885bf7450","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"13.46","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:04:35.285714+00:00","LastUpdated":"2022-10-17T23:04:35.285714+00:00","Context":{"Id":"0183e83118d5ecdc0efea5903c682341","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:04:41.286334+00:00","LastUpdated":"2022-10-17T23:04:41.286334+00:00","Context":{"Id":"0183e83130469b0a5801b08c19b16198","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.25","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:04:46.600476+00:00","LastUpdated":"2022-10-17T23:04:46.600476+00:00","Context":{"Id":"0183e83145081241e838c1da082deebd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.08","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:16.610069+00:00","LastUpdated":"2022-10-17T23:05:16.610069+00:00","Context":{"Id":"0183e831ba42476675c78d802d07c32c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.22","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:23.286128+00:00","LastUpdated":"2022-10-17T23:05:23.286128+00:00","Context":{"Id":"0183e831d4562c449d48258b96976186","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"81.68","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:29.286848+00:00","LastUpdated":"2022-10-17T23:05:29.286848+00:00","Context":{"Id":"0183e831ebc6de7e1abd606a0c0edae5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.54","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:38.286771+00:00","LastUpdated":"2022-10-17T23:05:38.286771+00:00","Context":{"Id":"0183e8320eeea829c12c9f74757aa821","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:45.28727+00:00","LastUpdated":"2022-10-17T23:05:45.28727+00:00","Context":{"Id":"0183e8322a4756918bd7e1f241383a45","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"81.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:51.286308+00:00","LastUpdated":"2022-10-17T23:05:51.286308+00:00","Context":{"Id":"0183e83241b6caacd66f06c07f8db145","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"97.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:05:56.296941+00:00","LastUpdated":"2022-10-17T23:05:56.296941+00:00","Context":{"Id":"0183e83255484ff80e9cfbe726d60e54","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1809.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:06:02.289158+00:00","LastUpdated":"2022-10-17T23:06:02.289158+00:00","Context":{"Id":"0183e8326cb16e669f6cc218a74cf8d2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1797.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:06:16.622432+00:00","LastUpdated":"2022-10-17T23:06:16.622432+00:00","Context":{"Id":"0183e832a4aec1ed4d153d8bb234b845","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1799.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:06:46.629632+00:00","LastUpdated":"2022-10-17T23:06:46.629632+00:00","Context":{"Id":"0183e83319e5e7de1a2745e9a5267300","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1812.96","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:07:16.63371+00:00","LastUpdated":"2022-10-17T23:07:16.63371+00:00","Context":{"Id":"0183e8338f195227559a0816b47df83a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1786.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:07:46.641666+00:00","LastUpdated":"2022-10-17T23:07:46.641666+00:00","Context":{"Id":"0183e83404516dbb32dd740cad4f58a7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1790.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:08:16.648972+00:00","LastUpdated":"2022-10-17T23:08:16.648972+00:00","Context":{"Id":"0183e8347988a04a4cda370c6d3edba2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1777.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:08:46.653494+00:00","LastUpdated":"2022-10-17T23:08:46.653494+00:00","Context":{"Id":"0183e834eebdd1cbec8e69c31bd4ce5e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1807.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:09:16.661814+00:00","LastUpdated":"2022-10-17T23:09:16.661814+00:00","Context":{"Id":"0183e83563f5671c0e36a2b1092c60b6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1801.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:09:46.668246+00:00","LastUpdated":"2022-10-17T23:09:46.668246+00:00","Context":{"Id":"0183e835d92c01290340c1ae13ff7aa2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1807.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:10:16.674161+00:00","LastUpdated":"2022-10-17T23:10:16.674161+00:00","Context":{"Id":"0183e8364e62f209ba124ee3f2f3b545","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1814.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:10:46.686791+00:00","LastUpdated":"2022-10-17T23:10:46.686791+00:00","Context":{"Id":"0183e836c39ee6d1e205e3c737c5cb4d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1805.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:11:16.689947+00:00","LastUpdated":"2022-10-17T23:11:16.689947+00:00","Context":{"Id":"0183e83738d1d6a5cac71eb8fb130d26","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:11:46.74705+00:00","LastUpdated":"2022-10-17T23:11:46.74705+00:00","Context":{"Id":"0183e837ae3b52966022596cbda9ba47","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1783.14","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:12:16.702903+00:00","LastUpdated":"2022-10-17T23:12:16.702903+00:00","Context":{"Id":"0183e838233eaff77a26000065f528c7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:12:46.709066+00:00","LastUpdated":"2022-10-17T23:12:46.709066+00:00","Context":{"Id":"0183e83898753f1fed3f64418e9158fa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1772.22","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:13:16.722389+00:00","LastUpdated":"2022-10-17T23:13:16.722389+00:00","Context":{"Id":"0183e8390db2b27bcfe8d7222840d5e3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1779.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:13:46.743377+00:00","LastUpdated":"2022-10-17T23:13:46.743377+00:00","Context":{"Id":"0183e83982f71e59ed4d21f33bb7a211","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1794.21","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:14:46.739755+00:00","LastUpdated":"2022-10-17T23:14:46.739755+00:00","Context":{"Id":"0183e83a6d53a5e22cc39d351bb2c6ca","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:15:16.745594+00:00","LastUpdated":"2022-10-17T23:15:16.745594+00:00","Context":{"Id":"0183e83ae2899b41777c57802eb2810c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"221.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:15:35.303497+00:00","LastUpdated":"2022-10-17T23:15:35.303497+00:00","Context":{"Id":"0183e83b2b07345cbd01d5772ca2a871","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.01","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:15:40.305641+00:00","LastUpdated":"2022-10-17T23:15:40.305641+00:00","Context":{"Id":"0183e83b3e913a9a52cf12887df0704e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:15:46.756199+00:00","LastUpdated":"2022-10-17T23:15:46.756199+00:00","Context":{"Id":"0183e83b57c4007f0f372ba540fea85a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:16:16.760353+00:00","LastUpdated":"2022-10-17T23:16:16.760353+00:00","Context":{"Id":"0183e83bccf868d10dfe50a264b18e89","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"62.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:16:39.303301+00:00","LastUpdated":"2022-10-17T23:16:39.303301+00:00","Context":{"Id":"0183e83c2507ac0513466c52eea6b064","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:16:45.303421+00:00","LastUpdated":"2022-10-17T23:16:45.303421+00:00","Context":{"Id":"0183e83c3c7724c6c38458a71ecc8a47","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:17:16.774218+00:00","LastUpdated":"2022-10-17T23:17:16.774218+00:00","Context":{"Id":"0183e83cb7660f665a2c49c8f46a6a60","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:17:46.78488+00:00","LastUpdated":"2022-10-17T23:17:46.78488+00:00","Context":{"Id":"0183e83d2ca0f68deb82ab502cb75ec4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:17:51.304426+00:00","LastUpdated":"2022-10-17T23:17:51.304426+00:00","Context":{"Id":"0183e83d3e48501f5446c92cff4bae52","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.71","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:17:56.307317+00:00","LastUpdated":"2022-10-17T23:17:56.307317+00:00","Context":{"Id":"0183e83d51d34edff0f1b0d3193e47ff","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.88","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:18:16.783301+00:00","LastUpdated":"2022-10-17T23:18:16.783301+00:00","Context":{"Id":"0183e83da1cf18190628f48c1ec72afb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.47","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:18:46.799466+00:00","LastUpdated":"2022-10-17T23:18:46.799466+00:00","Context":{"Id":"0183e83e170f1e418496feb16b646534","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"62.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:19:02.308429+00:00","LastUpdated":"2022-10-17T23:19:02.308429+00:00","Context":{"Id":"0183e83e53a4efaf155b3249c0d5012f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:19:08.310841+00:00","LastUpdated":"2022-10-17T23:19:08.310841+00:00","Context":{"Id":"0183e83e6b16245409a48557fd64cd27","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.83","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:19:16.801687+00:00","LastUpdated":"2022-10-17T23:19:16.801687+00:00","Context":{"Id":"0183e83e8c41ca6bc236cab3b124b145","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:19:46.8092+00:00","LastUpdated":"2022-10-17T23:19:46.8092+00:00","Context":{"Id":"0183e83f0179c4db96dfba27c03dc6b7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:20:14.311005+00:00","LastUpdated":"2022-10-17T23:20:14.311005+00:00","Context":{"Id":"0183e83f6ce66a239ec0921c37f95e70","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:20:16.814096+00:00","LastUpdated":"2022-10-17T23:20:16.814096+00:00","Context":{"Id":"0183e83f76ae4a1d088656291017cbe3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:20:19.310431+00:00","LastUpdated":"2022-10-17T23:20:19.310431+00:00","Context":{"Id":"0183e83f806eb08896dffd09d40df545","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:20:46.823722+00:00","LastUpdated":"2022-10-17T23:20:46.823722+00:00","Context":{"Id":"0183e83febe731f964db931c4ab1cdc6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:21:16.827977+00:00","LastUpdated":"2022-10-17T23:21:16.827977+00:00","Context":{"Id":"0183e840611bf8f84836599a301aee03","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:21:23.335908+00:00","LastUpdated":"2022-10-17T23:21:23.335908+00:00","Context":{"Id":"0183e8407a8763325ff9fe14877ce340","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:21:29.322112+00:00","LastUpdated":"2022-10-17T23:21:29.322112+00:00","Context":{"Id":"0183e84091eaea660484ac0c0eae166c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.68","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:21:46.833447+00:00","LastUpdated":"2022-10-17T23:21:46.833447+00:00","Context":{"Id":"0183e840d651b1996da010adffc213b0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:22:16.84522+00:00","LastUpdated":"2022-10-17T23:22:16.84522+00:00","Context":{"Id":"0183e8414b8dd93fa54eae9b8dd96500","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.90","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:22:39.313252+00:00","LastUpdated":"2022-10-17T23:22:39.313252+00:00","Context":{"Id":"0183e841a351e1a37066606e55b9f1a5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:22:46.850044+00:00","LastUpdated":"2022-10-17T23:22:46.850044+00:00","Context":{"Id":"0183e841c0c1be9cc0a884c9fb9e25eb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.75","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:16.858453+00:00","LastUpdated":"2022-10-17T23:23:16.858453+00:00","Context":{"Id":"0183e84235fad28fc43a7442199c9b5b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"36.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:30.315531+00:00","LastUpdated":"2022-10-17T23:23:30.315531+00:00","Context":{"Id":"0183e8426a8b065d87ca9b6800708759","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"31.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:36.341159+00:00","LastUpdated":"2022-10-17T23:23:36.341159+00:00","Context":{"Id":"0183e842821547cbd91f8a8b49ee295a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"28.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:44.314916+00:00","LastUpdated":"2022-10-17T23:23:44.314916+00:00","Context":{"Id":"0183e842a13ad4de9cf360a28cb8772d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.81","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:46.861235+00:00","LastUpdated":"2022-10-17T23:23:46.861235+00:00","Context":{"Id":"0183e842ab2df48f04613d3b701a1373","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.25","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:49.316018+00:00","LastUpdated":"2022-10-17T23:23:49.316018+00:00","Context":{"Id":"0183e842b4c37a33587cdc9899d76078","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"24.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:23:55.315457+00:00","LastUpdated":"2022-10-17T23:23:55.315457+00:00","Context":{"Id":"0183e842cc335823c094014b68be5ead","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"11.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:24:09.315066+00:00","LastUpdated":"2022-10-17T23:24:09.315066+00:00","Context":{"Id":"0183e84302e3070404e6e3e1ca6c636c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:24:14.31852+00:00","LastUpdated":"2022-10-17T23:24:14.31852+00:00","Context":{"Id":"0183e843166e54239ae95ce624e87e52","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"9.12","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:24:26.315016+00:00","LastUpdated":"2022-10-17T23:24:26.315016+00:00","Context":{"Id":"0183e843454a9fa3285eaf6cf451d680","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:24:32.317985+00:00","LastUpdated":"2022-10-17T23:24:32.317985+00:00","Context":{"Id":"0183e8435cbdd545f70463bffaba2e7b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.17","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:24:46.875557+00:00","LastUpdated":"2022-10-17T23:24:46.875557+00:00","Context":{"Id":"0183e843959ba04a4542c92aac642bba","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"48.77","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:24:59.315809+00:00","LastUpdated":"2022-10-17T23:24:59.315809+00:00","Context":{"Id":"0183e843c633a03d4c38bb93f216274f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.25","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:25:04.32306+00:00","LastUpdated":"2022-10-17T23:25:04.32306+00:00","Context":{"Id":"0183e843d9c3bbcba2b9972447cfbbcb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:25:16.882538+00:00","LastUpdated":"2022-10-17T23:25:16.882538+00:00","Context":{"Id":"0183e8440ad20173c305d89b31808d60","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:25:26.320028+00:00","LastUpdated":"2022-10-17T23:25:26.320028+00:00","Context":{"Id":"0183e8442faffa89cedc192daba72da3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"73.62","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:25:38.318402+00:00","LastUpdated":"2022-10-17T23:25:38.318402+00:00","Context":{"Id":"0183e8445e8ee4fcc99c4697ca7f9387","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"63.47","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:25:45.318299+00:00","LastUpdated":"2022-10-17T23:25:45.318299+00:00","Context":{"Id":"0183e84479e684bb07e3dea06f2b8789","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.55","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:25:51.320358+00:00","LastUpdated":"2022-10-17T23:25:51.320358+00:00","Context":{"Id":"0183e84491580023261db4ff85a93320","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:26:02.320806+00:00","LastUpdated":"2022-10-17T23:26:02.320806+00:00","Context":{"Id":"0183e844bc50606c4d91c36e8cb2b4a5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:26:16.895758+00:00","LastUpdated":"2022-10-17T23:26:16.895758+00:00","Context":{"Id":"0183e844f53f50c2b224f6c6b5adb760","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"88.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:26:20.319654+00:00","LastUpdated":"2022-10-17T23:26:20.319654+00:00","Context":{"Id":"0183e845029feb034dcd52721129dd9e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:26:26.319226+00:00","LastUpdated":"2022-10-17T23:26:26.319226+00:00","Context":{"Id":"0183e8451a0f1defa27db7201973e9e6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1797.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:26:31.320597+00:00","LastUpdated":"2022-10-17T23:26:31.320597+00:00","Context":{"Id":"0183e8452d98e0e532d792341fb4ca7a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1786.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:26:46.903682+00:00","LastUpdated":"2022-10-17T23:26:46.903682+00:00","Context":{"Id":"0183e8456a772c8c0706f780cba31ae5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1790.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:27:16.910821+00:00","LastUpdated":"2022-10-17T23:27:16.910821+00:00","Context":{"Id":"0183e845dfaeb2664ee19ede0caee54b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1799.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:27:46.917139+00:00","LastUpdated":"2022-10-17T23:27:46.917139+00:00","Context":{"Id":"0183e84654e591f85ba5682df661e11e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1784.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:28:46.929482+00:00","LastUpdated":"2022-10-17T23:28:46.929482+00:00","Context":{"Id":"0183e8473f51f6125f9628b1bbecdb88","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:29:16.955953+00:00","LastUpdated":"2022-10-17T23:29:16.955953+00:00","Context":{"Id":"0183e847b49b91cbb5667c7afa5f92f9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1781.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:29:46.943879+00:00","LastUpdated":"2022-10-17T23:29:46.943879+00:00","Context":{"Id":"0183e84829bf6a6b7d4d0cb5ed204862","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1779.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:30:16.950057+00:00","LastUpdated":"2022-10-17T23:30:16.950057+00:00","Context":{"Id":"0183e8489ef6c60884db60ddc8fc0f75","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1774.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:30:47.003912+00:00","LastUpdated":"2022-10-17T23:30:47.003912+00:00","Context":{"Id":"0183e849145b93cf2a3b8cece893635b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1775.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:31:17.00459+00:00","LastUpdated":"2022-10-17T23:31:17.00459+00:00","Context":{"Id":"0183e849898c974d8ab2d04df7425590","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1774.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:31:46.970648+00:00","LastUpdated":"2022-10-17T23:31:46.970648+00:00","Context":{"Id":"0183e849fe9a685bb480c912dde7dbf8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1775.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:32:16.975521+00:00","LastUpdated":"2022-10-17T23:32:16.975521+00:00","Context":{"Id":"0183e84a73cf7ab6c1b1ef6591486140","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1781.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:32:46.984985+00:00","LastUpdated":"2022-10-17T23:32:46.984985+00:00","Context":{"Id":"0183e84ae908ec2de88700b35fd314c6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1770.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:33:17.001531+00:00","LastUpdated":"2022-10-17T23:33:17.001531+00:00","Context":{"Id":"0183e84b5e49958fa7b47c48e4387251","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1774.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:33:46.996647+00:00","LastUpdated":"2022-10-17T23:33:46.996647+00:00","Context":{"Id":"0183e84bd3740ba589158d9178df271f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1745.47","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:34:47.009564+00:00","LastUpdated":"2022-10-17T23:34:47.009564+00:00","Context":{"Id":"0183e84cbde1bcdd7d5d1ebc21f5a5ea","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1752.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:35:17.016542+00:00","LastUpdated":"2022-10-17T23:35:17.016542+00:00","Context":{"Id":"0183e84d3318dff748770fe4335004b3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"183.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:35:27.332421+00:00","LastUpdated":"2022-10-17T23:35:27.332421+00:00","Context":{"Id":"0183e84d5b64753002ff1598ad9ef10e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.91","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:35:32.333079+00:00","LastUpdated":"2022-10-17T23:35:32.333079+00:00","Context":{"Id":"0183e84d6eede009d41f319c62c81a7b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.59","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:35:47.024715+00:00","LastUpdated":"2022-10-17T23:35:47.024715+00:00","Context":{"Id":"0183e84da8509c5fb0d09f8b78cde5e0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:36:17.030963+00:00","LastUpdated":"2022-10-17T23:36:17.030963+00:00","Context":{"Id":"0183e84e1d861df4c620ee808df8f825","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"63.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:36:38.335222+00:00","LastUpdated":"2022-10-17T23:36:38.335222+00:00","Context":{"Id":"0183e84e70bf1ce94949d4d0aa496969","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.86","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:36:44.33482+00:00","LastUpdated":"2022-10-17T23:36:44.33482+00:00","Context":{"Id":"0183e84e882eda011ad4974276472c9f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.57","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:36:47.040036+00:00","LastUpdated":"2022-10-17T23:36:47.040036+00:00","Context":{"Id":"0183e84e92bff5d019f8f9a22a844707","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.08","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:37:17.044939+00:00","LastUpdated":"2022-10-17T23:37:17.044939+00:00","Context":{"Id":"0183e84f07f42a5e13e0013ce89e807c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:37:47.142902+00:00","LastUpdated":"2022-10-17T23:37:47.142902+00:00","Context":{"Id":"0183e84f7d86a452836095cb079fbf02","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:37:54.336931+00:00","LastUpdated":"2022-10-17T23:37:54.336931+00:00","Context":{"Id":"0183e84f99a01d8436c49777f9855631","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:38:17.058869+00:00","LastUpdated":"2022-10-17T23:38:17.058869+00:00","Context":{"Id":"0183e84ff262a5fbac8c6d841fab1e19","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.09","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:38:47.069142+00:00","LastUpdated":"2022-10-17T23:38:47.069142+00:00","Context":{"Id":"0183e850679d19fdaf939ddd3ff8ff8b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"62.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:39:00.337364+00:00","LastUpdated":"2022-10-17T23:39:00.337364+00:00","Context":{"Id":"0183e8509b710f843b58b06ab7b10cd8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:39:06.3385+00:00","LastUpdated":"2022-10-17T23:39:06.3385+00:00","Context":{"Id":"0183e850b2e23ae66a747295c4f60ff2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:39:17.07339+00:00","LastUpdated":"2022-10-17T23:39:17.07339+00:00","Context":{"Id":"0183e850dcd1acf2282b2e13c8ad5667","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"73.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:39:47.081635+00:00","LastUpdated":"2022-10-17T23:39:47.081635+00:00","Context":{"Id":"0183e8515209ef9dc69a91152b59467a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:40:15.341325+00:00","LastUpdated":"2022-10-17T23:40:15.341325+00:00","Context":{"Id":"0183e851c06d526608f82dea71e2c6fc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:40:21.339925+00:00","LastUpdated":"2022-10-17T23:40:21.339925+00:00","Context":{"Id":"0183e851d7db581e81e70ab85eb868a1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.57","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:40:47.097745+00:00","LastUpdated":"2022-10-17T23:40:47.097745+00:00","Context":{"Id":"0183e8523c796d0645156bbf44097db5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:41:15.348543+00:00","LastUpdated":"2022-10-17T23:41:15.348543+00:00","Context":{"Id":"0183e852aad42a402c632ee7cff867b4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:41:23.340832+00:00","LastUpdated":"2022-10-17T23:41:23.340832+00:00","Context":{"Id":"0183e852ca0c6e86313ce3fe5f86a780","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.87","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:41:28.372329+00:00","LastUpdated":"2022-10-17T23:41:28.372329+00:00","Context":{"Id":"0183e852ddb4936ba8cdaab1c4099fa1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:41:33.357375+00:00","LastUpdated":"2022-10-17T23:41:33.357375+00:00","Context":{"Id":"0183e852f12df41f036a3fdee91a88dd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.02","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:41:47.109414+00:00","LastUpdated":"2022-10-17T23:41:47.109414+00:00","Context":{"Id":"0183e85326e5384d134979bea2388a17","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.57","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:42:17.117298+00:00","LastUpdated":"2022-10-17T23:42:17.117298+00:00","Context":{"Id":"0183e8539c1dc2651a92032194f7c67e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.33","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:42:39.346445+00:00","LastUpdated":"2022-10-17T23:42:39.346445+00:00","Context":{"Id":"0183e853f2f20dc122cc254185cc1819","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:42:47.145678+00:00","LastUpdated":"2022-10-17T23:42:47.145678+00:00","Context":{"Id":"0183e8541169a708a1e97a0f7849aa36","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:43:17.131675+00:00","LastUpdated":"2022-10-17T23:43:17.131675+00:00","Context":{"Id":"0183e854868bc0bcf49aef9dd872f4ba","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:43:45.347298+00:00","LastUpdated":"2022-10-17T23:43:45.347298+00:00","Context":{"Id":"0183e854f4c31b1a5ee0145feabe2487","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:43:50.344751+00:00","LastUpdated":"2022-10-17T23:43:50.344751+00:00","Context":{"Id":"0183e8550848da43838681e140a1130d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.62","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:43:56.346851+00:00","LastUpdated":"2022-10-17T23:43:56.346851+00:00","Context":{"Id":"0183e8551fba1edd11f9b47f0a27da1c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:44:17.156029+00:00","LastUpdated":"2022-10-17T23:44:17.156029+00:00","Context":{"Id":"0183e8557103e227185e0321fff74d70","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.55","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:44:47.149826+00:00","LastUpdated":"2022-10-17T23:44:47.149826+00:00","Context":{"Id":"0183e855e62d1a12669e83003f5fb29c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.64","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:45:02.34867+00:00","LastUpdated":"2022-10-17T23:45:02.34867+00:00","Context":{"Id":"0183e856218c1f16855f1851ccc82d7a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.10","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:45:17.155615+00:00","LastUpdated":"2022-10-17T23:45:17.155615+00:00","Context":{"Id":"0183e8565b63b368175c7897e0c31781","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:45:47.168518+00:00","LastUpdated":"2022-10-17T23:45:47.168518+00:00","Context":{"Id":"0183e856d0a0f84c8aee32ac2d9cf606","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"63.91","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:46:08.34994+00:00","LastUpdated":"2022-10-17T23:46:08.34994+00:00","Context":{"Id":"0183e857235dcd07e8d54bc9697a4f28","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.56","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:46:13.353718+00:00","LastUpdated":"2022-10-17T23:46:13.353718+00:00","Context":{"Id":"0183e85736e99616c80d27072f40c782","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.96","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:46:17.172023+00:00","LastUpdated":"2022-10-17T23:46:17.172023+00:00","Context":{"Id":"0183e85745d36bc4b6ed8a61be47dde2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.47","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:46:19.348865+00:00","LastUpdated":"2022-10-17T23:46:19.348865+00:00","Context":{"Id":"0183e8574e546def8a3a20a61a3a0bc8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:46:47.181424+00:00","LastUpdated":"2022-10-17T23:46:47.181424+00:00","Context":{"Id":"0183e857bb0de6284c0749e967a7095c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.65","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:47:17.186753+00:00","LastUpdated":"2022-10-17T23:47:17.186753+00:00","Context":{"Id":"0183e85830420d43045363a5d7db03a1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:47:20.354333+00:00","LastUpdated":"2022-10-17T23:47:20.354333+00:00","Context":{"Id":"0183e8583ca22c034681da784b0f1b37","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.89","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:47:26.350633+00:00","LastUpdated":"2022-10-17T23:47:26.350633+00:00","Context":{"Id":"0183e858540e3a1eef78609fa4439ad7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.96","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:47:47.191854+00:00","LastUpdated":"2022-10-17T23:47:47.191854+00:00","Context":{"Id":"0183e858a577d18c43b3beefff9a0165","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:48:17.198809+00:00","LastUpdated":"2022-10-17T23:48:17.198809+00:00","Context":{"Id":"0183e8591aaed1b118c2d62273654be9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.16","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:48:30.352589+00:00","LastUpdated":"2022-10-17T23:48:30.352589+00:00","Context":{"Id":"0183e8594e10d14569285f2598b1e153","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:48:36.354786+00:00","LastUpdated":"2022-10-17T23:48:36.354786+00:00","Context":{"Id":"0183e8596582276286d342458bc12133","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.71","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:48:47.209398+00:00","LastUpdated":"2022-10-17T23:48:47.209398+00:00","Context":{"Id":"0183e8598fe93ec4b8558f33fa008138","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:49:17.216325+00:00","LastUpdated":"2022-10-17T23:49:17.216325+00:00","Context":{"Id":"0183e85a052044daa553ae652646f12b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:49:45.356279+00:00","LastUpdated":"2022-10-17T23:49:45.356279+00:00","Context":{"Id":"0183e85a730ce201d1b9952aec9f517c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.12","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:50:17.223689+00:00","LastUpdated":"2022-10-17T23:50:17.223689+00:00","Context":{"Id":"0183e85aef873e884c3de2074aec837e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"234.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:50:18.356624+00:00","LastUpdated":"2022-10-17T23:50:18.356624+00:00","Context":{"Id":"0183e85af3f415664c67811a1f6f5e3f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:50:23.357036+00:00","LastUpdated":"2022-10-17T23:50:23.357036+00:00","Context":{"Id":"0183e85b077caa2f44a1a4484ee7b7c5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1777.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:50:47.237493+00:00","LastUpdated":"2022-10-17T23:50:47.237493+00:00","Context":{"Id":"0183e85b64c5b7dd70386afacccc5e47","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1772.22","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:51:17.240017+00:00","LastUpdated":"2022-10-17T23:51:17.240017+00:00","Context":{"Id":"0183e85bd9f779185630c0a844c06452","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1777.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:51:47.249786+00:00","LastUpdated":"2022-10-17T23:51:47.249786+00:00","Context":{"Id":"0183e85c4f31b5356e9dd4088e6c67d3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1775.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:52:17.253146+00:00","LastUpdated":"2022-10-17T23:52:17.253146+00:00","Context":{"Id":"0183e85cc465f8f3347c418a8709a7a6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1752.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:52:47.261761+00:00","LastUpdated":"2022-10-17T23:52:47.261761+00:00","Context":{"Id":"0183e85d399deee80934e8868619e289","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1761.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:53:17.269261+00:00","LastUpdated":"2022-10-17T23:53:17.269261+00:00","Context":{"Id":"0183e85daed5cd4e50d1e6cb74fc25a8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1759.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:53:47.275804+00:00","LastUpdated":"2022-10-17T23:53:47.275804+00:00","Context":{"Id":"0183e85e240b338e13209740020f1ef8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1756.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:54:17.280627+00:00","LastUpdated":"2022-10-17T23:54:17.280627+00:00","Context":{"Id":"0183e85e994065f60e2089385c7e955a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1750.76","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:54:47.290107+00:00","LastUpdated":"2022-10-17T23:54:47.290107+00:00","Context":{"Id":"0183e85f0e7a309827a89ce91c8fed18","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1748.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:55:17.29396+00:00","LastUpdated":"2022-10-17T23:55:17.29396+00:00","Context":{"Id":"0183e85f83ad5bec209b9b737e7be882","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1743.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:55:47.368292+00:00","LastUpdated":"2022-10-17T23:55:47.368292+00:00","Context":{"Id":"0183e85ff9283cbd7f7975be26f1670d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1757.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:56:17.307481+00:00","LastUpdated":"2022-10-17T23:56:17.307481+00:00","Context":{"Id":"0183e8606e1b780b62076789c71f31e4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1747.23","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:56:47.317311+00:00","LastUpdated":"2022-10-17T23:56:47.317311+00:00","Context":{"Id":"0183e860e355dcbd0730964d99f1ca42","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1752.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:57:17.322018+00:00","LastUpdated":"2022-10-17T23:57:17.322018+00:00","Context":{"Id":"0183e8615889d2ffe560920317a8a42a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1743.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:57:47.330918+00:00","LastUpdated":"2022-10-17T23:57:47.330918+00:00","Context":{"Id":"0183e861cdc2cf59ba4cb14ac001373d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1752.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:58:17.3388+00:00","LastUpdated":"2022-10-17T23:58:17.3388+00:00","Context":{"Id":"0183e86242fa7642d4dc625c72f8ea04","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1754.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:58:47.349481+00:00","LastUpdated":"2022-10-17T23:58:47.349481+00:00","Context":{"Id":"0183e862b835fb3f36998e4eefb3ff7f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1757.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-17T23:59:17.350134+00:00","LastUpdated":"2022-10-17T23:59:17.350134+00:00","Context":{"Id":"0183e8632d661783bd6646d3318b3bfa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1759.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:00:17.360923+00:00","LastUpdated":"2022-10-18T00:00:17.360923+00:00","Context":{"Id":"0183e86417d04a1542b63307a98a54fa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1756.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:01:17.378142+00:00","LastUpdated":"2022-10-18T00:01:17.378142+00:00","Context":{"Id":"0183e8650242f0c060c0096a38fe325e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1754.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:01:47.385497+00:00","LastUpdated":"2022-10-18T00:01:47.385497+00:00","Context":{"Id":"0183e8657779237cd27abb362941c4d6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1759.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:02:17.395106+00:00","LastUpdated":"2022-10-18T00:02:17.395106+00:00","Context":{"Id":"0183e865ecb3568a24a6da393d054a8e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"92.06","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:02:32.374949+00:00","LastUpdated":"2022-10-18T00:02:32.374949+00:00","Context":{"Id":"0183e8662736642888b233e45373e20e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:02:37.374657+00:00","LastUpdated":"2022-10-18T00:02:37.374657+00:00","Context":{"Id":"0183e8663abe9a208ff2c728cabb2235","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.67","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:02:47.399116+00:00","LastUpdated":"2022-10-18T00:02:47.399116+00:00","Context":{"Id":"0183e86661e70d7aef322c5c54d8636f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.75","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:02:59.375788+00:00","LastUpdated":"2022-10-18T00:02:59.375788+00:00","Context":{"Id":"0183e86690af9918eacf1d692335af82","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.43","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:03:17.406041+00:00","LastUpdated":"2022-10-18T00:03:17.406041+00:00","Context":{"Id":"0183e866d71ddb498b1ceed992c789fb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.92","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:03:47.41358+00:00","LastUpdated":"2022-10-18T00:03:47.41358+00:00","Context":{"Id":"0183e8674c55d15c28b1285943286ba5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:04:05.377032+00:00","LastUpdated":"2022-10-18T00:04:05.377032+00:00","Context":{"Id":"0183e8679280a3cca9fa915ff447baac","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:04:11.377187+00:00","LastUpdated":"2022-10-18T00:04:11.377187+00:00","Context":{"Id":"0183e867a9f1a74af4f6f42102adafca","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:04:17.426405+00:00","LastUpdated":"2022-10-18T00:04:17.426405+00:00","Context":{"Id":"0183e867c192e9cdf99778250e84f39e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.15","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:04:47.425737+00:00","LastUpdated":"2022-10-18T00:04:47.425737+00:00","Context":{"Id":"0183e86836c14bbcbff78b21222bfb8d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.92","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:05:17.433848+00:00","LastUpdated":"2022-10-18T00:05:17.433848+00:00","Context":{"Id":"0183e868abf97dd328f338b25ccded24","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.54","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:05:21.37941+00:00","LastUpdated":"2022-10-18T00:05:21.37941+00:00","Context":{"Id":"0183e868bb63d3cd746d2327d18167fa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.11","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:05:47.439003+00:00","LastUpdated":"2022-10-18T00:05:47.439003+00:00","Context":{"Id":"0183e869212e16e2d02da53bc9f73a7d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"69.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:06:17.448979+00:00","LastUpdated":"2022-10-18T00:06:17.448979+00:00","Context":{"Id":"0183e869966862dc831ab0762ba31c45","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"62.88","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:06:29.380999+00:00","LastUpdated":"2022-10-18T00:06:29.380999+00:00","Context":{"Id":"0183e869c504ceb3948804114d93e69d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.86","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:06:35.382619+00:00","LastUpdated":"2022-10-18T00:06:35.382619+00:00","Context":{"Id":"0183e869dc760a70f635e02a8cce2184","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.65","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:06:47.453868+00:00","LastUpdated":"2022-10-18T00:06:47.453868+00:00","Context":{"Id":"0183e86a0b9de545167ca771025df90c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.27","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:07:17.461348+00:00","LastUpdated":"2022-10-18T00:07:17.461348+00:00","Context":{"Id":"0183e86a80d5d010ca67d36d947c8cb5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.16","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:07:44.386973+00:00","LastUpdated":"2022-10-18T00:07:44.386973+00:00","Context":{"Id":"0183e86aea02b01e4eb73021c3e7edab","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.65","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:07:47.470668+00:00","LastUpdated":"2022-10-18T00:07:47.470668+00:00","Context":{"Id":"0183e86af60e1fb0d83f19c793b83666","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.12","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:08:17.474239+00:00","LastUpdated":"2022-10-18T00:08:17.474239+00:00","Context":{"Id":"0183e86b6b42821d7771fce368dbb89d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:08:47.483787+00:00","LastUpdated":"2022-10-18T00:08:47.483787+00:00","Context":{"Id":"0183e86be07b1d688d2e1dafb6683dcd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"63.89","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:08:51.384405+00:00","LastUpdated":"2022-10-18T00:08:51.384405+00:00","Context":{"Id":"0183e86befb839fa66c3afab66cc2e17","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"77.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:08:57.386119+00:00","LastUpdated":"2022-10-18T00:08:57.386119+00:00","Context":{"Id":"0183e86c072a58d68e6b5b2518f2d639","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.08","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:09:17.487426+00:00","LastUpdated":"2022-10-18T00:09:17.487426+00:00","Context":{"Id":"0183e86c55af10222f4804b70e15269a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.94","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:09:47.495238+00:00","LastUpdated":"2022-10-18T00:09:47.495238+00:00","Context":{"Id":"0183e86ccae71876be2a018105d369e4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.08","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:10:06.387755+00:00","LastUpdated":"2022-10-18T00:10:06.387755+00:00","Context":{"Id":"0183e86d14b3c34473f87342ddd89180","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:10:17.496824+00:00","LastUpdated":"2022-10-18T00:10:17.496824+00:00","Context":{"Id":"0183e86d4018eb29720ac066f2e25c3f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.88","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:10:47.506968+00:00","LastUpdated":"2022-10-18T00:10:47.506968+00:00","Context":{"Id":"0183e86db55207be7f6dd64ac9ccf95a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"67.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:11:12.389765+00:00","LastUpdated":"2022-10-18T00:11:12.389765+00:00","Context":{"Id":"0183e86e16852959aa3d43ee8bd76d0c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.65","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:11:17.513141+00:00","LastUpdated":"2022-10-18T00:11:17.513141+00:00","Context":{"Id":"0183e86e2a8970c28b20d52c41110865","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.43","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:11:18.388538+00:00","LastUpdated":"2022-10-18T00:11:18.388538+00:00","Context":{"Id":"0183e86e2df494e0d6435be33d8c6098","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.97","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:11:47.520735+00:00","LastUpdated":"2022-10-18T00:11:47.520735+00:00","Context":{"Id":"0183e86e9fc0cfbafa2b416fc010fced","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.78","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:12:17.533745+00:00","LastUpdated":"2022-10-18T00:12:17.533745+00:00","Context":{"Id":"0183e86f14fdd1c0f92ffb60a37fe95a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.56","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:12:29.389484+00:00","LastUpdated":"2022-10-18T00:12:29.389484+00:00","Context":{"Id":"0183e86f434dbe1a9ba64db42d3e6c09","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.76","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:12:47.533913+00:00","LastUpdated":"2022-10-18T00:12:47.533913+00:00","Context":{"Id":"0183e86f8a2dba7f20e6a2f9af653b0a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.21","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:13:17.541314+00:00","LastUpdated":"2022-10-18T00:13:17.541314+00:00","Context":{"Id":"0183e86fff65363ba54b99914a018d70","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"63.88","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:13:36.475632+00:00","LastUpdated":"2022-10-18T00:13:36.475632+00:00","Context":{"Id":"0183e870495bb996cd9b9f13d768a972","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.59","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:13:42.39156+00:00","LastUpdated":"2022-10-18T00:13:42.39156+00:00","Context":{"Id":"0183e870607793f152ba8b60d7a9b3cf","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:13:47.550302+00:00","LastUpdated":"2022-10-18T00:13:47.550302+00:00","Context":{"Id":"0183e870749ed47ebc3b2f3eaf85a17c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.83","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:14:17.556958+00:00","LastUpdated":"2022-10-18T00:14:17.556958+00:00","Context":{"Id":"0183e870e9d4204a21e40f2b425787f8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:14:47.560805+00:00","LastUpdated":"2022-10-18T00:14:47.560805+00:00","Context":{"Id":"0183e8715f08b5d48f68bb57001c02b3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.09","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:14:53.392424+00:00","LastUpdated":"2022-10-18T00:14:53.392424+00:00","Context":{"Id":"0183e87175d0daee26d516fdeea0143d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.06","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:15:17.568053+00:00","LastUpdated":"2022-10-18T00:15:17.568053+00:00","Context":{"Id":"0183e871d43ffdbfdbe5f0a8e80637d1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:15:47.574513+00:00","LastUpdated":"2022-10-18T00:15:47.574513+00:00","Context":{"Id":"0183e8724976c091115228d7bc9a4ebe","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:15:59.396779+00:00","LastUpdated":"2022-10-18T00:15:59.396779+00:00","Context":{"Id":"0183e87277a445d3cec34681a511734e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.15","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:16:04.395647+00:00","LastUpdated":"2022-10-18T00:16:04.395647+00:00","Context":{"Id":"0183e8728b2b92a3e0f292833c2b5d31","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:16:17.58079+00:00","LastUpdated":"2022-10-18T00:16:17.58079+00:00","Context":{"Id":"0183e872beac031c2d45b455121f8837","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.54","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:16:47.590159+00:00","LastUpdated":"2022-10-18T00:16:47.590159+00:00","Context":{"Id":"0183e87333e6cdb08b424fea4ac70e23","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.50","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:17:14.39682+00:00","LastUpdated":"2022-10-18T00:17:14.39682+00:00","Context":{"Id":"0183e8739c9c88af2a33c9627fc81db2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:17:17.595275+00:00","LastUpdated":"2022-10-18T00:17:17.595275+00:00","Context":{"Id":"0183e873a91b89bca87970fd74ab3516","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.97","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:17:47.605652+00:00","LastUpdated":"2022-10-18T00:17:47.605652+00:00","Context":{"Id":"0183e8741e558a013258c954181985fd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.81","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:18:17.608378+00:00","LastUpdated":"2022-10-18T00:18:17.608378+00:00","Context":{"Id":"0183e8749388b4b538c77959959e5ad0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.94","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:18:20.396936+00:00","LastUpdated":"2022-10-18T00:18:20.396936+00:00","Context":{"Id":"0183e8749e6c60acf4974497581854e7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:18:25.39933+00:00","LastUpdated":"2022-10-18T00:18:25.39933+00:00","Context":{"Id":"0183e874b1f79379151ca3e66593fe69","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:18:47.615682+00:00","LastUpdated":"2022-10-18T00:18:47.615682+00:00","Context":{"Id":"0183e87508bff99b038526455ded3563","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:19:17.622294+00:00","LastUpdated":"2022-10-18T00:19:17.622294+00:00","Context":{"Id":"0183e8757df65dff089b687da72ec2e7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:19:33.484491+00:00","LastUpdated":"2022-10-18T00:19:33.484491+00:00","Context":{"Id":"0183e875bbec3c181dafbfc0b3a07327","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.96","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:19:39.400418+00:00","LastUpdated":"2022-10-18T00:19:39.400418+00:00","Context":{"Id":"0183e875d308b3b5e6f5846031860b5a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:19:47.635817+00:00","LastUpdated":"2022-10-18T00:19:47.635817+00:00","Context":{"Id":"0183e875f3334a7b7a47f6d633bc836f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.27","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:20:17.636685+00:00","LastUpdated":"2022-10-18T00:20:17.636685+00:00","Context":{"Id":"0183e8766864c775996b45cd2498bf3c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.78","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:20:44.401634+00:00","LastUpdated":"2022-10-18T00:20:44.401634+00:00","Context":{"Id":"0183e876d0f176d7d586aab44bff0aab","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.95","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:20:47.645458+00:00","LastUpdated":"2022-10-18T00:20:47.645458+00:00","Context":{"Id":"0183e876dd9d7b91e0b7215d76e47e4b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:20:49.400988+00:00","LastUpdated":"2022-10-18T00:20:49.400988+00:00","Context":{"Id":"0183e876e478312ea55dfeebf24ec642","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.77","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:20:59.401668+00:00","LastUpdated":"2022-10-18T00:20:59.401668+00:00","Context":{"Id":"0183e8770b8933d2677b7455bef6a773","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.69","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:21:17.648032+00:00","LastUpdated":"2022-10-18T00:21:17.648032+00:00","Context":{"Id":"0183e87752cf3b7e4ecf672fe18bb084","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.76","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:21:47.701159+00:00","LastUpdated":"2022-10-18T00:21:47.701159+00:00","Context":{"Id":"0183e877c835bdcea609c29404c07f81","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.13","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:21:59.403777+00:00","LastUpdated":"2022-10-18T00:21:59.403777+00:00","Context":{"Id":"0183e877f5eb9d00cb09bc0a61558897","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:22:17.665905+00:00","LastUpdated":"2022-10-18T00:22:17.665905+00:00","Context":{"Id":"0183e8783d4109fe7bc3874b271b60f2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.78","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:22:47.668696+00:00","LastUpdated":"2022-10-18T00:22:47.668696+00:00","Context":{"Id":"0183e878b27423e6365f932b1e1bf71a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:23:06.406572+00:00","LastUpdated":"2022-10-18T00:23:06.406572+00:00","Context":{"Id":"0183e878fba6464afd346f9c0ea895fc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.92","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:23:11.404943+00:00","LastUpdated":"2022-10-18T00:23:11.404943+00:00","Context":{"Id":"0183e8790f2c90032622e0f315586411","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"77.15","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:23:17.67409+00:00","LastUpdated":"2022-10-18T00:23:17.67409+00:00","Context":{"Id":"0183e87927aadaed1cfdfc1caa223479","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:23:18.408233+00:00","LastUpdated":"2022-10-18T00:23:18.408233+00:00","Context":{"Id":"0183e8792a8835b77999c700829dbf88","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.16","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:23:47.68415+00:00","LastUpdated":"2022-10-18T00:23:47.68415+00:00","Context":{"Id":"0183e8799ce43340d21e747ca69a9e73","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:24:17.693432+00:00","LastUpdated":"2022-10-18T00:24:17.693432+00:00","Context":{"Id":"0183e87a121df21efd3bbb9428ddf956","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:24:18.40801+00:00","LastUpdated":"2022-10-18T00:24:18.40801+00:00","Context":{"Id":"0183e87a14e76c3ba1cf8af68149f82d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:24:24.408222+00:00","LastUpdated":"2022-10-18T00:24:24.408222+00:00","Context":{"Id":"0183e87a2c586382891c18369cfc1b3a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.68","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:24:47.698932+00:00","LastUpdated":"2022-10-18T00:24:47.698932+00:00","Context":{"Id":"0183e87a8752fd9eb6145ed770ab4d8e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.13","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:25:17.70729+00:00","LastUpdated":"2022-10-18T00:25:17.70729+00:00","Context":{"Id":"0183e87afc8bbe84b764e6fc49bfaec6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.75","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:25:29.40922+00:00","LastUpdated":"2022-10-18T00:25:29.40922+00:00","Context":{"Id":"0183e87b2a410612b10f241eef58087a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:25:34.410756+00:00","LastUpdated":"2022-10-18T00:25:34.410756+00:00","Context":{"Id":"0183e87b3dca04aeba1c5dfa6210055c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.86","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:25:39.505799+00:00","LastUpdated":"2022-10-18T00:25:39.505799+00:00","Context":{"Id":"0183e87b51b1cc840da4d17b40a1bafc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.81","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:25:47.712596+00:00","LastUpdated":"2022-10-18T00:25:47.712596+00:00","Context":{"Id":"0183e87b71c02aa5af98bc6d32007d9c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.55","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:26:17.717574+00:00","LastUpdated":"2022-10-18T00:26:17.717574+00:00","Context":{"Id":"0183e87be6f5706b57c1c4377e0fcea1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:26:44.411105+00:00","LastUpdated":"2022-10-18T00:26:44.411105+00:00","Context":{"Id":"0183e87c4f3bce8d7f803c4a4ce4740d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:26:47.723856+00:00","LastUpdated":"2022-10-18T00:26:47.723856+00:00","Context":{"Id":"0183e87c5c2b8ca9cddd319fe7e874b4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:27:17.72741+00:00","LastUpdated":"2022-10-18T00:27:17.72741+00:00","Context":{"Id":"0183e87cd15fd3e0873b8c33395d7de5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"73.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:27:47.734593+00:00","LastUpdated":"2022-10-18T00:27:47.734593+00:00","Context":{"Id":"0183e87d4696f813d99907cfccef3152","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:27:51.411464+00:00","LastUpdated":"2022-10-18T00:27:51.411464+00:00","Context":{"Id":"0183e87d54f308e95d5d4664fe774a56","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:27:57.412058+00:00","LastUpdated":"2022-10-18T00:27:57.412058+00:00","Context":{"Id":"0183e87d6c6497a64f519d06ee4d7a6c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.11","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:28:17.744514+00:00","LastUpdated":"2022-10-18T00:28:17.744514+00:00","Context":{"Id":"0183e87dbbd096631ed891072e6d4129","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.10","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:28:47.750461+00:00","LastUpdated":"2022-10-18T00:28:47.750461+00:00","Context":{"Id":"0183e87e31061cf06142d04d06357b55","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:29:06.487848+00:00","LastUpdated":"2022-10-18T00:29:06.487848+00:00","Context":{"Id":"0183e87e7a37b10a88f215da452c4167","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:29:17.758524+00:00","LastUpdated":"2022-10-18T00:29:17.758524+00:00","Context":{"Id":"0183e87ea63e983b0974f786da4d487f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:29:47.768245+00:00","LastUpdated":"2022-10-18T00:29:47.768245+00:00","Context":{"Id":"0183e87f1b783a93c6dcfc8572ab50d1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.75","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:30:14.414951+00:00","LastUpdated":"2022-10-18T00:30:14.414951+00:00","Context":{"Id":"0183e87f838e212ba75c2cbb83bfa5f7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.80","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:30:17.771109+00:00","LastUpdated":"2022-10-18T00:30:17.771109+00:00","Context":{"Id":"0183e87f90ab00600ab441e526f31871","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"77.16","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:30:20.41779+00:00","LastUpdated":"2022-10-18T00:30:20.41779+00:00","Context":{"Id":"0183e87f9b0199c0aeb22414add51e0e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:30:47.844563+00:00","LastUpdated":"2022-10-18T00:30:47.844563+00:00","Context":{"Id":"0183e88006243d3db527d258403d08f8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:31:17.854868+00:00","LastUpdated":"2022-10-18T00:31:17.854868+00:00","Context":{"Id":"0183e8807b5e3e67ca92af67af08bb19","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.78","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:31:29.418052+00:00","LastUpdated":"2022-10-18T00:31:29.418052+00:00","Context":{"Id":"0183e880a88ab3d0607026c2965c6d3d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:31:47.792505+00:00","LastUpdated":"2022-10-18T00:31:47.792505+00:00","Context":{"Id":"0183e880f0507658f3dbe84a9b131951","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"30.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:14.421988+00:00","LastUpdated":"2022-10-18T00:32:14.421988+00:00","Context":{"Id":"0183e8815855f9d8b58db2f978acb8fa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"31.80","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:17.802693+00:00","LastUpdated":"2022-10-18T00:32:17.802693+00:00","Context":{"Id":"0183e881658a22e5e06a47c6d9e072c8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"31.90","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:19.423204+00:00","LastUpdated":"2022-10-18T00:32:19.423204+00:00","Context":{"Id":"0183e8816bdfa77aec51e61d86f416b5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"29.88","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:26.418339+00:00","LastUpdated":"2022-10-18T00:32:26.418339+00:00","Context":{"Id":"0183e88187322def17dd43711a1e57ef","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:32.418973+00:00","LastUpdated":"2022-10-18T00:32:32.418973+00:00","Context":{"Id":"0183e8819ea2c49fd164076451ba5b65","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.10","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:47.8059+00:00","LastUpdated":"2022-10-18T00:32:47.8059+00:00","Context":{"Id":"0183e881dabdd5b637981b13a0f2dda5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"20.09","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:48.420099+00:00","LastUpdated":"2022-10-18T00:32:48.420099+00:00","Context":{"Id":"0183e881dd249bed4ef6648e48710d7d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:32:54.421632+00:00","LastUpdated":"2022-10-18T00:32:54.421632+00:00","Context":{"Id":"0183e881f4952a9883d511fc0f62306d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"8.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:33:09.421003+00:00","LastUpdated":"2022-10-18T00:33:09.421003+00:00","Context":{"Id":"0183e8822f2c3d985a113223b6c1ddcf","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:33:17.812702+00:00","LastUpdated":"2022-10-18T00:33:17.812702+00:00","Context":{"Id":"0183e8824ff4b32f8340a9c0d6125378","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"77.73","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:33:39.42071+00:00","LastUpdated":"2022-10-18T00:33:39.42071+00:00","Context":{"Id":"0183e882a45cff889fec5026c5efbc57","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:33:44.427065+00:00","LastUpdated":"2022-10-18T00:33:44.427065+00:00","Context":{"Id":"0183e882b7ebdc4e4766edb76bc6aa44","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:33:47.821115+00:00","LastUpdated":"2022-10-18T00:33:47.821115+00:00","Context":{"Id":"0183e882c52d6cd5f6801358b5558f47","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.17","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:03.424874+00:00","LastUpdated":"2022-10-18T00:34:03.424874+00:00","Context":{"Id":"0183e88302207ac848720dd29ab5656f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.48","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:09.561645+00:00","LastUpdated":"2022-10-18T00:34:09.561645+00:00","Context":{"Id":"0183e8831a193f77ed54999b6452a56a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:17.826891+00:00","LastUpdated":"2022-10-18T00:34:17.826891+00:00","Context":{"Id":"0183e8833a621376f7dd34baebb3271a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"73.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:18.423663+00:00","LastUpdated":"2022-10-18T00:34:18.423663+00:00","Context":{"Id":"0183e8833cb78d2139531ab7d9937118","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:26.425236+00:00","LastUpdated":"2022-10-18T00:34:26.425236+00:00","Context":{"Id":"0183e8835bf9b2d3185b3012b2e5f3f5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:32.42402+00:00","LastUpdated":"2022-10-18T00:34:32.42402+00:00","Context":{"Id":"0183e88373672b7023f769b7027449a7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.48","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:42.423584+00:00","LastUpdated":"2022-10-18T00:34:42.423584+00:00","Context":{"Id":"0183e8839a77157ee4ea0128c796def7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:34:47.834228+00:00","LastUpdated":"2022-10-18T00:34:47.834228+00:00","Context":{"Id":"0183e883af9aeb7bcfcbca1e3b90d71e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.64","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:35:17.863458+00:00","LastUpdated":"2022-10-18T00:35:17.863458+00:00","Context":{"Id":"0183e88424e792dcf6cf9e8417da93f3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"73.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:35:47.845137+00:00","LastUpdated":"2022-10-18T00:35:47.845137+00:00","Context":{"Id":"0183e8849a053f333a1534355bf5baf2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.73","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:35:48.427644+00:00","LastUpdated":"2022-10-18T00:35:48.427644+00:00","Context":{"Id":"0183e8849c4bf5e35b9167f023ccd038","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:35:54.429459+00:00","LastUpdated":"2022-10-18T00:35:54.429459+00:00","Context":{"Id":"0183e884b3bdda9661e7934e264268d8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:36:17.853839+00:00","LastUpdated":"2022-10-18T00:36:17.853839+00:00","Context":{"Id":"0183e8850f3d0bc28d1d135483abfc11","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:36:47.86253+00:00","LastUpdated":"2022-10-18T00:36:47.86253+00:00","Context":{"Id":"0183e88584769a5c3884379a06fa03b2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.04","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:37:05.428954+00:00","LastUpdated":"2022-10-18T00:37:05.428954+00:00","Context":{"Id":"0183e885c9146bed7e3af8f69f19554b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.86","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:37:17.865114+00:00","LastUpdated":"2022-10-18T00:37:17.865114+00:00","Context":{"Id":"0183e885f9a9c692f58c97f7ee170af4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.87","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:37:47.873299+00:00","LastUpdated":"2022-10-18T00:37:47.873299+00:00","Context":{"Id":"0183e8866ee169800e2dbe6bbc87c7d6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"67.27","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:38:11.428085+00:00","LastUpdated":"2022-10-18T00:38:11.428085+00:00","Context":{"Id":"0183e886cae42c520c3aa33f2a2a5f0b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:38:16.429755+00:00","LastUpdated":"2022-10-18T00:38:16.429755+00:00","Context":{"Id":"0183e886de6d661a804dca12faf25d19","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:38:17.877246+00:00","LastUpdated":"2022-10-18T00:38:17.877246+00:00","Context":{"Id":"0183e886e415efce062a70be40a1b5ce","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:38:47.888474+00:00","LastUpdated":"2022-10-18T00:38:47.888474+00:00","Context":{"Id":"0183e8875950f9ea45d3cb99e3103104","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.14","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:39:18.762536+00:00","LastUpdated":"2022-10-18T00:39:18.762536+00:00","Context":{"Id":"0183e887d1eacb7b80d2aed39fb96fa4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:39:24.430838+00:00","LastUpdated":"2022-10-18T00:39:24.430838+00:00","Context":{"Id":"0183e887e80ed57da943ec8effbcddd9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.19","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:39:30.430799+00:00","LastUpdated":"2022-10-18T00:39:30.430799+00:00","Context":{"Id":"0183e887ff7e9d96a07022273d91bc2c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.85","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:39:47.920808+00:00","LastUpdated":"2022-10-18T00:39:47.920808+00:00","Context":{"Id":"0183e88843d0fb71dc8765f3990f1d32","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"41.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:39:57.43187+00:00","LastUpdated":"2022-10-18T00:39:57.43187+00:00","Context":{"Id":"0183e88868f79c8de35a873efea1f33a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"32.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:03.431498+00:00","LastUpdated":"2022-10-18T00:40:03.431498+00:00","Context":{"Id":"0183e88880679056df9b6cd73c294c14","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"28.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:09.432635+00:00","LastUpdated":"2022-10-18T00:40:09.432635+00:00","Context":{"Id":"0183e88897d86c13881950d99d6fde96","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"27.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:14.434922+00:00","LastUpdated":"2022-10-18T00:40:14.434922+00:00","Context":{"Id":"0183e888ab62df28c05d655931f32b08","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:17.907462+00:00","LastUpdated":"2022-10-18T00:40:17.907462+00:00","Context":{"Id":"0183e888b8f372400388672e1e857610","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"12.56","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:33.434056+00:00","LastUpdated":"2022-10-18T00:40:33.434056+00:00","Context":{"Id":"0183e888f599261e145e9d62129b8dc3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:38.4333+00:00","LastUpdated":"2022-10-18T00:40:38.4333+00:00","Context":{"Id":"0183e88909216db1c904e5c4820d8c14","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:47.916157+00:00","LastUpdated":"2022-10-18T00:40:47.916157+00:00","Context":{"Id":"0183e8892e2cdc6d6114a266aec74bc4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"9.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:53.435985+00:00","LastUpdated":"2022-10-18T00:40:53.435985+00:00","Context":{"Id":"0183e88943bb786b014fe6115bc19042","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:40:59.43231+00:00","LastUpdated":"2022-10-18T00:40:59.43231+00:00","Context":{"Id":"0183e8895b2889e7f499bc9e23c96bcb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:41:17.920673+00:00","LastUpdated":"2022-10-18T00:41:17.920673+00:00","Context":{"Id":"0183e889a3605cbd566c4d1cacb28fc2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"19.99","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:41:23.433645+00:00","LastUpdated":"2022-10-18T00:41:23.433645+00:00","Context":{"Id":"0183e889b8e9d4c05c9450efa821205f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.19","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:41:29.490773+00:00","LastUpdated":"2022-10-18T00:41:29.490773+00:00","Context":{"Id":"0183e889d092ca98a4438fffa173fbad","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:41:47.435517+00:00","LastUpdated":"2022-10-18T00:41:47.435517+00:00","Context":{"Id":"0183e88a16ab4de1b538618a39820482","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.20","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:41:52.434409+00:00","LastUpdated":"2022-10-18T00:41:52.434409+00:00","Context":{"Id":"0183e88a2a3276b865db40c15508727c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"74.87","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:42:02.439686+00:00","LastUpdated":"2022-10-18T00:42:02.439686+00:00","Context":{"Id":"0183e88a51477f6e8ccd678f402408c7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:42:09.435016+00:00","LastUpdated":"2022-10-18T00:42:09.435016+00:00","Context":{"Id":"0183e88a6c9a59699cc9fe22f4fa1c95","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.11","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:42:15.436147+00:00","LastUpdated":"2022-10-18T00:42:15.436147+00:00","Context":{"Id":"0183e88a840c2bbd23673dc9d0553e07","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:42:17.937129+00:00","LastUpdated":"2022-10-18T00:42:17.937129+00:00","Context":{"Id":"0183e88a8dd14595ba150f838a450bd3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.24","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:42:26.436252+00:00","LastUpdated":"2022-10-18T00:42:26.436252+00:00","Context":{"Id":"0183e88aaf04fab97a0013ca72d01ba0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.14","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:42:47.940708+00:00","LastUpdated":"2022-10-18T00:42:47.940708+00:00","Context":{"Id":"0183e88b03046b4a156a8bb4ac60eef5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.80","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:43:17.950892+00:00","LastUpdated":"2022-10-18T00:43:17.950892+00:00","Context":{"Id":"0183e88b783e83743ce99739159145c4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.55","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:43:32.437219+00:00","LastUpdated":"2022-10-18T00:43:32.437219+00:00","Context":{"Id":"0183e88bb0d5ce240ab64953682fc743","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.02","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:43:37.441193+00:00","LastUpdated":"2022-10-18T00:43:37.441193+00:00","Context":{"Id":"0183e88bc461e505edeaae3196c06f32","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.56","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:43:47.955453+00:00","LastUpdated":"2022-10-18T00:43:47.955453+00:00","Context":{"Id":"0183e88bed73258cd208337650dbda06","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:44:17.965845+00:00","LastUpdated":"2022-10-18T00:44:17.965845+00:00","Context":{"Id":"0183e88c62ad02bacec416ab6a10ec84","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"77.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:44:47.971415+00:00","LastUpdated":"2022-10-18T00:44:47.971415+00:00","Context":{"Id":"0183e88cd7e3d6dc73c1d22b30409322","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.68","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:44:48.45233+00:00","LastUpdated":"2022-10-18T00:44:48.45233+00:00","Context":{"Id":"0183e88cd9c435b5022a0c4983ecc370","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:45:17.984145+00:00","LastUpdated":"2022-10-18T00:45:17.984145+00:00","Context":{"Id":"0183e88d4d20821c4883ac7c80f19c2f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"72.70","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:45:47.984571+00:00","LastUpdated":"2022-10-18T00:45:47.984571+00:00","Context":{"Id":"0183e88dc250b0ccfaa9f72fa5a1e5c2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:45:54.442712+00:00","LastUpdated":"2022-10-18T00:45:54.442712+00:00","Context":{"Id":"0183e88ddb8a1572065cd91e02c87aa5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"77.56","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:45:59.440522+00:00","LastUpdated":"2022-10-18T00:45:59.440522+00:00","Context":{"Id":"0183e88def10f53d0201a9ef9d6a1d76","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:46:17.990502+00:00","LastUpdated":"2022-10-18T00:46:17.990502+00:00","Context":{"Id":"0183e88e3786aff808c8680a647ca944","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.33","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:46:47.99737+00:00","LastUpdated":"2022-10-18T00:46:47.99737+00:00","Context":{"Id":"0183e88eacbdfbbb8683eb22875f0fff","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:47:11.44491+00:00","LastUpdated":"2022-10-18T00:47:11.44491+00:00","Context":{"Id":"0183e88f0854d633e4aea3c77527372e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:47:18.005136+00:00","LastUpdated":"2022-10-18T00:47:18.005136+00:00","Context":{"Id":"0183e88f21f5f197933355c76641ced8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.69","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:47:41.450585+00:00","LastUpdated":"2022-10-18T00:47:41.450585+00:00","Context":{"Id":"0183e88f7d8a1b105ea6ee1cf9239948","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"31.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:47:47.445568+00:00","LastUpdated":"2022-10-18T00:47:47.445568+00:00","Context":{"Id":"0183e88f94f57b97dc4d0d758db570b4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"28.62","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:47:54.447026+00:00","LastUpdated":"2022-10-18T00:47:54.447026+00:00","Context":{"Id":"0183e88fb04e580735cded64f95875fa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.71","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:47:59.443997+00:00","LastUpdated":"2022-10-18T00:47:59.443997+00:00","Context":{"Id":"0183e88fc3d3c1bc774d96be8deac2b0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"25.84","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:48:18.021684+00:00","LastUpdated":"2022-10-18T00:48:18.021684+00:00","Context":{"Id":"0183e8900c65d239eeb739bc5ac2fe6d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"13.71","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:48:18.447712+00:00","LastUpdated":"2022-10-18T00:48:18.447712+00:00","Context":{"Id":"0183e8900e0f370a8d6a88c2e9c71eda","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"10.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:48:24.446405+00:00","LastUpdated":"2022-10-18T00:48:24.446405+00:00","Context":{"Id":"0183e890257e1caa9d5024db2caac012","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"8.03","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:48:38.449842+00:00","LastUpdated":"2022-10-18T00:48:38.449842+00:00","Context":{"Id":"0183e8905c31eb8fa5b682fb69a089eb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:48:48.026039+00:00","LastUpdated":"2022-10-18T00:48:48.026039+00:00","Context":{"Id":"0183e8908199bf8437fd54a2ece8c52a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"13.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:08.446172+00:00","LastUpdated":"2022-10-18T00:49:08.446172+00:00","Context":{"Id":"0183e890d15e5ae9e921953d03e79265","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.50","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:14.446547+00:00","LastUpdated":"2022-10-18T00:49:14.446547+00:00","Context":{"Id":"0183e890e8cec815d180913ba7fb36eb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"68.47","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:18.029969+00:00","LastUpdated":"2022-10-18T00:49:18.029969+00:00","Context":{"Id":"0183e890f6cd53fa5b29af16a1d48aef","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.59","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:32.447839+00:00","LastUpdated":"2022-10-18T00:49:32.447839+00:00","Context":{"Id":"0183e8912f1f68bb01897267facc1e92","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.48","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:37.449363+00:00","LastUpdated":"2022-10-18T00:49:37.449363+00:00","Context":{"Id":"0183e89142a93618f54cf72e801c9c80","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"75.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:47.448831+00:00","LastUpdated":"2022-10-18T00:49:47.448831+00:00","Context":{"Id":"0183e89169b821e5b68a710793cfd09f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:52.449274+00:00","LastUpdated":"2022-10-18T00:49:52.449274+00:00","Context":{"Id":"0183e8917d411e6495d24ac4f9007ddf","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"64.33","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:49:57.456247+00:00","LastUpdated":"2022-10-18T00:49:57.456247+00:00","Context":{"Id":"0183e89190d0bff541f381928131a112","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.91","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:50:02.448949+00:00","LastUpdated":"2022-10-18T00:50:02.448949+00:00","Context":{"Id":"0183e891a4506daae0e64ef3b6040449","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1809.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:50:08.449617+00:00","LastUpdated":"2022-10-18T00:50:08.449617+00:00","Context":{"Id":"0183e891bbc12cedc2e16c601e9dfcaf","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1783.14","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:50:18.05543+00:00","LastUpdated":"2022-10-18T00:50:18.05543+00:00","Context":{"Id":"0183e891e14700266f21cffdabc52b2e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:50:48.052847+00:00","LastUpdated":"2022-10-18T00:50:48.052847+00:00","Context":{"Id":"0183e892567423acdcb7e863764ba5e2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1792.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:51:18.059526+00:00","LastUpdated":"2022-10-18T00:51:18.059526+00:00","Context":{"Id":"0183e892cbab7bc0f4f725c2ff0a8f1d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1790.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:51:48.192655+00:00","LastUpdated":"2022-10-18T00:51:48.192655+00:00","Context":{"Id":"0183e8934160f14dccfd2be031eb4d64","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1792.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:52:18.073044+00:00","LastUpdated":"2022-10-18T00:52:18.073044+00:00","Context":{"Id":"0183e893b6186675847525dd322dc9fd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1784.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:52:48.079449+00:00","LastUpdated":"2022-10-18T00:52:48.079449+00:00","Context":{"Id":"0183e8942b4f06dfb9f7e800dc19e5ec","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1790.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:53:18.087184+00:00","LastUpdated":"2022-10-18T00:53:18.087184+00:00","Context":{"Id":"0183e894a087d7d3b0fc2864ace062d6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1786.82","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:53:48.094196+00:00","LastUpdated":"2022-10-18T00:53:48.094196+00:00","Context":{"Id":"0183e89515bef206d3ff94cd24ad0441","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1797.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:54:18.104021+00:00","LastUpdated":"2022-10-18T00:54:18.104021+00:00","Context":{"Id":"0183e8958af7dc2e18635f3113d06606","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1799.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:54:48.10989+00:00","LastUpdated":"2022-10-18T00:54:48.10989+00:00","Context":{"Id":"0183e896002d65845dab6333bef527c5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1765.01","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:55:18.119023+00:00","LastUpdated":"2022-10-18T00:55:18.119023+00:00","Context":{"Id":"0183e8967566851f18a4be4aaa62120f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1768.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:55:48.140495+00:00","LastUpdated":"2022-10-18T00:55:48.140495+00:00","Context":{"Id":"0183e896eaac589700e8596b9eab27df","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1766.80","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:56:18.129176+00:00","LastUpdated":"2022-10-18T00:56:18.129176+00:00","Context":{"Id":"0183e8975fd1d365decabba34038261e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1765.01","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:56:48.137567+00:00","LastUpdated":"2022-10-18T00:56:48.137567+00:00","Context":{"Id":"0183e897d509b187c17aee8f6ca168bc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1807.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:57:18.234542+00:00","LastUpdated":"2022-10-18T00:57:18.234542+00:00","Context":{"Id":"0183e8984a9a82d3364218d7db24910f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1779.49","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:57:48.149532+00:00","LastUpdated":"2022-10-18T00:57:48.149532+00:00","Context":{"Id":"0183e898bf75c245550ba75253a8219e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1797.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:58:18.152922+00:00","LastUpdated":"2022-10-18T00:58:18.152922+00:00","Context":{"Id":"0183e89934a8f4a0463f1604243d1514","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1807.29","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:58:48.161497+00:00","LastUpdated":"2022-10-18T00:58:48.161497+00:00","Context":{"Id":"0183e899a9e116b254eab6e9539fa1c9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1805.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:59:18.169936+00:00","LastUpdated":"2022-10-18T00:59:18.169936+00:00","Context":{"Id":"0183e89a1f194e44adcc9779ed7badfd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1796.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T00:59:48.179385+00:00","LastUpdated":"2022-10-18T00:59:48.179385+00:00","Context":{"Id":"0183e89a94537f2adae3f7ece96cb8b2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1790.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:00:18.18229+00:00","LastUpdated":"2022-10-18T01:00:18.18229+00:00","Context":{"Id":"0183e89b09867a5ee9ba35010746e114","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1799.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:00:48.256187+00:00","LastUpdated":"2022-10-18T01:00:48.256187+00:00","Context":{"Id":"0183e89b7f00c555cda3f9bd3640bcd7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1796.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:01:18.710884+00:00","LastUpdated":"2022-10-18T01:01:18.710884+00:00","Context":{"Id":"0183e89bf5f6a6635f284c350b432e94","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1797.93","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:01:48.206824+00:00","LastUpdated":"2022-10-18T01:01:48.206824+00:00","Context":{"Id":"0183e89c692eac8eceb0ec12871b387f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1784.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:02:18.21222+00:00","LastUpdated":"2022-10-18T01:02:18.21222+00:00","Context":{"Id":"0183e89cde64cbf0c76576c0b7bae441","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1781.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:02:48.21863+00:00","LastUpdated":"2022-10-18T01:02:48.21863+00:00","Context":{"Id":"0183e89d539aae3d303fc5b978e1892b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1788.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:03:18.224715+00:00","LastUpdated":"2022-10-18T01:03:18.224715+00:00","Context":{"Id":"0183e89dc8d0bd04f4a43aebc7fe1d6e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1790.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:03:48.230436+00:00","LastUpdated":"2022-10-18T01:03:48.230436+00:00","Context":{"Id":"0183e89e3e061a09dcda59c5af04199f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"129.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:04:00.468976+00:00","LastUpdated":"2022-10-18T01:04:00.468976+00:00","Context":{"Id":"0183e89e6dd4c147841f6ddfcc062dc3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1801.66","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:04:06.47221+00:00","LastUpdated":"2022-10-18T01:04:06.47221+00:00","Context":{"Id":"0183e89e854850f2477a0c931d64bf33","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1809.18","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:04:18.243496+00:00","LastUpdated":"2022-10-18T01:04:18.243496+00:00","Context":{"Id":"0183e89eb34346ef920366716610e2fe","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1794.21","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:04:48.245586+00:00","LastUpdated":"2022-10-18T01:04:48.245586+00:00","Context":{"Id":"0183e89f2875f16a1a310b1c4bbd6277","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1796.07","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:05:18.296109+00:00","LastUpdated":"2022-10-18T01:05:18.296109+00:00","Context":{"Id":"0183e89f9dd8cdeefd35cbc9c11456f2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1792.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:06:18.267446+00:00","LastUpdated":"2022-10-18T01:06:18.267446+00:00","Context":{"Id":"0183e8a0881bc7c11f28b92a5cd02975","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1794.21","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:06:48.271953+00:00","LastUpdated":"2022-10-18T01:06:48.271953+00:00","Context":{"Id":"0183e8a0fd4f1b666c1ae8fa38bbd252","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1783.14","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:07:18.277991+00:00","LastUpdated":"2022-10-18T01:07:18.277991+00:00","Context":{"Id":"0183e8a1728590295fbfbaba574cc51f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1784.98","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:07:48.285471+00:00","LastUpdated":"2022-10-18T01:07:48.285471+00:00","Context":{"Id":"0183e8a1e7bdd4a71d1229f466d4f972","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1794.21","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:08:18.292891+00:00","LastUpdated":"2022-10-18T01:08:18.292891+00:00","Context":{"Id":"0183e8a25cf4f4f372404e115a90646f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"98.67","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:08:32.48153+00:00","LastUpdated":"2022-10-18T01:08:32.48153+00:00","Context":{"Id":"0183e8a29461051457ad068cee75266f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.90","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:08:37.478013+00:00","LastUpdated":"2022-10-18T01:08:37.478013+00:00","Context":{"Id":"0183e8a2a7e5319b68c7028796952552","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:08:48.303098+00:00","LastUpdated":"2022-10-18T01:08:48.303098+00:00","Context":{"Id":"0183e8a2d22f47ec5522aec39628af35","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"81.04","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:09:09.476904+00:00","LastUpdated":"2022-10-18T01:09:09.476904+00:00","Context":{"Id":"0183e8a324e4d281725b74c6ca0b8069","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.72","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:09:15.477336+00:00","LastUpdated":"2022-10-18T01:09:15.477336+00:00","Context":{"Id":"0183e8a33c556568fe59e8918121a704","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.96","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:09:18.305514+00:00","LastUpdated":"2022-10-18T01:09:18.305514+00:00","Context":{"Id":"0183e8a347612f3175dd6508ef195a7e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.92","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:09:48.368704+00:00","LastUpdated":"2022-10-18T01:09:48.368704+00:00","Context":{"Id":"0183e8a3bcd071943dd50b54dbf31af3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"73.13","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:10:18.319036+00:00","LastUpdated":"2022-10-18T01:10:18.319036+00:00","Context":{"Id":"0183e8a431ce2cfc20c79bf4834aeba0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.65","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:10:18.476909+00:00","LastUpdated":"2022-10-18T01:10:18.476909+00:00","Context":{"Id":"0183e8a4326c3896fe94134e00ef1b45","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:10:24.478418+00:00","LastUpdated":"2022-10-18T01:10:24.478418+00:00","Context":{"Id":"0183e8a449de5ae68f55c2ffb233be87","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.68","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:10:48.332556+00:00","LastUpdated":"2022-10-18T01:10:48.332556+00:00","Context":{"Id":"0183e8a4a70cc71314c7bd8d39704a62","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:11:18.331795+00:00","LastUpdated":"2022-10-18T01:11:18.331795+00:00","Context":{"Id":"0183e8a51c3b552a75b02b2f285c6510","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.91","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:11:35.485133+00:00","LastUpdated":"2022-10-18T01:11:35.485133+00:00","Context":{"Id":"0183e8a55f3d6e17720381d750e34e68","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.78","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:11:48.40076+00:00","LastUpdated":"2022-10-18T01:11:48.40076+00:00","Context":{"Id":"0183e8a591b040b0dadd4b129342764b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.77","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:12:18.345541+00:00","LastUpdated":"2022-10-18T01:12:18.345541+00:00","Context":{"Id":"0183e8a606a91e0ee33b78e1293c9447","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:12:41.485363+00:00","LastUpdated":"2022-10-18T01:12:41.485363+00:00","Context":{"Id":"0183e8a6610d782b77d3dba1ac46b935","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:12:47.488306+00:00","LastUpdated":"2022-10-18T01:12:47.488306+00:00","Context":{"Id":"0183e8a67880104cbbb7bd25feffe5cd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.52","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:13:18.360349+00:00","LastUpdated":"2022-10-18T01:13:18.360349+00:00","Context":{"Id":"0183e8a6f118bf7d2001ba5fda198030","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"79.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:13:48.367973+00:00","LastUpdated":"2022-10-18T01:13:48.367973+00:00","Context":{"Id":"0183e8a7664fbe724dd3c6a2f49c1551","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.90","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:13:57.485173+00:00","LastUpdated":"2022-10-18T01:13:57.485173+00:00","Context":{"Id":"0183e8a789edd10401537ba5d2fb409f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.76","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:14:18.370508+00:00","LastUpdated":"2022-10-18T01:14:18.370508+00:00","Context":{"Id":"0183e8a7db8231d54453c43670e92a47","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"70.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:14:48.382443+00:00","LastUpdated":"2022-10-18T01:14:48.382443+00:00","Context":{"Id":"0183e8a850be4a84b0871dd980438135","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"65.79","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:15:03.485689+00:00","LastUpdated":"2022-10-18T01:15:03.485689+00:00","Context":{"Id":"0183e8a88bbda35f6325f6cc768a5357","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.02","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:15:08.485621+00:00","LastUpdated":"2022-10-18T01:15:08.485621+00:00","Context":{"Id":"0183e8a89f45cf86240410a40356c70e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.63","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:15:18.389825+00:00","LastUpdated":"2022-10-18T01:15:18.389825+00:00","Context":{"Id":"0183e8a8c5f5497974f77ef50f6aec85","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.51","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:15:48.396215+00:00","LastUpdated":"2022-10-18T01:15:48.396215+00:00","Context":{"Id":"0183e8a93b2c9f9010ee763d60f9b180","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"80.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:16:18.413019+00:00","LastUpdated":"2022-10-18T01:16:18.413019+00:00","Context":{"Id":"0183e8a9b06cc47f8fe22c55b8d4ee0f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:16:20.48699+00:00","LastUpdated":"2022-10-18T01:16:20.48699+00:00","Context":{"Id":"0183e8a9b886b760bc408cd3abcef5a8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.54","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:16:48.404465+00:00","LastUpdated":"2022-10-18T01:16:48.404465+00:00","Context":{"Id":"0183e8aa2594276b57ad13d05572a185","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"71.80","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:17:18.413978+00:00","LastUpdated":"2022-10-18T01:17:18.413978+00:00","Context":{"Id":"0183e8aa9acde0efe1aa6c8f416817f1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"66.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:17:26.488535+00:00","LastUpdated":"2022-10-18T01:17:26.488535+00:00","Context":{"Id":"0183e8aaba582ef880b9c29747aa3caa","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"78.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:17:31.487811+00:00","LastUpdated":"2022-10-18T01:17:31.487811+00:00","Context":{"Id":"0183e8aacddfc5403ec149aefb0db868","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.67","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:17:48.422754+00:00","LastUpdated":"2022-10-18T01:17:48.422754+00:00","Context":{"Id":"0183e8ab1006109551152d541691c4b8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"76.61","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:18:18.428556+00:00","LastUpdated":"2022-10-18T01:18:18.428556+00:00","Context":{"Id":"0183e8ab853cf18f6d59a4070e81576b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"35.60","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:18:26.490437+00:00","LastUpdated":"2022-10-18T01:18:26.490437+00:00","Context":{"Id":"0183e8aba4ba0dc07c3468c9e283d78c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"31.95","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:18:31.524914+00:00","LastUpdated":"2022-10-18T01:18:31.524914+00:00","Context":{"Id":"0183e8abb864d70b513f2d204617e451","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"28.75","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:18:39.491094+00:00","LastUpdated":"2022-10-18T01:18:39.491094+00:00","Context":{"Id":"0183e8abd783150ec0ee83fbe7d2380d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.19","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:18:45.490118+00:00","LastUpdated":"2022-10-18T01:18:45.490118+00:00","Context":{"Id":"0183e8abeef2c1110677e05303e2acec","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"26.05","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:18:48.436074+00:00","LastUpdated":"2022-10-18T01:18:48.436074+00:00","Context":{"Id":"0183e8abfa7404cb45ddc7a6d10a4e3c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"7.53","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:19:03.490766+00:00","LastUpdated":"2022-10-18T01:19:03.490766+00:00","Context":{"Id":"0183e8ac35420572a926963db3087cd0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"3.48","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:19:08.491246+00:00","LastUpdated":"2022-10-18T01:19:08.491246+00:00","Context":{"Id":"0183e8ac48cbb4326f989294ab11289d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.62","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:19:14.489752+00:00","LastUpdated":"2022-10-18T01:19:14.489752+00:00","Context":{"Id":"0183e8ac6039d5180b56031eb4e3e72c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:19:18.44155+00:00","LastUpdated":"2022-10-18T01:19:18.44155+00:00","Context":{"Id":"0183e8ac6fa90174a2e1c7b46321aa18","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:19:48.447655+00:00","LastUpdated":"2022-10-18T01:19:48.447655+00:00","Context":{"Id":"0183e8ace4df981dca9e95795c010b5f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.46","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:20:18.452098+00:00","LastUpdated":"2022-10-18T01:20:18.452098+00:00","Context":{"Id":"0183e8ad5a143eef2d1c0f349c8cecd9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:20:48.467515+00:00","LastUpdated":"2022-10-18T01:20:48.467515+00:00","Context":{"Id":"0183e8adcf534001765043af748a3c63","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:21:18.46797+00:00","LastUpdated":"2022-10-18T01:21:18.46797+00:00","Context":{"Id":"0183e8ae448303d8c0ef406635229233","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.43","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:21:48.472453+00:00","LastUpdated":"2022-10-18T01:21:48.472453+00:00","Context":{"Id":"0183e8aeb9b8a723921c9406bddb09e5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:22:18.481267+00:00","LastUpdated":"2022-10-18T01:22:18.481267+00:00","Context":{"Id":"0183e8af2ef13b955184c59462e8a17a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:22:48.48644+00:00","LastUpdated":"2022-10-18T01:22:48.48644+00:00","Context":{"Id":"0183e8afa426468481165c975448382c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:23:18.498057+00:00","LastUpdated":"2022-10-18T01:23:18.498057+00:00","Context":{"Id":"0183e8b019612d79f193bfa5f0958ba7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:23:48.50039+00:00","LastUpdated":"2022-10-18T01:23:48.50039+00:00","Context":{"Id":"0183e8b08e9469e08440e676ad436583","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:24:48.516883+00:00","LastUpdated":"2022-10-18T01:24:48.516883+00:00","Context":{"Id":"0183e8b17904481993133fd003850ac3","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:25:48.532663+00:00","LastUpdated":"2022-10-18T01:25:48.532663+00:00","Context":{"Id":"0183e8b26374d018c5b84fc90d26d489","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:26:18.53808+00:00","LastUpdated":"2022-10-18T01:26:18.53808+00:00","Context":{"Id":"0183e8b2d8aafb52d2e1dedc5663f8a4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:26:48.539629+00:00","LastUpdated":"2022-10-18T01:26:48.539629+00:00","Context":{"Id":"0183e8b34ddb8a5957be6c5f684e45bb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:27:18.548875+00:00","LastUpdated":"2022-10-18T01:27:18.548875+00:00","Context":{"Id":"0183e8b3c3142c1271369f7af5715244","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.43","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:27:48.554977+00:00","LastUpdated":"2022-10-18T01:27:48.554977+00:00","Context":{"Id":"0183e8b4384a24201c08ced3fc245149","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.46","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:28:18.562341+00:00","LastUpdated":"2022-10-18T01:28:18.562341+00:00","Context":{"Id":"0183e8b4ad820d13b725c11c0dd2d9b9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:28:48.575571+00:00","LastUpdated":"2022-10-18T01:28:48.575571+00:00","Context":{"Id":"0183e8b522bf9cae8fe1d4eb849cc59b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:29:18.576685+00:00","LastUpdated":"2022-10-18T01:29:18.576685+00:00","Context":{"Id":"0183e8b597f06ce2f8816a33a6156d52","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:29:48.582475+00:00","LastUpdated":"2022-10-18T01:29:48.582475+00:00","Context":{"Id":"0183e8b60d2661219018b2b044a0d7cc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:30:18.586769+00:00","LastUpdated":"2022-10-18T01:30:18.586769+00:00","Context":{"Id":"0183e8b6825ad39404b3a142bfd1f451","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:30:49.435977+00:00","LastUpdated":"2022-10-18T01:30:49.435977+00:00","Context":{"Id":"0183e8b6fadb3264c137c45934756bc2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:31:18.598947+00:00","LastUpdated":"2022-10-18T01:31:18.598947+00:00","Context":{"Id":"0183e8b76cc616446ba667fd5f805962","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:31:48.608432+00:00","LastUpdated":"2022-10-18T01:31:48.608432+00:00","Context":{"Id":"0183e8b7e200eb4af3f6c0b463a9ff25","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.47","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:32:18.617366+00:00","LastUpdated":"2022-10-18T01:32:18.617366+00:00","Context":{"Id":"0183e8b857397aa1df5485e786547b49","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.42","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:32:48.619557+00:00","LastUpdated":"2022-10-18T01:32:48.619557+00:00","Context":{"Id":"0183e8b8cc6b28ac383b652a4bd5c182","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.46","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:33:48.632002+00:00","LastUpdated":"2022-10-18T01:33:48.632002+00:00","Context":{"Id":"0183e8b9b6d7219c404d27c01080f695","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:34:18.641274+00:00","LastUpdated":"2022-10-18T01:34:18.641274+00:00","Context":{"Id":"0183e8ba2c11b4dba927759dcb390191","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.43","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:34:48.649649+00:00","LastUpdated":"2022-10-18T01:34:48.649649+00:00","Context":{"Id":"0183e8baa1495852a4d8723409f6b41f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.45","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:35:18.660912+00:00","LastUpdated":"2022-10-18T01:35:18.660912+00:00","Context":{"Id":"0183e8bb16845c191127b9a029121022","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:35:48.660411+00:00","LastUpdated":"2022-10-18T01:35:48.660411+00:00","Context":{"Id":"0183e8bb8bb4c649b789663683604f29","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:36:18.668071+00:00","LastUpdated":"2022-10-18T01:36:18.668071+00:00","Context":{"Id":"0183e8bc00ecb4f9c789356fe92ffb1a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:36:48.675107+00:00","LastUpdated":"2022-10-18T01:36:48.675107+00:00","Context":{"Id":"0183e8bc7623de2b05ae9b9cac914f0a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.44","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:37:18.680188+00:00","LastUpdated":"2022-10-18T01:37:18.680188+00:00","Context":{"Id":"0183e8bceb58abe37e2a4aa50f9651cc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:37:48.688485+00:00","LastUpdated":"2022-10-18T01:37:48.688485+00:00","Context":{"Id":"0183e8bd6090fa3f8ab82b245f5bb736","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:38:18.696705+00:00","LastUpdated":"2022-10-18T01:38:18.696705+00:00","Context":{"Id":"0183e8bdd5c8d3ab774fccf7ab9d7a50","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"1.74","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:38:51.521131+00:00","LastUpdated":"2022-10-18T01:38:51.521131+00:00","Context":{"Id":"0183e8be5601898d2a54e89133904ab9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.31","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:38:57.521725+00:00","LastUpdated":"2022-10-18T01:38:57.521725+00:00","Context":{"Id":"0183e8be6d711cc75a1d0749b00dbcc4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"23.26","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:39:18.716861+00:00","LastUpdated":"2022-10-18T01:39:18.716861+00:00","Context":{"Id":"0183e8bec03cfe628c54f165ad74eceb","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"2.55","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:39:20.540682+00:00","LastUpdated":"2022-10-18T01:39:20.540682+00:00","Context":{"Id":"0183e8bec75ccd0475c465a919e90a1b","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:39:26.521864+00:00","LastUpdated":"2022-10-18T01:39:26.521864+00:00","Context":{"Id":"0183e8bedeb90bf4d7ad52bab391a218","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:39:48.718508+00:00","LastUpdated":"2022-10-18T01:39:48.718508+00:00","Context":{"Id":"0183e8bf356e7255b91f0e413022c4f5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:40:18.722272+00:00","LastUpdated":"2022-10-18T01:40:18.722272+00:00","Context":{"Id":"0183e8bfaaa20515bbf90f962126232c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:40:48.730997+00:00","LastUpdated":"2022-10-18T01:40:48.730997+00:00","Context":{"Id":"0183e8c01fdab7c013345d0bec168745","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:41:18.741415+00:00","LastUpdated":"2022-10-18T01:41:18.741415+00:00","Context":{"Id":"0183e8c095152fbe4287233153341ac6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:41:48.743436+00:00","LastUpdated":"2022-10-18T01:41:48.743436+00:00","Context":{"Id":"0183e8c10a470f1ee9f956c3564ed59f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.50","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:42:18.750585+00:00","LastUpdated":"2022-10-18T01:42:18.750585+00:00","Context":{"Id":"0183e8c17f7eae6d3dfc5fb8c6f5939e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:42:48.757379+00:00","LastUpdated":"2022-10-18T01:42:48.757379+00:00","Context":{"Id":"0183e8c1f4b5fc13d43311f7ed1fa5bd","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:43:18.76629+00:00","LastUpdated":"2022-10-18T01:43:18.76629+00:00","Context":{"Id":"0183e8c269eecff89fc5967bf03dfa0d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.40","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:43:48.77127+00:00","LastUpdated":"2022-10-18T01:43:48.77127+00:00","Context":{"Id":"0183e8c2df2330726445a219629bc683","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:44:18.78229+00:00","LastUpdated":"2022-10-18T01:44:18.78229+00:00","Context":{"Id":"0183e8c3545ede552f90883fcd44c79d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:44:48.784217+00:00","LastUpdated":"2022-10-18T01:44:48.784217+00:00","Context":{"Id":"0183e8c3c9906310cd5ea6e72e90dde4","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:45:18.794594+00:00","LastUpdated":"2022-10-18T01:45:18.794594+00:00","Context":{"Id":"0183e8c43eca89474b68916576c255df","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:45:48.79781+00:00","LastUpdated":"2022-10-18T01:45:48.79781+00:00","Context":{"Id":"0183e8c4b3fd15dd42c1db040071d108","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.33","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:46:18.803053+00:00","LastUpdated":"2022-10-18T01:46:18.803053+00:00","Context":{"Id":"0183e8c529338245a76f826764e8e8d0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:46:48.808171+00:00","LastUpdated":"2022-10-18T01:46:48.808171+00:00","Context":{"Id":"0183e8c59e68f34ec59cc6743e45281a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:49:48.85641+00:00","LastUpdated":"2022-10-18T01:49:48.85641+00:00","Context":{"Id":"0183e8c85db8f70ac7d251f7f9e0faf8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:50:18.858002+00:00","LastUpdated":"2022-10-18T01:50:18.858002+00:00","Context":{"Id":"0183e8c8d2e96cda30ec38a6abb5c00d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:50:48.866187+00:00","LastUpdated":"2022-10-18T01:50:48.866187+00:00","Context":{"Id":"0183e8c9482218faee35f31a1d94b460","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:51:48.875392+00:00","LastUpdated":"2022-10-18T01:51:48.875392+00:00","Context":{"Id":"0183e8ca328bc237bb5e1f9674e4a1ba","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:52:18.889471+00:00","LastUpdated":"2022-10-18T01:52:18.889471+00:00","Context":{"Id":"0183e8caa7c9ba97d2eaa2b5de8b4e2d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:54:18.905928+00:00","LastUpdated":"2022-10-18T01:54:18.905928+00:00","Context":{"Id":"0183e8cc7c9926625143d5407521830f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:54:48.916496+00:00","LastUpdated":"2022-10-18T01:54:48.916496+00:00","Context":{"Id":"0183e8ccf1d43b94bc1042d2afb373a0","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.39","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:55:18.922632+00:00","LastUpdated":"2022-10-18T01:55:18.922632+00:00","Context":{"Id":"0183e8cd670aedcc59589276bd2f71b5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:55:48.931193+00:00","LastUpdated":"2022-10-18T01:55:48.931193+00:00","Context":{"Id":"0183e8cddc435285390133830cec2dcc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:56:18.937099+00:00","LastUpdated":"2022-10-18T01:56:18.937099+00:00","Context":{"Id":"0183e8ce5179427dda0a2acbb082db2a","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:56:48.944721+00:00","LastUpdated":"2022-10-18T01:56:48.944721+00:00","Context":{"Id":"0183e8cec6b0b5dd4246dbcf41e21c10","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:57:18.94829+00:00","LastUpdated":"2022-10-18T01:57:18.94829+00:00","Context":{"Id":"0183e8cf3be4770e46875ddd3c1c7ddf","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:58:48.97473+00:00","LastUpdated":"2022-10-18T01:58:48.97473+00:00","Context":{"Id":"0183e8d09b8ede83cee0385d7cf1a3dc","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T01:59:18.979286+00:00","LastUpdated":"2022-10-18T01:59:18.979286+00:00","Context":{"Id":"0183e8d110c3a911ecdcfc318b5a58ef","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:01:49.00499+00:00","LastUpdated":"2022-10-18T02:01:49.00499+00:00","Context":{"Id":"0183e8d35acc5c48ba5dcd10a7c96fa1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:02:19.018914+00:00","LastUpdated":"2022-10-18T02:02:19.018914+00:00","Context":{"Id":"0183e8d3d00a26d133fadd59fd1dcbd2","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:07:49.082618+00:00","LastUpdated":"2022-10-18T02:07:49.082618+00:00","Context":{"Id":"0183e8d8d95aa255486303a51f2ef762","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:08:19.092977+00:00","LastUpdated":"2022-10-18T02:08:19.092977+00:00","Context":{"Id":"0183e8d94e94bc3f3504b3687decf52d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.38","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:12:19.148501+00:00","LastUpdated":"2022-10-18T02:12:19.148501+00:00","Context":{"Id":"0183e8dcf84c79b3d1212d332084d9e7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:12:49.150548+00:00","LastUpdated":"2022-10-18T02:12:49.150548+00:00","Context":{"Id":"0183e8dd6d7e31754544b13f88da2c42","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.32","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:13:19.155393+00:00","LastUpdated":"2022-10-18T02:13:19.155393+00:00","Context":{"Id":"0183e8dde2b33f83c158ab345b5a206e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:13:49.162742+00:00","LastUpdated":"2022-10-18T02:13:49.162742+00:00","Context":{"Id":"0183e8de57ea035deeb70cf2391a6130","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:14:49.177803+00:00","LastUpdated":"2022-10-18T02:14:49.177803+00:00","Context":{"Id":"0183e8df4259af82e84d39ba6d229b03","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:15:19.184627+00:00","LastUpdated":"2022-10-18T02:15:19.184627+00:00","Context":{"Id":"0183e8dfb79068ade530622f031c64e8","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.41","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:16:49.208798+00:00","LastUpdated":"2022-10-18T02:16:49.208798+00:00","Context":{"Id":"0183e8e11738f2ab652f20af815baf2d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:17:19.209329+00:00","LastUpdated":"2022-10-18T02:17:19.209329+00:00","Context":{"Id":"0183e8e18c691e7e53f5ffee898d2d90","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:19:49.243324+00:00","LastUpdated":"2022-10-18T02:19:49.243324+00:00","Context":{"Id":"0183e8e3d67bab4f350738a4c768f6c1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:20:19.250005+00:00","LastUpdated":"2022-10-18T02:20:19.250005+00:00","Context":{"Id":"0183e8e44bb1fb24405f6043224e5038","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:38:19.486526+00:00","LastUpdated":"2022-10-18T02:38:19.486526+00:00","Context":{"Id":"0183e8f4c75ef8255eccb0379f302151","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:38:49.490718+00:00","LastUpdated":"2022-10-18T02:38:49.490718+00:00","Context":{"Id":"0183e8f53c921c272a68d5757a43ca9c","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:39:19.4937+00:00","LastUpdated":"2022-10-18T02:39:19.4937+00:00","Context":{"Id":"0183e8f5b1c5e0f5dfb81038217e852d","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:39:49.502205+00:00","LastUpdated":"2022-10-18T02:39:49.502205+00:00","Context":{"Id":"0183e8f626fe2496e95494209eff0de5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:48:19.617132+00:00","LastUpdated":"2022-10-18T02:48:19.617132+00:00","Context":{"Id":"0183e8fdefa154d45da2f8795a8237d7","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:48:49.61569+00:00","LastUpdated":"2022-10-18T02:48:49.61569+00:00","Context":{"Id":"0183e8fe64cf948e4e86bb2807ca54ae","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.34","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:52:49.678283+00:00","LastUpdated":"2022-10-18T02:52:49.678283+00:00","Context":{"Id":"0183e9020e8ec783e40067ea98c67d13","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:53:19.687514+00:00","LastUpdated":"2022-10-18T02:53:19.687514+00:00","Context":{"Id":"0183e90283c759ea1b0c288bbede65a6","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.33","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:56:19.717331+00:00","LastUpdated":"2022-10-18T02:56:19.717331+00:00","Context":{"Id":"0183e9054305fd678ae4886dd8c10a31","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.35","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:56:49.729729+00:00","LastUpdated":"2022-10-18T02:56:49.729729+00:00","Context":{"Id":"0183e905b8418c71b6e8f09c1c636ce1","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:57:19.774186+00:00","LastUpdated":"2022-10-18T02:57:19.774186+00:00","Context":{"Id":"0183e9062d9eafbac1cec050a945bff5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.30","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:58:19.742488+00:00","LastUpdated":"2022-10-18T02:58:19.742488+00:00","Context":{"Id":"0183e90717de0e4ccf9c8d8607e1dab9","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T02:58:49.749225+00:00","LastUpdated":"2022-10-18T02:58:49.749225+00:00","Context":{"Id":"0183e9078d1576dec656f1fb3e9ee43e","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.33","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T03:09:19.882793+00:00","LastUpdated":"2022-10-18T03:09:19.882793+00:00","Context":{"Id":"0183e9112a8a236ce3e681c606368235","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T03:09:49.901209+00:00","LastUpdated":"2022-10-18T03:09:49.901209+00:00","Context":{"Id":"0183e9119fcdd82a84d66d659023cd62","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.37","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T03:16:19.976689+00:00","LastUpdated":"2022-10-18T03:16:19.976689+00:00","Context":{"Id":"0183e9179388f5e025660a938ce85ff5","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T03:16:49.982677+00:00","LastUpdated":"2022-10-18T03:16:49.982677+00:00","Context":{"Id":"0183e91808be5e5a97d224f33f087583","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.36","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T03:42:50.328101+00:00","LastUpdated":"2022-10-18T03:42:50.328101+00:00","Context":{"Id":"0183e92fd7d8d0122c193ff394f0cd9f","ParentId":null,"UserId":null}} -{"EntityId":"sensor.dishwasher_power","State":"0.00","Attributes":{"unit_of_measurement":"W","friendly_name":"Dishwasher Power"},"LastChanged":"2022-10-18T03:43:20.338154+00:00","LastUpdated":"2022-10-18T03:43:20.338154+00:00","Context":{"Id":"0183e9304d126753855820d88c9b178b","ParentId":null,"UserId":null}} +{ + "EntityId": "sensor.dishwasher_power", + "State": "30.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:05.277857+00:00", + "LastUpdated": "2022-10-17T23:00:05.277857+00:00", + "Context": { + "Id": "0183e82cfa1dd3bc49a1c8be031bdec7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:14.279631+00:00", + "LastUpdated": "2022-10-17T23:00:14.279631+00:00", + "Context": { + "Id": "0183e82d1d47a6050a2cba0ca51d55c9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "22.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:16.543382+00:00", + "LastUpdated": "2022-10-17T23:00:16.543382+00:00", + "Context": { + "Id": "0183e82d261fd912b30dd42ed7fd2a04", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "22.73", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:19.287399+00:00", + "LastUpdated": "2022-10-17T23:00:19.287399+00:00", + "Context": { + "Id": "0183e82d30d731a831208ee797fb9fd1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "29.83", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:25.278683+00:00", + "LastUpdated": "2022-10-17T23:00:25.278683+00:00", + "Context": { + "Id": "0183e82d483ef825e520d0a13f8918e3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:33.278493+00:00", + "LastUpdated": "2022-10-17T23:00:33.278493+00:00", + "Context": { + "Id": "0183e82d677e501289a0f2c0848b4ae8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "29.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:42.291981+00:00", + "LastUpdated": "2022-10-17T23:00:42.291981+00:00", + "Context": { + "Id": "0183e82d8ab36827003b02c5f61e0757", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "30.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:46.61459+00:00", + "LastUpdated": "2022-10-17T23:00:46.61459+00:00", + "Context": { + "Id": "0183e82d9b9602753b5c6292117570c9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "30.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:48.297761+00:00", + "LastUpdated": "2022-10-17T23:00:48.297761+00:00", + "Context": { + "Id": "0183e82da229a48b20925beae2e8ba5c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:00:54.342488+00:00", + "LastUpdated": "2022-10-17T23:00:54.342488+00:00", + "Context": { + "Id": "0183e82db9c68796c12903dff67be0b1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "25.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:00.717713+00:00", + "LastUpdated": "2022-10-17T23:01:00.717713+00:00", + "Context": { + "Id": "0183e82dd2ad2be48deb9d2b3d795643", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "30.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:05.322897+00:00", + "LastUpdated": "2022-10-17T23:01:05.322897+00:00", + "Context": { + "Id": "0183e82de4aa6a0cbee5e8da655c5e52", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:11.315231+00:00", + "LastUpdated": "2022-10-17T23:01:11.315231+00:00", + "Context": { + "Id": "0183e82dfc13b651f39e382fd72df17e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "22.95", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:16.317517+00:00", + "LastUpdated": "2022-10-17T23:01:16.317517+00:00", + "Context": { + "Id": "0183e82e0f9d3950a8fa9e8566c2d92b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "30.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:22.320561+00:00", + "LastUpdated": "2022-10-17T23:01:22.320561+00:00", + "Context": { + "Id": "0183e82e2710f8e8a1ec73aaa16ed61c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "28.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:29.398837+00:00", + "LastUpdated": "2022-10-17T23:01:29.398837+00:00", + "Context": { + "Id": "0183e82e42b68fc44d8b6e67dc6a6038", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.16", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:34.291754+00:00", + "LastUpdated": "2022-10-17T23:01:34.291754+00:00", + "Context": { + "Id": "0183e82e55d3fae69cf5de1d62f9337f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:40.293977+00:00", + "LastUpdated": "2022-10-17T23:01:40.293977+00:00", + "Context": { + "Id": "0183e82e6d45ce139e1bada6f9f0076a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "52.96", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:47.030679+00:00", + "LastUpdated": "2022-10-17T23:01:47.030679+00:00", + "Context": { + "Id": "0183e82e8796af80f74101e4314cf09a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.08", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:52.281977+00:00", + "LastUpdated": "2022-10-17T23:01:52.281977+00:00", + "Context": { + "Id": "0183e82e9c19a98de61f245a03e5ed32", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "21.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:01:58.2807+00:00", + "LastUpdated": "2022-10-17T23:01:58.2807+00:00", + "Context": { + "Id": "0183e82eb3880db1fc4853ce458ccac8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "34.46", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:04.28705+00:00", + "LastUpdated": "2022-10-17T23:02:04.28705+00:00", + "Context": { + "Id": "0183e82ecaff9a83d82341c11c69cef5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.67", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:10.280792+00:00", + "LastUpdated": "2022-10-17T23:02:10.280792+00:00", + "Context": { + "Id": "0183e82ee268fb499ecf3fb740d74846", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.25", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:16.280744+00:00", + "LastUpdated": "2022-10-17T23:02:16.280744+00:00", + "Context": { + "Id": "0183e82ef9d8336de52897d7b73bb392", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:21.281799+00:00", + "LastUpdated": "2022-10-17T23:02:21.281799+00:00", + "Context": { + "Id": "0183e82f0d61b69f99a9e9f8d31c37ba", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "42.75", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:27.281058+00:00", + "LastUpdated": "2022-10-17T23:02:27.281058+00:00", + "Context": { + "Id": "0183e82f24d1e905319527429d547183", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:32.285538+00:00", + "LastUpdated": "2022-10-17T23:02:32.285538+00:00", + "Context": { + "Id": "0183e82f385ddae8540ef57974fccd6a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.04", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:38.282067+00:00", + "LastUpdated": "2022-10-17T23:02:38.282067+00:00", + "Context": { + "Id": "0183e82f4fca99b1edc3778afe56bebc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "12.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:43.280938+00:00", + "LastUpdated": "2022-10-17T23:02:43.280938+00:00", + "Context": { + "Id": "0183e82f6350aabfb7de530419ef38ad", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "53.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:46.573431+00:00", + "LastUpdated": "2022-10-17T23:02:46.573431+00:00", + "Context": { + "Id": "0183e82f702dacc2a49bfd45dbe4e6ef", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.81", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:49.281522+00:00", + "LastUpdated": "2022-10-17T23:02:49.281522+00:00", + "Context": { + "Id": "0183e82f7ac15e32685c387f5e0ccd83", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:02:55.281407+00:00", + "LastUpdated": "2022-10-17T23:02:55.281407+00:00", + "Context": { + "Id": "0183e82f9231cc1277d6a1f6091e09b7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:01.282182+00:00", + "LastUpdated": "2022-10-17T23:03:01.282182+00:00", + "Context": { + "Id": "0183e82fa9a28e7a34e0fb3ddaee4a80", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "53.16", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:06.282954+00:00", + "LastUpdated": "2022-10-17T23:03:06.282954+00:00", + "Context": { + "Id": "0183e82fbd2aa9c82b175962d00a6297", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.12", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:11.28297+00:00", + "LastUpdated": "2022-10-17T23:03:11.28297+00:00", + "Context": { + "Id": "0183e82fd0b2e013dcb6832a2015a0ab", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.17", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:16.583254+00:00", + "LastUpdated": "2022-10-17T23:03:16.583254+00:00", + "Context": { + "Id": "0183e82fe5671a3ce0a71f312dcb0733", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "25.89", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:18.283035+00:00", + "LastUpdated": "2022-10-17T23:03:18.283035+00:00", + "Context": { + "Id": "0183e82fec0b6e9413ab798f640e2aa0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "11.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:45.28215+00:00", + "LastUpdated": "2022-10-17T23:03:45.28215+00:00", + "Context": { + "Id": "0183e8305582a98bb0da60b90704ca22", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:03:50.283869+00:00", + "LastUpdated": "2022-10-17T23:03:50.283869+00:00", + "Context": { + "Id": "0183e830690ba87a582ea69b3f652d1e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "9.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:04:05.285577+00:00", + "LastUpdated": "2022-10-17T23:04:05.285577+00:00", + "Context": { + "Id": "0183e830a3a5ff6081877a281eea3aec", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:04:11.285585+00:00", + "LastUpdated": "2022-10-17T23:04:11.285585+00:00", + "Context": { + "Id": "0183e830bb15a4551a0fc9c3c599d7fb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.22", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:04:16.592024+00:00", + "LastUpdated": "2022-10-17T23:04:16.592024+00:00", + "Context": { + "Id": "0183e830cfcf36511c2e0de885bf7450", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "13.46", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:04:35.285714+00:00", + "LastUpdated": "2022-10-17T23:04:35.285714+00:00", + "Context": { + "Id": "0183e83118d5ecdc0efea5903c682341", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:04:41.286334+00:00", + "LastUpdated": "2022-10-17T23:04:41.286334+00:00", + "Context": { + "Id": "0183e83130469b0a5801b08c19b16198", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.25", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:04:46.600476+00:00", + "LastUpdated": "2022-10-17T23:04:46.600476+00:00", + "Context": { + "Id": "0183e83145081241e838c1da082deebd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.08", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:16.610069+00:00", + "LastUpdated": "2022-10-17T23:05:16.610069+00:00", + "Context": { + "Id": "0183e831ba42476675c78d802d07c32c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.22", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:23.286128+00:00", + "LastUpdated": "2022-10-17T23:05:23.286128+00:00", + "Context": { + "Id": "0183e831d4562c449d48258b96976186", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "81.68", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:29.286848+00:00", + "LastUpdated": "2022-10-17T23:05:29.286848+00:00", + "Context": { + "Id": "0183e831ebc6de7e1abd606a0c0edae5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.54", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:38.286771+00:00", + "LastUpdated": "2022-10-17T23:05:38.286771+00:00", + "Context": { + "Id": "0183e8320eeea829c12c9f74757aa821", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:45.28727+00:00", + "LastUpdated": "2022-10-17T23:05:45.28727+00:00", + "Context": { + "Id": "0183e8322a4756918bd7e1f241383a45", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "81.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:51.286308+00:00", + "LastUpdated": "2022-10-17T23:05:51.286308+00:00", + "Context": { + "Id": "0183e83241b6caacd66f06c07f8db145", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "97.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:05:56.296941+00:00", + "LastUpdated": "2022-10-17T23:05:56.296941+00:00", + "Context": { + "Id": "0183e83255484ff80e9cfbe726d60e54", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1809.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:06:02.289158+00:00", + "LastUpdated": "2022-10-17T23:06:02.289158+00:00", + "Context": { + "Id": "0183e8326cb16e669f6cc218a74cf8d2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1797.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:06:16.622432+00:00", + "LastUpdated": "2022-10-17T23:06:16.622432+00:00", + "Context": { + "Id": "0183e832a4aec1ed4d153d8bb234b845", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1799.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:06:46.629632+00:00", + "LastUpdated": "2022-10-17T23:06:46.629632+00:00", + "Context": { + "Id": "0183e83319e5e7de1a2745e9a5267300", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1812.96", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:07:16.63371+00:00", + "LastUpdated": "2022-10-17T23:07:16.63371+00:00", + "Context": { + "Id": "0183e8338f195227559a0816b47df83a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1786.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:07:46.641666+00:00", + "LastUpdated": "2022-10-17T23:07:46.641666+00:00", + "Context": { + "Id": "0183e83404516dbb32dd740cad4f58a7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1790.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:08:16.648972+00:00", + "LastUpdated": "2022-10-17T23:08:16.648972+00:00", + "Context": { + "Id": "0183e8347988a04a4cda370c6d3edba2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1777.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:08:46.653494+00:00", + "LastUpdated": "2022-10-17T23:08:46.653494+00:00", + "Context": { + "Id": "0183e834eebdd1cbec8e69c31bd4ce5e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1807.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:09:16.661814+00:00", + "LastUpdated": "2022-10-17T23:09:16.661814+00:00", + "Context": { + "Id": "0183e83563f5671c0e36a2b1092c60b6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1801.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:09:46.668246+00:00", + "LastUpdated": "2022-10-17T23:09:46.668246+00:00", + "Context": { + "Id": "0183e835d92c01290340c1ae13ff7aa2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1807.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:10:16.674161+00:00", + "LastUpdated": "2022-10-17T23:10:16.674161+00:00", + "Context": { + "Id": "0183e8364e62f209ba124ee3f2f3b545", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1814.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:10:46.686791+00:00", + "LastUpdated": "2022-10-17T23:10:46.686791+00:00", + "Context": { + "Id": "0183e836c39ee6d1e205e3c737c5cb4d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1805.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:11:16.689947+00:00", + "LastUpdated": "2022-10-17T23:11:16.689947+00:00", + "Context": { + "Id": "0183e83738d1d6a5cac71eb8fb130d26", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:11:46.74705+00:00", + "LastUpdated": "2022-10-17T23:11:46.74705+00:00", + "Context": { + "Id": "0183e837ae3b52966022596cbda9ba47", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1783.14", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:12:16.702903+00:00", + "LastUpdated": "2022-10-17T23:12:16.702903+00:00", + "Context": { + "Id": "0183e838233eaff77a26000065f528c7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:12:46.709066+00:00", + "LastUpdated": "2022-10-17T23:12:46.709066+00:00", + "Context": { + "Id": "0183e83898753f1fed3f64418e9158fa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1772.22", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:13:16.722389+00:00", + "LastUpdated": "2022-10-17T23:13:16.722389+00:00", + "Context": { + "Id": "0183e8390db2b27bcfe8d7222840d5e3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1779.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:13:46.743377+00:00", + "LastUpdated": "2022-10-17T23:13:46.743377+00:00", + "Context": { + "Id": "0183e83982f71e59ed4d21f33bb7a211", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1794.21", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:14:46.739755+00:00", + "LastUpdated": "2022-10-17T23:14:46.739755+00:00", + "Context": { + "Id": "0183e83a6d53a5e22cc39d351bb2c6ca", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:15:16.745594+00:00", + "LastUpdated": "2022-10-17T23:15:16.745594+00:00", + "Context": { + "Id": "0183e83ae2899b41777c57802eb2810c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "221.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:15:35.303497+00:00", + "LastUpdated": "2022-10-17T23:15:35.303497+00:00", + "Context": { + "Id": "0183e83b2b07345cbd01d5772ca2a871", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.01", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:15:40.305641+00:00", + "LastUpdated": "2022-10-17T23:15:40.305641+00:00", + "Context": { + "Id": "0183e83b3e913a9a52cf12887df0704e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:15:46.756199+00:00", + "LastUpdated": "2022-10-17T23:15:46.756199+00:00", + "Context": { + "Id": "0183e83b57c4007f0f372ba540fea85a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:16:16.760353+00:00", + "LastUpdated": "2022-10-17T23:16:16.760353+00:00", + "Context": { + "Id": "0183e83bccf868d10dfe50a264b18e89", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "62.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:16:39.303301+00:00", + "LastUpdated": "2022-10-17T23:16:39.303301+00:00", + "Context": { + "Id": "0183e83c2507ac0513466c52eea6b064", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:16:45.303421+00:00", + "LastUpdated": "2022-10-17T23:16:45.303421+00:00", + "Context": { + "Id": "0183e83c3c7724c6c38458a71ecc8a47", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:17:16.774218+00:00", + "LastUpdated": "2022-10-17T23:17:16.774218+00:00", + "Context": { + "Id": "0183e83cb7660f665a2c49c8f46a6a60", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:17:46.78488+00:00", + "LastUpdated": "2022-10-17T23:17:46.78488+00:00", + "Context": { + "Id": "0183e83d2ca0f68deb82ab502cb75ec4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:17:51.304426+00:00", + "LastUpdated": "2022-10-17T23:17:51.304426+00:00", + "Context": { + "Id": "0183e83d3e48501f5446c92cff4bae52", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.71", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:17:56.307317+00:00", + "LastUpdated": "2022-10-17T23:17:56.307317+00:00", + "Context": { + "Id": "0183e83d51d34edff0f1b0d3193e47ff", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.88", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:18:16.783301+00:00", + "LastUpdated": "2022-10-17T23:18:16.783301+00:00", + "Context": { + "Id": "0183e83da1cf18190628f48c1ec72afb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.47", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:18:46.799466+00:00", + "LastUpdated": "2022-10-17T23:18:46.799466+00:00", + "Context": { + "Id": "0183e83e170f1e418496feb16b646534", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "62.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:19:02.308429+00:00", + "LastUpdated": "2022-10-17T23:19:02.308429+00:00", + "Context": { + "Id": "0183e83e53a4efaf155b3249c0d5012f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:19:08.310841+00:00", + "LastUpdated": "2022-10-17T23:19:08.310841+00:00", + "Context": { + "Id": "0183e83e6b16245409a48557fd64cd27", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.83", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:19:16.801687+00:00", + "LastUpdated": "2022-10-17T23:19:16.801687+00:00", + "Context": { + "Id": "0183e83e8c41ca6bc236cab3b124b145", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:19:46.8092+00:00", + "LastUpdated": "2022-10-17T23:19:46.8092+00:00", + "Context": { + "Id": "0183e83f0179c4db96dfba27c03dc6b7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:20:14.311005+00:00", + "LastUpdated": "2022-10-17T23:20:14.311005+00:00", + "Context": { + "Id": "0183e83f6ce66a239ec0921c37f95e70", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:20:16.814096+00:00", + "LastUpdated": "2022-10-17T23:20:16.814096+00:00", + "Context": { + "Id": "0183e83f76ae4a1d088656291017cbe3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:20:19.310431+00:00", + "LastUpdated": "2022-10-17T23:20:19.310431+00:00", + "Context": { + "Id": "0183e83f806eb08896dffd09d40df545", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:20:46.823722+00:00", + "LastUpdated": "2022-10-17T23:20:46.823722+00:00", + "Context": { + "Id": "0183e83febe731f964db931c4ab1cdc6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:21:16.827977+00:00", + "LastUpdated": "2022-10-17T23:21:16.827977+00:00", + "Context": { + "Id": "0183e840611bf8f84836599a301aee03", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:21:23.335908+00:00", + "LastUpdated": "2022-10-17T23:21:23.335908+00:00", + "Context": { + "Id": "0183e8407a8763325ff9fe14877ce340", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:21:29.322112+00:00", + "LastUpdated": "2022-10-17T23:21:29.322112+00:00", + "Context": { + "Id": "0183e84091eaea660484ac0c0eae166c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.68", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:21:46.833447+00:00", + "LastUpdated": "2022-10-17T23:21:46.833447+00:00", + "Context": { + "Id": "0183e840d651b1996da010adffc213b0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:22:16.84522+00:00", + "LastUpdated": "2022-10-17T23:22:16.84522+00:00", + "Context": { + "Id": "0183e8414b8dd93fa54eae9b8dd96500", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.90", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:22:39.313252+00:00", + "LastUpdated": "2022-10-17T23:22:39.313252+00:00", + "Context": { + "Id": "0183e841a351e1a37066606e55b9f1a5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:22:46.850044+00:00", + "LastUpdated": "2022-10-17T23:22:46.850044+00:00", + "Context": { + "Id": "0183e841c0c1be9cc0a884c9fb9e25eb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.75", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:16.858453+00:00", + "LastUpdated": "2022-10-17T23:23:16.858453+00:00", + "Context": { + "Id": "0183e84235fad28fc43a7442199c9b5b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "36.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:30.315531+00:00", + "LastUpdated": "2022-10-17T23:23:30.315531+00:00", + "Context": { + "Id": "0183e8426a8b065d87ca9b6800708759", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "31.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:36.341159+00:00", + "LastUpdated": "2022-10-17T23:23:36.341159+00:00", + "Context": { + "Id": "0183e842821547cbd91f8a8b49ee295a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "28.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:44.314916+00:00", + "LastUpdated": "2022-10-17T23:23:44.314916+00:00", + "Context": { + "Id": "0183e842a13ad4de9cf360a28cb8772d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.81", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:46.861235+00:00", + "LastUpdated": "2022-10-17T23:23:46.861235+00:00", + "Context": { + "Id": "0183e842ab2df48f04613d3b701a1373", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.25", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:49.316018+00:00", + "LastUpdated": "2022-10-17T23:23:49.316018+00:00", + "Context": { + "Id": "0183e842b4c37a33587cdc9899d76078", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "24.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:23:55.315457+00:00", + "LastUpdated": "2022-10-17T23:23:55.315457+00:00", + "Context": { + "Id": "0183e842cc335823c094014b68be5ead", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "11.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:24:09.315066+00:00", + "LastUpdated": "2022-10-17T23:24:09.315066+00:00", + "Context": { + "Id": "0183e84302e3070404e6e3e1ca6c636c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:24:14.31852+00:00", + "LastUpdated": "2022-10-17T23:24:14.31852+00:00", + "Context": { + "Id": "0183e843166e54239ae95ce624e87e52", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "9.12", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:24:26.315016+00:00", + "LastUpdated": "2022-10-17T23:24:26.315016+00:00", + "Context": { + "Id": "0183e843454a9fa3285eaf6cf451d680", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:24:32.317985+00:00", + "LastUpdated": "2022-10-17T23:24:32.317985+00:00", + "Context": { + "Id": "0183e8435cbdd545f70463bffaba2e7b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.17", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:24:46.875557+00:00", + "LastUpdated": "2022-10-17T23:24:46.875557+00:00", + "Context": { + "Id": "0183e843959ba04a4542c92aac642bba", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "48.77", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:24:59.315809+00:00", + "LastUpdated": "2022-10-17T23:24:59.315809+00:00", + "Context": { + "Id": "0183e843c633a03d4c38bb93f216274f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.25", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:25:04.32306+00:00", + "LastUpdated": "2022-10-17T23:25:04.32306+00:00", + "Context": { + "Id": "0183e843d9c3bbcba2b9972447cfbbcb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:25:16.882538+00:00", + "LastUpdated": "2022-10-17T23:25:16.882538+00:00", + "Context": { + "Id": "0183e8440ad20173c305d89b31808d60", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:25:26.320028+00:00", + "LastUpdated": "2022-10-17T23:25:26.320028+00:00", + "Context": { + "Id": "0183e8442faffa89cedc192daba72da3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "73.62", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:25:38.318402+00:00", + "LastUpdated": "2022-10-17T23:25:38.318402+00:00", + "Context": { + "Id": "0183e8445e8ee4fcc99c4697ca7f9387", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "63.47", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:25:45.318299+00:00", + "LastUpdated": "2022-10-17T23:25:45.318299+00:00", + "Context": { + "Id": "0183e84479e684bb07e3dea06f2b8789", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.55", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:25:51.320358+00:00", + "LastUpdated": "2022-10-17T23:25:51.320358+00:00", + "Context": { + "Id": "0183e84491580023261db4ff85a93320", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:26:02.320806+00:00", + "LastUpdated": "2022-10-17T23:26:02.320806+00:00", + "Context": { + "Id": "0183e844bc50606c4d91c36e8cb2b4a5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:26:16.895758+00:00", + "LastUpdated": "2022-10-17T23:26:16.895758+00:00", + "Context": { + "Id": "0183e844f53f50c2b224f6c6b5adb760", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "88.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:26:20.319654+00:00", + "LastUpdated": "2022-10-17T23:26:20.319654+00:00", + "Context": { + "Id": "0183e845029feb034dcd52721129dd9e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:26:26.319226+00:00", + "LastUpdated": "2022-10-17T23:26:26.319226+00:00", + "Context": { + "Id": "0183e8451a0f1defa27db7201973e9e6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1797.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:26:31.320597+00:00", + "LastUpdated": "2022-10-17T23:26:31.320597+00:00", + "Context": { + "Id": "0183e8452d98e0e532d792341fb4ca7a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1786.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:26:46.903682+00:00", + "LastUpdated": "2022-10-17T23:26:46.903682+00:00", + "Context": { + "Id": "0183e8456a772c8c0706f780cba31ae5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1790.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:27:16.910821+00:00", + "LastUpdated": "2022-10-17T23:27:16.910821+00:00", + "Context": { + "Id": "0183e845dfaeb2664ee19ede0caee54b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1799.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:27:46.917139+00:00", + "LastUpdated": "2022-10-17T23:27:46.917139+00:00", + "Context": { + "Id": "0183e84654e591f85ba5682df661e11e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1784.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:28:46.929482+00:00", + "LastUpdated": "2022-10-17T23:28:46.929482+00:00", + "Context": { + "Id": "0183e8473f51f6125f9628b1bbecdb88", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:29:16.955953+00:00", + "LastUpdated": "2022-10-17T23:29:16.955953+00:00", + "Context": { + "Id": "0183e847b49b91cbb5667c7afa5f92f9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1781.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:29:46.943879+00:00", + "LastUpdated": "2022-10-17T23:29:46.943879+00:00", + "Context": { + "Id": "0183e84829bf6a6b7d4d0cb5ed204862", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1779.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:30:16.950057+00:00", + "LastUpdated": "2022-10-17T23:30:16.950057+00:00", + "Context": { + "Id": "0183e8489ef6c60884db60ddc8fc0f75", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1774.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:30:47.003912+00:00", + "LastUpdated": "2022-10-17T23:30:47.003912+00:00", + "Context": { + "Id": "0183e849145b93cf2a3b8cece893635b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1775.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:31:17.00459+00:00", + "LastUpdated": "2022-10-17T23:31:17.00459+00:00", + "Context": { + "Id": "0183e849898c974d8ab2d04df7425590", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1774.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:31:46.970648+00:00", + "LastUpdated": "2022-10-17T23:31:46.970648+00:00", + "Context": { + "Id": "0183e849fe9a685bb480c912dde7dbf8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1775.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:32:16.975521+00:00", + "LastUpdated": "2022-10-17T23:32:16.975521+00:00", + "Context": { + "Id": "0183e84a73cf7ab6c1b1ef6591486140", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1781.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:32:46.984985+00:00", + "LastUpdated": "2022-10-17T23:32:46.984985+00:00", + "Context": { + "Id": "0183e84ae908ec2de88700b35fd314c6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1770.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:33:17.001531+00:00", + "LastUpdated": "2022-10-17T23:33:17.001531+00:00", + "Context": { + "Id": "0183e84b5e49958fa7b47c48e4387251", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1774.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:33:46.996647+00:00", + "LastUpdated": "2022-10-17T23:33:46.996647+00:00", + "Context": { + "Id": "0183e84bd3740ba589158d9178df271f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1745.47", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:34:47.009564+00:00", + "LastUpdated": "2022-10-17T23:34:47.009564+00:00", + "Context": { + "Id": "0183e84cbde1bcdd7d5d1ebc21f5a5ea", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1752.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:35:17.016542+00:00", + "LastUpdated": "2022-10-17T23:35:17.016542+00:00", + "Context": { + "Id": "0183e84d3318dff748770fe4335004b3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "183.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:35:27.332421+00:00", + "LastUpdated": "2022-10-17T23:35:27.332421+00:00", + "Context": { + "Id": "0183e84d5b64753002ff1598ad9ef10e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.91", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:35:32.333079+00:00", + "LastUpdated": "2022-10-17T23:35:32.333079+00:00", + "Context": { + "Id": "0183e84d6eede009d41f319c62c81a7b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.59", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:35:47.024715+00:00", + "LastUpdated": "2022-10-17T23:35:47.024715+00:00", + "Context": { + "Id": "0183e84da8509c5fb0d09f8b78cde5e0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:36:17.030963+00:00", + "LastUpdated": "2022-10-17T23:36:17.030963+00:00", + "Context": { + "Id": "0183e84e1d861df4c620ee808df8f825", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "63.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:36:38.335222+00:00", + "LastUpdated": "2022-10-17T23:36:38.335222+00:00", + "Context": { + "Id": "0183e84e70bf1ce94949d4d0aa496969", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.86", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:36:44.33482+00:00", + "LastUpdated": "2022-10-17T23:36:44.33482+00:00", + "Context": { + "Id": "0183e84e882eda011ad4974276472c9f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.57", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:36:47.040036+00:00", + "LastUpdated": "2022-10-17T23:36:47.040036+00:00", + "Context": { + "Id": "0183e84e92bff5d019f8f9a22a844707", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.08", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:37:17.044939+00:00", + "LastUpdated": "2022-10-17T23:37:17.044939+00:00", + "Context": { + "Id": "0183e84f07f42a5e13e0013ce89e807c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:37:47.142902+00:00", + "LastUpdated": "2022-10-17T23:37:47.142902+00:00", + "Context": { + "Id": "0183e84f7d86a452836095cb079fbf02", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:37:54.336931+00:00", + "LastUpdated": "2022-10-17T23:37:54.336931+00:00", + "Context": { + "Id": "0183e84f99a01d8436c49777f9855631", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:38:17.058869+00:00", + "LastUpdated": "2022-10-17T23:38:17.058869+00:00", + "Context": { + "Id": "0183e84ff262a5fbac8c6d841fab1e19", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.09", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:38:47.069142+00:00", + "LastUpdated": "2022-10-17T23:38:47.069142+00:00", + "Context": { + "Id": "0183e850679d19fdaf939ddd3ff8ff8b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "62.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:39:00.337364+00:00", + "LastUpdated": "2022-10-17T23:39:00.337364+00:00", + "Context": { + "Id": "0183e8509b710f843b58b06ab7b10cd8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:39:06.3385+00:00", + "LastUpdated": "2022-10-17T23:39:06.3385+00:00", + "Context": { + "Id": "0183e850b2e23ae66a747295c4f60ff2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:39:17.07339+00:00", + "LastUpdated": "2022-10-17T23:39:17.07339+00:00", + "Context": { + "Id": "0183e850dcd1acf2282b2e13c8ad5667", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "73.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:39:47.081635+00:00", + "LastUpdated": "2022-10-17T23:39:47.081635+00:00", + "Context": { + "Id": "0183e8515209ef9dc69a91152b59467a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:40:15.341325+00:00", + "LastUpdated": "2022-10-17T23:40:15.341325+00:00", + "Context": { + "Id": "0183e851c06d526608f82dea71e2c6fc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:40:21.339925+00:00", + "LastUpdated": "2022-10-17T23:40:21.339925+00:00", + "Context": { + "Id": "0183e851d7db581e81e70ab85eb868a1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.57", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:40:47.097745+00:00", + "LastUpdated": "2022-10-17T23:40:47.097745+00:00", + "Context": { + "Id": "0183e8523c796d0645156bbf44097db5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:41:15.348543+00:00", + "LastUpdated": "2022-10-17T23:41:15.348543+00:00", + "Context": { + "Id": "0183e852aad42a402c632ee7cff867b4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:41:23.340832+00:00", + "LastUpdated": "2022-10-17T23:41:23.340832+00:00", + "Context": { + "Id": "0183e852ca0c6e86313ce3fe5f86a780", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.87", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:41:28.372329+00:00", + "LastUpdated": "2022-10-17T23:41:28.372329+00:00", + "Context": { + "Id": "0183e852ddb4936ba8cdaab1c4099fa1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:41:33.357375+00:00", + "LastUpdated": "2022-10-17T23:41:33.357375+00:00", + "Context": { + "Id": "0183e852f12df41f036a3fdee91a88dd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.02", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:41:47.109414+00:00", + "LastUpdated": "2022-10-17T23:41:47.109414+00:00", + "Context": { + "Id": "0183e85326e5384d134979bea2388a17", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.57", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:42:17.117298+00:00", + "LastUpdated": "2022-10-17T23:42:17.117298+00:00", + "Context": { + "Id": "0183e8539c1dc2651a92032194f7c67e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.33", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:42:39.346445+00:00", + "LastUpdated": "2022-10-17T23:42:39.346445+00:00", + "Context": { + "Id": "0183e853f2f20dc122cc254185cc1819", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:42:47.145678+00:00", + "LastUpdated": "2022-10-17T23:42:47.145678+00:00", + "Context": { + "Id": "0183e8541169a708a1e97a0f7849aa36", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:43:17.131675+00:00", + "LastUpdated": "2022-10-17T23:43:17.131675+00:00", + "Context": { + "Id": "0183e854868bc0bcf49aef9dd872f4ba", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:43:45.347298+00:00", + "LastUpdated": "2022-10-17T23:43:45.347298+00:00", + "Context": { + "Id": "0183e854f4c31b1a5ee0145feabe2487", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:43:50.344751+00:00", + "LastUpdated": "2022-10-17T23:43:50.344751+00:00", + "Context": { + "Id": "0183e8550848da43838681e140a1130d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.62", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:43:56.346851+00:00", + "LastUpdated": "2022-10-17T23:43:56.346851+00:00", + "Context": { + "Id": "0183e8551fba1edd11f9b47f0a27da1c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:44:17.156029+00:00", + "LastUpdated": "2022-10-17T23:44:17.156029+00:00", + "Context": { + "Id": "0183e8557103e227185e0321fff74d70", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.55", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:44:47.149826+00:00", + "LastUpdated": "2022-10-17T23:44:47.149826+00:00", + "Context": { + "Id": "0183e855e62d1a12669e83003f5fb29c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.64", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:45:02.34867+00:00", + "LastUpdated": "2022-10-17T23:45:02.34867+00:00", + "Context": { + "Id": "0183e856218c1f16855f1851ccc82d7a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.10", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:45:17.155615+00:00", + "LastUpdated": "2022-10-17T23:45:17.155615+00:00", + "Context": { + "Id": "0183e8565b63b368175c7897e0c31781", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:45:47.168518+00:00", + "LastUpdated": "2022-10-17T23:45:47.168518+00:00", + "Context": { + "Id": "0183e856d0a0f84c8aee32ac2d9cf606", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "63.91", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:46:08.34994+00:00", + "LastUpdated": "2022-10-17T23:46:08.34994+00:00", + "Context": { + "Id": "0183e857235dcd07e8d54bc9697a4f28", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.56", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:46:13.353718+00:00", + "LastUpdated": "2022-10-17T23:46:13.353718+00:00", + "Context": { + "Id": "0183e85736e99616c80d27072f40c782", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.96", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:46:17.172023+00:00", + "LastUpdated": "2022-10-17T23:46:17.172023+00:00", + "Context": { + "Id": "0183e85745d36bc4b6ed8a61be47dde2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.47", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:46:19.348865+00:00", + "LastUpdated": "2022-10-17T23:46:19.348865+00:00", + "Context": { + "Id": "0183e8574e546def8a3a20a61a3a0bc8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:46:47.181424+00:00", + "LastUpdated": "2022-10-17T23:46:47.181424+00:00", + "Context": { + "Id": "0183e857bb0de6284c0749e967a7095c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.65", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:47:17.186753+00:00", + "LastUpdated": "2022-10-17T23:47:17.186753+00:00", + "Context": { + "Id": "0183e85830420d43045363a5d7db03a1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:47:20.354333+00:00", + "LastUpdated": "2022-10-17T23:47:20.354333+00:00", + "Context": { + "Id": "0183e8583ca22c034681da784b0f1b37", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.89", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:47:26.350633+00:00", + "LastUpdated": "2022-10-17T23:47:26.350633+00:00", + "Context": { + "Id": "0183e858540e3a1eef78609fa4439ad7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.96", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:47:47.191854+00:00", + "LastUpdated": "2022-10-17T23:47:47.191854+00:00", + "Context": { + "Id": "0183e858a577d18c43b3beefff9a0165", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:48:17.198809+00:00", + "LastUpdated": "2022-10-17T23:48:17.198809+00:00", + "Context": { + "Id": "0183e8591aaed1b118c2d62273654be9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.16", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:48:30.352589+00:00", + "LastUpdated": "2022-10-17T23:48:30.352589+00:00", + "Context": { + "Id": "0183e8594e10d14569285f2598b1e153", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:48:36.354786+00:00", + "LastUpdated": "2022-10-17T23:48:36.354786+00:00", + "Context": { + "Id": "0183e8596582276286d342458bc12133", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.71", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:48:47.209398+00:00", + "LastUpdated": "2022-10-17T23:48:47.209398+00:00", + "Context": { + "Id": "0183e8598fe93ec4b8558f33fa008138", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:49:17.216325+00:00", + "LastUpdated": "2022-10-17T23:49:17.216325+00:00", + "Context": { + "Id": "0183e85a052044daa553ae652646f12b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:49:45.356279+00:00", + "LastUpdated": "2022-10-17T23:49:45.356279+00:00", + "Context": { + "Id": "0183e85a730ce201d1b9952aec9f517c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.12", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:50:17.223689+00:00", + "LastUpdated": "2022-10-17T23:50:17.223689+00:00", + "Context": { + "Id": "0183e85aef873e884c3de2074aec837e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "234.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:50:18.356624+00:00", + "LastUpdated": "2022-10-17T23:50:18.356624+00:00", + "Context": { + "Id": "0183e85af3f415664c67811a1f6f5e3f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:50:23.357036+00:00", + "LastUpdated": "2022-10-17T23:50:23.357036+00:00", + "Context": { + "Id": "0183e85b077caa2f44a1a4484ee7b7c5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1777.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:50:47.237493+00:00", + "LastUpdated": "2022-10-17T23:50:47.237493+00:00", + "Context": { + "Id": "0183e85b64c5b7dd70386afacccc5e47", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1772.22", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:51:17.240017+00:00", + "LastUpdated": "2022-10-17T23:51:17.240017+00:00", + "Context": { + "Id": "0183e85bd9f779185630c0a844c06452", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1777.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:51:47.249786+00:00", + "LastUpdated": "2022-10-17T23:51:47.249786+00:00", + "Context": { + "Id": "0183e85c4f31b5356e9dd4088e6c67d3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1775.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:52:17.253146+00:00", + "LastUpdated": "2022-10-17T23:52:17.253146+00:00", + "Context": { + "Id": "0183e85cc465f8f3347c418a8709a7a6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1752.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:52:47.261761+00:00", + "LastUpdated": "2022-10-17T23:52:47.261761+00:00", + "Context": { + "Id": "0183e85d399deee80934e8868619e289", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1761.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:53:17.269261+00:00", + "LastUpdated": "2022-10-17T23:53:17.269261+00:00", + "Context": { + "Id": "0183e85daed5cd4e50d1e6cb74fc25a8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1759.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:53:47.275804+00:00", + "LastUpdated": "2022-10-17T23:53:47.275804+00:00", + "Context": { + "Id": "0183e85e240b338e13209740020f1ef8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1756.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:54:17.280627+00:00", + "LastUpdated": "2022-10-17T23:54:17.280627+00:00", + "Context": { + "Id": "0183e85e994065f60e2089385c7e955a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1750.76", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:54:47.290107+00:00", + "LastUpdated": "2022-10-17T23:54:47.290107+00:00", + "Context": { + "Id": "0183e85f0e7a309827a89ce91c8fed18", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1748.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:55:17.29396+00:00", + "LastUpdated": "2022-10-17T23:55:17.29396+00:00", + "Context": { + "Id": "0183e85f83ad5bec209b9b737e7be882", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1743.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:55:47.368292+00:00", + "LastUpdated": "2022-10-17T23:55:47.368292+00:00", + "Context": { + "Id": "0183e85ff9283cbd7f7975be26f1670d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1757.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:56:17.307481+00:00", + "LastUpdated": "2022-10-17T23:56:17.307481+00:00", + "Context": { + "Id": "0183e8606e1b780b62076789c71f31e4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1747.23", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:56:47.317311+00:00", + "LastUpdated": "2022-10-17T23:56:47.317311+00:00", + "Context": { + "Id": "0183e860e355dcbd0730964d99f1ca42", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1752.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:57:17.322018+00:00", + "LastUpdated": "2022-10-17T23:57:17.322018+00:00", + "Context": { + "Id": "0183e8615889d2ffe560920317a8a42a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1743.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:57:47.330918+00:00", + "LastUpdated": "2022-10-17T23:57:47.330918+00:00", + "Context": { + "Id": "0183e861cdc2cf59ba4cb14ac001373d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1752.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:58:17.3388+00:00", + "LastUpdated": "2022-10-17T23:58:17.3388+00:00", + "Context": { + "Id": "0183e86242fa7642d4dc625c72f8ea04", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1754.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:58:47.349481+00:00", + "LastUpdated": "2022-10-17T23:58:47.349481+00:00", + "Context": { + "Id": "0183e862b835fb3f36998e4eefb3ff7f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1757.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-17T23:59:17.350134+00:00", + "LastUpdated": "2022-10-17T23:59:17.350134+00:00", + "Context": { + "Id": "0183e8632d661783bd6646d3318b3bfa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1759.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:00:17.360923+00:00", + "LastUpdated": "2022-10-18T00:00:17.360923+00:00", + "Context": { + "Id": "0183e86417d04a1542b63307a98a54fa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1756.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:01:17.378142+00:00", + "LastUpdated": "2022-10-18T00:01:17.378142+00:00", + "Context": { + "Id": "0183e8650242f0c060c0096a38fe325e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1754.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:01:47.385497+00:00", + "LastUpdated": "2022-10-18T00:01:47.385497+00:00", + "Context": { + "Id": "0183e8657779237cd27abb362941c4d6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1759.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:02:17.395106+00:00", + "LastUpdated": "2022-10-18T00:02:17.395106+00:00", + "Context": { + "Id": "0183e865ecb3568a24a6da393d054a8e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "92.06", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:02:32.374949+00:00", + "LastUpdated": "2022-10-18T00:02:32.374949+00:00", + "Context": { + "Id": "0183e8662736642888b233e45373e20e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:02:37.374657+00:00", + "LastUpdated": "2022-10-18T00:02:37.374657+00:00", + "Context": { + "Id": "0183e8663abe9a208ff2c728cabb2235", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.67", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:02:47.399116+00:00", + "LastUpdated": "2022-10-18T00:02:47.399116+00:00", + "Context": { + "Id": "0183e86661e70d7aef322c5c54d8636f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.75", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:02:59.375788+00:00", + "LastUpdated": "2022-10-18T00:02:59.375788+00:00", + "Context": { + "Id": "0183e86690af9918eacf1d692335af82", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.43", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:03:17.406041+00:00", + "LastUpdated": "2022-10-18T00:03:17.406041+00:00", + "Context": { + "Id": "0183e866d71ddb498b1ceed992c789fb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.92", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:03:47.41358+00:00", + "LastUpdated": "2022-10-18T00:03:47.41358+00:00", + "Context": { + "Id": "0183e8674c55d15c28b1285943286ba5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:04:05.377032+00:00", + "LastUpdated": "2022-10-18T00:04:05.377032+00:00", + "Context": { + "Id": "0183e8679280a3cca9fa915ff447baac", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:04:11.377187+00:00", + "LastUpdated": "2022-10-18T00:04:11.377187+00:00", + "Context": { + "Id": "0183e867a9f1a74af4f6f42102adafca", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:04:17.426405+00:00", + "LastUpdated": "2022-10-18T00:04:17.426405+00:00", + "Context": { + "Id": "0183e867c192e9cdf99778250e84f39e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.15", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:04:47.425737+00:00", + "LastUpdated": "2022-10-18T00:04:47.425737+00:00", + "Context": { + "Id": "0183e86836c14bbcbff78b21222bfb8d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.92", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:05:17.433848+00:00", + "LastUpdated": "2022-10-18T00:05:17.433848+00:00", + "Context": { + "Id": "0183e868abf97dd328f338b25ccded24", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.54", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:05:21.37941+00:00", + "LastUpdated": "2022-10-18T00:05:21.37941+00:00", + "Context": { + "Id": "0183e868bb63d3cd746d2327d18167fa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.11", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:05:47.439003+00:00", + "LastUpdated": "2022-10-18T00:05:47.439003+00:00", + "Context": { + "Id": "0183e869212e16e2d02da53bc9f73a7d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "69.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:06:17.448979+00:00", + "LastUpdated": "2022-10-18T00:06:17.448979+00:00", + "Context": { + "Id": "0183e869966862dc831ab0762ba31c45", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "62.88", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:06:29.380999+00:00", + "LastUpdated": "2022-10-18T00:06:29.380999+00:00", + "Context": { + "Id": "0183e869c504ceb3948804114d93e69d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.86", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:06:35.382619+00:00", + "LastUpdated": "2022-10-18T00:06:35.382619+00:00", + "Context": { + "Id": "0183e869dc760a70f635e02a8cce2184", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.65", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:06:47.453868+00:00", + "LastUpdated": "2022-10-18T00:06:47.453868+00:00", + "Context": { + "Id": "0183e86a0b9de545167ca771025df90c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.27", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:07:17.461348+00:00", + "LastUpdated": "2022-10-18T00:07:17.461348+00:00", + "Context": { + "Id": "0183e86a80d5d010ca67d36d947c8cb5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.16", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:07:44.386973+00:00", + "LastUpdated": "2022-10-18T00:07:44.386973+00:00", + "Context": { + "Id": "0183e86aea02b01e4eb73021c3e7edab", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.65", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:07:47.470668+00:00", + "LastUpdated": "2022-10-18T00:07:47.470668+00:00", + "Context": { + "Id": "0183e86af60e1fb0d83f19c793b83666", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.12", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:08:17.474239+00:00", + "LastUpdated": "2022-10-18T00:08:17.474239+00:00", + "Context": { + "Id": "0183e86b6b42821d7771fce368dbb89d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:08:47.483787+00:00", + "LastUpdated": "2022-10-18T00:08:47.483787+00:00", + "Context": { + "Id": "0183e86be07b1d688d2e1dafb6683dcd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "63.89", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:08:51.384405+00:00", + "LastUpdated": "2022-10-18T00:08:51.384405+00:00", + "Context": { + "Id": "0183e86befb839fa66c3afab66cc2e17", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "77.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:08:57.386119+00:00", + "LastUpdated": "2022-10-18T00:08:57.386119+00:00", + "Context": { + "Id": "0183e86c072a58d68e6b5b2518f2d639", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.08", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:09:17.487426+00:00", + "LastUpdated": "2022-10-18T00:09:17.487426+00:00", + "Context": { + "Id": "0183e86c55af10222f4804b70e15269a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.94", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:09:47.495238+00:00", + "LastUpdated": "2022-10-18T00:09:47.495238+00:00", + "Context": { + "Id": "0183e86ccae71876be2a018105d369e4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.08", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:10:06.387755+00:00", + "LastUpdated": "2022-10-18T00:10:06.387755+00:00", + "Context": { + "Id": "0183e86d14b3c34473f87342ddd89180", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:10:17.496824+00:00", + "LastUpdated": "2022-10-18T00:10:17.496824+00:00", + "Context": { + "Id": "0183e86d4018eb29720ac066f2e25c3f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.88", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:10:47.506968+00:00", + "LastUpdated": "2022-10-18T00:10:47.506968+00:00", + "Context": { + "Id": "0183e86db55207be7f6dd64ac9ccf95a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "67.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:11:12.389765+00:00", + "LastUpdated": "2022-10-18T00:11:12.389765+00:00", + "Context": { + "Id": "0183e86e16852959aa3d43ee8bd76d0c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.65", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:11:17.513141+00:00", + "LastUpdated": "2022-10-18T00:11:17.513141+00:00", + "Context": { + "Id": "0183e86e2a8970c28b20d52c41110865", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.43", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:11:18.388538+00:00", + "LastUpdated": "2022-10-18T00:11:18.388538+00:00", + "Context": { + "Id": "0183e86e2df494e0d6435be33d8c6098", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.97", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:11:47.520735+00:00", + "LastUpdated": "2022-10-18T00:11:47.520735+00:00", + "Context": { + "Id": "0183e86e9fc0cfbafa2b416fc010fced", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.78", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:12:17.533745+00:00", + "LastUpdated": "2022-10-18T00:12:17.533745+00:00", + "Context": { + "Id": "0183e86f14fdd1c0f92ffb60a37fe95a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.56", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:12:29.389484+00:00", + "LastUpdated": "2022-10-18T00:12:29.389484+00:00", + "Context": { + "Id": "0183e86f434dbe1a9ba64db42d3e6c09", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.76", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:12:47.533913+00:00", + "LastUpdated": "2022-10-18T00:12:47.533913+00:00", + "Context": { + "Id": "0183e86f8a2dba7f20e6a2f9af653b0a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.21", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:13:17.541314+00:00", + "LastUpdated": "2022-10-18T00:13:17.541314+00:00", + "Context": { + "Id": "0183e86fff65363ba54b99914a018d70", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "63.88", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:13:36.475632+00:00", + "LastUpdated": "2022-10-18T00:13:36.475632+00:00", + "Context": { + "Id": "0183e870495bb996cd9b9f13d768a972", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.59", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:13:42.39156+00:00", + "LastUpdated": "2022-10-18T00:13:42.39156+00:00", + "Context": { + "Id": "0183e870607793f152ba8b60d7a9b3cf", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:13:47.550302+00:00", + "LastUpdated": "2022-10-18T00:13:47.550302+00:00", + "Context": { + "Id": "0183e870749ed47ebc3b2f3eaf85a17c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.83", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:14:17.556958+00:00", + "LastUpdated": "2022-10-18T00:14:17.556958+00:00", + "Context": { + "Id": "0183e870e9d4204a21e40f2b425787f8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:14:47.560805+00:00", + "LastUpdated": "2022-10-18T00:14:47.560805+00:00", + "Context": { + "Id": "0183e8715f08b5d48f68bb57001c02b3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.09", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:14:53.392424+00:00", + "LastUpdated": "2022-10-18T00:14:53.392424+00:00", + "Context": { + "Id": "0183e87175d0daee26d516fdeea0143d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.06", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:15:17.568053+00:00", + "LastUpdated": "2022-10-18T00:15:17.568053+00:00", + "Context": { + "Id": "0183e871d43ffdbfdbe5f0a8e80637d1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:15:47.574513+00:00", + "LastUpdated": "2022-10-18T00:15:47.574513+00:00", + "Context": { + "Id": "0183e8724976c091115228d7bc9a4ebe", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:15:59.396779+00:00", + "LastUpdated": "2022-10-18T00:15:59.396779+00:00", + "Context": { + "Id": "0183e87277a445d3cec34681a511734e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.15", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:16:04.395647+00:00", + "LastUpdated": "2022-10-18T00:16:04.395647+00:00", + "Context": { + "Id": "0183e8728b2b92a3e0f292833c2b5d31", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:16:17.58079+00:00", + "LastUpdated": "2022-10-18T00:16:17.58079+00:00", + "Context": { + "Id": "0183e872beac031c2d45b455121f8837", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.54", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:16:47.590159+00:00", + "LastUpdated": "2022-10-18T00:16:47.590159+00:00", + "Context": { + "Id": "0183e87333e6cdb08b424fea4ac70e23", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.50", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:17:14.39682+00:00", + "LastUpdated": "2022-10-18T00:17:14.39682+00:00", + "Context": { + "Id": "0183e8739c9c88af2a33c9627fc81db2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:17:17.595275+00:00", + "LastUpdated": "2022-10-18T00:17:17.595275+00:00", + "Context": { + "Id": "0183e873a91b89bca87970fd74ab3516", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.97", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:17:47.605652+00:00", + "LastUpdated": "2022-10-18T00:17:47.605652+00:00", + "Context": { + "Id": "0183e8741e558a013258c954181985fd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.81", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:18:17.608378+00:00", + "LastUpdated": "2022-10-18T00:18:17.608378+00:00", + "Context": { + "Id": "0183e8749388b4b538c77959959e5ad0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.94", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:18:20.396936+00:00", + "LastUpdated": "2022-10-18T00:18:20.396936+00:00", + "Context": { + "Id": "0183e8749e6c60acf4974497581854e7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:18:25.39933+00:00", + "LastUpdated": "2022-10-18T00:18:25.39933+00:00", + "Context": { + "Id": "0183e874b1f79379151ca3e66593fe69", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:18:47.615682+00:00", + "LastUpdated": "2022-10-18T00:18:47.615682+00:00", + "Context": { + "Id": "0183e87508bff99b038526455ded3563", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:19:17.622294+00:00", + "LastUpdated": "2022-10-18T00:19:17.622294+00:00", + "Context": { + "Id": "0183e8757df65dff089b687da72ec2e7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:19:33.484491+00:00", + "LastUpdated": "2022-10-18T00:19:33.484491+00:00", + "Context": { + "Id": "0183e875bbec3c181dafbfc0b3a07327", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.96", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:19:39.400418+00:00", + "LastUpdated": "2022-10-18T00:19:39.400418+00:00", + "Context": { + "Id": "0183e875d308b3b5e6f5846031860b5a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:19:47.635817+00:00", + "LastUpdated": "2022-10-18T00:19:47.635817+00:00", + "Context": { + "Id": "0183e875f3334a7b7a47f6d633bc836f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.27", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:20:17.636685+00:00", + "LastUpdated": "2022-10-18T00:20:17.636685+00:00", + "Context": { + "Id": "0183e8766864c775996b45cd2498bf3c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.78", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:20:44.401634+00:00", + "LastUpdated": "2022-10-18T00:20:44.401634+00:00", + "Context": { + "Id": "0183e876d0f176d7d586aab44bff0aab", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.95", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:20:47.645458+00:00", + "LastUpdated": "2022-10-18T00:20:47.645458+00:00", + "Context": { + "Id": "0183e876dd9d7b91e0b7215d76e47e4b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:20:49.400988+00:00", + "LastUpdated": "2022-10-18T00:20:49.400988+00:00", + "Context": { + "Id": "0183e876e478312ea55dfeebf24ec642", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.77", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:20:59.401668+00:00", + "LastUpdated": "2022-10-18T00:20:59.401668+00:00", + "Context": { + "Id": "0183e8770b8933d2677b7455bef6a773", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.69", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:21:17.648032+00:00", + "LastUpdated": "2022-10-18T00:21:17.648032+00:00", + "Context": { + "Id": "0183e87752cf3b7e4ecf672fe18bb084", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.76", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:21:47.701159+00:00", + "LastUpdated": "2022-10-18T00:21:47.701159+00:00", + "Context": { + "Id": "0183e877c835bdcea609c29404c07f81", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.13", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:21:59.403777+00:00", + "LastUpdated": "2022-10-18T00:21:59.403777+00:00", + "Context": { + "Id": "0183e877f5eb9d00cb09bc0a61558897", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:22:17.665905+00:00", + "LastUpdated": "2022-10-18T00:22:17.665905+00:00", + "Context": { + "Id": "0183e8783d4109fe7bc3874b271b60f2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.78", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:22:47.668696+00:00", + "LastUpdated": "2022-10-18T00:22:47.668696+00:00", + "Context": { + "Id": "0183e878b27423e6365f932b1e1bf71a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:23:06.406572+00:00", + "LastUpdated": "2022-10-18T00:23:06.406572+00:00", + "Context": { + "Id": "0183e878fba6464afd346f9c0ea895fc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.92", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:23:11.404943+00:00", + "LastUpdated": "2022-10-18T00:23:11.404943+00:00", + "Context": { + "Id": "0183e8790f2c90032622e0f315586411", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "77.15", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:23:17.67409+00:00", + "LastUpdated": "2022-10-18T00:23:17.67409+00:00", + "Context": { + "Id": "0183e87927aadaed1cfdfc1caa223479", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:23:18.408233+00:00", + "LastUpdated": "2022-10-18T00:23:18.408233+00:00", + "Context": { + "Id": "0183e8792a8835b77999c700829dbf88", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.16", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:23:47.68415+00:00", + "LastUpdated": "2022-10-18T00:23:47.68415+00:00", + "Context": { + "Id": "0183e8799ce43340d21e747ca69a9e73", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:24:17.693432+00:00", + "LastUpdated": "2022-10-18T00:24:17.693432+00:00", + "Context": { + "Id": "0183e87a121df21efd3bbb9428ddf956", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:24:18.40801+00:00", + "LastUpdated": "2022-10-18T00:24:18.40801+00:00", + "Context": { + "Id": "0183e87a14e76c3ba1cf8af68149f82d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:24:24.408222+00:00", + "LastUpdated": "2022-10-18T00:24:24.408222+00:00", + "Context": { + "Id": "0183e87a2c586382891c18369cfc1b3a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.68", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:24:47.698932+00:00", + "LastUpdated": "2022-10-18T00:24:47.698932+00:00", + "Context": { + "Id": "0183e87a8752fd9eb6145ed770ab4d8e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.13", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:25:17.70729+00:00", + "LastUpdated": "2022-10-18T00:25:17.70729+00:00", + "Context": { + "Id": "0183e87afc8bbe84b764e6fc49bfaec6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.75", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:25:29.40922+00:00", + "LastUpdated": "2022-10-18T00:25:29.40922+00:00", + "Context": { + "Id": "0183e87b2a410612b10f241eef58087a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:25:34.410756+00:00", + "LastUpdated": "2022-10-18T00:25:34.410756+00:00", + "Context": { + "Id": "0183e87b3dca04aeba1c5dfa6210055c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.86", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:25:39.505799+00:00", + "LastUpdated": "2022-10-18T00:25:39.505799+00:00", + "Context": { + "Id": "0183e87b51b1cc840da4d17b40a1bafc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.81", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:25:47.712596+00:00", + "LastUpdated": "2022-10-18T00:25:47.712596+00:00", + "Context": { + "Id": "0183e87b71c02aa5af98bc6d32007d9c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.55", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:26:17.717574+00:00", + "LastUpdated": "2022-10-18T00:26:17.717574+00:00", + "Context": { + "Id": "0183e87be6f5706b57c1c4377e0fcea1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:26:44.411105+00:00", + "LastUpdated": "2022-10-18T00:26:44.411105+00:00", + "Context": { + "Id": "0183e87c4f3bce8d7f803c4a4ce4740d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:26:47.723856+00:00", + "LastUpdated": "2022-10-18T00:26:47.723856+00:00", + "Context": { + "Id": "0183e87c5c2b8ca9cddd319fe7e874b4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:27:17.72741+00:00", + "LastUpdated": "2022-10-18T00:27:17.72741+00:00", + "Context": { + "Id": "0183e87cd15fd3e0873b8c33395d7de5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "73.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:27:47.734593+00:00", + "LastUpdated": "2022-10-18T00:27:47.734593+00:00", + "Context": { + "Id": "0183e87d4696f813d99907cfccef3152", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:27:51.411464+00:00", + "LastUpdated": "2022-10-18T00:27:51.411464+00:00", + "Context": { + "Id": "0183e87d54f308e95d5d4664fe774a56", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:27:57.412058+00:00", + "LastUpdated": "2022-10-18T00:27:57.412058+00:00", + "Context": { + "Id": "0183e87d6c6497a64f519d06ee4d7a6c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.11", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:28:17.744514+00:00", + "LastUpdated": "2022-10-18T00:28:17.744514+00:00", + "Context": { + "Id": "0183e87dbbd096631ed891072e6d4129", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.10", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:28:47.750461+00:00", + "LastUpdated": "2022-10-18T00:28:47.750461+00:00", + "Context": { + "Id": "0183e87e31061cf06142d04d06357b55", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:29:06.487848+00:00", + "LastUpdated": "2022-10-18T00:29:06.487848+00:00", + "Context": { + "Id": "0183e87e7a37b10a88f215da452c4167", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:29:17.758524+00:00", + "LastUpdated": "2022-10-18T00:29:17.758524+00:00", + "Context": { + "Id": "0183e87ea63e983b0974f786da4d487f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:29:47.768245+00:00", + "LastUpdated": "2022-10-18T00:29:47.768245+00:00", + "Context": { + "Id": "0183e87f1b783a93c6dcfc8572ab50d1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.75", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:30:14.414951+00:00", + "LastUpdated": "2022-10-18T00:30:14.414951+00:00", + "Context": { + "Id": "0183e87f838e212ba75c2cbb83bfa5f7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.80", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:30:17.771109+00:00", + "LastUpdated": "2022-10-18T00:30:17.771109+00:00", + "Context": { + "Id": "0183e87f90ab00600ab441e526f31871", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "77.16", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:30:20.41779+00:00", + "LastUpdated": "2022-10-18T00:30:20.41779+00:00", + "Context": { + "Id": "0183e87f9b0199c0aeb22414add51e0e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:30:47.844563+00:00", + "LastUpdated": "2022-10-18T00:30:47.844563+00:00", + "Context": { + "Id": "0183e88006243d3db527d258403d08f8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:31:17.854868+00:00", + "LastUpdated": "2022-10-18T00:31:17.854868+00:00", + "Context": { + "Id": "0183e8807b5e3e67ca92af67af08bb19", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.78", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:31:29.418052+00:00", + "LastUpdated": "2022-10-18T00:31:29.418052+00:00", + "Context": { + "Id": "0183e880a88ab3d0607026c2965c6d3d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:31:47.792505+00:00", + "LastUpdated": "2022-10-18T00:31:47.792505+00:00", + "Context": { + "Id": "0183e880f0507658f3dbe84a9b131951", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "30.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:14.421988+00:00", + "LastUpdated": "2022-10-18T00:32:14.421988+00:00", + "Context": { + "Id": "0183e8815855f9d8b58db2f978acb8fa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "31.80", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:17.802693+00:00", + "LastUpdated": "2022-10-18T00:32:17.802693+00:00", + "Context": { + "Id": "0183e881658a22e5e06a47c6d9e072c8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "31.90", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:19.423204+00:00", + "LastUpdated": "2022-10-18T00:32:19.423204+00:00", + "Context": { + "Id": "0183e8816bdfa77aec51e61d86f416b5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "29.88", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:26.418339+00:00", + "LastUpdated": "2022-10-18T00:32:26.418339+00:00", + "Context": { + "Id": "0183e88187322def17dd43711a1e57ef", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:32.418973+00:00", + "LastUpdated": "2022-10-18T00:32:32.418973+00:00", + "Context": { + "Id": "0183e8819ea2c49fd164076451ba5b65", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.10", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:47.8059+00:00", + "LastUpdated": "2022-10-18T00:32:47.8059+00:00", + "Context": { + "Id": "0183e881dabdd5b637981b13a0f2dda5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "20.09", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:48.420099+00:00", + "LastUpdated": "2022-10-18T00:32:48.420099+00:00", + "Context": { + "Id": "0183e881dd249bed4ef6648e48710d7d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:32:54.421632+00:00", + "LastUpdated": "2022-10-18T00:32:54.421632+00:00", + "Context": { + "Id": "0183e881f4952a9883d511fc0f62306d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "8.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:33:09.421003+00:00", + "LastUpdated": "2022-10-18T00:33:09.421003+00:00", + "Context": { + "Id": "0183e8822f2c3d985a113223b6c1ddcf", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:33:17.812702+00:00", + "LastUpdated": "2022-10-18T00:33:17.812702+00:00", + "Context": { + "Id": "0183e8824ff4b32f8340a9c0d6125378", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "77.73", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:33:39.42071+00:00", + "LastUpdated": "2022-10-18T00:33:39.42071+00:00", + "Context": { + "Id": "0183e882a45cff889fec5026c5efbc57", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:33:44.427065+00:00", + "LastUpdated": "2022-10-18T00:33:44.427065+00:00", + "Context": { + "Id": "0183e882b7ebdc4e4766edb76bc6aa44", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:33:47.821115+00:00", + "LastUpdated": "2022-10-18T00:33:47.821115+00:00", + "Context": { + "Id": "0183e882c52d6cd5f6801358b5558f47", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.17", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:03.424874+00:00", + "LastUpdated": "2022-10-18T00:34:03.424874+00:00", + "Context": { + "Id": "0183e88302207ac848720dd29ab5656f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.48", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:09.561645+00:00", + "LastUpdated": "2022-10-18T00:34:09.561645+00:00", + "Context": { + "Id": "0183e8831a193f77ed54999b6452a56a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:17.826891+00:00", + "LastUpdated": "2022-10-18T00:34:17.826891+00:00", + "Context": { + "Id": "0183e8833a621376f7dd34baebb3271a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "73.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:18.423663+00:00", + "LastUpdated": "2022-10-18T00:34:18.423663+00:00", + "Context": { + "Id": "0183e8833cb78d2139531ab7d9937118", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:26.425236+00:00", + "LastUpdated": "2022-10-18T00:34:26.425236+00:00", + "Context": { + "Id": "0183e8835bf9b2d3185b3012b2e5f3f5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:32.42402+00:00", + "LastUpdated": "2022-10-18T00:34:32.42402+00:00", + "Context": { + "Id": "0183e88373672b7023f769b7027449a7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.48", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:42.423584+00:00", + "LastUpdated": "2022-10-18T00:34:42.423584+00:00", + "Context": { + "Id": "0183e8839a77157ee4ea0128c796def7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:34:47.834228+00:00", + "LastUpdated": "2022-10-18T00:34:47.834228+00:00", + "Context": { + "Id": "0183e883af9aeb7bcfcbca1e3b90d71e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.64", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:35:17.863458+00:00", + "LastUpdated": "2022-10-18T00:35:17.863458+00:00", + "Context": { + "Id": "0183e88424e792dcf6cf9e8417da93f3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "73.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:35:47.845137+00:00", + "LastUpdated": "2022-10-18T00:35:47.845137+00:00", + "Context": { + "Id": "0183e8849a053f333a1534355bf5baf2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.73", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:35:48.427644+00:00", + "LastUpdated": "2022-10-18T00:35:48.427644+00:00", + "Context": { + "Id": "0183e8849c4bf5e35b9167f023ccd038", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:35:54.429459+00:00", + "LastUpdated": "2022-10-18T00:35:54.429459+00:00", + "Context": { + "Id": "0183e884b3bdda9661e7934e264268d8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:36:17.853839+00:00", + "LastUpdated": "2022-10-18T00:36:17.853839+00:00", + "Context": { + "Id": "0183e8850f3d0bc28d1d135483abfc11", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:36:47.86253+00:00", + "LastUpdated": "2022-10-18T00:36:47.86253+00:00", + "Context": { + "Id": "0183e88584769a5c3884379a06fa03b2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.04", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:37:05.428954+00:00", + "LastUpdated": "2022-10-18T00:37:05.428954+00:00", + "Context": { + "Id": "0183e885c9146bed7e3af8f69f19554b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.86", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:37:17.865114+00:00", + "LastUpdated": "2022-10-18T00:37:17.865114+00:00", + "Context": { + "Id": "0183e885f9a9c692f58c97f7ee170af4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.87", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:37:47.873299+00:00", + "LastUpdated": "2022-10-18T00:37:47.873299+00:00", + "Context": { + "Id": "0183e8866ee169800e2dbe6bbc87c7d6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "67.27", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:38:11.428085+00:00", + "LastUpdated": "2022-10-18T00:38:11.428085+00:00", + "Context": { + "Id": "0183e886cae42c520c3aa33f2a2a5f0b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:38:16.429755+00:00", + "LastUpdated": "2022-10-18T00:38:16.429755+00:00", + "Context": { + "Id": "0183e886de6d661a804dca12faf25d19", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:38:17.877246+00:00", + "LastUpdated": "2022-10-18T00:38:17.877246+00:00", + "Context": { + "Id": "0183e886e415efce062a70be40a1b5ce", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:38:47.888474+00:00", + "LastUpdated": "2022-10-18T00:38:47.888474+00:00", + "Context": { + "Id": "0183e8875950f9ea45d3cb99e3103104", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.14", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:39:18.762536+00:00", + "LastUpdated": "2022-10-18T00:39:18.762536+00:00", + "Context": { + "Id": "0183e887d1eacb7b80d2aed39fb96fa4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:39:24.430838+00:00", + "LastUpdated": "2022-10-18T00:39:24.430838+00:00", + "Context": { + "Id": "0183e887e80ed57da943ec8effbcddd9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.19", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:39:30.430799+00:00", + "LastUpdated": "2022-10-18T00:39:30.430799+00:00", + "Context": { + "Id": "0183e887ff7e9d96a07022273d91bc2c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.85", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:39:47.920808+00:00", + "LastUpdated": "2022-10-18T00:39:47.920808+00:00", + "Context": { + "Id": "0183e88843d0fb71dc8765f3990f1d32", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "41.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:39:57.43187+00:00", + "LastUpdated": "2022-10-18T00:39:57.43187+00:00", + "Context": { + "Id": "0183e88868f79c8de35a873efea1f33a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "32.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:03.431498+00:00", + "LastUpdated": "2022-10-18T00:40:03.431498+00:00", + "Context": { + "Id": "0183e88880679056df9b6cd73c294c14", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "28.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:09.432635+00:00", + "LastUpdated": "2022-10-18T00:40:09.432635+00:00", + "Context": { + "Id": "0183e88897d86c13881950d99d6fde96", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "27.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:14.434922+00:00", + "LastUpdated": "2022-10-18T00:40:14.434922+00:00", + "Context": { + "Id": "0183e888ab62df28c05d655931f32b08", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:17.907462+00:00", + "LastUpdated": "2022-10-18T00:40:17.907462+00:00", + "Context": { + "Id": "0183e888b8f372400388672e1e857610", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "12.56", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:33.434056+00:00", + "LastUpdated": "2022-10-18T00:40:33.434056+00:00", + "Context": { + "Id": "0183e888f599261e145e9d62129b8dc3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:38.4333+00:00", + "LastUpdated": "2022-10-18T00:40:38.4333+00:00", + "Context": { + "Id": "0183e88909216db1c904e5c4820d8c14", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:47.916157+00:00", + "LastUpdated": "2022-10-18T00:40:47.916157+00:00", + "Context": { + "Id": "0183e8892e2cdc6d6114a266aec74bc4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "9.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:53.435985+00:00", + "LastUpdated": "2022-10-18T00:40:53.435985+00:00", + "Context": { + "Id": "0183e88943bb786b014fe6115bc19042", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:40:59.43231+00:00", + "LastUpdated": "2022-10-18T00:40:59.43231+00:00", + "Context": { + "Id": "0183e8895b2889e7f499bc9e23c96bcb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:41:17.920673+00:00", + "LastUpdated": "2022-10-18T00:41:17.920673+00:00", + "Context": { + "Id": "0183e889a3605cbd566c4d1cacb28fc2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "19.99", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:41:23.433645+00:00", + "LastUpdated": "2022-10-18T00:41:23.433645+00:00", + "Context": { + "Id": "0183e889b8e9d4c05c9450efa821205f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.19", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:41:29.490773+00:00", + "LastUpdated": "2022-10-18T00:41:29.490773+00:00", + "Context": { + "Id": "0183e889d092ca98a4438fffa173fbad", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:41:47.435517+00:00", + "LastUpdated": "2022-10-18T00:41:47.435517+00:00", + "Context": { + "Id": "0183e88a16ab4de1b538618a39820482", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.20", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:41:52.434409+00:00", + "LastUpdated": "2022-10-18T00:41:52.434409+00:00", + "Context": { + "Id": "0183e88a2a3276b865db40c15508727c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "74.87", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:42:02.439686+00:00", + "LastUpdated": "2022-10-18T00:42:02.439686+00:00", + "Context": { + "Id": "0183e88a51477f6e8ccd678f402408c7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:42:09.435016+00:00", + "LastUpdated": "2022-10-18T00:42:09.435016+00:00", + "Context": { + "Id": "0183e88a6c9a59699cc9fe22f4fa1c95", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.11", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:42:15.436147+00:00", + "LastUpdated": "2022-10-18T00:42:15.436147+00:00", + "Context": { + "Id": "0183e88a840c2bbd23673dc9d0553e07", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:42:17.937129+00:00", + "LastUpdated": "2022-10-18T00:42:17.937129+00:00", + "Context": { + "Id": "0183e88a8dd14595ba150f838a450bd3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.24", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:42:26.436252+00:00", + "LastUpdated": "2022-10-18T00:42:26.436252+00:00", + "Context": { + "Id": "0183e88aaf04fab97a0013ca72d01ba0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.14", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:42:47.940708+00:00", + "LastUpdated": "2022-10-18T00:42:47.940708+00:00", + "Context": { + "Id": "0183e88b03046b4a156a8bb4ac60eef5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.80", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:43:17.950892+00:00", + "LastUpdated": "2022-10-18T00:43:17.950892+00:00", + "Context": { + "Id": "0183e88b783e83743ce99739159145c4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.55", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:43:32.437219+00:00", + "LastUpdated": "2022-10-18T00:43:32.437219+00:00", + "Context": { + "Id": "0183e88bb0d5ce240ab64953682fc743", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.02", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:43:37.441193+00:00", + "LastUpdated": "2022-10-18T00:43:37.441193+00:00", + "Context": { + "Id": "0183e88bc461e505edeaae3196c06f32", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.56", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:43:47.955453+00:00", + "LastUpdated": "2022-10-18T00:43:47.955453+00:00", + "Context": { + "Id": "0183e88bed73258cd208337650dbda06", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:44:17.965845+00:00", + "LastUpdated": "2022-10-18T00:44:17.965845+00:00", + "Context": { + "Id": "0183e88c62ad02bacec416ab6a10ec84", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "77.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:44:47.971415+00:00", + "LastUpdated": "2022-10-18T00:44:47.971415+00:00", + "Context": { + "Id": "0183e88cd7e3d6dc73c1d22b30409322", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.68", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:44:48.45233+00:00", + "LastUpdated": "2022-10-18T00:44:48.45233+00:00", + "Context": { + "Id": "0183e88cd9c435b5022a0c4983ecc370", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:45:17.984145+00:00", + "LastUpdated": "2022-10-18T00:45:17.984145+00:00", + "Context": { + "Id": "0183e88d4d20821c4883ac7c80f19c2f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "72.70", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:45:47.984571+00:00", + "LastUpdated": "2022-10-18T00:45:47.984571+00:00", + "Context": { + "Id": "0183e88dc250b0ccfaa9f72fa5a1e5c2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:45:54.442712+00:00", + "LastUpdated": "2022-10-18T00:45:54.442712+00:00", + "Context": { + "Id": "0183e88ddb8a1572065cd91e02c87aa5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "77.56", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:45:59.440522+00:00", + "LastUpdated": "2022-10-18T00:45:59.440522+00:00", + "Context": { + "Id": "0183e88def10f53d0201a9ef9d6a1d76", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:46:17.990502+00:00", + "LastUpdated": "2022-10-18T00:46:17.990502+00:00", + "Context": { + "Id": "0183e88e3786aff808c8680a647ca944", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.33", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:46:47.99737+00:00", + "LastUpdated": "2022-10-18T00:46:47.99737+00:00", + "Context": { + "Id": "0183e88eacbdfbbb8683eb22875f0fff", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:47:11.44491+00:00", + "LastUpdated": "2022-10-18T00:47:11.44491+00:00", + "Context": { + "Id": "0183e88f0854d633e4aea3c77527372e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:47:18.005136+00:00", + "LastUpdated": "2022-10-18T00:47:18.005136+00:00", + "Context": { + "Id": "0183e88f21f5f197933355c76641ced8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.69", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:47:41.450585+00:00", + "LastUpdated": "2022-10-18T00:47:41.450585+00:00", + "Context": { + "Id": "0183e88f7d8a1b105ea6ee1cf9239948", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "31.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:47:47.445568+00:00", + "LastUpdated": "2022-10-18T00:47:47.445568+00:00", + "Context": { + "Id": "0183e88f94f57b97dc4d0d758db570b4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "28.62", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:47:54.447026+00:00", + "LastUpdated": "2022-10-18T00:47:54.447026+00:00", + "Context": { + "Id": "0183e88fb04e580735cded64f95875fa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.71", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:47:59.443997+00:00", + "LastUpdated": "2022-10-18T00:47:59.443997+00:00", + "Context": { + "Id": "0183e88fc3d3c1bc774d96be8deac2b0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "25.84", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:48:18.021684+00:00", + "LastUpdated": "2022-10-18T00:48:18.021684+00:00", + "Context": { + "Id": "0183e8900c65d239eeb739bc5ac2fe6d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "13.71", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:48:18.447712+00:00", + "LastUpdated": "2022-10-18T00:48:18.447712+00:00", + "Context": { + "Id": "0183e8900e0f370a8d6a88c2e9c71eda", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "10.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:48:24.446405+00:00", + "LastUpdated": "2022-10-18T00:48:24.446405+00:00", + "Context": { + "Id": "0183e890257e1caa9d5024db2caac012", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "8.03", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:48:38.449842+00:00", + "LastUpdated": "2022-10-18T00:48:38.449842+00:00", + "Context": { + "Id": "0183e8905c31eb8fa5b682fb69a089eb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:48:48.026039+00:00", + "LastUpdated": "2022-10-18T00:48:48.026039+00:00", + "Context": { + "Id": "0183e8908199bf8437fd54a2ece8c52a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "13.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:08.446172+00:00", + "LastUpdated": "2022-10-18T00:49:08.446172+00:00", + "Context": { + "Id": "0183e890d15e5ae9e921953d03e79265", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.50", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:14.446547+00:00", + "LastUpdated": "2022-10-18T00:49:14.446547+00:00", + "Context": { + "Id": "0183e890e8cec815d180913ba7fb36eb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "68.47", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:18.029969+00:00", + "LastUpdated": "2022-10-18T00:49:18.029969+00:00", + "Context": { + "Id": "0183e890f6cd53fa5b29af16a1d48aef", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.59", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:32.447839+00:00", + "LastUpdated": "2022-10-18T00:49:32.447839+00:00", + "Context": { + "Id": "0183e8912f1f68bb01897267facc1e92", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.48", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:37.449363+00:00", + "LastUpdated": "2022-10-18T00:49:37.449363+00:00", + "Context": { + "Id": "0183e89142a93618f54cf72e801c9c80", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "75.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:47.448831+00:00", + "LastUpdated": "2022-10-18T00:49:47.448831+00:00", + "Context": { + "Id": "0183e89169b821e5b68a710793cfd09f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:52.449274+00:00", + "LastUpdated": "2022-10-18T00:49:52.449274+00:00", + "Context": { + "Id": "0183e8917d411e6495d24ac4f9007ddf", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "64.33", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:49:57.456247+00:00", + "LastUpdated": "2022-10-18T00:49:57.456247+00:00", + "Context": { + "Id": "0183e89190d0bff541f381928131a112", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.91", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:50:02.448949+00:00", + "LastUpdated": "2022-10-18T00:50:02.448949+00:00", + "Context": { + "Id": "0183e891a4506daae0e64ef3b6040449", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1809.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:50:08.449617+00:00", + "LastUpdated": "2022-10-18T00:50:08.449617+00:00", + "Context": { + "Id": "0183e891bbc12cedc2e16c601e9dfcaf", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1783.14", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:50:18.05543+00:00", + "LastUpdated": "2022-10-18T00:50:18.05543+00:00", + "Context": { + "Id": "0183e891e14700266f21cffdabc52b2e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:50:48.052847+00:00", + "LastUpdated": "2022-10-18T00:50:48.052847+00:00", + "Context": { + "Id": "0183e892567423acdcb7e863764ba5e2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1792.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:51:18.059526+00:00", + "LastUpdated": "2022-10-18T00:51:18.059526+00:00", + "Context": { + "Id": "0183e892cbab7bc0f4f725c2ff0a8f1d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1790.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:51:48.192655+00:00", + "LastUpdated": "2022-10-18T00:51:48.192655+00:00", + "Context": { + "Id": "0183e8934160f14dccfd2be031eb4d64", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1792.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:52:18.073044+00:00", + "LastUpdated": "2022-10-18T00:52:18.073044+00:00", + "Context": { + "Id": "0183e893b6186675847525dd322dc9fd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1784.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:52:48.079449+00:00", + "LastUpdated": "2022-10-18T00:52:48.079449+00:00", + "Context": { + "Id": "0183e8942b4f06dfb9f7e800dc19e5ec", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1790.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:53:18.087184+00:00", + "LastUpdated": "2022-10-18T00:53:18.087184+00:00", + "Context": { + "Id": "0183e894a087d7d3b0fc2864ace062d6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1786.82", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:53:48.094196+00:00", + "LastUpdated": "2022-10-18T00:53:48.094196+00:00", + "Context": { + "Id": "0183e89515bef206d3ff94cd24ad0441", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1797.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:54:18.104021+00:00", + "LastUpdated": "2022-10-18T00:54:18.104021+00:00", + "Context": { + "Id": "0183e8958af7dc2e18635f3113d06606", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1799.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:54:48.10989+00:00", + "LastUpdated": "2022-10-18T00:54:48.10989+00:00", + "Context": { + "Id": "0183e896002d65845dab6333bef527c5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1765.01", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:55:18.119023+00:00", + "LastUpdated": "2022-10-18T00:55:18.119023+00:00", + "Context": { + "Id": "0183e8967566851f18a4be4aaa62120f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1768.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:55:48.140495+00:00", + "LastUpdated": "2022-10-18T00:55:48.140495+00:00", + "Context": { + "Id": "0183e896eaac589700e8596b9eab27df", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1766.80", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:56:18.129176+00:00", + "LastUpdated": "2022-10-18T00:56:18.129176+00:00", + "Context": { + "Id": "0183e8975fd1d365decabba34038261e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1765.01", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:56:48.137567+00:00", + "LastUpdated": "2022-10-18T00:56:48.137567+00:00", + "Context": { + "Id": "0183e897d509b187c17aee8f6ca168bc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1807.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:57:18.234542+00:00", + "LastUpdated": "2022-10-18T00:57:18.234542+00:00", + "Context": { + "Id": "0183e8984a9a82d3364218d7db24910f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1779.49", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:57:48.149532+00:00", + "LastUpdated": "2022-10-18T00:57:48.149532+00:00", + "Context": { + "Id": "0183e898bf75c245550ba75253a8219e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1797.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:58:18.152922+00:00", + "LastUpdated": "2022-10-18T00:58:18.152922+00:00", + "Context": { + "Id": "0183e89934a8f4a0463f1604243d1514", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1807.29", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:58:48.161497+00:00", + "LastUpdated": "2022-10-18T00:58:48.161497+00:00", + "Context": { + "Id": "0183e899a9e116b254eab6e9539fa1c9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1805.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:59:18.169936+00:00", + "LastUpdated": "2022-10-18T00:59:18.169936+00:00", + "Context": { + "Id": "0183e89a1f194e44adcc9779ed7badfd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1796.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T00:59:48.179385+00:00", + "LastUpdated": "2022-10-18T00:59:48.179385+00:00", + "Context": { + "Id": "0183e89a94537f2adae3f7ece96cb8b2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1790.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:00:18.18229+00:00", + "LastUpdated": "2022-10-18T01:00:18.18229+00:00", + "Context": { + "Id": "0183e89b09867a5ee9ba35010746e114", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1799.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:00:48.256187+00:00", + "LastUpdated": "2022-10-18T01:00:48.256187+00:00", + "Context": { + "Id": "0183e89b7f00c555cda3f9bd3640bcd7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1796.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:01:18.710884+00:00", + "LastUpdated": "2022-10-18T01:01:18.710884+00:00", + "Context": { + "Id": "0183e89bf5f6a6635f284c350b432e94", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1797.93", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:01:48.206824+00:00", + "LastUpdated": "2022-10-18T01:01:48.206824+00:00", + "Context": { + "Id": "0183e89c692eac8eceb0ec12871b387f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1784.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:02:18.21222+00:00", + "LastUpdated": "2022-10-18T01:02:18.21222+00:00", + "Context": { + "Id": "0183e89cde64cbf0c76576c0b7bae441", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1781.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:02:48.21863+00:00", + "LastUpdated": "2022-10-18T01:02:48.21863+00:00", + "Context": { + "Id": "0183e89d539aae3d303fc5b978e1892b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1788.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:03:18.224715+00:00", + "LastUpdated": "2022-10-18T01:03:18.224715+00:00", + "Context": { + "Id": "0183e89dc8d0bd04f4a43aebc7fe1d6e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1790.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:03:48.230436+00:00", + "LastUpdated": "2022-10-18T01:03:48.230436+00:00", + "Context": { + "Id": "0183e89e3e061a09dcda59c5af04199f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "129.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:04:00.468976+00:00", + "LastUpdated": "2022-10-18T01:04:00.468976+00:00", + "Context": { + "Id": "0183e89e6dd4c147841f6ddfcc062dc3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1801.66", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:04:06.47221+00:00", + "LastUpdated": "2022-10-18T01:04:06.47221+00:00", + "Context": { + "Id": "0183e89e854850f2477a0c931d64bf33", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1809.18", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:04:18.243496+00:00", + "LastUpdated": "2022-10-18T01:04:18.243496+00:00", + "Context": { + "Id": "0183e89eb34346ef920366716610e2fe", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1794.21", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:04:48.245586+00:00", + "LastUpdated": "2022-10-18T01:04:48.245586+00:00", + "Context": { + "Id": "0183e89f2875f16a1a310b1c4bbd6277", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1796.07", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:05:18.296109+00:00", + "LastUpdated": "2022-10-18T01:05:18.296109+00:00", + "Context": { + "Id": "0183e89f9dd8cdeefd35cbc9c11456f2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1792.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:06:18.267446+00:00", + "LastUpdated": "2022-10-18T01:06:18.267446+00:00", + "Context": { + "Id": "0183e8a0881bc7c11f28b92a5cd02975", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1794.21", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:06:48.271953+00:00", + "LastUpdated": "2022-10-18T01:06:48.271953+00:00", + "Context": { + "Id": "0183e8a0fd4f1b666c1ae8fa38bbd252", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1783.14", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:07:18.277991+00:00", + "LastUpdated": "2022-10-18T01:07:18.277991+00:00", + "Context": { + "Id": "0183e8a1728590295fbfbaba574cc51f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1784.98", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:07:48.285471+00:00", + "LastUpdated": "2022-10-18T01:07:48.285471+00:00", + "Context": { + "Id": "0183e8a1e7bdd4a71d1229f466d4f972", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1794.21", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:08:18.292891+00:00", + "LastUpdated": "2022-10-18T01:08:18.292891+00:00", + "Context": { + "Id": "0183e8a25cf4f4f372404e115a90646f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "98.67", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:08:32.48153+00:00", + "LastUpdated": "2022-10-18T01:08:32.48153+00:00", + "Context": { + "Id": "0183e8a29461051457ad068cee75266f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.90", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:08:37.478013+00:00", + "LastUpdated": "2022-10-18T01:08:37.478013+00:00", + "Context": { + "Id": "0183e8a2a7e5319b68c7028796952552", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:08:48.303098+00:00", + "LastUpdated": "2022-10-18T01:08:48.303098+00:00", + "Context": { + "Id": "0183e8a2d22f47ec5522aec39628af35", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "81.04", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:09:09.476904+00:00", + "LastUpdated": "2022-10-18T01:09:09.476904+00:00", + "Context": { + "Id": "0183e8a324e4d281725b74c6ca0b8069", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.72", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:09:15.477336+00:00", + "LastUpdated": "2022-10-18T01:09:15.477336+00:00", + "Context": { + "Id": "0183e8a33c556568fe59e8918121a704", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.96", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:09:18.305514+00:00", + "LastUpdated": "2022-10-18T01:09:18.305514+00:00", + "Context": { + "Id": "0183e8a347612f3175dd6508ef195a7e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.92", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:09:48.368704+00:00", + "LastUpdated": "2022-10-18T01:09:48.368704+00:00", + "Context": { + "Id": "0183e8a3bcd071943dd50b54dbf31af3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "73.13", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:10:18.319036+00:00", + "LastUpdated": "2022-10-18T01:10:18.319036+00:00", + "Context": { + "Id": "0183e8a431ce2cfc20c79bf4834aeba0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.65", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:10:18.476909+00:00", + "LastUpdated": "2022-10-18T01:10:18.476909+00:00", + "Context": { + "Id": "0183e8a4326c3896fe94134e00ef1b45", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:10:24.478418+00:00", + "LastUpdated": "2022-10-18T01:10:24.478418+00:00", + "Context": { + "Id": "0183e8a449de5ae68f55c2ffb233be87", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.68", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:10:48.332556+00:00", + "LastUpdated": "2022-10-18T01:10:48.332556+00:00", + "Context": { + "Id": "0183e8a4a70cc71314c7bd8d39704a62", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:11:18.331795+00:00", + "LastUpdated": "2022-10-18T01:11:18.331795+00:00", + "Context": { + "Id": "0183e8a51c3b552a75b02b2f285c6510", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.91", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:11:35.485133+00:00", + "LastUpdated": "2022-10-18T01:11:35.485133+00:00", + "Context": { + "Id": "0183e8a55f3d6e17720381d750e34e68", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.78", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:11:48.40076+00:00", + "LastUpdated": "2022-10-18T01:11:48.40076+00:00", + "Context": { + "Id": "0183e8a591b040b0dadd4b129342764b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.77", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:12:18.345541+00:00", + "LastUpdated": "2022-10-18T01:12:18.345541+00:00", + "Context": { + "Id": "0183e8a606a91e0ee33b78e1293c9447", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:12:41.485363+00:00", + "LastUpdated": "2022-10-18T01:12:41.485363+00:00", + "Context": { + "Id": "0183e8a6610d782b77d3dba1ac46b935", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:12:47.488306+00:00", + "LastUpdated": "2022-10-18T01:12:47.488306+00:00", + "Context": { + "Id": "0183e8a67880104cbbb7bd25feffe5cd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.52", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:13:18.360349+00:00", + "LastUpdated": "2022-10-18T01:13:18.360349+00:00", + "Context": { + "Id": "0183e8a6f118bf7d2001ba5fda198030", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "79.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:13:48.367973+00:00", + "LastUpdated": "2022-10-18T01:13:48.367973+00:00", + "Context": { + "Id": "0183e8a7664fbe724dd3c6a2f49c1551", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.90", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:13:57.485173+00:00", + "LastUpdated": "2022-10-18T01:13:57.485173+00:00", + "Context": { + "Id": "0183e8a789edd10401537ba5d2fb409f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.76", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:14:18.370508+00:00", + "LastUpdated": "2022-10-18T01:14:18.370508+00:00", + "Context": { + "Id": "0183e8a7db8231d54453c43670e92a47", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "70.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:14:48.382443+00:00", + "LastUpdated": "2022-10-18T01:14:48.382443+00:00", + "Context": { + "Id": "0183e8a850be4a84b0871dd980438135", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "65.79", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:15:03.485689+00:00", + "LastUpdated": "2022-10-18T01:15:03.485689+00:00", + "Context": { + "Id": "0183e8a88bbda35f6325f6cc768a5357", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.02", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:15:08.485621+00:00", + "LastUpdated": "2022-10-18T01:15:08.485621+00:00", + "Context": { + "Id": "0183e8a89f45cf86240410a40356c70e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.63", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:15:18.389825+00:00", + "LastUpdated": "2022-10-18T01:15:18.389825+00:00", + "Context": { + "Id": "0183e8a8c5f5497974f77ef50f6aec85", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.51", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:15:48.396215+00:00", + "LastUpdated": "2022-10-18T01:15:48.396215+00:00", + "Context": { + "Id": "0183e8a93b2c9f9010ee763d60f9b180", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "80.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:16:18.413019+00:00", + "LastUpdated": "2022-10-18T01:16:18.413019+00:00", + "Context": { + "Id": "0183e8a9b06cc47f8fe22c55b8d4ee0f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:16:20.48699+00:00", + "LastUpdated": "2022-10-18T01:16:20.48699+00:00", + "Context": { + "Id": "0183e8a9b886b760bc408cd3abcef5a8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.54", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:16:48.404465+00:00", + "LastUpdated": "2022-10-18T01:16:48.404465+00:00", + "Context": { + "Id": "0183e8aa2594276b57ad13d05572a185", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "71.80", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:17:18.413978+00:00", + "LastUpdated": "2022-10-18T01:17:18.413978+00:00", + "Context": { + "Id": "0183e8aa9acde0efe1aa6c8f416817f1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "66.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:17:26.488535+00:00", + "LastUpdated": "2022-10-18T01:17:26.488535+00:00", + "Context": { + "Id": "0183e8aaba582ef880b9c29747aa3caa", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "78.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:17:31.487811+00:00", + "LastUpdated": "2022-10-18T01:17:31.487811+00:00", + "Context": { + "Id": "0183e8aacddfc5403ec149aefb0db868", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.67", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:17:48.422754+00:00", + "LastUpdated": "2022-10-18T01:17:48.422754+00:00", + "Context": { + "Id": "0183e8ab1006109551152d541691c4b8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "76.61", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:18:18.428556+00:00", + "LastUpdated": "2022-10-18T01:18:18.428556+00:00", + "Context": { + "Id": "0183e8ab853cf18f6d59a4070e81576b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "35.60", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:18:26.490437+00:00", + "LastUpdated": "2022-10-18T01:18:26.490437+00:00", + "Context": { + "Id": "0183e8aba4ba0dc07c3468c9e283d78c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "31.95", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:18:31.524914+00:00", + "LastUpdated": "2022-10-18T01:18:31.524914+00:00", + "Context": { + "Id": "0183e8abb864d70b513f2d204617e451", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "28.75", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:18:39.491094+00:00", + "LastUpdated": "2022-10-18T01:18:39.491094+00:00", + "Context": { + "Id": "0183e8abd783150ec0ee83fbe7d2380d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.19", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:18:45.490118+00:00", + "LastUpdated": "2022-10-18T01:18:45.490118+00:00", + "Context": { + "Id": "0183e8abeef2c1110677e05303e2acec", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "26.05", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:18:48.436074+00:00", + "LastUpdated": "2022-10-18T01:18:48.436074+00:00", + "Context": { + "Id": "0183e8abfa7404cb45ddc7a6d10a4e3c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "7.53", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:19:03.490766+00:00", + "LastUpdated": "2022-10-18T01:19:03.490766+00:00", + "Context": { + "Id": "0183e8ac35420572a926963db3087cd0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "3.48", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:19:08.491246+00:00", + "LastUpdated": "2022-10-18T01:19:08.491246+00:00", + "Context": { + "Id": "0183e8ac48cbb4326f989294ab11289d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.62", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:19:14.489752+00:00", + "LastUpdated": "2022-10-18T01:19:14.489752+00:00", + "Context": { + "Id": "0183e8ac6039d5180b56031eb4e3e72c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:19:18.44155+00:00", + "LastUpdated": "2022-10-18T01:19:18.44155+00:00", + "Context": { + "Id": "0183e8ac6fa90174a2e1c7b46321aa18", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:19:48.447655+00:00", + "LastUpdated": "2022-10-18T01:19:48.447655+00:00", + "Context": { + "Id": "0183e8ace4df981dca9e95795c010b5f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.46", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:20:18.452098+00:00", + "LastUpdated": "2022-10-18T01:20:18.452098+00:00", + "Context": { + "Id": "0183e8ad5a143eef2d1c0f349c8cecd9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:20:48.467515+00:00", + "LastUpdated": "2022-10-18T01:20:48.467515+00:00", + "Context": { + "Id": "0183e8adcf534001765043af748a3c63", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:21:18.46797+00:00", + "LastUpdated": "2022-10-18T01:21:18.46797+00:00", + "Context": { + "Id": "0183e8ae448303d8c0ef406635229233", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.43", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:21:48.472453+00:00", + "LastUpdated": "2022-10-18T01:21:48.472453+00:00", + "Context": { + "Id": "0183e8aeb9b8a723921c9406bddb09e5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:22:18.481267+00:00", + "LastUpdated": "2022-10-18T01:22:18.481267+00:00", + "Context": { + "Id": "0183e8af2ef13b955184c59462e8a17a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:22:48.48644+00:00", + "LastUpdated": "2022-10-18T01:22:48.48644+00:00", + "Context": { + "Id": "0183e8afa426468481165c975448382c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:23:18.498057+00:00", + "LastUpdated": "2022-10-18T01:23:18.498057+00:00", + "Context": { + "Id": "0183e8b019612d79f193bfa5f0958ba7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:23:48.50039+00:00", + "LastUpdated": "2022-10-18T01:23:48.50039+00:00", + "Context": { + "Id": "0183e8b08e9469e08440e676ad436583", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:24:48.516883+00:00", + "LastUpdated": "2022-10-18T01:24:48.516883+00:00", + "Context": { + "Id": "0183e8b17904481993133fd003850ac3", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:25:48.532663+00:00", + "LastUpdated": "2022-10-18T01:25:48.532663+00:00", + "Context": { + "Id": "0183e8b26374d018c5b84fc90d26d489", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:26:18.53808+00:00", + "LastUpdated": "2022-10-18T01:26:18.53808+00:00", + "Context": { + "Id": "0183e8b2d8aafb52d2e1dedc5663f8a4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:26:48.539629+00:00", + "LastUpdated": "2022-10-18T01:26:48.539629+00:00", + "Context": { + "Id": "0183e8b34ddb8a5957be6c5f684e45bb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:27:18.548875+00:00", + "LastUpdated": "2022-10-18T01:27:18.548875+00:00", + "Context": { + "Id": "0183e8b3c3142c1271369f7af5715244", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.43", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:27:48.554977+00:00", + "LastUpdated": "2022-10-18T01:27:48.554977+00:00", + "Context": { + "Id": "0183e8b4384a24201c08ced3fc245149", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.46", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:28:18.562341+00:00", + "LastUpdated": "2022-10-18T01:28:18.562341+00:00", + "Context": { + "Id": "0183e8b4ad820d13b725c11c0dd2d9b9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:28:48.575571+00:00", + "LastUpdated": "2022-10-18T01:28:48.575571+00:00", + "Context": { + "Id": "0183e8b522bf9cae8fe1d4eb849cc59b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:29:18.576685+00:00", + "LastUpdated": "2022-10-18T01:29:18.576685+00:00", + "Context": { + "Id": "0183e8b597f06ce2f8816a33a6156d52", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:29:48.582475+00:00", + "LastUpdated": "2022-10-18T01:29:48.582475+00:00", + "Context": { + "Id": "0183e8b60d2661219018b2b044a0d7cc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:30:18.586769+00:00", + "LastUpdated": "2022-10-18T01:30:18.586769+00:00", + "Context": { + "Id": "0183e8b6825ad39404b3a142bfd1f451", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:30:49.435977+00:00", + "LastUpdated": "2022-10-18T01:30:49.435977+00:00", + "Context": { + "Id": "0183e8b6fadb3264c137c45934756bc2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:31:18.598947+00:00", + "LastUpdated": "2022-10-18T01:31:18.598947+00:00", + "Context": { + "Id": "0183e8b76cc616446ba667fd5f805962", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:31:48.608432+00:00", + "LastUpdated": "2022-10-18T01:31:48.608432+00:00", + "Context": { + "Id": "0183e8b7e200eb4af3f6c0b463a9ff25", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.47", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:32:18.617366+00:00", + "LastUpdated": "2022-10-18T01:32:18.617366+00:00", + "Context": { + "Id": "0183e8b857397aa1df5485e786547b49", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.42", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:32:48.619557+00:00", + "LastUpdated": "2022-10-18T01:32:48.619557+00:00", + "Context": { + "Id": "0183e8b8cc6b28ac383b652a4bd5c182", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.46", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:33:48.632002+00:00", + "LastUpdated": "2022-10-18T01:33:48.632002+00:00", + "Context": { + "Id": "0183e8b9b6d7219c404d27c01080f695", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:34:18.641274+00:00", + "LastUpdated": "2022-10-18T01:34:18.641274+00:00", + "Context": { + "Id": "0183e8ba2c11b4dba927759dcb390191", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.43", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:34:48.649649+00:00", + "LastUpdated": "2022-10-18T01:34:48.649649+00:00", + "Context": { + "Id": "0183e8baa1495852a4d8723409f6b41f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.45", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:35:18.660912+00:00", + "LastUpdated": "2022-10-18T01:35:18.660912+00:00", + "Context": { + "Id": "0183e8bb16845c191127b9a029121022", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:35:48.660411+00:00", + "LastUpdated": "2022-10-18T01:35:48.660411+00:00", + "Context": { + "Id": "0183e8bb8bb4c649b789663683604f29", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:36:18.668071+00:00", + "LastUpdated": "2022-10-18T01:36:18.668071+00:00", + "Context": { + "Id": "0183e8bc00ecb4f9c789356fe92ffb1a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:36:48.675107+00:00", + "LastUpdated": "2022-10-18T01:36:48.675107+00:00", + "Context": { + "Id": "0183e8bc7623de2b05ae9b9cac914f0a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.44", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:37:18.680188+00:00", + "LastUpdated": "2022-10-18T01:37:18.680188+00:00", + "Context": { + "Id": "0183e8bceb58abe37e2a4aa50f9651cc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:37:48.688485+00:00", + "LastUpdated": "2022-10-18T01:37:48.688485+00:00", + "Context": { + "Id": "0183e8bd6090fa3f8ab82b245f5bb736", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:38:18.696705+00:00", + "LastUpdated": "2022-10-18T01:38:18.696705+00:00", + "Context": { + "Id": "0183e8bdd5c8d3ab774fccf7ab9d7a50", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "1.74", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:38:51.521131+00:00", + "LastUpdated": "2022-10-18T01:38:51.521131+00:00", + "Context": { + "Id": "0183e8be5601898d2a54e89133904ab9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.31", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:38:57.521725+00:00", + "LastUpdated": "2022-10-18T01:38:57.521725+00:00", + "Context": { + "Id": "0183e8be6d711cc75a1d0749b00dbcc4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "23.26", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:39:18.716861+00:00", + "LastUpdated": "2022-10-18T01:39:18.716861+00:00", + "Context": { + "Id": "0183e8bec03cfe628c54f165ad74eceb", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "2.55", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:39:20.540682+00:00", + "LastUpdated": "2022-10-18T01:39:20.540682+00:00", + "Context": { + "Id": "0183e8bec75ccd0475c465a919e90a1b", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:39:26.521864+00:00", + "LastUpdated": "2022-10-18T01:39:26.521864+00:00", + "Context": { + "Id": "0183e8bedeb90bf4d7ad52bab391a218", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:39:48.718508+00:00", + "LastUpdated": "2022-10-18T01:39:48.718508+00:00", + "Context": { + "Id": "0183e8bf356e7255b91f0e413022c4f5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:40:18.722272+00:00", + "LastUpdated": "2022-10-18T01:40:18.722272+00:00", + "Context": { + "Id": "0183e8bfaaa20515bbf90f962126232c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:40:48.730997+00:00", + "LastUpdated": "2022-10-18T01:40:48.730997+00:00", + "Context": { + "Id": "0183e8c01fdab7c013345d0bec168745", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:41:18.741415+00:00", + "LastUpdated": "2022-10-18T01:41:18.741415+00:00", + "Context": { + "Id": "0183e8c095152fbe4287233153341ac6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:41:48.743436+00:00", + "LastUpdated": "2022-10-18T01:41:48.743436+00:00", + "Context": { + "Id": "0183e8c10a470f1ee9f956c3564ed59f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.50", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:42:18.750585+00:00", + "LastUpdated": "2022-10-18T01:42:18.750585+00:00", + "Context": { + "Id": "0183e8c17f7eae6d3dfc5fb8c6f5939e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:42:48.757379+00:00", + "LastUpdated": "2022-10-18T01:42:48.757379+00:00", + "Context": { + "Id": "0183e8c1f4b5fc13d43311f7ed1fa5bd", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:43:18.76629+00:00", + "LastUpdated": "2022-10-18T01:43:18.76629+00:00", + "Context": { + "Id": "0183e8c269eecff89fc5967bf03dfa0d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.40", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:43:48.77127+00:00", + "LastUpdated": "2022-10-18T01:43:48.77127+00:00", + "Context": { + "Id": "0183e8c2df2330726445a219629bc683", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:44:18.78229+00:00", + "LastUpdated": "2022-10-18T01:44:18.78229+00:00", + "Context": { + "Id": "0183e8c3545ede552f90883fcd44c79d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:44:48.784217+00:00", + "LastUpdated": "2022-10-18T01:44:48.784217+00:00", + "Context": { + "Id": "0183e8c3c9906310cd5ea6e72e90dde4", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:45:18.794594+00:00", + "LastUpdated": "2022-10-18T01:45:18.794594+00:00", + "Context": { + "Id": "0183e8c43eca89474b68916576c255df", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:45:48.79781+00:00", + "LastUpdated": "2022-10-18T01:45:48.79781+00:00", + "Context": { + "Id": "0183e8c4b3fd15dd42c1db040071d108", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.33", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:46:18.803053+00:00", + "LastUpdated": "2022-10-18T01:46:18.803053+00:00", + "Context": { + "Id": "0183e8c529338245a76f826764e8e8d0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:46:48.808171+00:00", + "LastUpdated": "2022-10-18T01:46:48.808171+00:00", + "Context": { + "Id": "0183e8c59e68f34ec59cc6743e45281a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:49:48.85641+00:00", + "LastUpdated": "2022-10-18T01:49:48.85641+00:00", + "Context": { + "Id": "0183e8c85db8f70ac7d251f7f9e0faf8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:50:18.858002+00:00", + "LastUpdated": "2022-10-18T01:50:18.858002+00:00", + "Context": { + "Id": "0183e8c8d2e96cda30ec38a6abb5c00d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:50:48.866187+00:00", + "LastUpdated": "2022-10-18T01:50:48.866187+00:00", + "Context": { + "Id": "0183e8c9482218faee35f31a1d94b460", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:51:48.875392+00:00", + "LastUpdated": "2022-10-18T01:51:48.875392+00:00", + "Context": { + "Id": "0183e8ca328bc237bb5e1f9674e4a1ba", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:52:18.889471+00:00", + "LastUpdated": "2022-10-18T01:52:18.889471+00:00", + "Context": { + "Id": "0183e8caa7c9ba97d2eaa2b5de8b4e2d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:54:18.905928+00:00", + "LastUpdated": "2022-10-18T01:54:18.905928+00:00", + "Context": { + "Id": "0183e8cc7c9926625143d5407521830f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:54:48.916496+00:00", + "LastUpdated": "2022-10-18T01:54:48.916496+00:00", + "Context": { + "Id": "0183e8ccf1d43b94bc1042d2afb373a0", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.39", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:55:18.922632+00:00", + "LastUpdated": "2022-10-18T01:55:18.922632+00:00", + "Context": { + "Id": "0183e8cd670aedcc59589276bd2f71b5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:55:48.931193+00:00", + "LastUpdated": "2022-10-18T01:55:48.931193+00:00", + "Context": { + "Id": "0183e8cddc435285390133830cec2dcc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:56:18.937099+00:00", + "LastUpdated": "2022-10-18T01:56:18.937099+00:00", + "Context": { + "Id": "0183e8ce5179427dda0a2acbb082db2a", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:56:48.944721+00:00", + "LastUpdated": "2022-10-18T01:56:48.944721+00:00", + "Context": { + "Id": "0183e8cec6b0b5dd4246dbcf41e21c10", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:57:18.94829+00:00", + "LastUpdated": "2022-10-18T01:57:18.94829+00:00", + "Context": { + "Id": "0183e8cf3be4770e46875ddd3c1c7ddf", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:58:48.97473+00:00", + "LastUpdated": "2022-10-18T01:58:48.97473+00:00", + "Context": { + "Id": "0183e8d09b8ede83cee0385d7cf1a3dc", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T01:59:18.979286+00:00", + "LastUpdated": "2022-10-18T01:59:18.979286+00:00", + "Context": { + "Id": "0183e8d110c3a911ecdcfc318b5a58ef", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:01:49.00499+00:00", + "LastUpdated": "2022-10-18T02:01:49.00499+00:00", + "Context": { + "Id": "0183e8d35acc5c48ba5dcd10a7c96fa1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:02:19.018914+00:00", + "LastUpdated": "2022-10-18T02:02:19.018914+00:00", + "Context": { + "Id": "0183e8d3d00a26d133fadd59fd1dcbd2", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:07:49.082618+00:00", + "LastUpdated": "2022-10-18T02:07:49.082618+00:00", + "Context": { + "Id": "0183e8d8d95aa255486303a51f2ef762", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:08:19.092977+00:00", + "LastUpdated": "2022-10-18T02:08:19.092977+00:00", + "Context": { + "Id": "0183e8d94e94bc3f3504b3687decf52d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.38", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:12:19.148501+00:00", + "LastUpdated": "2022-10-18T02:12:19.148501+00:00", + "Context": { + "Id": "0183e8dcf84c79b3d1212d332084d9e7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:12:49.150548+00:00", + "LastUpdated": "2022-10-18T02:12:49.150548+00:00", + "Context": { + "Id": "0183e8dd6d7e31754544b13f88da2c42", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.32", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:13:19.155393+00:00", + "LastUpdated": "2022-10-18T02:13:19.155393+00:00", + "Context": { + "Id": "0183e8dde2b33f83c158ab345b5a206e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:13:49.162742+00:00", + "LastUpdated": "2022-10-18T02:13:49.162742+00:00", + "Context": { + "Id": "0183e8de57ea035deeb70cf2391a6130", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:14:49.177803+00:00", + "LastUpdated": "2022-10-18T02:14:49.177803+00:00", + "Context": { + "Id": "0183e8df4259af82e84d39ba6d229b03", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:15:19.184627+00:00", + "LastUpdated": "2022-10-18T02:15:19.184627+00:00", + "Context": { + "Id": "0183e8dfb79068ade530622f031c64e8", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.41", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:16:49.208798+00:00", + "LastUpdated": "2022-10-18T02:16:49.208798+00:00", + "Context": { + "Id": "0183e8e11738f2ab652f20af815baf2d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:17:19.209329+00:00", + "LastUpdated": "2022-10-18T02:17:19.209329+00:00", + "Context": { + "Id": "0183e8e18c691e7e53f5ffee898d2d90", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:19:49.243324+00:00", + "LastUpdated": "2022-10-18T02:19:49.243324+00:00", + "Context": { + "Id": "0183e8e3d67bab4f350738a4c768f6c1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:20:19.250005+00:00", + "LastUpdated": "2022-10-18T02:20:19.250005+00:00", + "Context": { + "Id": "0183e8e44bb1fb24405f6043224e5038", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:38:19.486526+00:00", + "LastUpdated": "2022-10-18T02:38:19.486526+00:00", + "Context": { + "Id": "0183e8f4c75ef8255eccb0379f302151", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:38:49.490718+00:00", + "LastUpdated": "2022-10-18T02:38:49.490718+00:00", + "Context": { + "Id": "0183e8f53c921c272a68d5757a43ca9c", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:39:19.4937+00:00", + "LastUpdated": "2022-10-18T02:39:19.4937+00:00", + "Context": { + "Id": "0183e8f5b1c5e0f5dfb81038217e852d", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:39:49.502205+00:00", + "LastUpdated": "2022-10-18T02:39:49.502205+00:00", + "Context": { + "Id": "0183e8f626fe2496e95494209eff0de5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:48:19.617132+00:00", + "LastUpdated": "2022-10-18T02:48:19.617132+00:00", + "Context": { + "Id": "0183e8fdefa154d45da2f8795a8237d7", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:48:49.61569+00:00", + "LastUpdated": "2022-10-18T02:48:49.61569+00:00", + "Context": { + "Id": "0183e8fe64cf948e4e86bb2807ca54ae", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.34", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:52:49.678283+00:00", + "LastUpdated": "2022-10-18T02:52:49.678283+00:00", + "Context": { + "Id": "0183e9020e8ec783e40067ea98c67d13", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:53:19.687514+00:00", + "LastUpdated": "2022-10-18T02:53:19.687514+00:00", + "Context": { + "Id": "0183e90283c759ea1b0c288bbede65a6", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.33", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:56:19.717331+00:00", + "LastUpdated": "2022-10-18T02:56:19.717331+00:00", + "Context": { + "Id": "0183e9054305fd678ae4886dd8c10a31", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.35", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:56:49.729729+00:00", + "LastUpdated": "2022-10-18T02:56:49.729729+00:00", + "Context": { + "Id": "0183e905b8418c71b6e8f09c1c636ce1", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:57:19.774186+00:00", + "LastUpdated": "2022-10-18T02:57:19.774186+00:00", + "Context": { + "Id": "0183e9062d9eafbac1cec050a945bff5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.30", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:58:19.742488+00:00", + "LastUpdated": "2022-10-18T02:58:19.742488+00:00", + "Context": { + "Id": "0183e90717de0e4ccf9c8d8607e1dab9", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T02:58:49.749225+00:00", + "LastUpdated": "2022-10-18T02:58:49.749225+00:00", + "Context": { + "Id": "0183e9078d1576dec656f1fb3e9ee43e", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.33", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T03:09:19.882793+00:00", + "LastUpdated": "2022-10-18T03:09:19.882793+00:00", + "Context": { + "Id": "0183e9112a8a236ce3e681c606368235", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T03:09:49.901209+00:00", + "LastUpdated": "2022-10-18T03:09:49.901209+00:00", + "Context": { + "Id": "0183e9119fcdd82a84d66d659023cd62", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.37", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T03:16:19.976689+00:00", + "LastUpdated": "2022-10-18T03:16:19.976689+00:00", + "Context": { + "Id": "0183e9179388f5e025660a938ce85ff5", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T03:16:49.982677+00:00", + "LastUpdated": "2022-10-18T03:16:49.982677+00:00", + "Context": { + "Id": "0183e91808be5e5a97d224f33f087583", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.36", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T03:42:50.328101+00:00", + "LastUpdated": "2022-10-18T03:42:50.328101+00:00", + "Context": { + "Id": "0183e92fd7d8d0122c193ff394f0cd9f", + "ParentId": null, + "UserId": null + } +} +{ + "EntityId": "sensor.dishwasher_power", + "State": "0.00", + "Attributes": { + "unit_of_measurement": "W", + "friendly_name": "Dishwasher Power" + }, + "LastChanged": "2022-10-18T03:43:20.338154+00:00", + "LastUpdated": "2022-10-18T03:43:20.338154+00:00", + "Context": { + "Id": "0183e9304d126753855820d88c9b178b", + "ParentId": null, + "UserId": null + } +} diff --git a/NetDaemonCodegen/EntityMetaData.json b/NetDaemonCodegen/EntityMetaData.json index 901ddd2..95c6b63 100644 --- a/NetDaemonCodegen/EntityMetaData.json +++ b/NetDaemonCodegen/EntityMetaData.json @@ -160,16 +160,6 @@ "friendlyName": "Doorbell", "cSharpName": "Doorbell" }, - { - "id": "automation.dryer_done_response", - "friendlyName": "Dryer Done Response", - "cSharpName": "DryerDoneResponse" - }, - { - "id": "automation.dryer_notification", - "friendlyName": "Dryer Notification", - "cSharpName": "DryerNotification" - }, { "id": "automation.front_door_motion", "friendlyName": "Front Door Motion", @@ -225,16 +215,6 @@ "friendlyName": "Jayden Keep in bed", "cSharpName": "KeepJaydenInBed" }, - { - "id": "automation.laundry_done_request", - "friendlyName": "Laundry Done Request", - "cSharpName": "LaundryDoneRequest" - }, - { - "id": "automation.laundry_done_response", - "friendlyName": "Laundry Done Response", - "cSharpName": "LaundryDoneResponse" - }, { "id": "automation.leave_home", "friendlyName": "Leave Home", @@ -305,6 +285,11 @@ "friendlyName": "Set Ring Snapshot Interval on Startup", "cSharpName": "SetRingSnapshotIntervalOnStartup" }, + { + "id": "automation.sleep_eugene_desktop", + "friendlyName": "Sleep Eugene Desktop", + "cSharpName": "SleepEugeneDesktop" + }, { "id": "automation.sleep_eugene_desktop_manual", "friendlyName": "Sleep Eugene Desktop Manual", @@ -354,16 +339,6 @@ "id": "automation.wakeup", "friendlyName": "Wakeup", "cSharpName": "Wakeup" - }, - { - "id": "automation.washing_done_response", - "friendlyName": "Washing Done Response", - "cSharpName": "WashingDoneResponse" - }, - { - "id": "automation.washing_notification", - "friendlyName": "Washing Notification", - "cSharpName": "WashingNotification" } ], "attributes": [ @@ -614,12 +589,12 @@ }, { "id": "binary_sensor.heater1", - "friendlyName": "Heater1", + "friendlyName": "hottubmanager Heater1", "cSharpName": "Heater1" }, { "id": "binary_sensor.heater2", - "friendlyName": "Heater2", + "friendlyName": "hottubmanager Heater2", "cSharpName": "Heater2" }, { @@ -734,7 +709,7 @@ }, { "id": "binary_sensor.lumi_lumi_sensor_magnet_aq2_on_off", - "friendlyName": "Officer Contact on_off", + "friendlyName": "Office Door Opening", "cSharpName": "LumiLumiSensorMagnetAq2OnOff" }, { @@ -854,7 +829,7 @@ }, { "id": "binary_sensor.panel_lock", - "friendlyName": "Panel Lock", + "friendlyName": "hottubmanager Panel Lock", "cSharpName": "PanelLock" }, { @@ -864,17 +839,17 @@ }, { "id": "binary_sensor.pi_hole_core_update_available", - "friendlyName": "Pi-Hole Core Update Available", + "friendlyName": "Core Update Available", "cSharpName": "PiHoleCoreUpdateAvailable" }, { "id": "binary_sensor.pi_hole_ftl_update_available", - "friendlyName": "Pi-Hole FTL Update Available", + "friendlyName": "FTL Update Available", "cSharpName": "PiHoleFtlUpdateAvailable" }, { "id": "binary_sensor.pi_hole_web_update_available", - "friendlyName": "Pi-Hole Web Update Available", + "friendlyName": "Web Update Available", "cSharpName": "PiHoleWebUpdateAvailable" }, { @@ -904,7 +879,7 @@ }, { "id": "binary_sensor.power", - "friendlyName": "Power", + "friendlyName": "hottubmanager Power", "cSharpName": "Power" }, { @@ -1241,7 +1216,7 @@ "entities": [ { "id": "button.eugene_desktop_sleep", - "friendlyName": "EUGENE_DESKTOP_sleep", + "friendlyName": "EUGENE_DESKTOP _sleep", "cSharpName": "EugeneDesktopSleep" }, { @@ -1501,7 +1476,7 @@ }, { "id": "button.lumi_lumi_sensor_magnet_aq2_ac831303_identify", - "friendlyName": "Officer Contact Identify", + "friendlyName": "Office Door Identify", "cSharpName": "LumiLumiSensorMagnetAq2Ac831303Identify" }, { @@ -2216,17 +2191,17 @@ "entities": [ { "id": "device_tracker.247d4d7d6c90_mysimplelink", - "friendlyName": "247D4D7D6C90-mysimplelink 247D4D7D6C90-mysimplelink", + "friendlyName": "247D4D7D6C90-mysimplelink", "cSharpName": "_247d4d7d6c90Mysimplelink" }, { "id": "device_tracker.aaron_echo", - "friendlyName": "Aaron Echo Aaron Echo", + "friendlyName": "Aaron Echo", "cSharpName": "AaronEcho" }, { "id": "device_tracker.android_b8c33f1cb7c0d776", - "friendlyName": "android-b8c33f1cb7c0d776 Treadmill", + "friendlyName": "Treadmill", "cSharpName": "AndroidB8c33f1cb7c0d776" }, { @@ -2256,37 +2231,37 @@ }, { "id": "device_tracker.bedroom_1_ac", - "friendlyName": "Bedroom 1 Bedroom 1 AC", + "friendlyName": "Bedroom 1 AC", "cSharpName": "Bedroom1Ac" }, { "id": "device_tracker.bedroom_2_ac", - "friendlyName": "Bedroom 2 Bedroom 2 AC", + "friendlyName": "Bedroom 2 AC", "cSharpName": "Bedroom2Ac" }, { "id": "device_tracker.bedroom_3_ac", - "friendlyName": "Bedroom 3 Bedroom 3 AC", + "friendlyName": "Bedroom 3 AC", "cSharpName": "Bedroom3Ac" }, { "id": "device_tracker.bedroom_4_ac", - "friendlyName": "Bedroom 4 Bedroom 4 AC", + "friendlyName": "Bedroom 4 AC", "cSharpName": "Bedroom4Ac" }, { "id": "device_tracker.bosch_dishwasher_01204052703001", - "friendlyName": "bosch-dishwasher-01204052703001 RX bosch-dishwasher-01204052703001", + "friendlyName": "bosch-dishwasher-01204052703001", "cSharpName": "BoschDishwasher01204052703001" }, { "id": "device_tracker.c02t8gtygvc1", - "friendlyName": "C02T8GTYGVC1 RX C02T8GTYGVC1", + "friendlyName": "C02T8GTYGVC1", "cSharpName": "C02t8gtygvc1" }, { "id": "device_tracker.christmas_indoor_1558", - "friendlyName": "christmas_indoor-1558 christmas_indoor-1558", + "friendlyName": "christmas_indoor-1558", "cSharpName": "ChristmasIndoor1558" }, { @@ -2296,52 +2271,52 @@ }, { "id": "device_tracker.dining", - "friendlyName": "Dining Dining", + "friendlyName": "Dining", "cSharpName": "Dining" }, { "id": "device_tracker.dining_echo", - "friendlyName": "Dining Echo Dining Echo", + "friendlyName": "Dining Echo", "cSharpName": "DiningEcho" }, { "id": "device_tracker.dryer", - "friendlyName": "dryer Samsung-Dryer", + "friendlyName": "Samsung-Dryer", "cSharpName": "Dryer" }, { "id": "device_tracker.entrance", - "friendlyName": "Entrance Entrance", + "friendlyName": "Entrance", "cSharpName": "Entrance" }, { "id": "device_tracker.esp_5e9eb5", - "friendlyName": "ESP_5E9EB5 RX Tuya Socket 1", + "friendlyName": "Tuya Socket 1", "cSharpName": "Esp5e9eb5" }, { "id": "device_tracker.esp_6b7081", - "friendlyName": "ESP_6B7081 Tuya Socket 2", + "friendlyName": "Tuya Socket 2", "cSharpName": "Esp6b7081" }, { "id": "device_tracker.esp_6b7a3a", - "friendlyName": "ESP_6B7A3A Tuya Socket 3", + "friendlyName": "Tuya Socket 3", "cSharpName": "Esp6b7a3a" }, { "id": "device_tracker.eufy_robovac", - "friendlyName": "eufy RoboVac eufy RoboVac", + "friendlyName": "eufy RoboVac", "cSharpName": "EufyRobovac" }, { "id": "device_tracker.eufy_robovac_2", - "friendlyName": "eufy RoboVac eufy RoboVac", + "friendlyName": "eufy RoboVac", "cSharpName": "EufyRobovac2" }, { "id": "device_tracker.eugene_desktop", - "friendlyName": "EUGENE-DESKTOP EUGENE-DESKTOP", + "friendlyName": "EUGENE-DESKTOP", "cSharpName": "EugeneDesktop" }, { @@ -2376,32 +2351,32 @@ }, { "id": "device_tracker.foscam", - "friendlyName": "Foscam Foscam", + "friendlyName": "Foscam", "cSharpName": "Foscam" }, { "id": "device_tracker.galaxy_s8", - "friendlyName": "Galaxy-S8 Galaxy-S8", + "friendlyName": "Galaxy-S8", "cSharpName": "GalaxyS8" }, { "id": "device_tracker.garage_echo", - "friendlyName": "Garage Echo Garage Echo", + "friendlyName": "Garage Echo", "cSharpName": "GarageEcho" }, { "id": "device_tracker.garden_echo", - "friendlyName": "Garden Echo RX Garden Echo", + "friendlyName": "Garden Echo", "cSharpName": "GardenEcho" }, { "id": "device_tracker.garden_floodlights", - "friendlyName": "Garden Floodlights Garden Floodlights", + "friendlyName": "Garden Floodlights", "cSharpName": "GardenFloodlights" }, { "id": "device_tracker.glow_ihd_5019b0", - "friendlyName": "Glow Smart Meter 4417935019B0 Glow-IHD-5019B0", + "friendlyName": "Glow-IHD-5019B0", "cSharpName": "GlowIhd5019b0" }, { @@ -2416,7 +2391,7 @@ }, { "id": "device_tracker.haileys_air", - "friendlyName": "Haileys-Air Haileys-Air", + "friendlyName": "Haileys-Air", "cSharpName": "HaileysAir" }, { @@ -2426,7 +2401,7 @@ }, { "id": "device_tracker.haileys_iphone_2", - "friendlyName": "Haileys-iPhone Haileys-iPhone", + "friendlyName": "Haileys-iPhone", "cSharpName": "HaileysIphone2" }, { @@ -2441,12 +2416,12 @@ }, { "id": "device_tracker.hottubcontrol", - "friendlyName": "Hottubcontrol Hottubcontrol", + "friendlyName": "Hottubcontrol", "cSharpName": "Hottubcontrol" }, { "id": "device_tracker.huawei_p_smart_2019_86203", - "friendlyName": "HUAWEI_P_smart_2019-86203 HUAWEI_P_smart_2019-86203", + "friendlyName": "HUAWEI_P_smart_2019-86203", "cSharpName": "HuaweiPSmart201986203" }, { @@ -2466,7 +2441,7 @@ }, { "id": "device_tracker.iphone_2", - "friendlyName": "iPhone RX HaileysiPhone2", + "friendlyName": "HaileysiPhone2", "cSharpName": "Iphone2" }, { @@ -2481,12 +2456,12 @@ }, { "id": "device_tracker.jayden", - "friendlyName": "Jayden Jayden", + "friendlyName": "Jayden", "cSharpName": "Jayden" }, { "id": "device_tracker.jayden_appletv", - "friendlyName": "Jayden AppleTv Jayden AppleTv", + "friendlyName": "Jayden AppleTv", "cSharpName": "JaydenAppletv" }, { @@ -2496,7 +2471,7 @@ }, { "id": "device_tracker.jayden_echo", - "friendlyName": "Jayden Echo Jayden Echo", + "friendlyName": "Jayden Echo", "cSharpName": "JaydenEcho" }, { @@ -2521,32 +2496,32 @@ }, { "id": "device_tracker.jayden_s_iphone_4", - "friendlyName": "Jayden-s-iPhone RX Jayden-s-iPhone", + "friendlyName": "Jayden-s-iPhone", "cSharpName": "JaydenSIphone4" }, { "id": "device_tracker.kitchen", - "friendlyName": "Lounge Lounge", + "friendlyName": "Lounge", "cSharpName": "Kitchen" }, { "id": "device_tracker.kitchen_echo", - "friendlyName": "Kitchen Echo Kitchen Echo", + "friendlyName": "Kitchen Echo", "cSharpName": "KitchenEcho" }, { "id": "device_tracker.konnected_addon", - "friendlyName": "Konnected Alarm Panel Add On Konnected AddOn", + "friendlyName": "Konnected AddOn", "cSharpName": "KonnectedAddon" }, { "id": "device_tracker.konnected_main", - "friendlyName": "Konnected Alarm Panel Konnected Main", + "friendlyName": "Konnected Main", "cSharpName": "KonnectedMain" }, { "id": "device_tracker.landing", - "friendlyName": "Landing Landing", + "friendlyName": "Landing", "cSharpName": "Landing" }, { @@ -2561,7 +2536,7 @@ }, { "id": "device_tracker.lg_lounge", - "friendlyName": "LG Lounge LG Lounge", + "friendlyName": "LG Lounge", "cSharpName": "LgLounge" }, { @@ -2571,72 +2546,77 @@ }, { "id": "device_tracker.lounge", - "friendlyName": "Office Office", + "friendlyName": "Office", "cSharpName": "Lounge" }, { "id": "device_tracker.lounge_ac", - "friendlyName": "Lounge Lounge AC", + "friendlyName": "Lounge AC", "cSharpName": "LoungeAc" }, { "id": "device_tracker.lounge_blind", - "friendlyName": "Blind Lounge Lounge Blind", + "friendlyName": "Lounge Blind", "cSharpName": "LoungeBlind" }, { "id": "device_tracker.lounge_echo", - "friendlyName": "Lounge Echo Lounge Echo", + "friendlyName": "Lounge Echo", "cSharpName": "LoungeEcho" }, + { + "id": "device_tracker.macbook_air", + "friendlyName": "G3061WM904", + "cSharpName": "MacbookAir" + }, { "id": "device_tracker.master_echo", - "friendlyName": "Master Echo Master Echo", + "friendlyName": "Master Echo", "cSharpName": "MasterEcho" }, { "id": "device_tracker.master_tele", - "friendlyName": "Master Tele Master Tele", + "friendlyName": "Master Tele", "cSharpName": "MasterTele" }, { "id": "device_tracker.ml_nx07kg671n", - "friendlyName": "ML-NX07KG671N ML-NX07KG671N", + "friendlyName": "ML-NX07KG671N", "cSharpName": "MlNx07kg671n" }, { "id": "device_tracker.office_ac", - "friendlyName": "Office Office AC", + "friendlyName": "Office AC", "cSharpName": "OfficeAc" }, { "id": "device_tracker.office_echo", - "friendlyName": "Office Echo Office Echo", + "friendlyName": "Office Echo", "cSharpName": "OfficeEcho" }, { "id": "device_tracker.outside_drive", - "friendlyName": "Outside Drive Dishwasher", + "friendlyName": "Dishwasher", "cSharpName": "OutsideDrive" }, { "id": "device_tracker.outside_garage", - "friendlyName": "Outside Garage Outside Garage", + "friendlyName": "Outside Garage", "cSharpName": "OutsideGarage" }, { "id": "device_tracker.playroom_echo", - "friendlyName": "Playroom Echo Playroom Echo", + "friendlyName": "Playroom Echo", "cSharpName": "PlayroomEcho" }, { "id": "device_tracker.porch", - "friendlyName": "Porch Porch", + "friendlyName": "Porch", "cSharpName": "Porch" }, { "id": "device_tracker.raspberrypi", - "friendlyName": "raspberrypi raspberrypi", + "friendlyName": "raspberrypi", "cSharpName": "Raspberrypi" }, { @@ -2646,32 +2626,32 @@ }, { "id": "device_tracker.raspberrypi_cups", - "friendlyName": "RaspberryPi CUPS RaspberryPi CUPS", + "friendlyName": "RaspberryPi CUPS", "cSharpName": "RaspberrypiCups" }, { "id": "device_tracker.ringhpcam_49", - "friendlyName": "RingHpCam-49 RingHpCam-49", + "friendlyName": "RingHpCam-49", "cSharpName": "Ringhpcam49" }, { "id": "device_tracker.ringhpcam_4c", - "friendlyName": "RingHpCam-4c RingHpCam-4c", + "friendlyName": "RingHpCam-4c", "cSharpName": "Ringhpcam4c" }, { "id": "device_tracker.ringpro_d6", - "friendlyName": "RingPro-d6", + "friendlyName": "", "cSharpName": "RingproD6" }, { "id": "device_tracker.ringstickupcam_94", - "friendlyName": "RingStickUpCam-94 RingStickUpCam-94", + "friendlyName": "RingStickUpCam-94", "cSharpName": "Ringstickupcam94" }, { "id": "device_tracker.ringstickupcam_9b", - "friendlyName": "RingStickUpCam-9b RingStickUpCam-9b", + "friendlyName": "RingStickUpCam-9b", "cSharpName": "Ringstickupcam9b" }, { @@ -2686,57 +2666,57 @@ }, { "id": "device_tracker.shelly1_55e8b5", - "friendlyName": "shelly1-55E8B5 Office Skylight", + "friendlyName": "Office Skylight", "cSharpName": "Shelly155e8b5" }, { "id": "device_tracker.shelly1_ba69f6", - "friendlyName": "shelly1-BA69F6 RX Outside Drive", + "friendlyName": "Outside Drive", "cSharpName": "Shelly1Ba69f6" }, { "id": "device_tracker.shelly1_ba6c98", - "friendlyName": "shelly1-BA6C98 RX Utility Cupboard", + "friendlyName": "Utility Cupboard", "cSharpName": "Shelly1Ba6c98" }, { "id": "device_tracker.shelly1pm_e646fe", - "friendlyName": "shelly1pm-E646FE RX Power Meter Multiplug", + "friendlyName": "Power Meter Multiplug", "cSharpName": "Shelly1pmE646fe" }, { "id": "device_tracker.smart_plug_1", - "friendlyName": "smart-plug-1", + "friendlyName": "tasmota-6069", "cSharpName": "SmartPlug1" }, { "id": "device_tracker.smart_plug_2", - "friendlyName": "smart-plug-2 Fish lights", + "friendlyName": "Fish lights", "cSharpName": "SmartPlug2" }, { "id": "device_tracker.smart_plug_4", - "friendlyName": "smart-plug-4 Eugene Desk Plug", + "friendlyName": "Eugene Desk Plug", "cSharpName": "SmartPlug4" }, { "id": "device_tracker.sonoszp", - "friendlyName": "Lounge SonosZP", + "friendlyName": "SonosZP", "cSharpName": "Sonoszp" }, { "id": "device_tracker.sonoszp_2", - "friendlyName": "SonosZP SonosZP", + "friendlyName": "SonosZP", "cSharpName": "Sonoszp2" }, { "id": "device_tracker.suspect_device", - "friendlyName": "Suspect Device Suspect Device", + "friendlyName": "Suspect Device", "cSharpName": "SuspectDevice" }, { "id": "device_tracker.suspect_huawei", - "friendlyName": "Suspect Huawei Suspect Huawei", + "friendlyName": "Suspect Huawei", "cSharpName": "SuspectHuawei" }, { @@ -2746,7 +2726,7 @@ }, { "id": "device_tracker.uk_020287222957", - "friendlyName": "UK-020287222957 UK-020287222957", + "friendlyName": "UK-020287222957", "cSharpName": "Uk020287222957" }, { @@ -2819,6 +2799,11 @@ "friendlyName": "", "cSharpName": "Unifi12C716BfE0BeDefault" }, + { + "id": "device_tracker.unifi_1e_ca_af_c5_d6_fb_default", + "friendlyName": "", + "cSharpName": "Unifi1eCaAfC5D6FbDefault" + }, { "id": "device_tracker.unifi_22_0d_10_91_99_09_default", "friendlyName": "", @@ -2854,9 +2839,14 @@ "friendlyName": "", "cSharpName": "Unifi2e04A5Fb0956Default" }, + { + "id": "device_tracker.unifi_2e_14_ae_a0_2f_28_default", + "friendlyName": "", + "cSharpName": "Unifi2e14AeA02f28Default" + }, { "id": "device_tracker.unifi_34_7e_5c_d6_8b_20_default", - "friendlyName": " SonosZP", + "friendlyName": "SonosZP", "cSharpName": "Unifi347e5cD68b20Default" }, { @@ -2886,7 +2876,7 @@ }, { "id": "device_tracker.unifi_3e_64_d4_05_f3_12_default", - "friendlyName": " RX", + "friendlyName": "", "cSharpName": "Unifi3e64D405F312Default" }, { @@ -2896,12 +2886,12 @@ }, { "id": "device_tracker.unifi_42_37_7b_bf_55_f0_default", - "friendlyName": " RX", + "friendlyName": "", "cSharpName": "Unifi42377bBf55F0Default" }, { "id": "device_tracker.unifi_46_f5_1e_43_96_f4_default", - "friendlyName": " RX", + "friendlyName": "", "cSharpName": "Unifi46F51e4396F4Default" }, { @@ -2916,7 +2906,7 @@ }, { "id": "device_tracker.unifi_54_ae_27_0e_37_32_default", - "friendlyName": " Jayden iPad", + "friendlyName": "Jayden iPad", "cSharpName": "Unifi54Ae270e3732Default" }, { @@ -2929,6 +2919,16 @@ "friendlyName": "", "cSharpName": "Unifi5a0c5eBc5aE3Default" }, + { + "id": "device_tracker.unifi_5a_19_9c_d6_dc_ee_default", + "friendlyName": "", + "cSharpName": "Unifi5a199cD6DcEeDefault" + }, + { + "id": "device_tracker.unifi_5e_f2_33_11_f6_d8_default", + "friendlyName": "", + "cSharpName": "Unifi5eF23311F6D8Default" + }, { "id": "device_tracker.unifi_62_0b_e5_52_7e_5f_default", "friendlyName": "", @@ -3014,6 +3014,11 @@ "friendlyName": "", "cSharpName": "Unifi9245B86269E2Default" }, + { + "id": "device_tracker.unifi_92_6f_fb_8c_01_6a_default", + "friendlyName": "", + "cSharpName": "Unifi926fFb8c016aDefault" + }, { "id": "device_tracker.unifi_92_95_27_39_bb_7e_default", "friendlyName": "", @@ -3031,9 +3036,14 @@ }, { "id": "device_tracker.unifi_96_5c_1d_84_9d_b7_default", - "friendlyName": " RX", + "friendlyName": "", "cSharpName": "Unifi965c1d849dB7Default" }, + { + "id": "device_tracker.unifi_9a_bf_e1_85_19_7f_default", + "friendlyName": "", + "cSharpName": "Unifi9aBfE185197fDefault" + }, { "id": "device_tracker.unifi_9a_d8_94_01_cf_c3_default", "friendlyName": "", @@ -3051,7 +3061,7 @@ }, { "id": "device_tracker.unifi_a4_cf_99_29_0a_81_default", - "friendlyName": " iPhone", + "friendlyName": "iPhone", "cSharpName": "UnifiA4Cf99290a81Default" }, { @@ -3066,7 +3076,7 @@ }, { "id": "device_tracker.unifi_aa_3c_fe_09_f5_f2_default", - "friendlyName": " RX", + "friendlyName": "", "cSharpName": "UnifiAa3cFe09F5F2Default" }, { @@ -3181,7 +3191,7 @@ }, { "id": "device_tracker.unifi_dc_a6_32_dc_56_af_default", - "friendlyName": " Jayden RaspberryPi", + "friendlyName": "Jayden RaspberryPi", "cSharpName": "UnifiDcA632Dc56AfDefault" }, { @@ -3219,6 +3229,11 @@ "friendlyName": "", "cSharpName": "UnifiEe3aCe9a157aDefault" }, + { + "id": "device_tracker.unifi_ee_c5_02_3a_cf_7d_default", + "friendlyName": "", + "cSharpName": "UnifiEeC5023aCf7dDefault" + }, { "id": "device_tracker.unifi_ee_f1_08_c9_52_6a_default", "friendlyName": "", @@ -3266,27 +3281,27 @@ }, { "id": "device_tracker.upstairs", - "friendlyName": "Upstairs Upstairs", + "friendlyName": "Upstairs", "cSharpName": "Upstairs" }, { "id": "device_tracker.wallpanel_fire_hd8", - "friendlyName": "Wallpanel Fire HD8 Wallpanel Fire HD8", + "friendlyName": "Wallpanel Fire HD8", "cSharpName": "WallpanelFireHd8" }, { "id": "device_tracker.washer", - "friendlyName": "washer Samsung-Washer", + "friendlyName": "Samsung-Washer", "cSharpName": "Washer" }, { "id": "device_tracker.wiserheat031c5e", - "friendlyName": "Wiser HeatHub (WiserHeat031C5E) WiserHeat031C5E", + "friendlyName": "WiserHeat031C5E", "cSharpName": "Wiserheat031c5e" }, { "id": "device_tracker.wlan0", - "friendlyName": "wlan0 RX wlan0", + "friendlyName": "wlan0", "cSharpName": "Wlan0" }, { @@ -3296,7 +3311,7 @@ }, { "id": "device_tracker.xbox", - "friendlyName": "XBOX XBOX", + "friendlyName": "XBOX", "cSharpName": "Xbox" } ], @@ -3598,21 +3613,16 @@ "friendlyName": "netdaemon_niemand_motion_alerts", "cSharpName": "NetdaemonNiemandMotionAlerts" }, + { + "id": "input_boolean.netdaemon_niemand_notifications_manager", + "friendlyName": "netdaemon_niemand_notifications_manager", + "cSharpName": "NetdaemonNiemandNotificationsManager" + }, { "id": "input_boolean.netdaemon_niemand_office", "friendlyName": "netdaemon_niemand_office", "cSharpName": "NetdaemonNiemandOffice" }, - { - "id": "input_boolean.netdaemon_niemand_test_app_alarm", - "friendlyName": "netdaemon_niemand_test_app_alarm", - "cSharpName": "NetdaemonNiemandTestAppAlarm" - }, - { - "id": "input_boolean.netdaemon_niemand_test_app_notifications_manager", - "friendlyName": "netdaemon_niemand_test_app_notifications_manager", - "cSharpName": "NetdaemonNiemandTestAppNotificationsManager" - }, { "id": "input_boolean.netdaemon_niemand_test_app_test_app", "friendlyName": "netdaemon_niemand_test_app_test_app", @@ -3728,6 +3738,16 @@ "friendlyName": null, "cSharpName": "DiningLuxLimit" }, + { + "id": "input_number.energy_rate_threshold_cheap", + "friendlyName": "Energy Rate Threshold Cheap", + "cSharpName": "EnergyRateThresholdCheap" + }, + { + "id": "input_number.energy_rate_threshold_expensive", + "friendlyName": "Energy Rate Threshold Expensive ", + "cSharpName": "EnergyRateThresholdExpensive" + }, { "id": "input_number.entrance_lux_limit", "friendlyName": null, @@ -3839,6 +3859,21 @@ "jsonName": "supported_features", "cSharpName": "SupportedFeatures", "clrType": "System.Double" + }, + { + "jsonName": "unit_of_measurement", + "cSharpName": "UnitOfMeasurement", + "clrType": "System.String" + }, + { + "jsonName": "icon", + "cSharpName": "Icon", + "clrType": "System.String" + }, + { + "jsonName": "friendly_name", + "cSharpName": "FriendlyName", + "clrType": "System.String" } ] }, @@ -3961,7 +3996,7 @@ }, { "id": "light.aubrecia_drive_light", - "friendlyName": "Aubrecia Drive light", + "friendlyName": "Aubrecia Drive Light", "cSharpName": "AubreciaDriveLight" }, { @@ -4026,7 +4061,7 @@ }, { "id": "light.garden_light_2", - "friendlyName": "Garden light", + "friendlyName": "Garden Light", "cSharpName": "GardenLight2" }, { @@ -4171,7 +4206,7 @@ }, { "id": "light.niemand_drive_light", - "friendlyName": "Niemand Drive light", + "friendlyName": "Niemand Drive Light", "cSharpName": "NiemandDriveLight" }, { @@ -4181,7 +4216,7 @@ }, { "id": "light.niemand_garden_light", - "friendlyName": "Niemand Garden light", + "friendlyName": "Niemand Garden Light", "cSharpName": "NiemandGardenLight" }, { @@ -4406,11 +4441,6 @@ "friendlyName": "Aaron", "cSharpName": "Aaron" }, - { - "id": "media_player.aaron_atv", - "friendlyName": "Aaron ATV", - "cSharpName": "AaronAtv" - }, { "id": "media_player.alarm_clock_devices", "friendlyName": "Alarm Clock Devices", @@ -5671,11 +5701,6 @@ { "domain": "remote", "entities": [ - { - "id": "remote.aaron_atv", - "friendlyName": "Aaron ATV", - "cSharpName": "AaronAtv" - }, { "id": "remote.xbox_remote", "friendlyName": "Xbox Remote", @@ -6271,12 +6296,12 @@ }, { "id": "sensor.aubrecia_drive_last_activity", - "friendlyName": "Aubrecia Drive Last Activity", + "friendlyName": "Aubrecia Drive Last activity", "cSharpName": "AubreciaDriveLastActivity" }, { "id": "sensor.aubrecia_drive_last_motion", - "friendlyName": "Aubrecia Drive Last Motion", + "friendlyName": "Aubrecia Drive Last motion", "cSharpName": "AubreciaDriveLastMotion" }, { @@ -6291,7 +6316,7 @@ }, { "id": "sensor.aubrecia_front_door_last_activity_2", - "friendlyName": "Aubrecia Front Door Last Activity", + "friendlyName": "Aubrecia Front Door Last activity", "cSharpName": "AubreciaFrontDoorLastActivity2" }, { @@ -6301,7 +6326,7 @@ }, { "id": "sensor.aubrecia_front_door_last_ding_2", - "friendlyName": "Aubrecia Front Door Last Ding", + "friendlyName": "Aubrecia Front Door Last ding", "cSharpName": "AubreciaFrontDoorLastDing2" }, { @@ -6311,7 +6336,7 @@ }, { "id": "sensor.aubrecia_front_door_last_motion_2", - "friendlyName": "Aubrecia Front Door Last Motion", + "friendlyName": "Aubrecia Front Door Last motion", "cSharpName": "AubreciaFrontDoorLastMotion2" }, { @@ -6466,19 +6491,24 @@ }, { "id": "sensor.eugene_desktop_lastactive", - "friendlyName": "EUGENE_DESKTOP_lastactive", + "friendlyName": "EUGENE_DESKTOP _lastactive", "cSharpName": "EugeneDesktopLastactive" }, { "id": "sensor.eugene_desktop_lastsystemstatechange", - "friendlyName": "EUGENE_DESKTOP_lastsystemstatechange", + "friendlyName": "EUGENE_DESKTOP _lastsystemstatechange", "cSharpName": "EugeneDesktopLastsystemstatechange" }, { "id": "sensor.eugene_desktop_microphoneprocess", - "friendlyName": "EUGENE_DESKTOP_microphoneprocess", + "friendlyName": "EUGENE_DESKTOP _microphoneprocess", "cSharpName": "EugeneDesktopMicrophoneprocess" }, + { + "id": "sensor.eugene_desktop_monitorpowerstate", + "friendlyName": "EUGENE_DESKTOP _monitorpowerstate", + "cSharpName": "EugeneDesktopMonitorpowerstate" + }, { "id": "sensor.eugene_desktop_uptime", "friendlyName": "EUGENE-DESKTOP Uptime", @@ -6721,12 +6751,12 @@ }, { "id": "sensor.garden_last_activity_2", - "friendlyName": "Garden Last Activity", + "friendlyName": "Garden Last activity", "cSharpName": "GardenLastActivity2" }, { "id": "sensor.garden_last_motion_2", - "friendlyName": "Garden Last Motion", + "friendlyName": "Garden Last motion", "cSharpName": "GardenLastMotion2" }, { @@ -6876,7 +6906,7 @@ }, { "id": "sensor.huawei_p_smart_2019_86203_uptime", - "friendlyName": "HUAWEI_P_smart_2019-86203 Uptime", + "friendlyName": "Uptime", "cSharpName": "HuaweiPSmart201986203Uptime" }, { @@ -7061,7 +7091,7 @@ }, { "id": "sensor.jayden_s_iphone_uptime", - "friendlyName": "Uptime", + "friendlyName": "Jayden-s-iPhone RX Uptime", "cSharpName": "JaydenSIphoneUptime" }, { @@ -7081,17 +7111,17 @@ }, { "id": "sensor.johan_front_door_last_activity", - "friendlyName": "Johan Front Door Last Activity", + "friendlyName": "Johan Front Door Last activity", "cSharpName": "JohanFrontDoorLastActivity" }, { "id": "sensor.johan_front_door_last_ding", - "friendlyName": "Johan Front Door Last Ding", + "friendlyName": "Johan Front Door Last ding", "cSharpName": "JohanFrontDoorLastDing" }, { "id": "sensor.johan_front_door_last_motion", - "friendlyName": "Johan Front Door Last Motion", + "friendlyName": "Johan Front Door Last motion", "cSharpName": "JohanFrontDoorLastMotion" }, { @@ -7239,6 +7269,11 @@ "friendlyName": "netdaemon_status", "cSharpName": "NetdaemonStatus" }, + { + "id": "sensor.niemand", + "friendlyName": "Niemand", + "cSharpName": "Niemand" + }, { "id": "sensor.niemand_drive_info", "friendlyName": "Niemand Drive Info", @@ -7246,12 +7281,12 @@ }, { "id": "sensor.niemand_drive_last_activity", - "friendlyName": "Niemand Drive Last Activity", + "friendlyName": "Niemand Drive Last activity", "cSharpName": "NiemandDriveLastActivity" }, { "id": "sensor.niemand_drive_last_motion", - "friendlyName": "Niemand Drive Last Motion", + "friendlyName": "Niemand Drive Last motion", "cSharpName": "NiemandDriveLastMotion" }, { @@ -7266,17 +7301,17 @@ }, { "id": "sensor.niemand_front_door_last_activity", - "friendlyName": "Niemand Front Door Last Activity", + "friendlyName": "Niemand Front Door Last activity", "cSharpName": "NiemandFrontDoorLastActivity" }, { "id": "sensor.niemand_front_door_last_ding", - "friendlyName": "Niemand Front Door Last Ding", + "friendlyName": "Niemand Front Door Last ding", "cSharpName": "NiemandFrontDoorLastDing" }, { "id": "sensor.niemand_front_door_last_motion", - "friendlyName": "Niemand Front Door Last Motion", + "friendlyName": "Niemand Front Door Last motion", "cSharpName": "NiemandFrontDoorLastMotion" }, { @@ -7291,12 +7326,12 @@ }, { "id": "sensor.niemand_garage_last_activity", - "friendlyName": "Niemand Garage Last Activity", + "friendlyName": "Niemand Garage Last activity", "cSharpName": "NiemandGarageLastActivity" }, { "id": "sensor.niemand_garage_last_motion", - "friendlyName": "Niemand Garage Last Motion", + "friendlyName": "Niemand Garage Last motion", "cSharpName": "NiemandGarageLastMotion" }, { @@ -7311,12 +7346,12 @@ }, { "id": "sensor.niemand_garden_last_activity", - "friendlyName": "Niemand Garden Last Activity", + "friendlyName": "Niemand Garden Last activity", "cSharpName": "NiemandGardenLastActivity" }, { "id": "sensor.niemand_garden_last_motion", - "friendlyName": "Niemand Garden Last Motion", + "friendlyName": "Niemand Garden Last motion", "cSharpName": "NiemandGardenLastMotion" }, { @@ -7324,6 +7359,21 @@ "friendlyName": "Niemand Garden Volume", "cSharpName": "NiemandGardenVolume" }, + { + "id": "sensor.niemand_guest", + "friendlyName": "Niemand-Guest", + "cSharpName": "NiemandGuest" + }, + { + "id": "sensor.niemand_iot", + "friendlyName": "Niemand-IOT", + "cSharpName": "NiemandIot" + }, + { + "id": "sensor.niemand_mesh", + "friendlyName": "Niemand-Mesh", + "cSharpName": "NiemandMesh" + }, { "id": "sensor.niemand_side_info", "friendlyName": "Niemand Side Info", @@ -7331,12 +7381,12 @@ }, { "id": "sensor.niemand_side_last_activity", - "friendlyName": "Niemand Side Last Activity", + "friendlyName": "Niemand Side Last activity", "cSharpName": "NiemandSideLastActivity" }, { "id": "sensor.niemand_side_last_motion", - "friendlyName": "Niemand Side Last Motion", + "friendlyName": "Niemand Side Last motion", "cSharpName": "NiemandSideLastMotion" }, { @@ -7511,7 +7561,7 @@ }, { "id": "sensor.smart_plug_1_uptime", - "friendlyName": "Uptime", + "friendlyName": "smart-plug-1 Uptime", "cSharpName": "SmartPlug1Uptime" }, { @@ -7651,7 +7701,7 @@ }, { "id": "sensor.uptime_10", - "friendlyName": " RX Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime10" }, { @@ -7681,7 +7731,7 @@ }, { "id": "sensor.uptime_16", - "friendlyName": " Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime16" }, { @@ -7726,7 +7776,7 @@ }, { "id": "sensor.uptime_24", - "friendlyName": " Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime24" }, { @@ -7836,12 +7886,12 @@ }, { "id": "sensor.uptime_44", - "friendlyName": " RX Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime44" }, { "id": "sensor.uptime_45", - "friendlyName": " Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime45" }, { @@ -7851,7 +7901,7 @@ }, { "id": "sensor.uptime_47", - "friendlyName": " Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime47" }, { @@ -7976,7 +8026,7 @@ }, { "id": "sensor.uptime_9", - "friendlyName": " Uptime", + "friendlyName": "Uptime", "cSharpName": "Uptime9" }, { @@ -8114,11 +8164,6 @@ "friendlyName": "Wiser LTS Target Temperature Boys", "cSharpName": "WiserLtsTargetTemperatureBoys" }, - { - "id": "sensor.wiser_lts_target_temperature_guest_room", - "friendlyName": "Wiser LTS Target Temperature Guest Room", - "cSharpName": "WiserLtsTargetTemperatureGuestRoom" - }, { "id": "sensor.wiser_roomstat_utility_signal", "friendlyName": "Wiser RoomStat Utility Signal", @@ -8159,7 +8204,7 @@ { "jsonName": "total_bans", "cSharpName": "TotalBans", - "clrType": "System.Collections.Generic.IReadOnlyList\u00601[System.String]" + "clrType": "System.Object" }, { "jsonName": "device_class", @@ -9690,6 +9735,81 @@ "jsonName": "2023-08-04T13:00:00Z", "cSharpName": "_20230804T130000Z", "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T21:30:00Z", + "cSharpName": "_20230908T213000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T21:00:00Z", + "cSharpName": "_20230908T210000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T20:30:00Z", + "cSharpName": "_20230908T203000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T20:00:00Z", + "cSharpName": "_20230908T200000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T19:30:00Z", + "cSharpName": "_20230908T193000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T19:00:00Z", + "cSharpName": "_20230908T190000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T18:30:00Z", + "cSharpName": "_20230908T183000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T18:00:00Z", + "cSharpName": "_20230908T180000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T17:30:00Z", + "cSharpName": "_20230908T173000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T17:00:00Z", + "cSharpName": "_20230908T170000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T16:30:00Z", + "cSharpName": "_20230908T163000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T16:00:00Z", + "cSharpName": "_20230908T160000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T15:30:00Z", + "cSharpName": "_20230908T153000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T15:00:00Z", + "cSharpName": "_20230908T150000Z", + "clrType": "System.Double" + }, + { + "jsonName": "2023-09-08T14:30:00Z", + "cSharpName": "_20230908T143000Z", + "clrType": "System.Double" } ] }, @@ -11019,12 +11139,12 @@ }, { "id": "sensor.huawei_p_smart_2019_86203_rx", - "friendlyName": "HUAWEI_P_smart_2019-86203 RX", + "friendlyName": "RX", "cSharpName": "HuaweiPSmart201986203Rx" }, { "id": "sensor.huawei_p_smart_2019_86203_tx", - "friendlyName": "HUAWEI_P_smart_2019-86203 TX", + "friendlyName": "TX", "cSharpName": "HuaweiPSmart201986203Tx" }, { @@ -11219,7 +11339,7 @@ }, { "id": "sensor.jayden_s_iphone_rx", - "friendlyName": "RX", + "friendlyName": "Jayden-s-iPhone RX RX", "cSharpName": "JaydenSIphoneRx" }, { @@ -11244,7 +11364,7 @@ }, { "id": "sensor.jayden_s_iphone_tx", - "friendlyName": "TX", + "friendlyName": "Jayden-s-iPhone RX TX", "cSharpName": "JaydenSIphoneTx" }, { @@ -11342,6 +11462,16 @@ "friendlyName": "Kitchen Echo TX", "cSharpName": "KitchenEchoTx" }, + { + "id": "sensor.kitchen_lights_energy", + "friendlyName": "Kitchen Lights energy", + "cSharpName": "KitchenLightsEnergy" + }, + { + "id": "sensor.kitchen_lights_power", + "friendlyName": "Kitchen Lights power", + "cSharpName": "KitchenLightsPower" + }, { "id": "sensor.kitchen_lux", "friendlyName": "Kitchen Lux", @@ -11609,7 +11739,7 @@ }, { "id": "sensor.lumi_lumi_sensor_magnet_aq2_ac831303_device_temperature", - "friendlyName": "Officer Contact Device temperature", + "friendlyName": "Office Door Device temperature", "cSharpName": "LumiLumiSensorMagnetAq2Ac831303DeviceTemperature" }, { @@ -11624,7 +11754,7 @@ }, { "id": "sensor.lumi_lumi_sensor_magnet_aq2_power", - "friendlyName": "Officer Contact power", + "friendlyName": "Office Door power", "cSharpName": "LumiLumiSensorMagnetAq2Power" }, { @@ -11692,6 +11822,16 @@ "friendlyName": "office motion Device temperature", "cSharpName": "LumiLumiSensorMotionAq2F33b1404DeviceTemperature" }, + { + "id": "sensor.macbook_air_rx", + "friendlyName": "MacBook-Air RX", + "cSharpName": "MacbookAirRx" + }, + { + "id": "sensor.macbook_air_tx", + "friendlyName": "MacBook-Air TX", + "cSharpName": "MacbookAirTx" + }, { "id": "sensor.master_1_energy", "friendlyName": "master 1 energy", @@ -11892,6 +12032,11 @@ "friendlyName": "Gas E6S16735201861 7401432210 Current Standing Charge", "cSharpName": "OctopusEnergyGasE6s167352018617401432210CurrentStandingCharge" }, + { + "id": "sensor.octopus_energy_gas_e6s16735201861_7401432210_next_rate", + "friendlyName": "Gas E6S16735201861 7401432210 Next Rate", + "cSharpName": "OctopusEnergyGasE6s167352018617401432210NextRate" + }, { "id": "sensor.octopus_energy_gas_e6s16735201861_7401432210_previous_accumulative_consumption", "friendlyName": "Gas E6S16735201861 7401432210 Previous Accumulative Consumption", @@ -11907,6 +12052,11 @@ "friendlyName": "Gas E6S16735201861 7401432210 Previous Accumulative Cost", "cSharpName": "OctopusEnergyGasE6s167352018617401432210PreviousAccumulativeCost" }, + { + "id": "sensor.octopus_energy_gas_e6s16735201861_7401432210_previous_rate", + "friendlyName": "Gas E6S16735201861 7401432210 Previous Rate", + "cSharpName": "OctopusEnergyGasE6s167352018617401432210PreviousRate" + }, { "id": "sensor.office_1_energy", "friendlyName": "office 1 energy", @@ -12369,24 +12519,59 @@ }, { "id": "sensor.rx_10", - "friendlyName": " RX RX", + "friendlyName": "RX", "cSharpName": "Rx10" }, { "id": "sensor.rx_100", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx100" }, { "id": "sensor.rx_101", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx101" }, { "id": "sensor.rx_102", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx102" }, + { + "id": "sensor.rx_103", + "friendlyName": "RX", + "cSharpName": "Rx103" + }, + { + "id": "sensor.rx_104", + "friendlyName": "RX", + "cSharpName": "Rx104" + }, + { + "id": "sensor.rx_105", + "friendlyName": "RX", + "cSharpName": "Rx105" + }, + { + "id": "sensor.rx_106", + "friendlyName": "RX", + "cSharpName": "Rx106" + }, + { + "id": "sensor.rx_107", + "friendlyName": "RX", + "cSharpName": "Rx107" + }, + { + "id": "sensor.rx_108", + "friendlyName": "RX", + "cSharpName": "Rx108" + }, + { + "id": "sensor.rx_109", + "friendlyName": "RX", + "cSharpName": "Rx109" + }, { "id": "sensor.rx_11", "friendlyName": " RX", @@ -12414,7 +12599,7 @@ }, { "id": "sensor.rx_16", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx16" }, { @@ -12459,7 +12644,7 @@ }, { "id": "sensor.rx_24", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx24" }, { @@ -12569,12 +12754,12 @@ }, { "id": "sensor.rx_44", - "friendlyName": " RX RX", + "friendlyName": "RX", "cSharpName": "Rx44" }, { "id": "sensor.rx_45", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx45" }, { @@ -12584,7 +12769,7 @@ }, { "id": "sensor.rx_47", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx47" }, { @@ -12699,7 +12884,7 @@ }, { "id": "sensor.rx_68", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx68" }, { @@ -12744,7 +12929,7 @@ }, { "id": "sensor.rx_76", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx76" }, { @@ -12759,7 +12944,7 @@ }, { "id": "sensor.rx_79", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx79" }, { @@ -12774,102 +12959,102 @@ }, { "id": "sensor.rx_81", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx81" }, { "id": "sensor.rx_82", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx82" }, { "id": "sensor.rx_83", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx83" }, { "id": "sensor.rx_84", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx84" }, { "id": "sensor.rx_85", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx85" }, { "id": "sensor.rx_86", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx86" }, { "id": "sensor.rx_87", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx87" }, { "id": "sensor.rx_88", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx88" }, { "id": "sensor.rx_89", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx89" }, { "id": "sensor.rx_9", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx9" }, { "id": "sensor.rx_90", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx90" }, { "id": "sensor.rx_91", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx91" }, { "id": "sensor.rx_92", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx92" }, { "id": "sensor.rx_93", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx93" }, { "id": "sensor.rx_94", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx94" }, { "id": "sensor.rx_95", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx95" }, { "id": "sensor.rx_96", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx96" }, { "id": "sensor.rx_97", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx97" }, { "id": "sensor.rx_98", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx98" }, { "id": "sensor.rx_99", - "friendlyName": " RX", + "friendlyName": "RX", "cSharpName": "Rx99" }, { @@ -13034,12 +13219,12 @@ }, { "id": "sensor.smart_plug_1_rx", - "friendlyName": "RX", + "friendlyName": "smart-plug-1 RX", "cSharpName": "SmartPlug1Rx" }, { "id": "sensor.smart_plug_1_tx", - "friendlyName": "TX", + "friendlyName": "smart-plug-1 TX", "cSharpName": "SmartPlug1Tx" }, { @@ -13294,24 +13479,59 @@ }, { "id": "sensor.tx_10", - "friendlyName": " RX TX", + "friendlyName": "TX", "cSharpName": "Tx10" }, { "id": "sensor.tx_100", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx100" }, { "id": "sensor.tx_101", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx101" }, { "id": "sensor.tx_102", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx102" }, + { + "id": "sensor.tx_103", + "friendlyName": "TX", + "cSharpName": "Tx103" + }, + { + "id": "sensor.tx_104", + "friendlyName": "TX", + "cSharpName": "Tx104" + }, + { + "id": "sensor.tx_105", + "friendlyName": "TX", + "cSharpName": "Tx105" + }, + { + "id": "sensor.tx_106", + "friendlyName": "TX", + "cSharpName": "Tx106" + }, + { + "id": "sensor.tx_107", + "friendlyName": "TX", + "cSharpName": "Tx107" + }, + { + "id": "sensor.tx_108", + "friendlyName": "TX", + "cSharpName": "Tx108" + }, + { + "id": "sensor.tx_109", + "friendlyName": "TX", + "cSharpName": "Tx109" + }, { "id": "sensor.tx_11", "friendlyName": " TX", @@ -13339,7 +13559,7 @@ }, { "id": "sensor.tx_16", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx16" }, { @@ -13384,7 +13604,7 @@ }, { "id": "sensor.tx_24", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx24" }, { @@ -13494,12 +13714,12 @@ }, { "id": "sensor.tx_44", - "friendlyName": " RX TX", + "friendlyName": "TX", "cSharpName": "Tx44" }, { "id": "sensor.tx_45", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx45" }, { @@ -13509,7 +13729,7 @@ }, { "id": "sensor.tx_47", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx47" }, { @@ -13624,7 +13844,7 @@ }, { "id": "sensor.tx_68", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx68" }, { @@ -13669,7 +13889,7 @@ }, { "id": "sensor.tx_76", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx76" }, { @@ -13684,7 +13904,7 @@ }, { "id": "sensor.tx_79", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx79" }, { @@ -13699,102 +13919,102 @@ }, { "id": "sensor.tx_81", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx81" }, { "id": "sensor.tx_82", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx82" }, { "id": "sensor.tx_83", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx83" }, { "id": "sensor.tx_84", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx84" }, { "id": "sensor.tx_85", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx85" }, { "id": "sensor.tx_86", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx86" }, { "id": "sensor.tx_87", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx87" }, { "id": "sensor.tx_88", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx88" }, { "id": "sensor.tx_89", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx89" }, { "id": "sensor.tx_9", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx9" }, { "id": "sensor.tx_90", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx90" }, { "id": "sensor.tx_91", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx91" }, { "id": "sensor.tx_92", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx92" }, { "id": "sensor.tx_93", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx93" }, { "id": "sensor.tx_94", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx94" }, { "id": "sensor.tx_95", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx95" }, { "id": "sensor.tx_96", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx96" }, { "id": "sensor.tx_97", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx97" }, { "id": "sensor.tx_98", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx98" }, { "id": "sensor.tx_99", - "friendlyName": " TX", + "friendlyName": "TX", "cSharpName": "Tx99" }, { @@ -13929,7 +14149,7 @@ }, { "id": "sensor.water_temperature", - "friendlyName": "Water Temperature", + "friendlyName": "hottubmanager Water Temperature", "cSharpName": "WaterTemperature" }, { @@ -14067,6 +14287,11 @@ "friendlyName": "Wiser LTS Target Temperature Entrance", "cSharpName": "WiserLtsTargetTemperatureEntrance" }, + { + "id": "sensor.wiser_lts_target_temperature_guest_room", + "friendlyName": "Wiser LTS Target Temperature Guest Room", + "cSharpName": "WiserLtsTargetTemperatureGuestRoom" + }, { "id": "sensor.wiser_lts_target_temperature_landing", "friendlyName": "Wiser LTS Target Temperature Landing", @@ -14688,6 +14913,26 @@ "jsonName": "Is Finishing Charge", "cSharpName": "IsFinishingCharge", "clrType": "System.Boolean" + }, + { + "jsonName": "applicable_rates", + "cSharpName": "ApplicableRates", + "clrType": "System.Collections.Generic.IReadOnlyList\u00601[System.Object]" + }, + { + "jsonName": "tariff", + "cSharpName": "Tariff", + "clrType": "System.String" + }, + { + "jsonName": "is_intelligent_adjusted", + "cSharpName": "IsIntelligentAdjusted", + "clrType": "System.Boolean" + }, + { + "jsonName": "all_rates", + "cSharpName": "AllRates", + "clrType": "System.Collections.Generic.IReadOnlyList\u00601[System.Object]" } ] }, @@ -15095,12 +15340,12 @@ }, { "id": "switch.aubrecia_drive_siren", - "friendlyName": "Aubrecia Drive siren", + "friendlyName": "Aubrecia Drive Siren", "cSharpName": "AubreciaDriveSiren" }, { "id": "switch.bubbles", - "friendlyName": "Bubbles", + "friendlyName": "hottubmanager Bubbles", "cSharpName": "Bubbles" }, { @@ -15380,7 +15625,7 @@ }, { "id": "switch.garden_siren_2", - "friendlyName": "Garden siren", + "friendlyName": "Garden Siren", "cSharpName": "GardenSiren2" }, { @@ -15435,7 +15680,7 @@ }, { "id": "switch.jayden_s_iphone", - "friendlyName": null, + "friendlyName": "Jayden-s-iPhone RX", "cSharpName": "JaydenSIphone" }, { @@ -15615,7 +15860,7 @@ }, { "id": "switch.massage", - "friendlyName": "Massage", + "friendlyName": "hottubmanager Massage", "cSharpName": "Massage" }, { @@ -15638,6 +15883,11 @@ "friendlyName": "netdaemon_lightsmanager", "cSharpName": "NetdaemonLightsmanager" }, + { + "id": "switch.niemand", + "friendlyName": "Niemand", + "cSharpName": "Niemand" + }, { "id": "switch.niemand_drive_event_stream", "friendlyName": "Niemand Drive Event Stream", @@ -15650,7 +15900,7 @@ }, { "id": "switch.niemand_drive_siren", - "friendlyName": "Niemand Drive siren", + "friendlyName": "Niemand Drive Siren", "cSharpName": "NiemandDriveSiren" }, { @@ -15680,7 +15930,7 @@ }, { "id": "switch.niemand_garage_siren", - "friendlyName": "Niemand Garage siren", + "friendlyName": "Niemand Garage Siren", "cSharpName": "NiemandGarageSiren" }, { @@ -15700,7 +15950,7 @@ }, { "id": "switch.niemand_garden_siren", - "friendlyName": "Niemand Garden siren", + "friendlyName": "Niemand Garden Siren", "cSharpName": "NiemandGardenSiren" }, { @@ -15708,6 +15958,21 @@ "friendlyName": "Niemand Garden Siren", "cSharpName": "NiemandGardenSiren2" }, + { + "id": "switch.niemand_guest", + "friendlyName": "Niemand-Guest", + "cSharpName": "NiemandGuest" + }, + { + "id": "switch.niemand_iot", + "friendlyName": "Niemand-IOT", + "cSharpName": "NiemandIot" + }, + { + "id": "switch.niemand_mesh", + "friendlyName": "Niemand-Mesh", + "cSharpName": "NiemandMesh" + }, { "id": "switch.niemand_side_event_stream", "friendlyName": "Niemand Side Event Stream", @@ -15720,7 +15985,7 @@ }, { "id": "switch.niemand_side_siren", - "friendlyName": "Niemand Side siren", + "friendlyName": "Niemand Side Siren", "cSharpName": "NiemandSideSiren" }, { @@ -15895,7 +16160,7 @@ }, { "id": "switch.water_pump", - "friendlyName": "Water Pump", + "friendlyName": "hottubmanager Water Pump", "cSharpName": "WaterPump" }, { @@ -16148,7 +16413,7 @@ { "jsonName": "manual_control", "cSharpName": "ManualControl", - "clrType": "System.Collections.Generic.IReadOnlyList\u00601[System.Object]" + "clrType": "System.Object" }, { "jsonName": "icon", @@ -16630,6 +16895,31 @@ "jsonName": "visibility", "cSharpName": "Visibility", "clrType": "System.Double" + }, + { + "jsonName": "apparent_temperature", + "cSharpName": "ApparentTemperature", + "clrType": "System.Double" + }, + { + "jsonName": "dew_point", + "cSharpName": "DewPoint", + "clrType": "System.Double" + }, + { + "jsonName": "cloud_coverage", + "cSharpName": "CloudCoverage", + "clrType": "System.Double" + }, + { + "jsonName": "uv_index", + "cSharpName": "UvIndex", + "clrType": "System.Double" + }, + { + "jsonName": "wind_gust_speed", + "cSharpName": "WindGustSpeed", + "clrType": "System.Double" } ] }, @@ -16710,7 +17000,7 @@ }, { "id": "input_datetime.energy_3_hour_window", - "friendlyName": "Energy 3 hour Window", + "friendlyName": "Energy 3 Hour Window", "cSharpName": "Energy3HourWindow" } ], diff --git a/NetDaemonCodegen/ServicesMetaData.json b/NetDaemonCodegen/ServicesMetaData.json index fc07789..d31fcad 100644 --- a/NetDaemonCodegen/ServicesMetaData.json +++ b/NetDaemonCodegen/ServicesMetaData.json @@ -1,56 +1,8 @@ { - "persistent_notification": { - "create": { - "name": "Create", - "description": "Show a notification in the frontend.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification. [Templates accepted]", - "required": true, - "example": "Please check your configuration.yaml.", - "selector": { - "text": null - } - }, - "title": { - "name": "Title", - "description": "Optional title for your notification. [Templates accepted]", - "example": "Test notification", - "selector": { - "text": null - } - }, - "notification_id": { - "name": "Notification ID", - "description": "Target ID of the notification, will replace a notification with the same ID.", - "example": 1234, - "selector": { - "text": null - } - } - } - }, - "dismiss": { - "name": "Dismiss", - "description": "Remove a notification from the frontend.", - "fields": { - "notification_id": { - "name": "Notification ID", - "description": "Target ID of the notification, which should be removed.", - "required": true, - "example": 1234, - "selector": { - "text": null - } - } - } - } - }, "homeassistant": { "save_persistent_states": { - "name": "Save Persistent States", - "description": "Save the persistent states (for entities derived from RestoreEntity) immediately. Maintain the normal periodic saving interval.", + "name": "Save persistent states", + "description": "Saves the persistent states immediately. Maintains the normal periodic saving interval.", "fields": {} }, "turn_off": { @@ -75,7 +27,7 @@ }, "toggle": { "name": "Generic toggle", - "description": "Generic service to toggle devices on/off under any domain", + "description": "Generic service to toggle devices on/off under any domain.", "fields": {}, "target": { "entity": [ @@ -85,22 +37,22 @@ }, "stop": { "name": "Stop", - "description": "Stop the Home Assistant service.", + "description": "Stops Home Assistant.", "fields": {} }, "restart": { "name": "Restart", - "description": "Restart the Home Assistant service.", + "description": "Restarts Home Assistant.", "fields": {} }, "check_config": { "name": "Check configuration", - "description": "Check the Home Assistant configuration files for errors. Errors will be displayed in the Home Assistant log.", + "description": "Checks the Home Assistant YAML-configuration files for errors. Errors will be shown in the Home Assistant logs.", "fields": {} }, "update_entity": { "name": "Update entity", - "description": "Force one or more entities to update its data", + "description": "Forces one or more entities to update its data.", "fields": {}, "target": { "entity": [ @@ -110,51 +62,51 @@ }, "reload_core_config": { "name": "Reload core configuration", - "description": "Reload the core configuration.", + "description": "Reloads the core configuration from the YAML-configuration.", "fields": {} }, "set_location": { "name": "Set location", - "description": "Update the Home Assistant location.", + "description": "Updates the Home Assistant location.", "fields": { "latitude": { - "name": "Latitude", - "description": "Latitude of your location.", "required": true, "example": 32.87336, "selector": { "text": null - } + }, + "name": "Latitude", + "description": "Latitude of your location." }, "longitude": { - "name": "Longitude", - "description": "Longitude of your location.", "required": true, "example": 117.22743, "selector": { "text": null - } + }, + "name": "Longitude", + "description": "Longitude of your location." } } }, "reload_custom_templates": { "name": "Reload custom Jinja2 templates", - "description": "Reload Jinja2 templates found in the custom_templates folder in your config. New values will be applied on the next render of the template.", + "description": "Reloads Jinja2 templates found in the \u0060custom_templates\u0060 folder in your config. New values will be applied on the next render of the template.", "fields": {} }, "reload_config_entry": { "name": "Reload config entry", - "description": "Reload a config entry that matches a target.", + "description": "Reloads the specified config entry.", "fields": { "entry_id": { "advanced": true, - "name": "Config entry id", - "description": "A configuration entry id", "required": false, "example": "8955375327824e14ba89e4b29cc3ec9a", "selector": { "text": null - } + }, + "name": "Config entry ID", + "description": "The configuration entry ID of the entry to be reloaded." } }, "target": { @@ -172,10 +124,63 @@ "fields": {} } }, + "persistent_notification": { + "create": { + "name": "Create", + "description": "Shows a notification on the **Notifications** panel.", + "fields": { + "message": { + "required": true, + "example": "Please check your configuration.yaml.", + "selector": { + "text": null + }, + "name": "Message", + "description": "Message body of the notification." + }, + "title": { + "example": "Test notification", + "selector": { + "text": null + }, + "name": "Title", + "description": "Optional title of the notification." + }, + "notification_id": { + "example": 1234, + "selector": { + "text": null + }, + "name": "Notification ID", + "description": "ID of the notification. This new notification will overwrite an existing notification with the same ID." + } + } + }, + "dismiss": { + "name": "Dismiss", + "description": "Removes a notification from the **Notifications** panel.", + "fields": { + "notification_id": { + "required": true, + "example": 1234, + "selector": { + "text": null + }, + "name": "Notification ID", + "description": "ID of the notification to be removed." + } + } + }, + "dismiss_all": { + "name": "Dismiss all", + "description": "Removes all notifications from the **Notifications** panel.", + "fields": {} + } + }, "system_log": { "clear": { "name": "Clear all", - "description": "Clear all log entries.", + "description": "Clears all log entries.", "fields": {} }, "write": { @@ -183,52 +188,38 @@ "description": "Write log entry.", "fields": { "message": { - "name": "Message", - "description": "Message to log.", "required": true, "example": "Something went wrong", "selector": { "text": null - } + }, + "name": "Message", + "description": "Message to log." }, "level": { - "name": "Level", - "description": "Log level.", "default": "error", "selector": { "select": { "options": [ - { - "label": "Debug", - "value": "debug" - }, - { - "label": "Info", - "value": "info" - }, - { - "label": "Warning", - "value": "warning" - }, - { - "label": "Error", - "value": "error" - }, - { - "label": "Critical", - "value": "critical" - } - ] + "debug", + "info", + "warning", + "error", + "critical" + ], + "translation_key": "level" } - } + }, + "name": "Level", + "description": "Log level." }, "logger": { - "name": "Logger", - "description": "Logger name under which to log the message. Defaults to \u0027system_log.external\u0027.", "example": "mycomponent.myplatform", "selector": { "text": null - } + }, + "name": "Logger", + "description": "Logger name under which to log the message. Defaults to \u0060system_log.external\u0060." } } } @@ -236,159 +227,137 @@ "logger": { "set_default_level": { "name": "Set default level", - "description": "Set the default log level for integrations.", + "description": "Sets the default log level for integrations.", "fields": { "level": { - "name": "Level", - "description": "Default severity level for all integrations.", "selector": { "select": { "options": [ - { - "label": "Debug", - "value": "debug" - }, - { - "label": "Info", - "value": "info" - }, - { - "label": "Warning", - "value": "warning" - }, - { - "label": "Error", - "value": "error" - }, - { - "label": "Fatal", - "value": "fatal" - }, - { - "label": "Critical", - "value": "critical" - } - ] + "debug", + "info", + "warning", + "error", + "fatal", + "critical" + ], + "translation_key": "level" } - } + }, + "name": "Level", + "description": "Default severity level for all integrations." } } }, "set_level": { "name": "Set level", - "description": "Set log level for integrations.", + "description": "Sets the log level for one or more integrations.", "fields": {} } }, "person": { "reload": { "name": "Reload", - "description": "Reload the person configuration.", + "description": "Reloads persons from the YAML-configuration.", "fields": {} } }, "frontend": { "set_theme": { - "name": "Set theme", - "description": "Set a theme unless the client selected per-device theme.", + "name": "Set the default theme", + "description": "Sets the default theme Home Assistant uses. Can be overridden by a user.", "fields": { "name": { - "name": "Theme", - "description": "Name of a predefined theme", "required": true, "example": "default", "selector": { - "theme": null - } + "theme": { + "include_default": true + } + }, + "name": "Theme", + "description": "Name of a theme." }, "mode": { - "name": "Mode", - "description": "The mode the theme is for.", "default": "light", "selector": { "select": { "options": [ - { - "label": "Dark", - "value": "dark" - }, - { - "label": "Light", - "value": "light" - } - ] + "dark", + "light" + ], + "translation_key": "mode" } - } + }, + "name": "Mode", + "description": "Theme mode." } } }, "reload_themes": { "name": "Reload themes", - "description": "Reload themes from YAML configuration.", + "description": "Reloads themes from the YAML-configuration.", "fields": {} } }, "recorder": { "purge": { "name": "Purge", - "description": "Start purge task - to clean up old data from your database.", + "description": "Starts purge task - to clean up old data from your database.", "fields": { "keep_days": { - "name": "Days to keep", - "description": "Number of history days to keep in database after purge.", "selector": { "number": { "min": 0, "max": 365, "unit_of_measurement": "days" } - } + }, + "name": "Days to keep", + "description": "Number of days to keep the data in the database. Starting today, counting backward. A value of \u00607\u0060 means that everything older than a week will be purged." }, "repack": { - "name": "Repack", - "description": "Attempt to save disk space by rewriting the entire database file.", "default": false, "selector": { "boolean": null - } + }, + "name": "Repack", + "description": "Attempt to save disk space by rewriting the entire database file." }, "apply_filter": { - "name": "Apply filter", - "description": "Apply entity_id and event_type filter in addition to time based purge.", "default": false, "selector": { "boolean": null - } + }, + "name": "Apply filter", + "description": "Applys \u0060entity_id\u0060 and \u0060event_type\u0060 filters in addition to time-based purge." } } }, "purge_entities": { - "name": "Purge Entities", - "description": "Start purge task to remove specific entities from your database.", + "name": "Purge entities", + "description": "Starts a purge task to remove the data related to specific entities from your database.", "fields": { "domains": { - "name": "Domains to remove", - "description": "List the domains that need to be removed from the recorder database.", "example": "sun", "required": false, "default": [], "selector": { "object": null - } + }, + "name": "Domains to remove", + "description": "List of domains for which the data needs to be removed from the recorder database." }, "entity_globs": { - "name": "Entity Globs to remove", - "description": "List the glob patterns to select entities for removal from the recorder database.", "example": "domain*.object_id*", "required": false, "default": [], "selector": { "object": null - } + }, + "name": "Entity globs to remove", + "description": "List of glob patterns used to select the entities for which the data is to be removed from the recorder database." }, "keep_days": { - "name": "Days to keep", - "description": "Number of history days to keep in database of matching rows. The default of 0 days will remove all matching rows.", "default": 0, "selector": { "number": { @@ -396,7 +365,9 @@ "max": 365, "unit_of_measurement": "days" } - } + }, + "name": "Days to keep", + "description": "Number of days to keep the data for rows matching the filter. Starting today, counting backward. A value of \u00607\u0060 means that everything older than a week will be purged. The default of 0 days will remove all matching rows immediately." } }, "target": { @@ -407,107 +378,31 @@ }, "enable": { "name": "Enable", - "description": "Start the recording of events and state changes", + "description": "Starts the recording of events and state changes.", "fields": {} }, "disable": { "name": "Disable", - "description": "Stop the recording of events and state changes", + "description": "Stops the recording of events and state changes.", "fields": {} } }, "cloud": { "remote_connect": { "name": "Remote connect", - "description": "Make instance UI available outside over NabuCasa cloud", + "description": "Makes the instance UI accessible from outside of the local network by using Home Assistant Cloud.", "fields": {} }, "remote_disconnect": { "name": "Remote disconnect", - "description": "Disconnect UI from NabuCasa cloud", - "fields": {} - } - }, - "ping": { - "reload": { - "name": "Reload", - "description": "Reload all ping entities.", - "fields": {} - } - }, - "template": { - "reload": { - "name": "Reload", - "description": "Reload all template entities.", - "fields": {} - } - }, - "conversation": { - "process": { - "name": "Process", - "description": "Launch a conversation from a transcribed text.", - "fields": { - "text": { - "name": "Text", - "description": "Transcribed text", - "example": "Turn all lights on", - "selector": { - "text": null - } - }, - "language": { - "name": "Language", - "description": "Language of text. Defaults to server language", - "example": "NL", - "selector": { - "text": null - } - }, - "agent_id": { - "name": "Agent", - "description": "Assist engine to process your request", - "example": "homeassistant", - "selector": { - "text": null - } - } - } - }, - "reload": { - "name": "", - "description": "", - "fields": {} - } - }, - "localtuya": { - "reload": { - "name": "", - "description": "Reload localtuya and reconnect to all devices.", + "description": "Disconnects the Home Assistant UI from the Home Assistant Cloud. You will no longer be able to access your Home Assistant instance from outside your local network.", "fields": {} - }, - "set_dp": { - "name": "", - "description": "Change the value of a datapoint (DP)", - "fields": { - "device_id": { - "description": "Device ID of device to change datapoint value for", - "example": "11100118278aab4de001" - }, - "dp": { - "description": "Datapoint index", - "example": 1 - }, - "value": { - "description": "New value to set", - "example": false - } - } } }, "select": { "select_first": { "name": "First", - "description": "Select the first option of an select entity.", + "description": "Selects the first option.", "fields": {}, "target": { "entity": [ @@ -521,7 +416,7 @@ }, "select_last": { "name": "Last", - "description": "Select the last option of an select entity.", + "description": "Selects the last option.", "fields": {}, "target": { "entity": [ @@ -535,15 +430,15 @@ }, "select_next": { "name": "Next", - "description": "Select the next options of an select entity.", + "description": "Selects the next option.", "fields": { "cycle": { - "name": "Cycle", - "description": "If the option should cycle from the last to the first.", "default": true, "selector": { "boolean": null - } + }, + "name": "Cycle", + "description": "If the option should cycle from the last to the first." } }, "target": { @@ -558,16 +453,16 @@ }, "select_option": { "name": "Select", - "description": "Select an option of an select entity.", + "description": "Selects an option.", "fields": { "option": { - "name": "Option", - "description": "Option to be selected.", "required": true, "example": "\u0022Item A\u0022", "selector": { "text": null - } + }, + "name": "Option", + "description": "Option to be selected." } }, "target": { @@ -582,15 +477,15 @@ }, "select_previous": { "name": "Previous", - "description": "Select the previous options of an select entity.", + "description": "Selects the previous option.", "fields": { "cycle": { - "name": "Cycle", - "description": "If the option should cycle from the first to the last.", "default": true, "selector": { "boolean": null - } + }, + "name": "Cycle", + "description": "If the option should cycle from the first to the last." } }, "target": { @@ -604,14 +499,78 @@ } } }, - "light": { - "turn_on": { + "localtuya": { + "reload": { + "name": "", + "description": "Reload localtuya and reconnect to all devices.", + "fields": {} + }, + "set_dp": { + "name": "", + "description": "Change the value of a datapoint (DP)", + "fields": { + "device_id": { + "description": "Device ID of device to change datapoint value for", + "example": "11100118278aab4de001" + }, + "dp": { + "description": "Datapoint index", + "example": 1 + }, + "value": { + "description": "New value to set", + "example": false + } + } + } + }, + "conversation": { + "process": { + "name": "Process", + "description": "Launches a conversation from a transcribed text.", + "fields": { + "text": { + "example": "Turn all lights on", + "required": true, + "selector": { + "text": null + }, + "name": "Text", + "description": "Transcribed text input." + }, + "language": { + "example": "NL", + "selector": { + "text": null + }, + "name": "Language", + "description": "Language of text. Defaults to server language." + }, + "agent_id": { + "example": "homeassistant", + "selector": { + "conversation_agent": null + }, + "name": "Agent", + "description": "Conversation agent to process your request. The conversation agent is the brains of your assistant. It processes the incoming text commands." + } + }, + "response": { + "optional": true + } + }, + "reload": { + "name": "", + "description": "", + "fields": {} + } + }, + "light": { + "turn_on": { "name": "Turn on", - "description": "Turn on one or more lights and adjust properties of the light, even when they are turned on already.\n", + "description": "Turn on one or more lights and adjust properties of the light, even when they are turned on already.", "fields": { "transition": { - "name": "Transition", - "description": "Duration it takes to get to next state.", "filter": { "supported_features": [ 32 @@ -623,11 +582,11 @@ "max": 300, "unit_of_measurement": "seconds" } - } + }, + "name": "Transition", + "description": "Duration it takes to get to next state." }, "rgb_color": { - "name": "Color", - "description": "The color for the light (based on RGB - red, green, blue).", "filter": { "attribute": { "supported_color_modes": [ @@ -641,11 +600,11 @@ }, "selector": { "color_rgb": null - } + }, + "name": "Color", + "description": "The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue." }, "rgbw_color": { - "name": "RGBW-color", - "description": "A list containing four integers between 0 and 255 representing the RGBW (red, green, blue, white) color for the light.", "filter": { "attribute": { "supported_color_modes": [ @@ -661,11 +620,11 @@ "example": "[255, 100, 100, 50]", "selector": { "object": null - } + }, + "name": "RGBW-color", + "description": "The color in RGBW format. A list of four integers between 0 and 255 representing the values of red, green, blue, and white." }, "rgbww_color": { - "name": "RGBWW-color", - "description": "A list containing five integers between 0 and 255 representing the RGBWW (red, green, blue, cold white, warm white) color for the light.", "filter": { "attribute": { "supported_color_modes": [ @@ -681,11 +640,11 @@ "example": "[255, 100, 100, 50, 70]", "selector": { "object": null - } + }, + "name": "RGBWW-color", + "description": "The color in RGBWW format. A list of five integers between 0 and 255 representing the values of red, green, blue, cold white, and warm white." }, "color_name": { - "name": "Color name", - "description": "A human readable color name.", "filter": { "attribute": { "supported_color_modes": [ @@ -700,6 +659,7 @@ "advanced": true, "selector": { "select": { + "translation_key": "color_name", "options": [ "homeassistant", "aliceblue", @@ -851,11 +811,11 @@ "yellowgreen" ] } - } + }, + "name": "Color name", + "description": "A human-readable color name." }, "hs_color": { - "name": "Hue/Sat color", - "description": "Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100.", "filter": { "attribute": { "supported_color_modes": [ @@ -871,11 +831,11 @@ "example": "[300, 70]", "selector": { "object": null - } + }, + "name": "Hue/Sat color", + "description": "Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100." }, "xy_color": { - "name": "XY-color", - "description": "Color for the light in XY-format.", "filter": { "attribute": { "supported_color_modes": [ @@ -891,11 +851,11 @@ "example": "[0.52, 0.43]", "selector": { "object": null - } + }, + "name": "XY-color", + "description": "Color in XY-format. A list of two decimal numbers between 0 and 1." }, "color_temp": { - "name": "Color temperature", - "description": "Color temperature for the light in mireds.", "filter": { "attribute": { "supported_color_modes": [ @@ -913,11 +873,11 @@ "min_mireds": 153, "max_mireds": 500 } - } + }, + "name": "Color temperature", + "description": "Color temperature in mireds." }, "kelvin": { - "name": "Color temperature (Kelvin)", - "description": "Color temperature for the light in Kelvin.", "filter": { "attribute": { "supported_color_modes": [ @@ -938,11 +898,11 @@ "step": 100, "unit_of_measurement": "K" } - } + }, + "name": "Color temperature", + "description": "Color temperature in Kelvin." }, "brightness": { - "name": "Brightness value", - "description": "Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light.", "filter": { "attribute": { "supported_color_modes": [ @@ -962,11 +922,11 @@ "min": 0, "max": 255 } - } + }, + "name": "Brightness value", + "description": "Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness." }, "brightness_pct": { - "name": "Brightness", - "description": "Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light.", "filter": { "attribute": { "supported_color_modes": [ @@ -986,11 +946,11 @@ "max": 100, "unit_of_measurement": "%" } - } + }, + "name": "Brightness", + "description": "Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness." }, "brightness_step": { - "name": "Brightness step value", - "description": "Change brightness by an amount.", "filter": { "attribute": { "supported_color_modes": [ @@ -1010,11 +970,11 @@ "min": -225, "max": 255 } - } + }, + "name": "Brightness step value", + "description": "Change brightness by an amount." }, "brightness_step_pct": { - "name": "Brightness step", - "description": "Change brightness by a percentage.", "filter": { "attribute": { "supported_color_modes": [ @@ -1034,11 +994,11 @@ "max": 100, "unit_of_measurement": "%" } - } + }, + "name": "Brightness step", + "description": "Change brightness by a percentage." }, "white": { - "name": "White", - "description": "Set the light to white mode.", "filter": { "attribute": { "supported_color_modes": [ @@ -1052,20 +1012,20 @@ "value": true, "label": "Enabled" } - } + }, + "name": "White", + "description": "Set the light to white mode." }, "profile": { - "name": "Profile", - "description": "Name of a light profile to use.", "advanced": true, "example": "relax", "selector": { "text": null - } + }, + "name": "Profile", + "description": "Name of a light profile to use." }, "flash": { - "name": "Flash", - "description": "If the light should flash.", "filter": { "supported_features": [ 8 @@ -1085,11 +1045,11 @@ } ] } - } + }, + "name": "Flash", + "description": "Tell light to flash, can be either value short or long." }, "effect": { - "name": "Effect", - "description": "Light effect.", "filter": { "supported_features": [ 4 @@ -1097,7 +1057,9 @@ }, "selector": { "text": null - } + }, + "name": "Effect", + "description": "Light effect." } }, "target": { @@ -1112,11 +1074,9 @@ }, "turn_off": { "name": "Turn off", - "description": "Turns off one or more lights.", + "description": "Turn off one or more lights.", "fields": { "transition": { - "name": "Transition", - "description": "Duration it takes to get to next state.", "filter": { "supported_features": [ 32 @@ -1128,11 +1088,11 @@ "max": 300, "unit_of_measurement": "seconds" } - } + }, + "name": "Transition", + "description": "Duration it takes to get to next state." }, "flash": { - "name": "Flash", - "description": "If the light should flash.", "filter": { "supported_features": [ 8 @@ -1152,7 +1112,9 @@ } ] } - } + }, + "name": "Flash", + "description": "Tell light to flash, can be either value short or long." } }, "target": { @@ -1167,11 +1129,9 @@ }, "toggle": { "name": "Toggle", - "description": "Toggles one or more lights, from on to off, or, off to on, based on their current state.\n", + "description": "Toggles one or more lights, from on to off, or, off to on, based on their current state.", "fields": { "transition": { - "name": "Transition", - "description": "Duration it takes to get to next state.", "filter": { "supported_features": [ 32 @@ -1183,11 +1143,11 @@ "max": 300, "unit_of_measurement": "seconds" } - } + }, + "name": "Transition", + "description": "Duration it takes to get to next state." }, "rgb_color": { - "name": "RGB-color", - "description": "Color for the light in RGB-format.", "filter": { "attribute": { "supported_color_modes": [ @@ -1203,11 +1163,11 @@ "example": "[255, 100, 100]", "selector": { "object": null - } + }, + "name": "Color", + "description": "The color in RGB format. A list of three integers between 0 and 255 representing the values of red, green, and blue." }, "color_name": { - "name": "Color name", - "description": "A human readable color name.", "filter": { "attribute": { "supported_color_modes": [ @@ -1222,6 +1182,7 @@ "advanced": true, "selector": { "select": { + "translation_key": "color_name", "options": [ "homeassistant", "aliceblue", @@ -1373,11 +1334,11 @@ "yellowgreen" ] } - } + }, + "name": "Color name", + "description": "A human-readable color name." }, "hs_color": { - "name": "Hue/Sat color", - "description": "Color for the light in hue/sat format. Hue is 0-360 and Sat is 0-100.", "filter": { "attribute": { "supported_color_modes": [ @@ -1393,11 +1354,11 @@ "example": "[300, 70]", "selector": { "object": null - } + }, + "name": "Hue/Sat color", + "description": "Color in hue/sat format. A list of two integers. Hue is 0-360 and Sat is 0-100." }, "xy_color": { - "name": "XY-color", - "description": "Color for the light in XY-format.", "filter": { "attribute": { "supported_color_modes": [ @@ -1413,11 +1374,11 @@ "example": "[0.52, 0.43]", "selector": { "object": null - } + }, + "name": "XY-color", + "description": "Color in XY-format. A list of two decimal numbers between 0 and 1." }, "color_temp": { - "name": "Color temperature (mireds)", - "description": "Color temperature for the light in mireds.", "filter": { "attribute": { "supported_color_modes": [ @@ -1433,11 +1394,11 @@ "advanced": true, "selector": { "color_temp": null - } + }, + "name": "Color temperature", + "description": "Color temperature in mireds." }, "kelvin": { - "name": "Color temperature (Kelvin)", - "description": "Color temperature for the light in Kelvin.", "filter": { "attribute": { "supported_color_modes": [ @@ -1458,11 +1419,11 @@ "step": 100, "unit_of_measurement": "K" } - } + }, + "name": "Color temperature", + "description": "Color temperature in Kelvin." }, "brightness": { - "name": "Brightness value", - "description": "Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light.", "filter": { "attribute": { "supported_color_modes": [ @@ -1482,11 +1443,11 @@ "min": 0, "max": 255 } - } + }, + "name": "Brightness value", + "description": "Number indicating brightness, where 0 turns the light off, 1 is the minimum brightness, and 255 is the maximum brightness." }, "brightness_pct": { - "name": "Brightness", - "description": "Number indicating percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light.", "filter": { "attribute": { "supported_color_modes": [ @@ -1506,11 +1467,11 @@ "max": 100, "unit_of_measurement": "%" } - } + }, + "name": "Brightness", + "description": "Number indicating the percentage of full brightness, where 0 turns the light off, 1 is the minimum brightness, and 100 is the maximum brightness." }, "white": { - "name": "White", - "description": "Set the light to white mode.", "filter": { "attribute": { "supported_color_modes": [ @@ -1524,20 +1485,20 @@ "value": true, "label": "Enabled" } - } + }, + "name": "White", + "description": "Set the light to white mode." }, "profile": { - "name": "Profile", - "description": "Name of a light profile to use.", "advanced": true, "example": "relax", "selector": { "text": null - } + }, + "name": "Profile", + "description": "Name of a light profile to use." }, "flash": { - "name": "Flash", - "description": "If the light should flash.", "filter": { "supported_features": [ 8 @@ -1557,11 +1518,11 @@ } ] } - } + }, + "name": "Flash", + "description": "Tell light to flash, can be either value short or long." }, "effect": { - "name": "Effect", - "description": "Light effect.", "filter": { "supported_features": [ 4 @@ -1569,7 +1530,9 @@ }, "selector": { "text": null - } + }, + "name": "Effect", + "description": "Light effect." } }, "target": { @@ -1586,126 +1549,137 @@ "logbook": { "log": { "name": "Log", - "description": "Create a custom entry in your logbook.", + "description": "Creates a custom entry in the logbook.", "fields": { "name": { - "name": "Name", - "description": "Custom name for an entity, can be referenced with entity_id.", "required": true, "example": "Kitchen", "selector": { "text": null - } + }, + "name": "Name", + "description": "Custom name for an entity, can be referenced using an \u0060entity_id\u0060." }, "message": { - "name": "Message", - "description": "Message of the custom logbook entry.", "required": true, "example": "is being used", "selector": { "text": null - } + }, + "name": "Message", + "description": "Message of the logbook entry." }, "entity_id": { - "name": "Entity ID", - "description": "Entity to reference in custom logbook entry.", "selector": { "entity": null - } + }, + "name": "Entity ID", + "description": "Entity to reference in the logbook entry." }, "domain": { - "name": "Domain", - "description": "Icon of domain to display in custom logbook entry.", "example": "light", "selector": { "text": null - } + }, + "name": "Domain", + "description": "Determines which icon is used in the logbook entry. The icon illustrates the integration domain related to this logbook entry." } } } }, - "timer": { - "reload": { - "name": "", - "description": "", - "fields": {} - }, - "start": { - "name": "Start", - "description": "Start a timer", - "fields": { - "duration": { - "description": "Duration the timer requires to finish. [optional]", - "example": "00:01:00 or 60", - "selector": { - "text": null - } - } - }, + "counter": { + "increment": { + "name": "Increment", + "description": "Increments a counter.", + "fields": {}, "target": { "entity": [ { "domain": [ - "timer" + "counter" ] } ] } }, - "pause": { - "name": "Pause", - "description": "Pause a timer.", + "decrement": { + "name": "Decrement", + "description": "Decrements a counter.", "fields": {}, "target": { "entity": [ { "domain": [ - "timer" + "counter" ] } ] } }, - "cancel": { - "name": "Cancel", - "description": "Cancel a timer.", + "reset": { + "name": "Reset", + "description": "Resets a counter.", "fields": {}, "target": { "entity": [ { "domain": [ - "timer" + "counter" ] } ] } }, - "finish": { - "name": "Finish", - "description": "Finish a timer.", - "fields": {}, + "set_value": { + "name": "Set", + "description": "Sets the counter value.", + "fields": { + "value": { + "required": true, + "selector": { + "number": { + "min": 0, + "max": 9223372036854775807, + "mode": "box" + } + }, + "name": "Value", + "description": "The new counter value the entity should be set to." + } + }, "target": { "entity": [ { "domain": [ - "timer" + "counter" ] } ] } }, - "change": { - "name": "Change", - "description": "Change a timer", + "configure": { + "name": "", + "description": "", + "fields": {} + } + }, + "timer": { + "reload": { + "name": "", + "description": "", + "fields": {} + }, + "start": { + "name": "Start", + "description": "Starts a timer.", "fields": { "duration": { - "description": "Duration to add or subtract to the running timer", - "default": 0, - "required": true, - "example": "00:01:00, 60 or -60", + "example": "00:01:00 or 60", "selector": { "text": null - } + }, + "name": "Duration", + "description": "Duration the timer requires to finish. [optional]." } }, "target": { @@ -1717,255 +1691,73 @@ } ] } - } - }, - "counter": { - "increment": { - "name": "Increment", - "description": "Increment a counter.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "counter" - ] - } - ] - } }, - "decrement": { - "name": "Decrement", - "description": "Decrement a counter.", + "pause": { + "name": "Pause", + "description": "Pauses a timer.", "fields": {}, "target": { "entity": [ { "domain": [ - "counter" + "timer" ] } ] } }, - "reset": { - "name": "Reset", - "description": "Reset a counter.", + "cancel": { + "name": "Cancel", + "description": "Cancels a timer.", "fields": {}, "target": { "entity": [ { "domain": [ - "counter" + "timer" ] } ] } }, - "set_value": { - "name": "Set", - "description": "Set the counter value", - "fields": { - "value": { - "name": "Value", - "required": true, - "description": "The new counter value the entity should be set to.", - "selector": { - "number": { - "min": 0, - "max": 9223372036854775807, - "mode": "box" - } - } - } - }, + "finish": { + "name": "Finish", + "description": "Finishes a timer.", + "fields": {}, "target": { "entity": [ { "domain": [ - "counter" + "timer" ] } ] } }, - "configure": { - "name": "", - "description": "", - "fields": {} - } - }, - "tts": { - "google_translate_say": { - "name": "Say a TTS message with google_translate", - "description": "Say something using text-to-speech on a media player with google_translate.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Name(s) of media player entities.", - "required": true, - "selector": { - "entity": { - "domain": "media_player" - } - } - }, - "message": { - "name": "Message", - "description": "Text to speak on devices.", - "example": "My name is hanna", - "required": true, - "selector": { - "text": null - } - }, - "cache": { - "name": "Cache", - "description": "Control file cache of this message.", - "default": false, - "selector": { - "boolean": null - } - }, - "language": { - "name": "Language", - "description": "Language to use for speech generation.", - "example": "ru", - "selector": { - "text": null - } - }, - "options": { - "name": "Options", - "description": "A dictionary containing platform-specific options. Optional depending on the platform.", - "advanced": true, - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "speak": { - "name": "Speak", - "description": "Speak something using text-to-speech on a media player.", + "change": { + "name": "Change", + "description": "Changes a timer.", "fields": { - "media_player_entity_id": { - "name": "Media Player Entity", - "description": "Name(s) of media player entities.", - "required": true, - "selector": { - "entity": { - "domain": "media_player" - } - } - }, - "message": { - "name": "Message", - "description": "Text to speak on devices.", - "example": "My name is hanna", + "duration": { + "default": 0, "required": true, + "example": "00:01:00, 60 or -60", "selector": { "text": null - } - }, - "cache": { - "name": "Cache", - "description": "Control file cache of this message.", - "default": true, - "selector": { - "boolean": null - } - }, - "language": { - "name": "Language", - "description": "Language to use for speech generation.", - "example": "ru", - "selector": { - "text": null - } - }, - "options": { - "name": "Options", - "description": "A dictionary containing platform-specific options. Optional depending on the platform.", - "advanced": true, - "example": "platform specific", - "selector": { - "object": null - } + }, + "name": "Duration", + "description": "Duration to add or subtract to the running timer." } }, "target": { "entity": [ { "domain": [ - "tts" + "timer" ] } ] } - }, - "clear_cache": { - "name": "Clear TTS cache", - "description": "Remove all text-to-speech cache files and RAM cache.", - "fields": {} - }, - "cloud_say": { - "name": "Say a TTS message with cloud", - "description": "Say something using text-to-speech on a media player with cloud.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Name(s) of media player entities.", - "required": true, - "selector": { - "entity": { - "domain": "media_player" - } - } - }, - "message": { - "name": "Message", - "description": "Text to speak on devices.", - "example": "My name is hanna", - "required": true, - "selector": { - "text": null - } - }, - "cache": { - "name": "Cache", - "description": "Control file cache of this message.", - "default": false, - "selector": { - "boolean": null - } - }, - "language": { - "name": "Language", - "description": "Language to use for speech generation.", - "example": "ru", - "selector": { - "text": null - } - }, - "options": { - "name": "Options", - "description": "A dictionary containing platform-specific options. Optional depending on the platform.", - "advanced": true, - "example": "platform specific", - "selector": { - "object": null - } - } - } - } - }, - "schedule": { - "reload": { - "name": "Reload", - "description": "Reload the schedule configuration", - "fields": {} } }, "webrtc": { @@ -2057,10 +1849,17 @@ } } }, + "schedule": { + "reload": { + "name": "Reload", + "description": "Reloads schedules from the YAML-configuration.", + "fields": {} + } + }, "climate": { "turn_on": { "name": "Turn on", - "description": "Turn climate device on.", + "description": "Turns climate device on.", "fields": {}, "target": { "entity": [ @@ -2074,7 +1873,7 @@ }, "turn_off": { "name": "Turn off", - "description": "Turn climate device off.", + "description": "Turns climate device off.", "fields": {}, "target": { "entity": [ @@ -2088,45 +1887,25 @@ }, "set_hvac_mode": { "name": "Set HVAC mode", - "description": "Set HVAC operation mode for climate device.", + "description": "Sets HVAC operation mode.", "fields": { "hvac_mode": { - "name": "HVAC mode", - "description": "New value of operation mode.", "selector": { "select": { "options": [ - { - "label": "Off", - "value": "off" - }, - { - "label": "Auto", - "value": "auto" - }, - { - "label": "Cool", - "value": "cool" - }, - { - "label": "Dry", - "value": "dry" - }, - { - "label": "Fan Only", - "value": "fan_only" - }, - { - "label": "Heat/Cool", - "value": "heat_cool" - }, - { - "label": "Heat", - "value": "heat" - } - ] + "off", + "auto", + "cool", + "dry", + "fan_only", + "heat_cool", + "heat" + ], + "translation_key": "hvac_mode" } - } + }, + "name": "HVAC mode", + "description": "HVAC operation mode." } }, "target": { @@ -2141,16 +1920,16 @@ }, "set_preset_mode": { "name": "Set preset mode", - "description": "Set preset mode for climate device.", + "description": "Sets preset mode.", "fields": { "preset_mode": { - "name": "Preset mode", - "description": "New value of preset mode.", "required": true, "example": "away", "selector": { "text": null - } + }, + "name": "Preset mode", + "description": "Preset mode." } }, "target": { @@ -2168,15 +1947,15 @@ }, "set_aux_heat": { "name": "Turn on/off auxiliary heater", - "description": "Turn auxiliary heater on/off for climate device.", + "description": "Turns auxiliary heater on/off.", "fields": { "aux_heat": { - "name": "Auxiliary heating", - "description": "New value of auxiliary heater.", "required": true, "selector": { "boolean": null - } + }, + "name": "Auxiliary heating", + "description": "New value of auxiliary heater." } }, "target": { @@ -2193,12 +1972,10 @@ } }, "set_temperature": { - "name": "Set temperature", - "description": "Set target temperature of climate device.", + "name": "Set target temperature", + "description": "Sets target temperature.", "fields": { "temperature": { - "name": "Temperature", - "description": "New target temperature for HVAC.", "filter": { "supported_features": [ 1 @@ -2211,11 +1988,11 @@ "step": 0.1, "mode": "box" } - } + }, + "name": "Temperature", + "description": "Target temperature." }, "target_temp_high": { - "name": "Target temperature high", - "description": "New target high temperature for HVAC.", "filter": { "supported_features": [ 2 @@ -2229,11 +2006,11 @@ "step": 0.1, "mode": "box" } - } + }, + "name": "Target temperature high", + "description": "High target temperature." }, "target_temp_low": { - "name": "Target temperature low", - "description": "New target low temperature for HVAC.", "filter": { "supported_features": [ 2 @@ -2247,45 +2024,27 @@ "step": 0.1, "mode": "box" } - } + }, + "name": "Target temperature low", + "description": "Low target temperature." }, "hvac_mode": { - "name": "HVAC mode", - "description": "HVAC operation mode to set temperature to.", "selector": { "select": { "options": [ - { - "label": "Off", - "value": "off" - }, - { - "label": "Auto", - "value": "auto" - }, - { - "label": "Cool", - "value": "cool" - }, - { - "label": "Dry", - "value": "dry" - }, - { - "label": "Fan Only", - "value": "fan_only" - }, - { - "label": "Heat/Cool", - "value": "heat_cool" - }, - { - "label": "Heat", - "value": "heat" - } - ] + "off", + "auto", + "cool", + "dry", + "fan_only", + "heat_cool", + "heat" + ], + "translation_key": "hvac_mode" } - } + }, + "name": "HVAC mode", + "description": "HVAC operation mode." } }, "target": { @@ -2304,11 +2063,9 @@ }, "set_humidity": { "name": "Set target humidity", - "description": "Set target humidity of climate device.", + "description": "Sets target humidity.", "fields": { "humidity": { - "name": "Humidity", - "description": "New target humidity for climate device.", "required": true, "selector": { "number": { @@ -2316,7 +2073,9 @@ "max": 99, "unit_of_measurement": "%" } - } + }, + "name": "Humidity", + "description": "Target humidity." } }, "target": { @@ -2334,16 +2093,16 @@ }, "set_fan_mode": { "name": "Set fan mode", - "description": "Set fan operation for climate device.", + "description": "Sets fan operation mode.", "fields": { "fan_mode": { - "name": "Fan mode", - "description": "New value of fan mode.", "required": true, "example": "low", "selector": { "text": null - } + }, + "name": "Fan mode", + "description": "Fan operation mode." } }, "target": { @@ -2361,16 +2120,16 @@ }, "set_swing_mode": { "name": "Set swing mode", - "description": "Set swing operation for climate device.", + "description": "Sets swing operation mode.", "fields": { "swing_mode": { - "name": "Swing mode", - "description": "New value of swing mode.", "required": true, "example": "horizontal", "selector": { "text": null - } + }, + "name": "Swing mode", + "description": "Swing operation mode." } }, "target": { @@ -2390,403 +2149,674 @@ "group": { "reload": { "name": "Reload", - "description": "Reload group configuration, entities, and notify services.", + "description": "Reloads group configuration, entities, and notify services from YAML-configuration.", "fields": {} }, "set": { "name": "Set", - "description": "Create/Update a user group.", + "description": "Creates/Updates a user group.", "fields": { "object_id": { - "name": "Object ID", - "description": "Group id and part of entity id.", "required": true, "example": "test_group", "selector": { "text": null - } + }, + "name": "Object ID", + "description": "Object ID of this group. This object ID is used as part of the entity ID. Entity ID format: [domain].[object_id]." }, "name": { - "name": "Name", - "description": "Name of group", "example": "My test group", "selector": { "text": null - } + }, + "name": "Name", + "description": "Name of the group." }, "icon": { - "name": "Icon", - "description": "Name of icon for the group.", "example": "mdi:camera", "selector": { "icon": null - } + }, + "name": "Icon", + "description": "Name of the icon for the group." }, "entities": { - "name": "Entities", - "description": "List of all members in the group. Not compatible with \u0027delta\u0027.", "example": "domain.entity_id1, domain.entity_id2", "selector": { "object": null - } + }, + "name": "Entities", + "description": "List of all members in the group. Cannot be used in combination with \u0060Add entities\u0060 or \u0060Remove entities\u0060." }, "add_entities": { - "name": "Add Entities", - "description": "List of members that will change on group listening.", "example": "domain.entity_id1, domain.entity_id2", "selector": { "object": null - } + }, + "name": "Add entities", + "description": "List of members to be added to the group. Cannot be used in combination with \u0060Entities\u0060 or \u0060Remove entities\u0060." }, "remove_entities": { - "name": "Remove Entities", - "description": "List of members that will be removed from group listening.", "example": "domain.entity_id1, domain.entity_id2", "selector": { "object": null - } + }, + "name": "Remove entities", + "description": "List of members to be removed from a group. Cannot be used in combination with \u0060Entities\u0060 or \u0060Add entities\u0060." }, "all": { - "name": "All", - "description": "Enable this option if the group should only turn on when all entities are on.", "selector": { "boolean": null - } + }, + "name": "All", + "description": "Enable this option if the group should only be used when all entities are in state \u0060on\u0060." } } }, "remove": { "name": "Remove", - "description": "Remove a user group.", + "description": "Removes a group.", "fields": { "object_id": { - "name": "Object ID", - "description": "Group id and part of entity id.", "required": true, "example": "test_group", "selector": { "object": null - } + }, + "name": "Object ID", + "description": "Object ID of this group. This object ID is used as part of the entity ID. Entity ID format: [domain].[object_id]." } } } }, - "zone": { - "reload": { - "name": "Reload", - "description": "Reload the YAML-based zone configuration.", - "fields": {} - } - }, - "media_player": { - "turn_on": { - "name": "Turn on", - "description": "Turn a media player power on.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + "scheduler": { + "add": { + "name": "Add", + "description": "Create a new schedule entity", + "fields": { + "weekdays": { + "name": "Weekdays", + "description": "Days of the week for which the schedule should be repeated", + "example": "[\u0022daily\u0022]", + "required": false, + "selector": { + "object": null } - ] - } - }, - "turn_off": { - "name": "Turn off", - "description": "Turn a media player power off.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + }, + "start_date": { + "name": "Start date", + "description": "Date from which schedule should be executed", + "example": "[\u00222021-01-01\u0022]", + "required": false, + "selector": { + "object": null } - ] - } - }, - "toggle": { - "name": "Toggle", - "description": "Toggles a media player power state.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + }, + "end_date": { + "name": "End date", + "description": "Date until which schedule should be executed", + "example": "[\u00222021-12-31\u0022]", + "required": false, + "selector": { + "object": null } - ] - } - }, - "volume_up": { - "name": "Turn up volume", - "description": "Turn a media player volume up.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + }, + "timeslots": { + "name": "Timeslots", + "description": "list of timeslots with their actions and optionally conditions (should be kept the same for all timeslots)", + "example": "[{start: \u002212:00\u0022, stop: \u002213:00\u0022, actions: [{service: \u0022light.turn_on\u0022, entity_id: \u0022light.my_lamp\u0022, service_data: {brightness: 200}}]}]", + "required": true, + "selector": { + "object": null } - ] - } - }, - "volume_down": { - "name": "Turn down volume", - "description": "Turn a media player volume down.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + }, + "repeat_type": { + "name": "Repeat Type", + "description": "Control what happens after the schedule is triggered", + "example": "\u0022repeat\u0022", + "required": true, + "selector": { + "select": { + "options": [ + "repeat", + "single", + "pause" + ] + } } - ] - } - }, - "media_play_pause": { - "name": "Play/Pause", - "description": "Toggle media player play/pause state.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + }, + "name": { + "name": "Name", + "description": "Friendly name for the schedule", + "required": false, + "example": "My schedule", + "selector": { + "text": null } - ] + } } }, - "media_play": { - "name": "Play", - "description": "Send the media player the command for play.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + "edit": { + "name": "Edit", + "description": "Edit a schedule entity", + "fields": { + "entity_id": { + "name": "Entity", + "description": "Identifier of the scheduler entity.", + "example": "switch.schedule_abcdef", + "required": true, + "selector": { + "entity": { + "integration": "scheduler", + "domain": "switch" + } } - ] - } - }, - "media_pause": { - "name": "Pause", - "description": "Send the media player the command for pause.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "media_player" - ] + }, + "weekdays": { + "name": "Weekdays", + "description": "Days of the week for which the schedule should be repeated", + "example": "[\u0022daily\u0022]", + "required": false, + "selector": { + "object": null } - ] - } - }, - "media_stop": { - "name": "Stop", - "description": "Send the media player the stop command.", - "fields": {}, - "target": { + }, + "start_date": { + "name": "Start date", + "description": "Date from which schedule should be executed", + "example": "[\u00222021-01-01\u0022]", + "required": false, + "selector": { + "object": null + } + }, + "end_date": { + "name": "End date", + "description": "Date until which schedule should be executed", + "example": "[\u00222021-12-31\u0022]", + "required": false, + "selector": { + "object": null + } + }, + "timeslots": { + "name": "Timeslots", + "description": "list of timeslots with their actions and optionally conditions (should be kept the same for all timeslots)", + "example": "[{start: \u002212:00\u0022, stop: \u002213:00\u0022, actions: [{service: \u0022light.turn_on\u0022, entity_id: \u0022light.my_lamp\u0022, service_data: {brightness: 200}}]}]", + "required": false, + "selector": { + "object": null + } + }, + "repeat_type": { + "name": "Repeat Type", + "description": "Control what happens after the schedule is triggered", + "example": "\u0022repeat\u0022", + "required": false, + "selector": { + "select": { + "options": [ + "repeat", + "single", + "pause" + ] + } + } + }, + "name": { + "name": "Name", + "description": "Friendly name for the schedule", + "required": false, + "example": "My schedule", + "selector": { + "text": null + } + } + } + }, + "remove": { + "name": "Remove", + "description": "Remove a schedule entity", + "fields": { + "entity_id": { + "name": "Entity", + "description": "Identifier of the scheduler entity.", + "example": "switch.schedule_abcdef", + "required": true, + "selector": { + "entity": { + "integration": "scheduler", + "domain": "switch" + } + } + } + } + }, + "copy": { + "name": "Copy", + "description": "Duplicate a schedule entity", + "fields": { + "entity_id": { + "name": "Entity", + "description": "Identifier of the scheduler entity.", + "example": "switch.schedule_abcdef", + "required": true, + "selector": { + "entity": { + "integration": "scheduler", + "domain": "switch" + } + } + }, + "name": { + "name": "Name", + "description": "Friendly name for the copied schedule", + "required": false, + "example": "My schedule", + "selector": { + "text": null + } + } + } + }, + "run_action": { + "name": "Run Action", + "description": "Execute the action of a schedule, optionally at a given time.", + "fields": { + "entity_id": { + "name": "Entity", + "description": "Identifier of the scheduler entity.", + "example": "switch.schedule_abcdef", + "required": true, + "selector": { + "entity": { + "integration": "scheduler", + "domain": "switch" + } + } + }, + "time": { + "name": "Time", + "description": "Time for which to evaluate the action (only useful for schedules with multiple timeslot)", + "example": "\u002212:00\u0022", + "required": false, + "selector": { + "time": null + } + } + } + } + }, + "zone": { + "reload": { + "name": "Reload", + "description": "Reloads zones from the YAML-configuration.", + "fields": {} + } + }, + "media_player": { + "turn_on": { + "name": "Turn on", + "description": "Turns on the power of the media player.", + "fields": {}, + "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 128 ] } ] } }, - "media_next_track": { - "name": "Next", - "description": "Send the media player the command for next track.", + "turn_off": { + "name": "Turn off", + "description": "Turns off the power of the media player.", "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 256 ] } ] } }, - "media_previous_track": { - "name": "Previous", - "description": "Send the media player the command for previous track.", + "toggle": { + "name": "Toggle", + "description": "Toggles a media player on/off.", "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 384 ] } ] } }, - "clear_playlist": { - "name": "Clear playlist", - "description": "Send the media player the command to clear players playlist.", + "volume_up": { + "name": "Turn up volume", + "description": "Turns up the volume.", "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 4, + 1024 ] } ] } }, - "volume_set": { - "name": "Set volume", - "description": "Set a media player\u0027s volume level.", - "fields": { - "volume_level": { - "name": "Level", - "description": "Volume level to set as float.", - "required": true, - "selector": { - "number": { - "min": 0, - "max": 1, - "step": 0.01 - } - } - } - }, + "volume_down": { + "name": "Turn down volume", + "description": "Turns down the volume.", + "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 4, + 1024 ] } ] } }, - "volume_mute": { - "name": "Mute volume", - "description": "Mute a media player\u0027s volume.", - "fields": { - "is_volume_muted": { - "name": "Muted", - "description": "True/false for mute/unmute.", - "required": true, - "selector": { - "boolean": null - } - } - }, + "media_play_pause": { + "name": "Play/Pause", + "description": "Toggles play/pause.", + "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 16385 ] } ] } }, - "media_seek": { - "name": "Seek", - "description": "Send the media player the command to seek in current playing media.", - "fields": { - "seek_position": { - "name": "Position", - "description": "Position to seek to. The format is platform dependent.", - "required": true, - "selector": { - "number": { - "min": 0, - "max": 9223372036854775807, - "step": 0.01, - "mode": "box" - } - } - } - }, + "media_play": { + "name": "Play", + "description": "Starts playing.", + "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 16384 ] } ] } }, - "join": { - "name": "Join", - "description": "Group players together. Only works on platforms with support for player groups.", - "fields": { - "group_members": { - "name": "Group members", - "description": "The players which will be synced with the target player.", - "required": true, - "example": "- media_player.multiroom_player2\n- media_player.multiroom_player3\n", - "selector": { - "entity": { - "multiple": true, - "domain": "media_player" - } - } - } - }, + "media_pause": { + "name": "Pause", + "description": "Pauses.", + "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 1 ] } ] } }, - "select_source": { - "name": "Select source", - "description": "Send the media player the command to change input source.", - "fields": { - "source": { - "name": "Source", - "description": "Name of the source to switch to. Platform dependent.", - "required": true, - "example": "video1", - "selector": { - "text": null - } - } - }, + "media_stop": { + "name": "Stop", + "description": "Stops playing.", + "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 4096 ] } ] } }, - "select_sound_mode": { - "name": "Select sound mode", - "description": "Send the media player the command to change sound mode.", - "fields": { - "sound_mode": { - "name": "Sound mode", - "description": "Name of the sound mode to switch to.", - "example": "Music", + "media_next_track": { + "name": "Next", + "description": "Selects the next track.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 32 + ] + } + ] + } + }, + "media_previous_track": { + "name": "Previous", + "description": "Selects the previous track.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 16 + ] + } + ] + } + }, + "clear_playlist": { + "name": "Clear playlist", + "description": "Clears the playlist.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 8192 + ] + } + ] + } + }, + "volume_set": { + "name": "Set volume", + "description": "Sets the volume level.", + "fields": { + "volume_level": { + "required": true, + "selector": { + "number": { + "min": 0, + "max": 1, + "step": 0.01 + } + }, + "name": "Level", + "description": "The volume. 0 is inaudible, 1 is the maximum volume." + } + }, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 4 + ] + } + ] + } + }, + "volume_mute": { + "name": "Mute/unmute volume", + "description": "Mutes or unmutes the media player.", + "fields": { + "is_volume_muted": { + "required": true, + "selector": { + "boolean": null + }, + "name": "Muted", + "description": "Defines whether or not it is muted." + } + }, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 8 + ] + } + ] + } + }, + "media_seek": { + "name": "Seek", + "description": "Allows you to go to a different part of the media that is currently playing.", + "fields": { + "seek_position": { + "required": true, + "selector": { + "number": { + "min": 0, + "max": 9223372036854775807, + "step": 0.01, + "mode": "box" + } + }, + "name": "Position", + "description": "Target position in the currently playing media. The format is platform dependent." + } + }, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 2 + ] + } + ] + } + }, + "join": { + "name": "Join", + "description": "Groups media players together for synchronous playback. Only works on supported multiroom audio systems.", + "fields": { + "group_members": { + "required": true, + "example": "- media_player.multiroom_player2\n- media_player.multiroom_player3\n", + "selector": { + "entity": { + "multiple": true, + "domain": "media_player" + } + }, + "name": "Group members", + "description": "The players which will be synced with the playback specified in \u0060target\u0060." + } + }, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 524288 + ] + } + ] + } + }, + "select_source": { + "name": "Select source", + "description": "Sends the media player the command to change input source.", + "fields": { + "source": { + "required": true, + "example": "video1", "selector": { "text": null + }, + "name": "Source", + "description": "Name of the source to switch to. Platform dependent." + } + }, + "target": { + "entity": [ + { + "domain": [ + "media_player" + ], + "supported_features": [ + 2048 + ] } + ] + } + }, + "select_sound_mode": { + "name": "Select sound mode", + "description": "Selects a specific sound mode.", + "fields": { + "sound_mode": { + "example": "Music", + "selector": { + "text": null + }, + "name": "Sound mode", + "description": "Name of the sound mode to switch to." } }, "target": { @@ -2794,6 +2824,9 @@ { "domain": [ "media_player" + ], + "supported_features": [ + 65536 ] } ] @@ -2801,61 +2834,60 @@ }, "play_media": { "name": "Play media", - "description": "Send the media player the command for playing media.", + "description": "Starts playing specified media.", "fields": { "media_content_id": { - "name": "Content ID", - "description": "The ID of the content to play. Platform dependent.", "required": true, "example": "https://home-assistant.io/images/cast/splash.png", "selector": { "text": null - } + }, + "name": "Content ID", + "description": "The ID of the content to play. Platform dependent." }, "media_content_type": { - "name": "Content type", - "description": "The type of the content to play. Like image, music, tvshow, video, episode, channel or playlist.", "required": true, "example": "music", "selector": { "text": null - } + }, + "name": "Content type", + "description": "The type of the content to play. Such as image, music, tv show, video, episode, channel, or playlist." }, "enqueue": { - "name": "Enqueue", - "description": "If the content should be played now or be added to the queue.", + "filter": { + "supported_features": [ + 2097152 + ] + }, "required": false, "selector": { "select": { "options": [ - { - "label": "Play now", - "value": "play" - }, - { - "label": "Play next", - "value": "next" - }, - { - "label": "Add to queue", - "value": "add" - }, - { - "label": "Play now and clear queue", - "value": "replace" - } - ] + "play", + "next", + "add", + "replace" + ], + "translation_key": "enqueue" } - } + }, + "name": "Enqueue", + "description": "If the content should be played now or be added to the queue." }, "announce": { - "name": "Announce", - "description": "If the media should be played as an announcement.", + "filter": { + "supported_features": [ + 1048576 + ] + }, "required": false, "example": "true", "selector": { "boolean": null - } + }, + "name": "Announce", + "description": "If the media should be played as an announcement." } }, "target": { @@ -2863,6 +2895,9 @@ { "domain": [ "media_player" + ], + "supported_features": [ + 512 ] } ] @@ -2870,15 +2905,15 @@ }, "shuffle_set": { "name": "Shuffle", - "description": "Set shuffling state.", + "description": "Playback mode that selects the media in randomized order.", "fields": { "shuffle": { - "name": "Shuffle", - "description": "True/false for enabling/disabling shuffle.", "required": true, "selector": { "boolean": null - } + }, + "name": "Shuffle", + "description": "Whether or not shuffle mode is enabled." } }, "target": { @@ -2886,6 +2921,9 @@ { "domain": [ "media_player" + ], + "supported_features": [ + 32768 ] } ] @@ -2893,13 +2931,16 @@ }, "unjoin": { "name": "Unjoin", - "description": "Unjoin the player from a group. Only works on platforms with support for player groups.", + "description": "Removes the player from a group. Only works on platforms which support player groups.", "fields": {}, "target": { "entity": [ { "domain": [ "media_player" + ], + "supported_features": [ + 524288 ] } ] @@ -2907,30 +2948,22 @@ }, "repeat_set": { "name": "Repeat", - "description": "Set repeat mode", + "description": "Playback mode that plays the media in a loop.", "fields": { "repeat": { - "name": "Repeat mode", - "description": "Repeat mode to set.", "required": true, "selector": { "select": { "options": [ - { - "label": "Off", - "value": "off" - }, - { - "label": "Repeat all", - "value": "all" - }, - { - "label": "Repeat one", - "value": "one" - } - ] + "off", + "all", + "one" + ], + "translation_key": "repeat" } - } + }, + "name": "Repeat mode", + "description": "Repeat mode to set." } }, "target": { @@ -2938,395 +2971,161 @@ { "domain": [ "media_player" + ], + "supported_features": [ + 262144 ] } ] } } }, - "scheduler": { - "add": { - "name": "Add", - "description": "Create a new schedule entity", + "input_datetime": { + "reload": { + "name": "Reload", + "description": "Reloads helpers from the YAML-configuration.", + "fields": {} + }, + "set_datetime": { + "name": "Set", + "description": "Sets the date and/or time.", "fields": { - "weekdays": { - "name": "Weekdays", - "description": "Days of the week for which the schedule should be repeated", - "example": "[\u0022daily\u0022]", - "required": false, - "selector": { - "object": null - } - }, - "start_date": { - "name": "Start date", - "description": "Date from which schedule should be executed", - "example": "[\u00222021-01-01\u0022]", - "required": false, + "date": { + "example": "\u00222019-04-20\u0022", "selector": { - "object": null - } + "text": null + }, + "name": "Date", + "description": "The target date." }, - "end_date": { - "name": "End date", - "description": "Date until which schedule should be executed", - "example": "[\u00222021-12-31\u0022]", - "required": false, + "time": { + "example": "\u002205:04:20\u0022", "selector": { - "object": null - } + "time": null + }, + "name": "Time", + "description": "The target time." }, - "timeslots": { - "name": "Timeslots", - "description": "list of timeslots with their actions and optionally conditions (should be kept the same for all timeslots)", - "example": "[{start: \u002212:00\u0022, stop: \u002213:00\u0022, actions: [{service: \u0022light.turn_on\u0022, entity_id: \u0022light.my_lamp\u0022, service_data: {brightness: 200}}]}]", - "required": true, + "datetime": { + "example": "\u00222019-04-20 05:04:20\u0022", "selector": { - "object": null - } + "text": null + }, + "name": "Date \u0026 time", + "description": "The target date \u0026 time." }, - "repeat_type": { - "name": "Repeat Type", - "description": "Control what happens after the schedule is triggered", - "example": "\u0022repeat\u0022", - "required": true, + "timestamp": { "selector": { - "select": { - "options": [ - "repeat", - "single", - "pause" - ] + "number": { + "min": 0, + "max": 9223372036854775807, + "mode": "box" } - } - }, - "name": { - "name": "Name", - "description": "Friendly name for the schedule", - "required": false, - "example": "My schedule", - "selector": { - "text": null - } + }, + "name": "Timestamp", + "description": "The target date \u0026 time, expressed by a UNIX timestamp." } + }, + "target": { + "entity": [ + { + "domain": [ + "input_datetime" + ] + } + ] } + } + }, + "input_button": { + "reload": { + "name": "", + "description": "", + "fields": {} }, - "edit": { - "name": "Edit", - "description": "Edit a schedule entity", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Identifier of the scheduler entity.", - "example": "switch.schedule_abcdef", - "required": true, - "selector": { - "entity": { - "integration": "scheduler", - "domain": "switch" - } - } - }, - "weekdays": { - "name": "Weekdays", - "description": "Days of the week for which the schedule should be repeated", - "example": "[\u0022daily\u0022]", - "required": false, - "selector": { - "object": null - } - }, - "start_date": { - "name": "Start date", - "description": "Date from which schedule should be executed", - "example": "[\u00222021-01-01\u0022]", - "required": false, - "selector": { - "object": null - } - }, - "end_date": { - "name": "End date", - "description": "Date until which schedule should be executed", - "example": "[\u00222021-12-31\u0022]", - "required": false, - "selector": { - "object": null - } - }, - "timeslots": { - "name": "Timeslots", - "description": "list of timeslots with their actions and optionally conditions (should be kept the same for all timeslots)", - "example": "[{start: \u002212:00\u0022, stop: \u002213:00\u0022, actions: [{service: \u0022light.turn_on\u0022, entity_id: \u0022light.my_lamp\u0022, service_data: {brightness: 200}}]}]", - "required": false, - "selector": { - "object": null - } - }, - "repeat_type": { - "name": "Repeat Type", - "description": "Control what happens after the schedule is triggered", - "example": "\u0022repeat\u0022", - "required": false, - "selector": { - "select": { - "options": [ - "repeat", - "single", - "pause" - ] - } - } - }, - "name": { - "name": "Name", - "description": "Friendly name for the schedule", - "required": false, - "example": "My schedule", - "selector": { - "text": null + "press": { + "name": "Press", + "description": "Mimics the physical button press on the device.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "input_button" + ] } - } + ] } + } + }, + "input_text": { + "reload": { + "name": "Reload", + "description": "Reloads helpers from the YAML-configuration.", + "fields": {} }, - "remove": { - "name": "Remove", - "description": "Remove a schedule entity", + "set_value": { + "name": "Set", + "description": "Sets the value.", "fields": { - "entity_id": { - "name": "Entity", - "description": "Identifier of the scheduler entity.", - "example": "switch.schedule_abcdef", + "value": { "required": true, + "example": "This is an example text", "selector": { - "entity": { - "integration": "scheduler", - "domain": "switch" - } - } + "text": null + }, + "name": "Value", + "description": "The target value." } + }, + "target": { + "entity": [ + { + "domain": [ + "input_text" + ] + } + ] } + } + }, + "input_number": { + "reload": { + "name": "Reload", + "description": "Reloads helpers from the YAML-configuration.", + "fields": {} }, - "copy": { - "name": "Copy", - "description": "Duplicate a schedule entity", + "set_value": { + "name": "Set", + "description": "Sets the value.", "fields": { - "entity_id": { - "name": "Entity", - "description": "Identifier of the scheduler entity.", - "example": "switch.schedule_abcdef", + "value": { "required": true, "selector": { - "entity": { - "integration": "scheduler", - "domain": "switch" + "number": { + "min": 0, + "max": 9223372036854775807, + "step": 0.001, + "mode": "box" } - } - }, - "name": { - "name": "Name", - "description": "Friendly name for the copied schedule", - "required": false, - "example": "My schedule", - "selector": { - "text": null - } + }, + "name": "Value", + "description": "The target value." } - } - }, - "run_action": { - "name": "Run Action", - "description": "Execute the action of a schedule, optionally at a given time.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Identifier of the scheduler entity.", - "example": "switch.schedule_abcdef", - "required": true, - "selector": { - "entity": { - "integration": "scheduler", - "domain": "switch" - } - } - }, - "time": { - "name": "Time", - "description": "Time for which to evaluate the action (only useful for schedules with multiple timeslot)", - "example": "\u002212:00\u0022", - "required": false, - "selector": { - "time": null - } - } - } - } - }, - "ffmpeg": { - "start": { - "name": "Start", - "description": "Send a start command to a ffmpeg based sensor.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Name of entity that will start. Platform dependent.", - "selector": { - "entity": { - "integration": "ffmpeg", - "domain": "binary_sensor" - } - } - } - } - }, - "stop": { - "name": "Stop", - "description": "Send a stop command to a ffmpeg based sensor.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Name of entity that will stop. Platform dependent.", - "selector": { - "entity": { - "integration": "ffmpeg", - "domain": "binary_sensor" - } - } - } - } - }, - "restart": { - "name": "Restart", - "description": "Send a restart command to a ffmpeg based sensor.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Name of entity that will restart. Platform dependent.", - "selector": { - "entity": { - "integration": "ffmpeg", - "domain": "binary_sensor" - } - } - } - } - } - }, - "input_button": { - "reload": { - "name": "", - "description": "", - "fields": {} - }, - "press": { - "name": "Press", - "description": "Press the input button entity.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "input_button" - ] - } - ] - } - } - }, - "input_datetime": { - "reload": { - "name": "Reload", - "description": "Reload the input_datetime configuration.", - "fields": {} - }, - "set_datetime": { - "name": "Set", - "description": "This can be used to dynamically set the date and/or time.", - "fields": { - "date": { - "name": "Date", - "description": "The target date the entity should be set to.", - "example": "\u00222019-04-20\u0022", - "selector": { - "text": null - } - }, - "time": { - "name": "Time", - "description": "The target time the entity should be set to.", - "example": "\u002205:04:20\u0022", - "selector": { - "time": null - } - }, - "datetime": { - "name": "Date \u0026 Time", - "description": "The target date \u0026 time the entity should be set to.", - "example": "\u00222019-04-20 05:04:20\u0022", - "selector": { - "text": null - } - }, - "timestamp": { - "name": "Timestamp", - "description": "The target date \u0026 time the entity should be set to as expressed by a UNIX timestamp.", - "selector": { - "number": { - "min": 0, - "max": 9223372036854775807, - "mode": "box" - } - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "input_datetime" - ] - } - ] - } - } - }, - "input_number": { - "reload": { - "name": "Reload", - "description": "Reload the input_number configuration.", - "fields": {} - }, - "set_value": { - "name": "Set", - "description": "Set the value of an input number entity.", - "fields": { - "value": { - "name": "Value", - "description": "The target value the entity should be set to.", - "required": true, - "selector": { - "number": { - "min": 0, - "max": 9223372036854775807, - "step": 0.001, - "mode": "box" - } - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "input_number" - ] - } - ] + }, + "target": { + "entity": [ + { + "domain": [ + "input_number" + ] + } + ] } }, "increment": { "name": "Increment", - "description": "Increment the value of an input number entity by its stepping.", + "description": "Increments the value by 1 step.", "fields": {}, "target": { "entity": [ @@ -3340,7 +3139,7 @@ }, "decrement": { "name": "Decrement", - "description": "Decrement the value of an input number entity by its stepping.", + "description": "Decrements the current value by 1 step.", "fields": {}, "target": { "entity": [ @@ -3353,46 +3152,15 @@ } } }, - "input_text": { - "reload": { - "name": "Reload", - "description": "Reload the input_text configuration.", - "fields": {} - }, - "set_value": { - "name": "Set", - "description": "Set the value of an input text entity.", - "fields": { - "value": { - "name": "Value", - "description": "The target value the entity should be set to.", - "required": true, - "example": "This is an example text", - "selector": { - "text": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "input_text" - ] - } - ] - } - } - }, "input_select": { "reload": { "name": "Reload", - "description": "Reload the input_select configuration.", + "description": "Reloads helpers from the YAML-configuration.", "fields": {} }, "select_first": { "name": "First", - "description": "Select the first option of an input select entity.", + "description": "Selects the first option.", "fields": {}, "target": { "entity": [ @@ -3406,7 +3174,7 @@ }, "select_last": { "name": "Last", - "description": "Select the last option of an input select entity.", + "description": "Selects the last option.", "fields": {}, "target": { "entity": [ @@ -3420,15 +3188,15 @@ }, "select_next": { "name": "Next", - "description": "Select the next options of an input select entity.", + "description": "Select the next option.", "fields": { "cycle": { - "name": "Cycle", - "description": "If the option should cycle from the last to the first.", "default": true, "selector": { "boolean": null - } + }, + "name": "Cycle", + "description": "If the option should cycle from the last to the first option on the list." } }, "target": { @@ -3443,16 +3211,16 @@ }, "select_option": { "name": "Select", - "description": "Select an option of an input select entity.", + "description": "Selects an option.", "fields": { "option": { - "name": "Option", - "description": "Option to be selected.", "required": true, "example": "\u0022Item A\u0022", "selector": { "text": null - } + }, + "name": "Option", + "description": "Option to be selected." } }, "target": { @@ -3467,15 +3235,15 @@ }, "select_previous": { "name": "Previous", - "description": "Select the previous options of an input select entity.", + "description": "Selects the previous option.", "fields": { "cycle": { - "name": "Cycle", - "description": "If the option should cycle from the first to the last.", "default": true, "selector": { "boolean": null - } + }, + "name": "Cycle", + "description": "If the option should cycle from the last to the first option on the list." } }, "target": { @@ -3490,16 +3258,16 @@ }, "set_options": { "name": "Set options", - "description": "Set the options of an input select entity.", + "description": "Sets the options.", "fields": { "options": { - "name": "Options", - "description": "Options for the input select entity.", "required": true, "example": "[\u0022Item A\u0022, \u0022Item B\u0022, \u0022Item C\u0022]", "selector": { "object": null - } + }, + "name": "Options", + "description": "List of options." } }, "target": { @@ -3516,32 +3284,32 @@ "scene": { "reload": { "name": "Reload", - "description": "Reload the scene configuration.", + "description": "Reloads the scenes from the YAML-configuration.", "fields": {} }, "apply": { "name": "Apply", - "description": "Activate a scene with configuration.", + "description": "Activates a scene with configuration.", "fields": { "entities": { - "name": "Entities state", - "description": "The entities and the state that they need to be.", "required": true, "example": "light.kitchen: \u0022on\u0022\nlight.ceiling:\n state: \u0022on\u0022\n brightness: 80\n", "selector": { "object": null - } + }, + "name": "Entities state", + "description": "List of entities and their target state." }, "transition": { - "name": "Transition", - "description": "Transition duration it takes to bring devices to the state defined in the scene.", "selector": { "number": { "min": 0, "max": 300, "unit_of_measurement": "seconds" } - } + }, + "name": "Transition", + "description": "Time it takes the devices to transition into the states defined in the scene." } } }, @@ -3550,46 +3318,46 @@ "description": "Creates a new scene.", "fields": { "scene_id": { - "name": "Scene entity ID", - "description": "The entity_id of the new scene.", "required": true, "example": "all_lights", "selector": { "text": null - } + }, + "name": "Scene entity ID", + "description": "The entity ID of the new scene." }, "entities": { - "name": "Entities state", - "description": "The entities to control with the scene.", "example": "light.tv_back_light: \u0022on\u0022\nlight.ceiling:\n state: \u0022on\u0022\n brightness: 200\n", "selector": { "object": null - } + }, + "name": "Entities state", + "description": "List of entities and their target state. If your entities are already in the target state right now, use \u0060snapshot_entities\u0060 instead." }, "snapshot_entities": { - "name": "Snapshot entities", - "description": "The entities of which a snapshot is to be taken", "example": "- light.ceiling\n- light.kitchen\n", "selector": { "object": null - } + }, + "name": "Snapshot entities", + "description": "List of entities to be included in the snapshot. By taking a snapshot, you record the current state of those entities. If you do not want to use the current state of all your entities for this scene, you can combine the \u0060snapshot_entities\u0060 with \u0060entities\u0060." } } }, "turn_on": { "name": "Activate", - "description": "Activate a scene.", + "description": "Activates a scene.", "fields": { "transition": { - "name": "Transition", - "description": "Transition duration it takes to bring devices to the state defined in the scene.", "selector": { "number": { "min": 0, "max": 300, "unit_of_measurement": "seconds" } - } + }, + "name": "Transition", + "description": "Time it takes the devices to transition into the states defined in the scene." } }, "target": { @@ -3603,51 +3371,15 @@ } } }, - "wake_on_lan": { - "send_magic_packet": { - "name": "Send magic packet", - "description": "Send a \u0027magic packet\u0027 to wake up a device with \u0027Wake-On-LAN\u0027 capabilities.", - "fields": { - "mac": { - "name": "MAC address", - "description": "MAC address of the device to wake up.", - "required": true, - "example": "aa:bb:cc:dd:ee:ff", - "selector": { - "text": null - } - }, - "broadcast_address": { - "name": "Broadcast address", - "description": "Broadcast IP where to send the magic packet.", - "example": "192.168.255.255", - "selector": { - "text": null - } - }, - "broadcast_port": { - "name": "Broadcast port", - "description": "Port where to send the magic packet.", - "default": 9, - "selector": { - "number": { - "min": 1, - "max": 65535 - } - } - } - } - } - }, "input_boolean": { "reload": { "name": "Reload", - "description": "Reload the input_boolean configuration", + "description": "Reloads helpers from the YAML-configuration.", "fields": {} }, "turn_on": { "name": "Turn on", - "description": "Turn on an input boolean", + "description": "Turns on the helper.", "fields": {}, "target": { "entity": [ @@ -3661,7 +3393,7 @@ }, "turn_off": { "name": "Turn off", - "description": "Turn off an input boolean", + "description": "Turns off the helper.", "fields": {}, "target": { "entity": [ @@ -3675,7 +3407,7 @@ }, "toggle": { "name": "Toggle", - "description": "Toggle an input boolean", + "description": "Toggles the helper on/off.", "fields": {}, "target": { "entity": [ @@ -3688,162 +3420,190 @@ } } }, - "update": { - "install": { - "name": "Install update", - "description": "Install an update for this device or service", - "fields": { - "version": { - "name": "Version", - "description": "Version to install, if omitted, the latest version will be installed.", - "required": false, - "example": "1.0.0", - "selector": { - "text": null - } - }, - "backup": { - "name": "Backup", - "description": "Backup before installing the update, if supported by the integration.", - "required": false, - "selector": { - "boolean": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "update" - ] - } - ] - } - }, - "skip": { - "name": "Skip update", - "description": "Mark currently available update as skipped.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "update" - ] - } - ] - } - }, - "clear_skipped": { - "name": "Clear skipped update", - "description": "Removes the skipped version marker from an update.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "update" - ] - } - ] - } - } - }, "device_tracker": { "see": { "name": "See", - "description": "Control tracked device.", + "description": "Records a seen tracked device.", "fields": { "mac": { - "name": "MAC address", - "description": "MAC address of device", "example": "FF:FF:FF:FF:FF:FF", "selector": { "text": null - } + }, + "name": "MAC address", + "description": "MAC address of the device." }, "dev_id": { - "name": "Device ID", - "description": "Id of device (find id in known_devices.yaml).", "example": "phonedave", "selector": { "text": null - } + }, + "name": "Device ID", + "description": "ID of the device (find the ID in \u0060known_devices.yaml\u0060)." }, "host_name": { - "name": "Host name", - "description": "Hostname of device", "example": "Dave", "selector": { "text": null - } + }, + "name": "Hostname", + "description": "Hostname of the device." }, "location_name": { - "name": "Location name", - "description": "Name of location where device is located (not_home is away).", "example": "home", "selector": { "text": null - } + }, + "name": "Location", + "description": "Name of the location where the device is located. The options are: \u0060home\u0060, \u0060not_home\u0060, or the name of the zone." }, "gps": { - "name": "GPS coordinates", - "description": "GPS coordinates where device is located (latitude, longitude).", "example": "[51.509802, -0.086692]", "selector": { "object": null - } + }, + "name": "GPS coordinates", + "description": "GPS coordinates where the device is located, specified by latitude and longitude (for example: [51.513845, -0.100539])." }, "gps_accuracy": { - "name": "GPS accuracy", - "description": "Accuracy of GPS coordinates.", "selector": { "number": { "min": 1, "max": 100, "unit_of_measurement": "%" } - } + }, + "name": "GPS accuracy", + "description": "Accuracy of the GPS coordinates." }, "battery": { - "name": "Battery level", - "description": "Battery level of device.", "selector": { "number": { "min": 0, "max": 100, "unit_of_measurement": "%" } - } + }, + "name": "Battery level", + "description": "Battery level of the device." } } } }, - "camera": { - "enable_motion_detection": { - "name": "Enable motion detection", - "description": "Enable the motion detection in a camera.", + "script": { + "activate_alexa_actionable_notification": { + "name": "activate_alexa_actionable_notification", + "description": "Activates an actionable notification on a specific echo device", + "fields": { + "text": { + "description": "The text you would like alexa to speak.", + "example": "What would you like the thermostat set to?", + "required": false, + "advanced": false + }, + "event_id": { + "description": "Correlation ID for event responses", + "example": "ask_for_temperature", + "required": false, + "advanced": false + }, + "alexa_device": { + "description": "Alexa device you want to trigger", + "example": "media_player.bedroom_echo", + "required": false, + "advanced": false + } + }, + "response": { + "optional": true + } + }, + "arrive_home": { + "name": "arrive_home", + "description": "", "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "camera" - ] - } - ] + "response": { + "optional": true } }, - "disable_motion_detection": { - "name": "Disable motion detection", - "description": "Disable the motion detection in a camera.", + "im_text": { + "name": "im_text", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "play_youtube_on_lg": { + "name": "Play YouTube on LG", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "ring_mqtt_interval": { + "name": "Set Ring Mqtt Snapshot Interval", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "tts": { + "name": "tts", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "tts_text": { + "name": "tts_text", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "turn_on_lg_tele_lounge": { + "name": "turn_on_lg_tele_lounge", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "turn_on_lg_tele_master": { + "name": "turn_on_lg_tele_master", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "weather": { + "name": "weather", + "description": "", + "fields": {}, + "response": { + "optional": true + } + }, + "reload": { + "name": "Reload", + "description": "Reloads all the available scripts.", + "fields": {} + }, + "turn_on": { + "name": "Turn on", + "description": "Runs the sequence of actions defined in a script.", "fields": {}, "target": { "entity": [ { "domain": [ - "camera" + "script" ] } ] @@ -3851,136 +3611,192 @@ }, "turn_off": { "name": "Turn off", - "description": "Turn off camera.", + "description": "Stops a running script.", "fields": {}, "target": { "entity": [ { "domain": [ - "camera" + "script" ] } ] } }, - "turn_on": { - "name": "Turn on", - "description": "Turn on camera.", + "toggle": { + "name": "Toggle", + "description": "Toggle a script. Starts it, if isn\u0027t running, stops it otherwise.", "fields": {}, "target": { "entity": [ { "domain": [ - "camera" + "script" ] } ] } - }, - "snapshot": { - "name": "Take snapshot", - "description": "Take a snapshot from a camera.", + } + }, + "template": { + "reload": { + "name": "Reload", + "description": "Reloads template entities from the YAML-configuration.", + "fields": {} + } + }, + "automation": { + "trigger": { + "name": "Trigger", + "description": "Triggers the actions of an automation.", "fields": { - "filename": { - "name": "Filename", - "description": "Template of a Filename. Variable is entity_id.", - "required": true, - "example": "/tmp/snapshot_{{ entity_id.name }}.jpg", + "skip_condition": { + "default": true, "selector": { - "text": null - } + "boolean": null + }, + "name": "Skip conditions", + "description": "Defines whether or not the conditions will be skipped." } }, "target": { "entity": [ { "domain": [ - "camera" + "automation" ] } ] } }, - "play_stream": { - "name": "Play stream", - "description": "Play camera stream on supported media player.", - "fields": { - "media_player": { - "name": "Media Player", - "description": "Name(s) of media player to stream to.", - "required": true, - "selector": { - "entity": { - "domain": "media_player" - } - } - }, - "format": { - "name": "Format", - "description": "Stream format supported by media player.", - "default": "hls", - "selector": { - "select": { - "options": [ - "hls" - ] - } - } - } - }, + "toggle": { + "name": "Toggle", + "description": "Toggles (enable / disable) an automation.", + "fields": {}, "target": { "entity": [ { "domain": [ - "camera" + "automation" ] } ] } }, - "record": { - "name": "Record", - "description": "Record live camera feed.", + "turn_on": { + "name": "Turn on", + "description": "Enables an automation.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "automation" + ] + } + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Disables an automation.", "fields": { - "filename": { - "name": "Filename", - "description": "Template of a Filename. Variable is entity_id. Must be mp4.", - "required": true, - "example": "/tmp/snapshot_{{ entity_id.name }}.mp4", + "stop_actions": { + "default": true, "selector": { - "text": null + "boolean": null + }, + "name": "Stop actions", + "description": "Stops currently running actions." + } + }, + "target": { + "entity": [ + { + "domain": [ + "automation" + ] } - }, - "duration": { - "name": "Duration", - "description": "Target recording length.", - "default": 30, + ] + } + }, + "reload": { + "name": "Reload", + "description": "Reloads the automation configuration.", + "fields": {} + } + }, + "time": { + "set_value": { + "name": "Set Time", + "description": "Sets the time.", + "fields": { + "time": { + "required": true, + "example": "22:15", "selector": { - "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" - } + "time": null + }, + "name": "Time", + "description": "The time to set." + } + }, + "target": { + "entity": [ + { + "domain": [ + "time" + ] } - }, - "lookback": { - "name": "Lookback", - "description": "Target lookback period to include in addition to duration. Only available if there is currently an active HLS stream.", - "default": 0, + ] + } + } + }, + "number": { + "set_value": { + "name": "Set", + "description": "Sets the value of a number.", + "fields": { + "value": { + "example": 42, "selector": { - "number": { - "min": 0, - "max": 300, - "unit_of_measurement": "seconds" - } + "text": null + }, + "name": "Value", + "description": "The target value to set." + } + }, + "target": { + "entity": [ + { + "domain": [ + "number" + ] } + ] + } + } + }, + "text": { + "set_value": { + "name": "Set value", + "description": "Sets the value.", + "fields": { + "value": { + "required": true, + "example": "Hello world!", + "selector": { + "text": null + }, + "name": "Value", + "description": "Enter your text." } }, "target": { "entity": [ { "domain": [ - "camera" + "text" ] } ] @@ -4073,136 +3889,196 @@ } } }, - "script": { - "activate_alexa_actionable_notification": { - "name": "activate_alexa_actionable_notification", - "description": "Activates an actionable notification on a specific echo device", + "wake_on_lan": { + "send_magic_packet": { + "name": "Send magic packet", + "description": "Sends a \u0027magic packet\u0027 to wake up a device with \u0027Wake-On-LAN\u0027 capabilities.", "fields": { - "text": { - "description": "The text you would like alexa to speak.", - "example": "What would you like the thermostat set to?", - "required": false, - "advanced": false + "mac": { + "required": true, + "example": "aa:bb:cc:dd:ee:ff", + "selector": { + "text": null + }, + "name": "MAC address", + "description": "MAC address of the device to wake up." }, - "event_id": { - "description": "Correlation ID for event responses", - "example": "ask_for_temperature", + "broadcast_address": { + "example": "192.168.255.255", + "selector": { + "text": null + }, + "name": "Broadcast address", + "description": "Broadcast IP where to send the magic packet." + }, + "broadcast_port": { + "default": 9, + "selector": { + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Broadcast port", + "description": "Port where to send the magic packet." + } + } + } + }, + "update": { + "install": { + "name": "Install update", + "description": "Installs an update for this device or service.", + "fields": { + "version": { "required": false, - "advanced": false + "example": "1.0.0", + "selector": { + "text": null + }, + "name": "Version", + "description": "The version to install. If omitted, the latest version will be installed." }, - "alexa_device": { - "description": "Alexa device you want to trigger", - "example": "media_player.bedroom_echo", + "backup": { "required": false, - "advanced": false + "selector": { + "boolean": null + }, + "name": "Backup", + "description": "If supported by the integration, this creates a backup before starting the update ." } - } - }, - "arrive_home": { - "name": "arrive_home", - "description": "", - "fields": {} - }, - "im_text": { - "name": "im_text", - "description": "", - "fields": {} - }, - "play_youtube_on_lg": { - "name": "Play YouTube on LG", - "description": "", - "fields": {} - }, - "ring_mqtt_interval": { - "name": "Set Ring Mqtt Snapshot Interval", - "description": "", - "fields": {} - }, - "tts": { - "name": "tts", - "description": "", - "fields": {} - }, - "tts_text": { - "name": "tts_text", - "description": "", - "fields": {} - }, - "turn_on_lg_tele_lounge": { - "name": "turn_on_lg_tele_lounge", - "description": "", - "fields": {} - }, - "turn_on_lg_tele_master": { - "name": "turn_on_lg_tele_master", - "description": "", - "fields": {} - }, - "weather": { - "name": "weather", - "description": "", - "fields": {} - }, - "reload": { - "name": "Reload", - "description": "Reload all the available scripts", - "fields": {} - }, - "turn_on": { - "name": "Turn on", - "description": "Turn on script", - "fields": {}, + }, "target": { "entity": [ { "domain": [ - "script" + "update" ] } ] } }, - "turn_off": { - "name": "Turn off", - "description": "Turn off script", + "skip": { + "name": "Skip update", + "description": "Marks currently available update as skipped.", "fields": {}, "target": { "entity": [ { "domain": [ - "script" + "update" ] } ] } }, - "toggle": { - "name": "Toggle", - "description": "Toggle script", + "clear_skipped": { + "name": "Clear skipped update", + "description": "Removes the skipped version marker from an update.", "fields": {}, "target": { "entity": [ { "domain": [ - "script" + "update" ] } ] } } }, - "water_heater": { - "set_away_mode": { - "name": "Set away mode", - "description": "Turn away mode on/off for water_heater device.", + "melcloud": { + "set_vane_horizontal": { + "name": "Set vane horizontal", + "description": "Sets horizontal vane position.", + "fields": { + "position": { + "required": true, + "example": "auto", + "selector": { + "text": null + }, + "name": "Position", + "description": "Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute." + } + }, + "target": { + "entity": [ + { + "integration": "melcloud", + "domain": [ + "climate" + ] + } + ] + } + }, + "set_vane_vertical": { + "name": "Set vane vertical", + "description": "Sets vertical vane position.", + "fields": { + "position": { + "required": true, + "example": "auto", + "selector": { + "text": null + }, + "name": "Position", + "description": "Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute." + } + }, + "target": { + "entity": [ + { + "integration": "melcloud", + "domain": [ + "climate" + ] + } + ] + } + } + }, + "water_heater": { + "turn_on": { + "name": "Turn on", + "description": "Turns water heater on.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "water_heater" + ] + } + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Turns water heater off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "water_heater" + ] + } + ] + } + }, + "set_away_mode": { + "name": "Set away mode", + "description": "Turns away mode on/off.", "fields": { "away_mode": { - "name": "Away mode", - "description": "New value of away mode.", "required": true, "selector": { "boolean": null - } + }, + "name": "Away mode", + "description": "New value of away mode." } }, "target": { @@ -4217,11 +4093,9 @@ }, "set_temperature": { "name": "Set temperature", - "description": "Set target temperature of water_heater device.", + "description": "Sets the target temperature.", "fields": { "temperature": { - "name": "Temperature", - "description": "New target temperature for water heater.", "required": true, "selector": { "number": { @@ -4230,15 +4104,17 @@ "step": 0.5, "unit_of_measurement": "\u00B0" } - } + }, + "name": "Temperature", + "description": "New target temperature for the water heater." }, "operation_mode": { - "name": "Operation mode", - "description": "New value of operation mode.", "example": "eco", "selector": { "text": null - } + }, + "name": "Operation mode", + "description": "New value of the operation mode. For a list of possible modes, refer to the integration documentation." } }, "target": { @@ -4253,16 +4129,16 @@ }, "set_operation_mode": { "name": "Set operation mode", - "description": "Set operation mode for water_heater device.", + "description": "Sets the operation mode.", "fields": { "operation_mode": { - "name": "Operation mode", - "description": "New value of operation mode.", "required": true, "example": "eco", "selector": { "text": null - } + }, + "name": "Operation mode", + "description": "New value of the operation mode. For a list of possible modes, refer to the integration documentation." } }, "target": { @@ -4274,4510 +4150,4401 @@ } ] } - }, - "turn_off": { - "name": "", - "description": "", - "fields": {} - }, - "turn_on": { - "name": "", - "description": "", - "fields": {} } }, - "telegram_bot": { - "send_message": { - "name": "Send message", - "description": "Send a notification.", + "fan": { + "turn_on": { + "name": "Turn on", + "description": "Turns fan on.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "percentage": { + "filter": { + "supported_features": [ + 1 + ] + }, "selector": { - "text": null - } + "number": { + "min": 0, + "max": 100, + "unit_of_measurement": "%" + } + }, + "name": "Percentage", + "description": "Speed of the fan." }, - "title": { - "name": "Title", - "description": "Optional title for your notification. Will be composed as \u0027%title\\n%message\u0027", - "example": "Your Garage Door Friend", + "preset_mode": { + "example": "auto", + "filter": { + "supported_features": [ + 8 + ] + }, "selector": { "text": null + }, + "name": "Preset mode", + "description": "Preset mode." + } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ] } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the notification to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "parse_mode": { - "name": "Parse mode", - "description": "Parser for the message text.", - "selector": { - "select": { - "options": [ - "html", - "markdown", - "markdown2" - ] - } - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Turns fan off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "fan" + ] } - }, - "disable_web_page_preview": { - "name": "Disable web page preview", - "description": "Disables link previews for links in the message.", - "selector": { - "boolean": null + ] + } + }, + "toggle": { + "name": "Toggle", + "description": "Toggles the fan on/off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "fan" + ] } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send message. Will help with timeout errors (poor internet connection, etc)s", + ] + } + }, + "increase_speed": { + "name": "Increase speed", + "description": "Increases the speed of the fan.", + "fields": { + "percentage_step": { + "advanced": true, + "required": false, "selector": { "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" + "min": 0, + "max": 100, + "unit_of_measurement": "%" } - } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard. Empty list clears a previously set keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null - } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [\u0022Text button1:/button1, Text button2:/button2\u0022, \u0022Text button3:/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null - } - }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", - "selector": { - "text": null - } + }, + "name": "Increment", + "description": "Increases the speed by a percentage step." } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ], + "supported_features": [ + 1 + ] + } + ] } }, - "send_photo": { - "name": "Send photo", - "description": "Send a photo.", + "decrease_speed": { + "name": "Decrease speed", + "description": "Decreases the speed of the fan.", "fields": { - "url": { - "name": "URL", - "description": "Remote path to an image.", - "example": "http://example.org/path/to/the/image.png", - "selector": { - "text": null - } - }, - "file": { - "name": "File", - "description": "Local path to an image.", - "example": "/path/to/the/image.png", - "selector": { - "text": null - } - }, - "caption": { - "name": "Caption", - "description": "The title of the image.", - "example": "My image", - "selector": { - "text": null - } - }, - "username": { - "name": "Username", - "description": "Username for a URL which require HTTP authentication.", - "example": "myuser", - "selector": { - "text": null - } - }, - "password": { - "name": "Password", - "description": "Password (or bearer token) for a URL which require HTTP authentication.", - "example": "myuser_pwd", - "selector": { - "text": null - } - }, - "authentication": { - "name": "Authentication method", - "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060.", - "default": "digest", + "percentage_step": { + "advanced": true, + "required": false, "selector": { - "select": { - "options": [ - "digest", - "bearer_token" - ] + "number": { + "min": 0, + "max": 100, + "unit_of_measurement": "%" } + }, + "name": "Decrement", + "description": "Decreases the speed by a percentage step." + } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ], + "supported_features": [ + 1 + ] } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", + ] + } + }, + "oscillate": { + "name": "Oscillate", + "description": "Controls oscillatation of the fan.", + "fields": { + "oscillating": { + "required": true, "selector": { - "object": null + "boolean": null + }, + "name": "Oscillating", + "description": "Turn on/off oscillation." + } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ], + "supported_features": [ + 2 + ] } - }, - "parse_mode": { - "name": "Parse mode", - "description": "Parser for the message text.", + ] + } + }, + "set_direction": { + "name": "Set direction", + "description": "Sets the fan rotation direction.", + "fields": { + "direction": { + "required": true, "selector": { "select": { "options": [ - "html", - "markdown", - "markdown2" - ] + "forward", + "reverse" + ], + "translation_key": "direction" } + }, + "name": "Direction", + "description": "Direction to rotate." + } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ], + "supported_features": [ + 4 + ] } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null - } - }, - "verify_ssl": { - "name": "Verify SSL", - "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server.", - "selector": { - "boolean": null - } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send photo. Will help with timeout errors (poor internet connection, etc)", + ] + } + }, + "set_percentage": { + "name": "Set speed", + "description": "Sets the fan speed.", + "fields": { + "percentage": { + "required": true, "selector": { "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" + "min": 0, + "max": 100, + "unit_of_measurement": "%" } + }, + "name": "Percentage", + "description": "Speed of the fan." + } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ], + "supported_features": [ + 1 + ] } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null - } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", + ] + } + }, + "set_preset_mode": { + "name": "Set preset mode", + "description": "Sets preset mode.", + "fields": { + "preset_mode": { + "required": true, + "example": "auto", "selector": { - "object": null + "text": null + }, + "name": "Preset mode", + "description": "Preset mode." + } + }, + "target": { + "entity": [ + { + "domain": [ + "fan" + ], + "supported_features": [ + 8 + ] } - }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", + ] + } + } + }, + "lock": { + "unlock": { + "name": "Unlock", + "description": "Unlocks a lock.", + "fields": { + "code": { + "example": 1234, "selector": { "text": null - } + }, + "name": "Code", + "description": "Code used to unlock the lock." } + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ] + } + ] } }, - "send_sticker": { - "name": "Send sticker", - "description": "Send a sticker.", + "lock": { + "name": "Lock", + "description": "Locks a lock.", "fields": { - "url": { - "name": "URL", - "description": "Remote path to a static .webp or animated .tgs sticker.", - "example": "http://example.org/path/to/the/sticker.webp", + "code": { + "example": 1234, "selector": { "text": null + }, + "name": "Code", + "description": "Code used to lock the lock." + } + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ] } - }, - "file": { - "name": "File", - "description": "Local path to a static .webp or animated .tgs sticker.", - "example": "/path/to/the/sticker.webp", + ] + } + }, + "open": { + "name": "Open", + "description": "Opens a lock.", + "fields": { + "code": { + "example": 1234, "selector": { "text": null - } - }, - "sticker_id": { - "name": "Sticker ID", - "description": "ID of a sticker that exists on telegram servers", - "example": "CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE", - "selector": { - "text": null - } - }, - "username": { - "name": "Username", - "description": "Username for a URL which require HTTP authentication.", - "example": "myuser", - "selector": { - "text": null - } - }, - "password": { - "name": "Password", - "description": "Password (or bearer token) for a URL which require HTTP authentication.", - "example": "myuser_pwd", - "selector": { - "text": null - } - }, - "authentication": { - "name": "Authentication method", - "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060.", - "default": "digest", - "selector": { - "select": { - "options": [ - "digest", - "bearer_token" - ] - } - } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null - } - }, - "verify_ssl": { - "name": "Verify SSL", - "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server.", - "selector": { - "boolean": null - } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send sticker. Will help with timeout errors (poor internet connection, etc)", - "selector": { - "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" - } - } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null - } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null - } - }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", - "selector": { - "text": null - } - } - } - }, - "send_animation": { - "name": "Send animation", - "description": "Send an anmiation.", - "fields": { - "url": { - "name": "URL", - "description": "Remote path to a GIF or H.264/MPEG-4 AVC video without sound.", - "example": "http://example.org/path/to/the/animation.gif", - "selector": { - "text": null - } - }, - "file": { - "name": "File", - "description": "Local path to a GIF or H.264/MPEG-4 AVC video without sound.", - "example": "/path/to/the/animation.gif", - "selector": { - "text": null - } - }, - "caption": { - "name": "Caption", - "description": "The title of the animation.", - "example": "My animation", - "selector": { - "text": null - } - }, - "username": { - "name": "Username", - "description": "Username for a URL which require HTTP authentication.", - "example": "myuser", - "selector": { - "text": null - } - }, - "password": { - "name": "Password", - "description": "Password (or bearer token) for a URL which require HTTP authentication.", - "example": "myuser_pwd", - "selector": { - "text": null - } - }, - "authentication": { - "name": "Authentication method", - "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060.", - "default": "digest", - "selector": { - "select": { - "options": [ - "digest", - "bearer_token" - ] - } - } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "parse_mode": { - "name": "Parse Mode", - "description": "Parser for the message text.", - "selector": { - "select": { - "options": [ - "html", - "markdown", - "markdown2" - ] - } - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null - } - }, - "verify_ssl": { - "name": "Verify SSL", - "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server.", - "selector": { - "boolean": null - } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send sticker. Will help with timeout errors (poor internet connection, etc)", - "selector": { - "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" - } - } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null - } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null - } + }, + "name": "Code", + "description": "Code used to open the lock." } - } - }, - "send_video": { - "name": "Send video", - "description": "Send a video.", - "fields": { - "url": { - "name": "URL", - "description": "Remote path to a video.", - "example": "http://example.org/path/to/the/video.mp4", - "selector": { - "text": null - } - }, - "file": { - "name": "File", - "description": "Local path to a video.", - "example": "/path/to/the/video.mp4", - "selector": { - "text": null - } - }, - "caption": { - "name": "Caption", - "description": "The title of the video.", - "example": "My video", - "selector": { - "text": null - } - }, - "username": { - "name": "Username", - "description": "Username for a URL which require HTTP authentication.", - "example": "myuser", - "selector": { - "text": null - } - }, - "password": { - "name": "Password", - "description": "Password (or bearer token) for a URL which require HTTP authentication.", - "example": "myuser_pwd", - "selector": { - "text": null - } - }, - "authentication": { - "name": "Authentication method", - "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060.", - "default": "digest", - "selector": { - "select": { - "options": [ - "digest", - "bearer_token" - ] - } - } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "parse_mode": { - "name": "Parse mode", - "description": "Parser for the message text.", - "selector": { - "select": { - "options": [ - "html", - "markdown", - "markdown2" - ] - } - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null - } - }, - "verify_ssl": { - "name": "Verify SSL", - "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server.", - "selector": { - "boolean": null - } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send video. Will help with timeout errors (poor internet connection, etc)", - "selector": { - "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" - } - } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ], + "supported_features": [ + 1 + ] } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null + ] + } + } + }, + "cover": { + "open_cover": { + "name": "Open", + "description": "Opens a cover.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 1 + ] } - }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", - "selector": { - "text": null + ] + } + }, + "close_cover": { + "name": "Close", + "description": "Closes a cover.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 2 + ] } - } + ] } }, - "send_voice": { - "name": "Send voice", - "description": "Send a voice message.", + "set_cover_position": { + "name": "Set position", + "description": "Moves a cover to a specific position.", "fields": { - "url": { - "name": "URL", - "description": "Remote path to a voice message.", - "example": "http://example.org/path/to/the/voice.opus", - "selector": { - "text": null - } - }, - "file": { - "name": "File", - "description": "Local path to a voice message.", - "example": "/path/to/the/voice.opus", - "selector": { - "text": null - } - }, - "caption": { - "name": "Caption", - "description": "The title of the voice message.", - "example": "My microphone recording", - "selector": { - "text": null - } - }, - "username": { - "name": "Username", - "description": "Username for a URL which require HTTP authentication.", - "example": "myuser", + "position": { + "required": true, "selector": { - "text": null + "number": { + "min": 0, + "max": 100, + "unit_of_measurement": "%" + } + }, + "name": "Position", + "description": "Target position." + } + }, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 4 + ] } - }, - "password": { - "name": "Password", - "description": "Password (or bearer token) for a URL which require HTTP authentication.", - "example": "myuser_pwd", - "selector": { - "text": null + ] + } + }, + "stop_cover": { + "name": "Stop", + "description": "Stops the cover movement.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 8 + ] } - }, - "authentication": { - "name": "Authentication method", - "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060.", - "default": "digest", - "selector": { - "select": { - "options": [ - "digest", - "bearer_token" - ] - } + ] + } + }, + "toggle": { + "name": "Toggle", + "description": "Toggles a cover open/closed.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 3 + ] } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null + ] + } + }, + "open_cover_tilt": { + "name": "Open tilt", + "description": "Tilts a cover open.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 16 + ] } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null + ] + } + }, + "close_cover_tilt": { + "name": "Close tilt", + "description": "Tilts a cover to close.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 32 + ] } - }, - "verify_ssl": { - "name": "Verify SSL", - "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server.", - "selector": { - "boolean": null + ] + } + }, + "stop_cover_tilt": { + "name": "Stop tilt", + "description": "Stops a tilting cover movement.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 64 + ] } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send voice. Will help with timeout errors (poor internet connection, etc)", + ] + } + }, + "set_cover_tilt_position": { + "name": "Set tilt position", + "description": "Moves a cover tilt to a specific position.", + "fields": { + "tilt_position": { + "required": true, "selector": { "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" + "min": 0, + "max": 100, + "unit_of_measurement": "%" } + }, + "name": "Tilt position", + "description": "Target tilt positition." + } + }, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 128 + ] } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null - } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null + ] + } + }, + "toggle_cover_tilt": { + "name": "Toggle tilt", + "description": "Toggles a cover tilt open/closed.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "cover" + ], + "supported_features": [ + 48 + ] } + ] + } + } + }, + "alexa_media": { + "update_last_called": { + "name": "", + "description": "Forces update of last_called echo device for each Alexa account.", + "fields": { + "email": { + "description": "List of Alexa accounts to update. If empty, will update all known accounts.", + "example": "my_email@alexa.com" + } + } + }, + "clear_history": { + "name": "", + "description": "Clear last entries from Alexa history for each Alexa account.", + "fields": { + "email": { + "description": "List of Alexa accounts to update. If empty, will delete from all known accounts.", + "example": "my_email@alexa.com" }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", - "selector": { - "text": null - } + "entries": { + "description": "Number of entries to clear from 1 to 50. If empty, clear 50.", + "example": 50 } } }, - "send_document": { - "name": "Send document", - "description": "Send a document.", + "force_logout": { + "name": "", + "description": "Force logout of Alexa Login account and deletion of .pickle. Intended for debugging use.", "fields": { - "url": { - "name": "URL", - "description": "Remote path to a document.", - "example": "http://example.org/path/to/the/document.odf", + "email": { + "description": "List of Alexa accounts to log out. If empty, will log out from all known accounts.", + "example": "my_email@alexa.com" + } + } + } + }, + "alarm_control_panel": { + "alarm_disarm": { + "name": "Disarm", + "description": "Disarms the alarm.", + "fields": { + "code": { + "example": "1234", "selector": { "text": null + }, + "name": "Code", + "description": "Code to disarm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ] } - }, - "file": { - "name": "File", - "description": "Local path to a document.", - "example": "/tmp/whatever.odf", + ] + } + }, + "alarm_arm_home": { + "name": "Arm home", + "description": "Sets the alarm to: _armed, but someone is home_.", + "fields": { + "code": { + "example": "1234", "selector": { "text": null + }, + "name": "Code", + "description": "Code to arm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ], + "supported_features": [ + 1 + ] } - }, - "caption": { - "name": "Caption", - "description": "The title of the document.", - "example": "Document Title xy", + ] + } + }, + "alarm_arm_away": { + "name": "Arm away", + "description": "Sets the alarm to: _armed, no one home_.", + "fields": { + "code": { + "example": "1234", "selector": { "text": null + }, + "name": "Code", + "description": "Code to arm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ], + "supported_features": [ + 2 + ] } - }, - "username": { - "name": "Username", - "description": "Username for a URL which require HTTP authentication.", - "example": "myuser", + ] + } + }, + "alarm_arm_night": { + "name": "Arm night", + "description": "Sets the alarm to: _armed for the night_.", + "fields": { + "code": { + "example": "1234", "selector": { "text": null + }, + "name": "Code", + "description": "Code to arm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ], + "supported_features": [ + 4 + ] } - }, - "password": { - "name": "Password", - "description": "Password (or bearer token) for a URL which require HTTP authentication.", - "example": "myuser_pwd", + ] + } + }, + "alarm_arm_vacation": { + "name": "Arm vacation", + "description": "Sets the alarm to: _armed for vacation_.", + "fields": { + "code": { + "example": "1234", "selector": { "text": null + }, + "name": "Code", + "description": "Code to arm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ], + "supported_features": [ + 32 + ] } - }, - "authentication": { - "name": "Authentication method", - "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060.", - "default": "digest", - "selector": { - "select": { - "options": [ - "digest", - "bearer_token" - ] - } - } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "parse_mode": { - "name": "Parse mode", - "description": "Parser for the message text.", - "selector": { - "select": { - "options": [ - "html", - "markdown", - "markdown2" - ] - } - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", + ] + } + }, + "alarm_arm_custom_bypass": { + "name": "Arm with custom bypass", + "description": "Arms the alarm while allowing to bypass a custom area.", + "fields": { + "code": { + "example": "1234", "selector": { - "boolean": null + "text": null + }, + "name": "Code", + "description": "Code to arm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ], + "supported_features": [ + 16 + ] } - }, - "verify_ssl": { - "name": "Verify SSL", - "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server.", + ] + } + }, + "alarm_trigger": { + "name": "Trigger", + "description": "Enables an external alarm trigger.", + "fields": { + "code": { + "example": "1234", "selector": { - "boolean": null + "text": null + }, + "name": "Code", + "description": "Code to arm the alarm." + } + }, + "target": { + "entity": [ + { + "domain": [ + "alarm_control_panel" + ], + "supported_features": [ + 8 + ] } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send document. Will help with timeout errors (poor internet connection, etc)", - "selector": { - "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" - } + ] + } + } + }, + "camera": { + "enable_motion_detection": { + "name": "Enable motion detection", + "description": "Enables the motion detection.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null + ] + } + }, + "disable_motion_detection": { + "name": "Disable motion detection", + "description": "Disables the motion detection.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Turns off the camera.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] } - }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", - "selector": { - "text": null + ] + } + }, + "turn_on": { + "name": "Turn on", + "description": "Turns on the camera.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] } - } + ] } }, - "send_location": { - "name": "Send location", - "description": "Send a location.", + "snapshot": { + "name": "Take snapshot", + "description": "Takes a snapshot from a camera.", "fields": { - "latitude": { - "name": "Latitude", - "description": "The latitude to send.", + "filename": { "required": true, + "example": "/tmp/snapshot_{{ entity_id.name }}.jpg", "selector": { - "number": { - "min": -90, - "max": 90, - "step": 0.001, - "unit_of_measurement": "\u00B0" - } + "text": null + }, + "name": "Filename", + "description": "Template of a filename. Variable available is \u0060entity_id\u0060." + } + }, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] } - }, - "longitude": { - "name": "Longitude", - "description": "The longitude to send.", + ] + } + }, + "play_stream": { + "name": "Play stream", + "description": "Plays the camera stream on a supported media player.", + "fields": { + "media_player": { "required": true, "selector": { - "number": { - "min": -180, - "max": 180, - "step": 0.001, - "unit_of_measurement": "\u00B0" + "entity": { + "domain": "media_player" } - } - }, - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null - } + }, + "name": "Media player", + "description": "Media players to stream to." }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send photo. Will help with timeout errors (poor internet connection, etc)", + "format": { + "default": "hls", "selector": { - "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" + "select": { + "options": [ + "hls" + ] } - } - }, - "keyboard": { - "name": "Keyboard", - "description": "List of rows of commands, comma-separated, to make a custom keyboard.", - "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", - "selector": { - "object": null - } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null - } - }, - "message_tag": { - "name": "Message tag", - "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}", - "example": "msg_to_edit", - "selector": { - "text": null - } + }, + "name": "Format", + "description": "Stream format supported by the media player." } + }, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] + } + ] } }, - "send_poll": { - "name": "Send poll", - "description": "Send a poll.", + "record": { + "name": "Record", + "description": "Creates a recording of a live camera feed.", "fields": { - "target": { - "name": "Target", - "description": "An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default.", - "example": "[12345, 67890] or 12345", - "selector": { - "object": null - } - }, - "question": { - "name": "Question", - "description": "Poll question, 1-300 characters", + "filename": { "required": true, + "example": "/tmp/snapshot_{{ entity_id.name }}.mp4", "selector": { "text": null - } - }, - "options": { - "name": "Options", - "description": "List of answer options, 2-10 strings 1-100 characters each", - "required": true, - "selector": { - "object": null - } - }, - "is_anonymous": { - "name": "Is Anonymous", - "description": "If the poll needs to be anonymous, defaults to True", - "selector": { - "boolean": null - } - }, - "allows_multiple_answers": { - "name": "Allow Multiple Answers", - "description": "If the poll allows multiple answers, defaults to False", - "selector": { - "boolean": null - } + }, + "name": "Filename", + "description": "Template of a filename. Variable available is \u0060entity_id\u0060. Must be mp4." }, - "open_period": { - "name": "Open Period", - "description": "Amount of time in seconds the poll will be active after creation, 5-600.", + "duration": { + "default": 30, "selector": { "number": { - "min": 5, - "max": 600, + "min": 1, + "max": 3600, "unit_of_measurement": "seconds" } - } - }, - "disable_notification": { - "name": "Disable notification", - "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.", - "selector": { - "boolean": null - } + }, + "name": "Duration", + "description": "Planned duration of the recording. The actual duration may vary." }, - "timeout": { - "name": "Timeout", - "description": "Timeout for send poll. Will help with timeout errors (poor internet connection, etc)", + "lookback": { + "default": 0, "selector": { "number": { - "min": 1, - "max": 3600, + "min": 0, + "max": 300, "unit_of_measurement": "seconds" } - } + }, + "name": "Lookback", + "description": "Planned lookback period to include in the recording (in addition to the duration). Only available if there is currently an active HLS stream. The actual length of the lookback period may vary." } - } - }, - "edit_message": { - "name": "Edit message", - "description": "Edit a previously sent message.", - "fields": { - "message_id": { - "name": "Message ID", - "description": "id of the message to edit.", - "required": true, - "example": "{{ trigger.event.data.message.message_id }}", - "selector": { - "text": null + }, + "target": { + "entity": [ + { + "domain": [ + "camera" + ] } - }, - "chat_id": { - "name": "Chat ID", - "description": "The chat_id where to edit the message.", + ] + } + } + }, + "mqtt": { + "publish": { + "name": "Publish", + "description": "Publishes a message to an MQTT topic.", + "fields": { + "topic": { "required": true, - "example": 12345, + "example": "/homeassistant/hello", "selector": { "text": null - } + }, + "name": "Topic", + "description": "Topic to publish to." }, - "message": { - "name": "Message", - "description": "Message body of the notification.", - "example": "The garage door has been open for 10 minutes.", + "payload": { + "example": "This is great", "selector": { "text": null - } + }, + "name": "Payload", + "description": "The payload to publish." }, - "title": { - "name": "Title", - "description": "Optional title for your notification. Will be composed as \u0027%title\\n%message\u0027", - "example": "Your Garage Door Friend", + "payload_template": { + "advanced": true, + "example": "{{ states(\u0027sensor.temperature\u0027) }}", "selector": { - "text": null - } + "object": null + }, + "name": "Payload template", + "description": "Template to render as a payload value. If a payload is provided, the template is ignored." }, - "parse_mode": { - "name": "Parse mode", - "description": "Parser for the message text.", + "qos": { + "advanced": true, + "default": 0, "selector": { "select": { "options": [ - "html", - "markdown", - "markdown2" + "0", + "1", + "2" ] } - } + }, + "name": "QoS", + "description": "Quality of Service to use. O. At most once. 1: At least once. 2: Exactly once." }, - "disable_web_page_preview": { - "name": "Disable web page preview", - "description": "Disables link previews for links in the message.", + "retain": { + "default": false, "selector": { "boolean": null - } + }, + "name": "Retain", + "description": "If the message should have the retain flag set. If set, the broker stores the most recent message on a topic." + } + } + }, + "dump": { + "name": "Export", + "description": "Writes all messages on a specific topic into the \u0060mqtt_dump.txt\u0060 file in your configuration folder.", + "fields": { + "topic": { + "example": "OpenZWave/#", + "selector": { + "text": null + }, + "name": "Topic", + "description": "Topic to listen to." }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", + "duration": { + "default": 5, "selector": { - "object": null - } + "number": { + "min": 1, + "max": 300, + "unit_of_measurement": "seconds" + } + }, + "name": "Duration", + "description": "How long we should listen for messages in seconds." } } }, - "edit_caption": { - "name": "Edit caption", - "description": "Edit the caption of a previously sent message.", + "reload": { + "name": "Reload", + "description": "Reloads MQTT entities from the YAML-configuration.", + "fields": {} + } + }, + "button": { + "press": { + "name": "Press", + "description": "Press the button entity.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "button" + ] + } + ] + } + } + }, + "siren": { + "turn_on": { + "name": "Turn on", + "description": "Turns the siren on.", "fields": { - "message_id": { - "name": "Message ID", - "description": "id of the message to edit.", - "required": true, - "example": "{{ trigger.event.data.message.message_id }}", + "tone": { + "example": "fire", + "filter": { + "supported_features": [ + 4 + ] + }, + "required": false, "selector": { "text": null - } + }, + "name": "Tone", + "description": "The tone to emit. When \u0060available_tones\u0060 property is a map, either the key or the value can be used. Must be supported by the integration." }, - "chat_id": { - "name": "Chat ID", - "description": "The chat_id where to edit the caption.", - "required": true, - "example": 12345, + "volume_level": { + "example": 0.5, + "filter": { + "supported_features": [ + 8 + ] + }, + "required": false, "selector": { - "text": null - } + "number": { + "min": 0, + "max": 1, + "step": 0.05 + } + }, + "name": "Volume", + "description": "The volume. 0 is inaudible, 1 is the maximum volume. Must be supported by the integration." }, - "caption": { - "name": "Caption", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "duration": { + "example": 15, + "filter": { + "supported_features": [ + 16 + ] + }, + "required": false, "selector": { "text": null + }, + "name": "Duration", + "description": "Number of seconds the sound is played. Must be supported by the integration." + } + }, + "target": { + "entity": [ + { + "domain": [ + "siren" + ], + "supported_features": [ + 1 + ] } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Turns the siren off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "siren" + ], + "supported_features": [ + 2 + ] } - } + ] } }, - "edit_replymarkup": { - "name": "Edit reply markup", - "description": "Edit the inline keyboard of a previously sent message.", - "fields": { - "message_id": { - "name": "Message ID", - "description": "id of the message to edit.", - "required": true, - "example": "{{ trigger.event.data.message.message_id }}", - "selector": { - "text": null + "toggle": { + "name": "Toggle", + "description": "Toggles the siren on/off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "siren" + ], + "supported_features": [ + 3 + ] } - }, - "chat_id": { - "name": "Chat ID", - "description": "The chat_id where to edit the reply_markup.", - "required": true, - "example": 12345, - "selector": { - "text": null + ] + } + } + }, + "humidifier": { + "turn_on": { + "name": "Turn on", + "description": "Turns the humidifier on.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "humidifier" + ] } - }, - "inline_keyboard": { - "name": "Inline keyboard", - "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.", - "required": true, - "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", - "selector": { - "object": null + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Turns the humidifier off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "humidifier" + ] } - } + ] } }, - "answer_callback_query": { - "name": "Answer callback query", - "description": "Respond to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert.", - "fields": { - "message": { - "name": "Message", - "description": "Unformatted text message body of the notification.", - "required": true, - "example": "OK, I\u0027m listening", - "selector": { - "text": null + "toggle": { + "name": "Toggle", + "description": "Toggles the humidifier on/off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "humidifier" + ] } - }, - "callback_query_id": { - "name": "Callback query ID", - "description": "Unique id of the callback response.", + ] + } + }, + "set_mode": { + "name": "Set mode", + "description": "Sets the humidifier operation mode.", + "fields": { + "mode": { "required": true, - "example": "{{ trigger.event.data.id }}", + "example": "away", "selector": { "text": null + }, + "name": "Mode", + "description": "Operation mode. For example, _normal_, _eco_, or _away_. For a list of possible values, refer to the integration documentation." + } + }, + "target": { + "entity": [ + { + "domain": [ + "humidifier" + ], + "supported_features": [ + 1 + ] } - }, - "show_alert": { - "name": "Show alert", - "description": "Show a permanent notification.", + ] + } + }, + "set_humidity": { + "name": "Set humidity", + "description": "Sets the target humidity.", + "fields": { + "humidity": { "required": true, - "selector": { - "boolean": null - } - }, - "timeout": { - "name": "Timeout", - "description": "Timeout for sending the answer. Will help with timeout errors (poor internet connection, etc)", "selector": { "number": { - "min": 1, - "max": 3600, - "unit_of_measurement": "seconds" + "min": 0, + "max": 100, + "unit_of_measurement": "%" } - } + }, + "name": "Humidity", + "description": "Target humidity." } + }, + "target": { + "entity": [ + { + "domain": [ + "humidifier" + ] + } + ] } - }, - "delete_message": { - "name": "Delete message", - "description": "Delete a previously sent message.", - "fields": { - "message_id": { - "name": "Message ID", - "description": "id of the message to delete.", - "required": true, - "example": "{{ trigger.event.data.message.message_id }}", - "selector": { - "text": null + } + }, + "vacuum": { + "turn_on": { + "name": "Turn on", + "description": "Starts a new cleaning task.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 1 + ] } - }, - "chat_id": { - "name": "Chat ID", - "description": "The chat_id where to delete the message.", - "required": true, - "example": 12345, - "selector": { - "text": null + ] + } + }, + "turn_off": { + "name": "Turn off", + "description": "Stops the current cleaning task and returns to its dock.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 2 + ] } - } + ] } }, - "leave_chat": { + "toggle": { "name": "", "description": "", "fields": {} - } - }, - "telegram": { - "reload": { - "name": "Reload", - "description": "Reload telegram notify services.", - "fields": {} - } - }, - "notify": { - "hailey": { - "name": "Send a notification with hailey", - "description": "Sends a notification message using the hailey service.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", - "selector": { - "text": null + }, + "start_pause": { + "name": "Start/pause", + "description": "Starts, pauses, or resumes the cleaning task.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 4 + ] } - }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", - "selector": { - "text": null + ] + } + }, + "start": { + "name": "Start", + "description": "Starts or resumes the cleaning task.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 8192 + ] } - }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null + ] + } + }, + "pause": { + "name": "Pause", + "description": "Pauses the cleaning task.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 4 + ] } - }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null + ] + } + }, + "return_to_base": { + "name": "Return to dock", + "description": "Tells the vacuum cleaner to return to its dock.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 16 + ] + } + ] + } + }, + "clean_spot": { + "name": "Clean spot", + "description": "Tells the vacuum cleaner to do a spot clean-up.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ] + } + ] + } + }, + "locate": { + "name": "Locate", + "description": "Locates the vacuum cleaner robot.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 512 + ] + } + ] + } + }, + "stop": { + "name": "Stop", + "description": "Stops the current cleaning task.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ], + "supported_features": [ + 8 + ] } - } + ] } }, - "eugene": { - "name": "Send a notification with eugene", - "description": "Sends a notification message using the eugene service.", + "set_fan_speed": { + "name": "Set fan speed", + "description": "Sets the fan speed of the vacuum cleaner.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "fan_speed": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": "low", "selector": { "text": null + }, + "name": "Fan speed", + "description": "Fan speed. The value depends on the integration. Some integrations have speed steps, like \u0027medium\u0027. Some use a percentage, between 0 and 100." + } + }, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ] } - }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + ] + } + }, + "send_command": { + "name": "Send command", + "description": "Sends a command to the vacuum cleaner.", + "fields": { + "command": { + "required": true, + "example": "set_dnd_timer", "selector": { "text": null - } + }, + "name": "Command", + "description": "Command to execute. The commands are integration-specific." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "params": { + "example": "{ \u0022key\u0022: \u0022value\u0022 }", "selector": { "object": null + }, + "name": "Parameters", + "description": "Parameters for the command. The parameters are integration-specific." + } + }, + "target": { + "entity": [ + { + "domain": [ + "vacuum" + ] } - }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + ] + } + } + }, + "ffmpeg": { + "start": { + "name": "Start", + "description": "Sends a start command to a ffmpeg based sensor.", + "fields": { + "entity_id": { "selector": { - "object": null - } + "entity": { + "integration": "ffmpeg", + "domain": "binary_sensor" + } + }, + "name": "Entity", + "description": "Name of entity that will start. Platform dependent." } } }, - "twinstead": { - "name": "Send a notification with twinstead", - "description": "Sends a notification message using the twinstead service.", + "stop": { + "name": "Stop", + "description": "Sends a stop command to a ffmpeg based sensor.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "entity_id": { + "selector": { + "entity": { + "integration": "ffmpeg", + "domain": "binary_sensor" + } + }, + "name": "Entity", + "description": "Name of entity that will stop. Platform dependent." + } + } + }, + "restart": { + "name": "Restart", + "description": "Sends a restart command to a ffmpeg based sensor.", + "fields": { + "entity_id": { + "selector": { + "entity": { + "integration": "ffmpeg", + "domain": "binary_sensor" + } + }, + "name": "Entity", + "description": "Name of entity that will restart. Platform dependent." + } + } + } + }, + "zha": { + "permit": { + "name": "Permit", + "description": "Allows nodes to join the Zigbee network.", + "fields": { + "duration": { + "default": 60, + "selector": { + "number": { + "min": 0, + "max": 254, + "unit_of_measurement": "seconds" + } + }, + "name": "Duration", + "description": "Time to permit joins." + }, + "ieee": { + "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null - } + }, + "name": "IEEE", + "description": "IEEE address of the node permitting new joins." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "source_ieee": { + "example": "00:0a:bf:00:01:10:23:35", "selector": { "text": null - } + }, + "name": "Source IEEE", + "description": "IEEE address of the joining device (must be used with the install code)." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "install_code": { + "example": "1234-5678-1234-5678-AABB-CCDD-AABB-CCDD-EEFF", "selector": { - "object": null - } + "text": null + }, + "name": "Install code", + "description": "Install code of the joining device (must be used with the source_ieee)." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "qr_code": { + "example": "Z:000D6FFFFED4163B$I:52797BF4A5084DAA8E1712B61741CA024051", "selector": { - "object": null - } + "text": null + }, + "name": "QR code", + "description": "Value of the QR install code (different between vendors)." } } }, - "persistent_notification": { - "name": "Send a persistent notification", - "description": "Sends a notification that is visible in the front-end.", + "remove": { + "name": "Remove", + "description": "Removes a node from the Zigbee network.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "ieee": { "required": true, - "example": "The garage door has been open for 10 minutes.", - "selector": { - "text": null - } - }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null - } + }, + "name": "IEEE", + "description": "IEEE address of the node to remove." } } }, - "mobile_app_haileys_macbook_air": { - "name": "Send a notification via mobile_app_haileys_macbook_air", - "description": "Sends a notification message using the mobile_app_haileys_macbook_air integration.", + "set_zigbee_cluster_attribute": { + "name": "Set zigbee cluster attribute", + "description": "Sets an attribute value for the specified cluster on the specified entity.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "ieee": { "required": true, - "example": "The garage door has been open for 10 minutes.", - "selector": { - "text": null - } - }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null - } + }, + "name": "IEEE", + "description": "IEEE address for the device." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "endpoint_id": { + "required": true, "selector": { - "object": null - } + "number": { + "min": 1, + "max": 65535, + "mode": "box" + } + }, + "name": "Endpoint ID", + "description": "Endpoint ID for the cluster." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "mobile_app_iphone": { - "name": "Send a notification via mobile_app_iphone", - "description": "Sends a notification message using the mobile_app_iphone integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "cluster_id": { "required": true, - "example": "The garage door has been open for 10 minutes.", "selector": { - "text": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Cluster ID", + "description": "ZCL cluster to retrieve attributes for." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "cluster_type": { + "default": "in", "selector": { - "text": null - } + "select": { + "options": [ + "in", + "out" + ] + } + }, + "name": "Cluster Type", + "description": "Type of the cluster." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "attribute": { + "required": true, + "example": 0, "selector": { - "object": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Attribute", + "description": "ID of the attribute to set." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "mobile_app_jayden_s_iphone": { - "name": "Send a notification via mobile_app_jayden_s_iphone", - "description": "Sends a notification message using the mobile_app_jayden_s_iphone integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "value": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": 1, "selector": { "text": null - } + }, + "name": "Value", + "description": "Value to write to the attribute." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "manufacturer": { + "example": 252, "selector": { "text": null - } - }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } + }, + "name": "Manufacturer", + "description": "Manufacturer code." } } }, - "mobile_app_eugene_s_iphone": { - "name": "Send a notification via mobile_app_eugene_s_iphone", - "description": "Sends a notification message using the mobile_app_eugene_s_iphone integration.", + "issue_zigbee_cluster_command": { + "name": "Issue zigbee cluster command", + "description": "Issues a command on the specified cluster on the specified entity.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "ieee": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null - } + }, + "name": "IEEE", + "description": "IEEE address for the device." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "endpoint_id": { + "required": true, "selector": { - "text": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Endpoint ID", + "description": "Endpoint ID for the cluster." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "cluster_id": { + "required": true, "selector": { - "object": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Cluster ID", + "description": "ZCL cluster to retrieve attributes for." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "cluster_type": { + "default": "in", "selector": { - "object": null - } - } - } - }, - "mobile_app_hailey_s_iphone": { - "name": "Send a notification via mobile_app_hailey_s_iphone", - "description": "Sends a notification message using the mobile_app_hailey_s_iphone integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "select": { + "options": [ + "in", + "out" + ] + } + }, + "name": "Cluster Type", + "description": "Type of the cluster." + }, + "command": { "required": true, - "example": "The garage door has been open for 10 minutes.", "selector": { - "text": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Command", + "description": "ID of the command to execute." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "command_type": { + "required": true, "selector": { - "text": null - } + "select": { + "options": [ + "client", + "server" + ] + } + }, + "name": "Command Type", + "description": "Type of the command to execute." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "args": { + "example": "[arg1, arg2, argN]", "selector": { "object": null - } + }, + "name": "Args", + "description": "Arguments to pass to the command." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "params": { "selector": { "object": null - } + }, + "name": "Params", + "description": "Parameters to pass to the command." + }, + "manufacturer": { + "example": 252, + "selector": { + "text": null + }, + "name": "Manufacturer", + "description": "Manufacturer code." } } }, - "mobile_app_jayden_s_ipad": { - "name": "Send a notification via mobile_app_jayden_s_ipad", - "description": "Sends a notification message using the mobile_app_jayden_s_ipad integration.", + "issue_zigbee_group_command": { + "name": "Issue zigbee group command", + "description": "Issue command on the specified cluster on the specified group.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "group": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": 546, "selector": { "text": null - } + }, + "name": "Group", + "description": "Hexadecimal address of the group." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "cluster_id": { + "required": true, "selector": { - "text": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Cluster ID", + "description": "ZCL cluster to send command to." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "cluster_type": { + "default": "in", "selector": { - "object": null - } + "select": { + "options": [ + "in", + "out" + ] + } + }, + "name": "Cluster type", + "description": "Type of the cluster." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "mobile_app_ml_nx07kg671n": { - "name": "Send a notification via mobile_app_ml_nx07kg671n", - "description": "Sends a notification message using the mobile_app_ml_nx07kg671n integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "command": { "required": true, - "example": "The garage door has been open for 10 minutes.", - "selector": { - "text": null - } - }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", "selector": { - "text": null - } + "number": { + "min": 1, + "max": 65535 + } + }, + "name": "Command", + "description": "ID of the command to execute." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "args": { + "example": "[arg1, arg2, argN]", "selector": { "object": null - } + }, + "name": "Args", + "description": "Arguments to pass to the command." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "manufacturer": { + "example": 252, "selector": { - "object": null - } + "text": null + }, + "name": "Manufacturer", + "description": "Manufacturer code." } } }, - "mobile_app_iphone8p": { - "name": "Send a notification via mobile_app_iphone8p", - "description": "Sends a notification message using the mobile_app_iphone8p integration.", + "warning_device_squawk": { + "name": "Warning device squawk", + "description": "This service uses the WD capabilities to emit a quick audible/visible pulse called a \u0022squawk\u0022. The squawk command has no effect if the WD is currently active (warning in progress).", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "ieee": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null - } + }, + "name": "IEEE", + "description": "IEEE address for the device." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "mode": { + "default": 0, "selector": { - "text": null - } + "number": { + "min": 0, + "max": 1, + "mode": "box" + } + }, + "name": "Mode", + "description": "The Squawk Mode field is used as a 4-bit enumeration, and can have one of the values shown in Table 8-24 of the ZCL spec - Squawk Mode Field. The exact operation of each mode (how the WD \u201Csquawks\u201D) is implementation specific." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "strobe": { + "default": 1, "selector": { - "object": null - } + "number": { + "min": 0, + "max": 1, + "mode": "box" + } + }, + "name": "Strobe", + "description": "The strobe field is used as a Boolean, and determines if the visual indication is also required in addition to the audible squawk, as shown in Table 8-25 of the ZCL spec - Strobe Bit." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "level": { + "default": 2, "selector": { - "object": null - } + "number": { + "min": 0, + "max": 3, + "mode": "box" + } + }, + "name": "Level", + "description": "The squawk level field is used as a 2-bit enumeration, and determines the intensity of audible squawk sound as shown in Table 8-26 of the ZCL spec - Squawk Level Field Values." } } }, - "notify": { - "name": "Send a notification with notify", - "description": "Sends a notification message using the notify service.", + "warning_device_warn": { + "name": "Warning device starts alert", + "description": "This service starts the operation of the warning device. The warning device alerts the surrounding area by audible (siren) and visual (strobe) signals.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "ieee": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null - } + }, + "name": "IEEE", + "description": "IEEE address for the device." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "mode": { + "default": 3, "selector": { - "text": null - } + "number": { + "min": 0, + "max": 6, + "mode": "box" + } + }, + "name": "Mode", + "description": "The Warning Mode field is used as a 4-bit enumeration, can have one of the values 0-6 defined below in table 8-20 of the ZCL spec. The exact behavior of the warning device in each mode is according to the relevant security standards." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "strobe": { + "default": 1, "selector": { - "object": null - } + "number": { + "min": 0, + "max": 1, + "mode": "box" + } + }, + "name": "Strobe", + "description": "The Strobe field is used as a 2-bit enumeration, and determines if the visual indication is required in addition to the audible siren, as indicated in Table 8-21 of the ZCL spec. \u00220\u0022 means no strobe, \u00221\u0022 means strobe. If the strobe field is \u201C1\u201D and the Warning Mode is \u201C0\u201D (\u201CStop\u201D), then only the strobe is activated." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "level": { + "default": 2, "selector": { - "object": null - } + "number": { + "min": 0, + "max": 3, + "mode": "box" + } + }, + "name": "Level", + "description": "The Siren Level field is used as a 2-bit enumeration, and indicates the intensity of audible squawk sound as shown in Table 8-22 of the ZCL spec." + }, + "duration": { + "default": 5, + "selector": { + "number": { + "min": 0, + "max": 65535, + "unit_of_measurement": "seconds" + } + }, + "name": "Duration", + "description": "Requested duration of warning, in seconds (16 bit). If both Strobe and Warning Mode are \u00220\u0022 this field is ignored." + }, + "duty_cycle": { + "default": 0, + "selector": { + "number": { + "min": 0, + "max": 100, + "step": 10 + } + }, + "name": "Duty cycle", + "description": "Indicates the length of the flash cycle. This allows you to vary the flash duration for different alarm types (e.g., fire, police, burglar). The valid range is 0-100 in increments of 10. All other values must be rounded to the nearest valid value. Strobe calculates a duty cycle over a duration of one second. The ON state must precede the OFF state. For example, if the Strobe Duty Cycle field specifies \u201C40,\u201D, then the strobe flashes ON for 4/10ths of a second and then turns OFF for 6/10ths of a second." + }, + "intensity": { + "default": 2, + "selector": { + "number": { + "min": 0, + "max": 3, + "mode": "box" + } + }, + "name": "Intensity", + "description": "Indicates the intensity of the strobe as shown in Table 8-23 of the ZCL spec. This attribute is designed to vary the output of the strobe (i.e., brightness) and not its frequency, which is detailed in section 8.4.2.3.1.6 of the ZCL spec." } } }, - "master_tv": { - "name": "Send a notification with master_tv", - "description": "Sends a notification message using the master_tv service.", + "set_lock_user_code": { + "name": "Set lock user code", + "description": "Sets a user code on a lock.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "code_slot": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": 1, "selector": { "text": null - } + }, + "name": "Code slot", + "description": "Code slot to set the code in." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "user_code": { + "required": true, + "example": 1234, "selector": { "text": null + }, + "name": "Code", + "description": "Code to set." + } + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ], + "integration": "zha" } - }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + ] + } + }, + "enable_lock_user_code": { + "name": "Enable lock user", + "description": "Enables a user code on a lock.", + "fields": { + "code_slot": { + "required": true, + "example": 1, "selector": { - "object": null + "text": null + }, + "name": "Code slot", + "description": "Code slot to enable." + } + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ], + "integration": "zha" } - }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + ] + } + }, + "disable_lock_user_code": { + "name": "Disable lock user", + "description": "Disables a user code on a lock.", + "fields": { + "code_slot": { + "required": true, + "example": 1, "selector": { - "object": null - } + "text": null + }, + "name": "Code slot", + "description": "Code slot to disable." } + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ], + "integration": "zha" + } + ] } }, - "lounge_tv": { - "name": "Send a notification with lounge_tv", - "description": "Sends a notification message using the lounge_tv service.", + "clear_lock_user_code": { + "name": "Clear lock user", + "description": "Clears a user code from a lock.", + "fields": { + "code_slot": { + "required": true, + "example": 1, + "selector": { + "text": null + }, + "name": "Code slot", + "description": "Code slot to clear code from." + } + }, + "target": { + "entity": [ + { + "domain": [ + "lock" + ], + "integration": "zha" + } + ] + } + } + }, + "telegram_bot": { + "send_message": { + "name": "Send message", + "description": "Sends a notification.", "fields": { "message": { - "name": "Message", - "description": "Message body of the notification.", "required": true, "example": "The garage door has been open for 10 minutes.", "selector": { "text": null - } + }, + "name": "Message", + "description": "Message body of the notification." }, "title": { - "name": "Title", - "description": "Title for your notification.", "example": "Your Garage Door Friend", "selector": { "text": null - } + }, + "name": "Title", + "description": "Optional title for your notification. Will be composed as \u0027%title\n%message\u0027." }, "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "example": "[12345, 67890] or 12345", "selector": { "object": null - } + }, + "name": "Target", + "description": "An array of pre-authorized chat_ids to send the notification to. If not present, first allowed chat_id is the default." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "parse_mode": { "selector": { - "object": null - } - } - } - }, - "alexa_media_bose_qc35_ii": { - "name": "Send a notification via alexa_media_bose_qc35_ii", - "description": "Sends a notification message using the alexa_media_bose_qc35_ii integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "select": { + "options": [ + "html", + "markdown", + "markdown2" + ] + } + }, + "name": "Parse mode", + "description": "Parser for the message text." + }, + "disable_notification": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "disable_web_page_preview": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Disable web page preview", + "description": "Disables link previews for links in the message." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "timeout": { + "selector": { + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send message. Will help with timeout errors (poor internet connection, etc)s." + }, + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard. Empty list clears a previously set keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [\u0022Text button1:/button1, Text button2:/button2\u0022, \u0022Text button3:/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", + "selector": { + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_downstairs": { - "name": "Send a notification via alexa_media_downstairs", - "description": "Sends a notification message using the alexa_media_downstairs integration.", + "send_photo": { + "name": "Send photo", + "description": "Sends a photo.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "url": { + "example": "http://example.org/path/to/the/image.png", "selector": { "text": null - } + }, + "name": "URL", + "description": "Remote path to an image." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "file": { + "example": "/path/to/the/image.png", "selector": { "text": null - } + }, + "name": "File", + "description": "Local path to an image." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "caption": { + "example": "My image", "selector": { - "object": null - } + "text": null + }, + "name": "Caption", + "description": "The title of the image." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_upstairs": { - "name": "Send a notification via alexa_media_upstairs", - "description": "Sends a notification message using the alexa_media_upstairs integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "username": { + "example": "myuser", "selector": { "text": null - } + }, + "name": "Username", + "description": "Username for a URL which require HTTP authentication." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "password": { + "example": "myuser_pwd", "selector": { "text": null - } + }, + "name": "Password", + "description": "Password (or bearer token) for a URL which require HTTP authentication." + }, + "authentication": { + "default": "digest", + "selector": { + "select": { + "options": [ + "digest", + "bearer_token" + ] + } + }, + "name": "Authentication method", + "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060." }, "target": { + "example": "[12345, 67890] or 12345", + "selector": { + "object": null + }, "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default." + }, + "parse_mode": { + "selector": { + "select": { + "options": [ + "html", + "markdown", + "markdown2" + ] + } + }, + "name": "Parse mode", + "description": "Parser for the message text." + }, + "disable_notification": { + "selector": { + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." + }, + "verify_ssl": { + "selector": { + "boolean": null + }, + "name": "Verify SSL", + "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server." + }, + "timeout": { + "selector": { + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send photo. Will help with timeout errors (poor internet connection, etc)." + }, + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", + "selector": { + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_master_tv_alexa": { - "name": "Send a notification via alexa_media_master_tv_alexa", - "description": "Sends a notification message using the alexa_media_master_tv_alexa integration.", + "send_sticker": { + "name": "Send sticker", + "description": "Sends a sticker.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "url": { + "example": "http://example.org/path/to/the/sticker.webp", "selector": { "text": null - } + }, + "name": "URL", + "description": "Remote path to a static .webp or animated .tgs sticker." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "file": { + "example": "/path/to/the/sticker.webp", + "selector": { + "text": null + }, + "name": "File", + "description": "Local path to a static .webp or animated .tgs sticker." + }, + "sticker_id": { + "example": "CAACAgIAAxkBAAEDDldhZD-hqWclr6krLq-FWSfCrGNmOQAC9gAD9HsZAAFeYY-ltPYnrCEE", "selector": { "text": null - } + }, + "name": "Sticker ID", + "description": "ID of a sticker that exists on telegram servers." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "username": { + "example": "myuser", "selector": { - "object": null - } + "text": null + }, + "name": "Username", + "description": "Username for a URL which require HTTP authentication." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_eugene_s_fire": { - "name": "Send a notification via alexa_media_eugene_s_fire", - "description": "Sends a notification message using the alexa_media_eugene_s_fire integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "password": { + "example": "myuser_pwd", "selector": { "text": null - } + }, + "name": "Password", + "description": "Password (or bearer token) for a URL which require HTTP authentication." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "authentication": { + "default": "digest", "selector": { - "text": null - } + "select": { + "options": [ + "digest", + "bearer_token" + ] + } + }, + "name": "Authentication method", + "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060." }, "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "example": "[12345, 67890] or 12345", "selector": { "object": null - } + }, + "name": "Target", + "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "disable_notification": { "selector": { - "object": null - } - } - } - }, - "alexa_media_office": { - "name": "Send a notification via alexa_media_office", - "description": "Sends a notification message using the alexa_media_office integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." + }, + "verify_ssl": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Verify SSL", + "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "timeout": { "selector": { - "text": null - } + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send sticker. Will help with timeout errors (poor internet connection, etc)." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", + "selector": { + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_aaron": { - "name": "Send a notification via alexa_media_aaron", - "description": "Sends a notification message using the alexa_media_aaron integration.", + "send_animation": { + "name": "Send animation", + "description": "Sends an animation.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "url": { + "example": "http://example.org/path/to/the/animation.gif", "selector": { "text": null - } + }, + "name": "URL", + "description": "Remote path to a GIF or H.264/MPEG-4 AVC video without sound." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "file": { + "example": "/path/to/the/animation.gif", "selector": { "text": null - } + }, + "name": "File", + "description": "Local path to a GIF or H.264/MPEG-4 AVC video without sound." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "caption": { + "example": "My animation", "selector": { - "object": null - } + "text": null + }, + "name": "Caption", + "description": "The title of the animation." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_eugene_s_2nd_echo_dot": { - "name": "Send a notification via alexa_media_eugene_s_2nd_echo_dot", - "description": "Sends a notification message using the alexa_media_eugene_s_2nd_echo_dot integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "username": { + "example": "myuser", "selector": { "text": null - } + }, + "name": "Username", + "description": "Username for a URL which require HTTP authentication." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "password": { + "example": "myuser_pwd", "selector": { "text": null - } + }, + "name": "Password", + "description": "Password (or bearer token) for a URL which require HTTP authentication." + }, + "authentication": { + "default": "digest", + "selector": { + "select": { + "options": [ + "digest", + "bearer_token" + ] + } + }, + "name": "Authentication method", + "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060." }, "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "example": "[12345, 67890] or 12345", "selector": { "object": null - } + }, + "name": "Target", + "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "parse_mode": { "selector": { - "object": null - } - } - } - }, - "alexa_media_dining": { - "name": "Send a notification via alexa_media_dining", - "description": "Sends a notification message using the alexa_media_dining integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "select": { + "options": [ + "html", + "markdown", + "markdown2" + ] + } + }, + "name": "Parse Mode", + "description": "Parser for the message text." + }, + "disable_notification": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "verify_ssl": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Verify SSL", + "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "timeout": { + "selector": { + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send sticker. Will help with timeout errors (poor internet connection, etc)." + }, + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." } } }, - "alexa_media_everywhere_2": { - "name": "Send a notification via alexa_media_everywhere_2", - "description": "Sends a notification message using the alexa_media_everywhere_2 integration.", + "send_video": { + "name": "Send video", + "description": "Sends a video.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "url": { + "example": "http://example.org/path/to/the/video.mp4", "selector": { "text": null - } + }, + "name": "URL", + "description": "Remote path to a video." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "file": { + "example": "/path/to/the/video.mp4", "selector": { "text": null - } + }, + "name": "File", + "description": "Local path to a video." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "caption": { + "example": "My video", "selector": { - "object": null - } + "text": null + }, + "name": "Caption", + "description": "The title of the video." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_playroom": { - "name": "Send a notification via alexa_media_playroom", - "description": "Sends a notification message using the alexa_media_playroom integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "username": { + "example": "myuser", "selector": { "text": null - } + }, + "name": "Username", + "description": "Username for a URL which require HTTP authentication." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "password": { + "example": "myuser_pwd", "selector": { "text": null - } + }, + "name": "Password", + "description": "Password (or bearer token) for a URL which require HTTP authentication." + }, + "authentication": { + "default": "digest", + "selector": { + "select": { + "options": [ + "digest", + "bearer_token" + ] + } + }, + "name": "Authentication method", + "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060." }, "target": { + "example": "[12345, 67890] or 12345", + "selector": { + "object": null + }, "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default." + }, + "parse_mode": { + "selector": { + "select": { + "options": [ + "html", + "markdown", + "markdown2" + ] + } + }, + "name": "Parse mode", + "description": "Parser for the message text." + }, + "disable_notification": { + "selector": { + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." + }, + "verify_ssl": { + "selector": { + "boolean": null + }, + "name": "Verify SSL", + "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server." + }, + "timeout": { + "selector": { + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send video. Will help with timeout errors (poor internet connection, etc)." + }, + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", + "selector": { + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_master": { - "name": "Send a notification via alexa_media_master", - "description": "Sends a notification message using the alexa_media_master integration.", + "send_voice": { + "name": "Send voice", + "description": "Sends a voice message.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "url": { + "example": "http://example.org/path/to/the/voice.opus", "selector": { "text": null - } + }, + "name": "URL", + "description": "Remote path to a voice message." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "file": { + "example": "/path/to/the/voice.opus", "selector": { "text": null - } + }, + "name": "File", + "description": "Local path to a voice message." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "caption": { + "example": "My microphone recording", "selector": { - "object": null - } + "text": null + }, + "name": "Caption", + "description": "The title of the voice message." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_jayden": { - "name": "Send a notification via alexa_media_jayden", - "description": "Sends a notification message using the alexa_media_jayden integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "username": { + "example": "myuser", "selector": { "text": null - } + }, + "name": "Username", + "description": "Username for a URL which require HTTP authentication." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "password": { + "example": "myuser_pwd", "selector": { "text": null - } + }, + "name": "Password", + "description": "Password (or bearer token) for a URL which require HTTP authentication." + }, + "authentication": { + "default": "digest", + "selector": { + "select": { + "options": [ + "digest", + "bearer_token" + ] + } + }, + "name": "Authentication method", + "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060." }, "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "example": "[12345, 67890] or 12345", "selector": { "object": null - } + }, + "name": "Target", + "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "disable_notification": { "selector": { - "object": null - } - } - } - }, - "alexa_media_eugene_s_sonos_arc": { - "name": "Send a notification via alexa_media_eugene_s_sonos_arc", - "description": "Sends a notification message using the alexa_media_eugene_s_sonos_arc integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." + }, + "verify_ssl": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Verify SSL", + "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "timeout": { "selector": { - "text": null - } + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send voice. Will help with timeout errors (poor internet connection, etc)." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", + "selector": { + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_lounge_sonos": { - "name": "Send a notification via alexa_media_lounge_sonos", - "description": "Sends a notification message using the alexa_media_lounge_sonos integration.", + "send_document": { + "name": "Send document", + "description": "Sends a document.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "url": { + "example": "http://example.org/path/to/the/document.odf", "selector": { "text": null - } + }, + "name": "URL", + "description": "Remote path to a document." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "file": { + "example": "/tmp/whatever.odf", "selector": { "text": null - } + }, + "name": "File", + "description": "Local path to a document." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "caption": { + "example": "Document Title xy", "selector": { - "object": null - } + "text": null + }, + "name": "Caption", + "description": "The title of the document." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_eugene_s_lg_oled_webos_2021_tv": { - "name": "Send a notification via alexa_media_eugene_s_lg_oled_webos_2021_tv", - "description": "Sends a notification message using the alexa_media_eugene_s_lg_oled_webos_2021_tv integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "username": { + "example": "myuser", "selector": { "text": null - } + }, + "name": "Username", + "description": "Username for a URL which require HTTP authentication." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "password": { + "example": "myuser_pwd", "selector": { "text": null - } + }, + "name": "Password", + "description": "Password (or bearer token) for a URL which require HTTP authentication." + }, + "authentication": { + "default": "digest", + "selector": { + "select": { + "options": [ + "digest", + "bearer_token" + ] + } + }, + "name": "Authentication method", + "description": "Define which authentication method to use. Set to \u0060digest\u0060 to use HTTP digest authentication, or \u0060bearer_token\u0060 for OAuth 2.0 bearer token authentication. Defaults to \u0060basic\u0060." }, "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "example": "[12345, 67890] or 12345", "selector": { "object": null - } + }, + "name": "Target", + "description": "An array of pre-authorized chat_ids to send the document to. If not present, first allowed chat_id is the default." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "parse_mode": { "selector": { - "object": null - } - } - } - }, - "alexa_media_eugene_s_5th_echo_dot": { - "name": "Send a notification via alexa_media_eugene_s_5th_echo_dot", - "description": "Sends a notification message using the alexa_media_eugene_s_5th_echo_dot integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "select": { + "options": [ + "html", + "markdown", + "markdown2" + ] + } + }, + "name": "Parse mode", + "description": "Parser for the message text." + }, + "disable_notification": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "verify_ssl": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Verify SSL", + "description": "Enable or disable SSL certificate verification. Set to false if you\u0027re downloading the file from a URL and you don\u0027t want to validate the SSL certificate of the server." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "timeout": { + "selector": { + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send document. Will help with timeout errors (poor internet connection, etc)." + }, + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", "selector": { "object": null - } + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", + "selector": { + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_kitchen": { - "name": "Send a notification via alexa_media_kitchen", - "description": "Sends a notification message using the alexa_media_kitchen integration.", + "send_location": { + "name": "Send location", + "description": "Sends a location.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "latitude": { "required": true, - "example": "The garage door has been open for 10 minutes.", "selector": { - "text": null - } + "number": { + "min": -90, + "max": 90, + "step": 0.001, + "unit_of_measurement": "\u00B0" + } + }, + "name": "Latitude", + "description": "The latitude to send." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "longitude": { + "required": true, "selector": { - "text": null - } + "number": { + "min": -180, + "max": 180, + "step": 0.001, + "unit_of_measurement": "\u00B0" + } + }, + "name": "Longitude", + "description": "The longitude to send." }, "target": { + "example": "[12345, 67890] or 12345", + "selector": { + "object": null + }, "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "description": "An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default." + }, + "disable_notification": { + "selector": { + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." + }, + "timeout": { + "selector": { + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send photo. Will help with timeout errors (poor internet connection, etc)." + }, + "keyboard": { + "example": "[\u0022/command1, /command2\u0022, \u0022/command3\u0022]", "selector": { "object": null - } + }, + "name": "Keyboard", + "description": "List of rows of commands, comma-separated, to make a custom keyboard." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", + "selector": { + "object": null + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." + }, + "message_tag": { + "example": "msg_to_edit", "selector": { - "object": null - } + "text": null + }, + "name": "Message tag", + "description": "Tag for sent message. In telegram_sent event data: {{trigger.event.data.message_tag}}." } } }, - "alexa_media_this_device_3": { - "name": "Send a notification via alexa_media_this_device_3", - "description": "Sends a notification message using the alexa_media_this_device_3 integration.", + "send_poll": { + "name": "Send poll", + "description": "Sends a poll.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "target": { + "example": "[12345, 67890] or 12345", "selector": { - "text": null - } + "object": null + }, + "name": "Target", + "description": "An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "question": { + "required": true, "selector": { "text": null - } + }, + "name": "Question", + "description": "Poll question, 1-300 characters." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "options": { + "required": true, "selector": { "object": null - } + }, + "name": "Options", + "description": "List of answer options, 2-10 strings 1-100 characters each." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "is_anonymous": { "selector": { - "object": null - } - } - } - }, - "alexa_media_this_device": { - "name": "Send a notification via alexa_media_this_device", - "description": "Sends a notification message using the alexa_media_this_device integration.", - "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, - "example": "The garage door has been open for 10 minutes.", + "boolean": null + }, + "name": "Is anonymous", + "description": "If the poll needs to be anonymous, defaults to True." + }, + "allows_multiple_answers": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Allow multiple answers", + "description": "If the poll allows multiple answers, defaults to False." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "open_period": { "selector": { - "text": null - } + "number": { + "min": 5, + "max": 600, + "unit_of_measurement": "seconds" + } + }, + "name": "Open period", + "description": "Amount of time in seconds the poll will be active after creation, 5-600." }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", + "disable_notification": { "selector": { - "object": null - } + "boolean": null + }, + "name": "Disable notification", + "description": "Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", + "timeout": { "selector": { - "object": null - } + "number": { + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for send poll. Will help with timeout errors (poor internet connection, etc)." } } }, - "alexa_media": { - "name": "Send a notification with alexa_media", - "description": "Sends a notification message using the alexa_media service.", + "edit_message": { + "name": "Edit message", + "description": "Edits a previously sent message.", "fields": { - "message": { - "name": "Message", - "description": "Message body of the notification.", + "message_id": { "required": true, - "example": "The garage door has been open for 10 minutes.", + "example": "{{ trigger.event.data.message.message_id }}", "selector": { "text": null - } + }, + "name": "Message ID", + "description": "Id of the message to edit." }, - "title": { - "name": "Title", - "description": "Title for your notification.", - "example": "Your Garage Door Friend", + "chat_id": { + "required": true, + "example": 12345, "selector": { "text": null - } - }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } + }, + "name": "Chat ID", + "description": "The chat_id where to edit the message." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - }, - "alexa_media_last_called": { - "name": "Send a notification via alexa_media_last_called", - "description": "Sends a notification message using the alexa_media_last_called integration.", - "fields": { "message": { - "name": "Message", - "description": "Message body of the notification.", - "required": true, "example": "The garage door has been open for 10 minutes.", "selector": { "text": null - } + }, + "name": "Message", + "description": "Message body of the notification." }, "title": { - "name": "Title", - "description": "Title for your notification.", "example": "Your Garage Door Friend", "selector": { "text": null - } - }, - "target": { - "name": "Target", - "description": "An array of targets to send the notification to. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } + }, + "name": "Title", + "description": "Optional title for your notification. Will be composed as \u0027%title\n%message\u0027." }, - "data": { - "name": "Data", - "description": "Extended information for notification. Optional depending on the platform.", - "example": "platform specific", - "selector": { - "object": null - } - } - } - } - }, - "automation": { - "trigger": { - "name": "Trigger", - "description": "Trigger the actions of an automation.", - "fields": { - "skip_condition": { - "name": "Skip conditions", - "description": "Whether or not the conditions will be skipped.", - "default": true, - "selector": { - "boolean": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "automation" - ] - } - ] - } - }, - "toggle": { - "name": "Toggle", - "description": "Toggle (enable / disable) an automation.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "automation" - ] - } - ] - } - }, - "turn_on": { - "name": "Turn on", - "description": "Enable an automation.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "automation" - ] - } - ] - } - }, - "turn_off": { - "name": "Turn off", - "description": "Disable an automation.", - "fields": { - "stop_actions": { - "name": "Stop actions", - "description": "Stop currently running actions.", - "default": true, + "parse_mode": { "selector": { - "boolean": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "automation" - ] - } - ] - } - }, - "reload": { - "name": "Reload", - "description": "Reload the automation configuration.", - "fields": {} - } - }, - "lock": { - "unlock": { - "name": "Unlock", - "description": "Unlock all or specified locks.", - "fields": { - "code": { - "name": "Code", - "description": "An optional code to unlock the lock with.", - "example": 1234, + "select": { + "options": [ + "html", + "markdown", + "markdown2" + ] + } + }, + "name": "Parse mode", + "description": "Parser for the message text." + }, + "disable_web_page_preview": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Disable web page preview", + "description": "Disables link previews for links in the message." + }, + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", + "selector": { + "object": null + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." } - }, - "target": { - "entity": [ - { - "domain": [ - "lock" - ] - } - ] } }, - "lock": { - "name": "Lock", - "description": "Lock all or specified locks.", + "edit_caption": { + "name": "Edit caption", + "description": "Edits the caption of a previously sent message.", "fields": { - "code": { - "name": "Code", - "description": "An optional code to lock the lock with.", - "example": 1234, + "message_id": { + "required": true, + "example": "{{ trigger.event.data.message.message_id }}", "selector": { "text": null - } + }, + "name": "Message ID", + "description": "Id of the message to edit." + }, + "chat_id": { + "required": true, + "example": 12345, + "selector": { + "text": null + }, + "name": "Chat ID", + "description": "The chat_id where to edit the caption." + }, + "caption": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null + }, + "name": "Caption", + "description": "Message body of the notification." + }, + "inline_keyboard": { + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", + "selector": { + "object": null + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." } - }, - "target": { - "entity": [ - { - "domain": [ - "lock" - ] - } - ] } }, - "open": { - "name": "Open", - "description": "Open all or specified locks.", + "edit_replymarkup": { + "name": "Edit reply markup", + "description": "Edit the inline keyboard of a previously sent message.", "fields": { - "code": { - "name": "Code", - "description": "An optional code to open the lock with.", - "example": 1234, + "message_id": { + "required": true, + "example": "{{ trigger.event.data.message.message_id }}", "selector": { "text": null - } + }, + "name": "Message ID", + "description": "Id of the message to edit." + }, + "chat_id": { + "required": true, + "example": 12345, + "selector": { + "text": null + }, + "name": "Chat ID", + "description": "The chat_id where to edit the reply_markup." + }, + "inline_keyboard": { + "required": true, + "example": "[\u0022/button1, /button2\u0022, \u0022/button3\u0022] or [[[\u0022Text button1\u0022, \u0022/button1\u0022], [\u0022Text button2\u0022, \u0022/button2\u0022]], [[\u0022Text button3\u0022, \u0022/button3\u0022]]]", + "selector": { + "object": null + }, + "name": "Inline keyboard", + "description": "List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data." } - }, - "target": { - "entity": [ - { - "domain": [ - "lock" - ] - } - ] - } - } - }, - "cover": { - "open_cover": { - "name": "Open", - "description": "Open all or specified cover.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } - }, - "close_cover": { - "name": "Close", - "description": "Close all or specified cover.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] } }, - "set_cover_position": { - "name": "Set position", - "description": "Move to specific position all or specified cover.", + "answer_callback_query": { + "name": "Answer callback query", + "description": "Responds to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert.", "fields": { - "position": { - "name": "Position", - "description": "Position of the cover", + "message": { + "required": true, + "example": "OK, I\u0027m listening", + "selector": { + "text": null + }, + "name": "Message", + "description": "Unformatted text message body of the notification." + }, + "callback_query_id": { + "required": true, + "example": "{{ trigger.event.data.id }}", + "selector": { + "text": null + }, + "name": "Callback query ID", + "description": "Unique id of the callback response." + }, + "show_alert": { "required": true, + "selector": { + "boolean": null + }, + "name": "Show alert", + "description": "Show a permanent notification." + }, + "timeout": { "selector": { "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" + "min": 1, + "max": 3600, + "unit_of_measurement": "seconds" } - } + }, + "name": "Timeout", + "description": "Timeout for sending the answer. Will help with timeout errors (poor internet connection, etc)." } - }, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } - }, - "stop_cover": { - "name": "Stop", - "description": "Stop all or specified cover.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } - }, - "toggle": { - "name": "Toggle", - "description": "Toggle a cover open/closed.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } - }, - "open_cover_tilt": { - "name": "Open tilt", - "description": "Open all or specified cover tilt.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } - }, - "close_cover_tilt": { - "name": "Close tilt", - "description": "Close all or specified cover tilt.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } - }, - "stop_cover_tilt": { - "name": "Stop tilt", - "description": "Stop all or specified cover.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] } }, - "set_cover_tilt_position": { - "name": "Set tilt position", - "description": "Move to specific position all or specified cover tilt.", + "delete_message": { + "name": "Delete message", + "description": "Deletes a previously sent message.", "fields": { - "tilt_position": { - "name": "Tilt position", - "description": "Tilt position of the cover.", + "message_id": { "required": true, + "example": "{{ trigger.event.data.message.message_id }}", "selector": { - "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" - } - } + "text": null + }, + "name": "Message ID", + "description": "Id of the message to delete." + }, + "chat_id": { + "required": true, + "example": 12345, + "selector": { + "text": null + }, + "name": "Chat ID", + "description": "The chat_id where to delete the message." } - }, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] } }, - "toggle_cover_tilt": { - "name": "Toggle tilt", - "description": "Toggle a cover tilt open/closed.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "cover" - ] - } - ] - } + "leave_chat": { + "name": "", + "description": "", + "fields": {} } }, - "fan": { - "turn_on": { - "name": "Turn on", - "description": "Turn fan on.", + "ping": { + "reload": { + "name": "Reload", + "description": "Reloads ping sensors from the YAML-configuration.", + "fields": {} + } + }, + "telegram": { + "reload": { + "name": "Reload", + "description": "Reloads telegram notify services.", + "fields": {} + } + }, + "notify": { + "twinstead": { + "name": "Send a notification with twinstead", + "description": "Sends a notification message using the twinstead service.", "fields": { - "speed": { - "name": "Speed", - "description": "Speed setting.", - "example": "high", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "percentage": { - "name": "Percentage", - "description": "Percentage speed setting.", + "title": { + "example": "Your Garage Door Friend", "selector": { - "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" - } + "text": null } }, - "preset_mode": { - "name": "Preset mode", - "description": "Preset mode setting.", - "example": "auto", + "target": { + "example": "platform specific", "selector": { - "text": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] - } - ] - } - }, - "turn_off": { - "name": "Turn off", - "description": "Turn fan off.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] - } - ] - } - }, - "toggle": { - "name": "Toggle", - "description": "Toggle the fan on/off.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] + "object": null } - ] - } - }, - "increase_speed": { - "name": "Increase speed", - "description": "Increase the speed of the fan by one speed or a percentage_step.", - "fields": { - "percentage_step": { - "advanced": true, - "required": false, - "description": "Increase speed by a percentage.", + }, + "data": { + "example": "platform specific", "selector": { - "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" - } + "object": null } } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] - } - ] } }, - "decrease_speed": { - "name": "Decrease speed", - "description": "Decrease the speed of the fan by one speed or a percentage_step.", + "eugene": { + "name": "Send a notification with eugene", + "description": "Sends a notification message using the eugene service.", "fields": { - "percentage_step": { - "advanced": true, - "required": false, - "description": "Decrease speed by a percentage.", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" - } + "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] - } - }, - "oscillate": { - "name": "Oscillate", - "description": "Oscillate the fan.", - "fields": { - "oscillating": { - "name": "Oscillating", - "description": "Flag to turn on/off oscillation.", - "required": true, + }, + "target": { + "example": "platform specific", "selector": { - "boolean": null + "object": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "set_direction": { - "name": "Set direction", - "description": "Set the fan rotation.", + "hailey": { + "name": "Send a notification with hailey", + "description": "Sends a notification message using the hailey service.", "fields": { - "direction": { - "name": "Direction", - "description": "The direction to rotate.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "select": { - "options": [ - { - "label": "Forward", - "value": "forward" - }, - { - "label": "Reverse", - "value": "reverse" - } - ] - } + "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] - } - }, - "set_percentage": { - "name": "Set speed percentage", - "description": "Set fan speed percentage.", - "fields": { - "percentage": { - "name": "Percentage", - "description": "Percentage speed setting.", - "required": true, + }, + "target": { + "example": "platform specific", "selector": { - "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" - } + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] - } - ] } }, - "set_preset_mode": { - "name": "Set preset mode", - "description": "Set preset mode for a fan device.", + "persistent_notification": { + "name": "Send a persistent notification", + "description": "Sends a notification that is visible in the **Notifications** panel.", "fields": { - "preset_mode": { - "name": "Preset mode", - "description": "New value of preset mode.", + "message": { "required": true, - "example": "auto", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "fan" - ] - } - ] - } - } - }, - "number": { - "set_value": { - "name": "Set", - "description": "Set the value of a Number entity.", - "fields": { - "value": { - "name": "Value", - "description": "The target value the entity should be set to.", - "example": 42, + }, + "name": "Message", + "description": "Message body of the notification." + }, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null - } + }, + "name": "Title", + "description": "Title of the notification." + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + }, + "name": "Data", + "description": "Some integrations provide extended functionality. For information on how to use _data_, refer to the integration documentation.." } - }, - "target": { - "entity": [ - { - "domain": [ - "number" - ] - } - ] } - } - }, - "text": { - "set_value": { - "name": "Set value", - "description": "Set value of a text entity.", + }, + "alexa_media_bose_qc35_ii": { + "name": "Send a notification via alexa_media_bose_qc35_ii", + "description": "Sends a notification message using the alexa_media_bose_qc35_ii integration.", "fields": { - "value": { - "name": "Value", - "description": "Value to set.", + "message": { "required": true, - "example": "Hello world!", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "text" - ] - } - ] - } - } - }, - "time": { - "set_value": { - "name": "Set Time", - "description": "Set the time for a time entity.", - "fields": { - "time": { - "name": "Time", - "description": "The time to set.", - "required": true, - "example": "22:15", + }, + "title": { + "example": "Your Garage Door Friend", "selector": { - "time": null + "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "time" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] - } - } - }, - "melcloud": { - "set_vane_horizontal": { - "name": "Set vane horizontal", - "description": "Sets horizontal vane position.", - "fields": { - "position": { - "name": "Position", - "description": "Horizontal vane position. Possible options can be found in the vane_horizontal_positions state attribute.\n", - "required": true, - "example": "auto", + }, + "data": { + "example": "platform specific", "selector": { - "text": null + "object": null } } - }, - "target": { - "entity": [ - { - "integration": "melcloud", - "domain": [ - "climate" - ] - } - ] } }, - "set_vane_vertical": { - "name": "Set vane vertical", - "description": "Sets vertical vane position.", + "alexa_media_downstairs": { + "name": "Send a notification via alexa_media_downstairs", + "description": "Sends a notification message using the alexa_media_downstairs integration.", "fields": { - "position": { - "name": "Position", - "description": "Vertical vane position. Possible options can be found in the vane_vertical_positions state attribute.\n", + "message": { "required": true, - "example": "auto", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "integration": "melcloud", - "domain": [ - "climate" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } - } - }, - "octopus_energy": { - "update_target_config": { - "name": "Update target rate config", - "description": "Updates a given target rate\u0027s config. Please note this is temporary and will not persist between restarts.", + }, + "alexa_media_upstairs": { + "name": "Send a notification via alexa_media_upstairs", + "description": "Sends a notification message using the alexa_media_upstairs integration.", "fields": { - "target_hours": { - "name": "Hours", - "description": "The optional number of hours the target rate sensor should come on during a 24 hour period.", - "example": "1.5", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "target_start_time": { - "name": "Start time", - "description": "The optional time the evaluation period should start.", - "example": "06:00", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "target_end_time": { - "name": "End time", - "description": "The optional time the evaluation period should end.", - "example": "19:00", + "target": { + "example": "platform specific", "selector": { - "text": null + "object": null } }, - "target_offset": { - "name": "Offset", - "description": "The optional offset to apply to the target rate when it starts", + "data": { + "example": "platform specific", "selector": { - "text": null + "object": null } } - }, - "target": { - "entity": [ - { - "integration": "octopus_energy", - "domain": [ - "binary_sensor" - ] - } - ] } - } - }, - "utility_meter": { - "reset": { - "name": "Reset", - "description": "Resets all counters of a utility meter.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "select" - ] + }, + "alexa_media_master_tv_alexa": { + "name": "Send a notification via alexa_media_master_tv_alexa", + "description": "Sends a notification message using the alexa_media_master_tv_alexa integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null + } + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "calibrate": { - "name": "Calibrate", - "description": "Calibrates a utility meter sensor.", + "alexa_media_eugene_s_fire": { + "name": "Send a notification via alexa_media_eugene_s_fire", + "description": "Sends a notification message using the alexa_media_eugene_s_fire integration.", "fields": { - "value": { - "name": "Value", - "description": "Value to which set the meter", - "example": "100", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "sensor" - ], - "integration": "utility_meter" + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } - } - }, - "history_stats": { - "reload": { - "name": "Reload", - "description": "Reload all history_stats entities.", - "fields": {} - } - }, - "calendar": { - "create_event": { - "name": "Create event", - "description": "Add a new calendar event.", + }, + "alexa_media_office": { + "name": "Send a notification via alexa_media_office", + "description": "Sends a notification message using the alexa_media_office integration.", "fields": { - "summary": { - "name": "Summary", - "description": "Defines the short summary or subject for the event", + "message": { "required": true, - "example": "Department Party", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "description": { - "name": "Description", - "description": "A more complete description of the event than that provided by the summary.", - "example": "Meeting to provide technical review for \u0027Phoenix\u0027 design.", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "start_date_time": { - "name": "Start time", - "description": "The date and time the event should start.", - "example": "2022-03-22 20:00:00", + "target": { + "example": "platform specific", "selector": { - "datetime": null + "object": null } }, - "end_date_time": { - "name": "End time", - "description": "The date and time the event should end.", - "example": "2022-03-22 22:00:00", + "data": { + "example": "platform specific", "selector": { - "datetime": null + "object": null } - }, - "start_date": { - "name": "Start date", - "description": "The date the all-day event should start.", - "example": "2022-03-22", + } + } + }, + "alexa_media_aaron": { + "name": "Send a notification via alexa_media_aaron", + "description": "Sends a notification message using the alexa_media_aaron integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "date": null + "text": null } }, - "end_date": { - "name": "End date", - "description": "The date the all-day event should end (exclusive).", - "example": "2022-03-23", + "title": { + "example": "Your Garage Door Friend", "selector": { - "date": null + "text": null } }, - "in": { - "name": "In", - "description": "Days or weeks that you want to create the event in.", - "example": "{\u0022days\u0022: 2} or {\u0022weeks\u0022: 2}" + "target": { + "example": "platform specific", + "selector": { + "object": null + } }, - "location": { - "name": "Location", - "description": "The location of the event.", - "example": "Conference Room - F123, Bldg. 002", + "data": { + "example": "platform specific", "selector": { - "text": null + "object": null } } - }, - "target": { - "entity": [ - { - "domain": [ - "calendar" - ] - } - ] } - } - }, - "webostv": { - "button": { - "name": "Button", - "description": "Send a button press command.", + }, + "alexa_media_eugene_s_2nd_echo_dot": { + "name": "Send a notification via alexa_media_eugene_s_2nd_echo_dot", + "description": "Sends a notification message using the alexa_media_eugene_s_2nd_echo_dot integration.", "fields": { - "entity_id": { - "name": "Entity", - "description": "Name(s) of the webostv entities where to run the API method.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "entity": { - "integration": "webostv", - "domain": "media_player" - } + "text": null } }, - "button": { - "name": "Button", - "description": "Name of the button to press. Known possible values are LEFT, RIGHT, DOWN, UP, HOME, MENU, BACK, ENTER, DASH, INFO, ASTERISK, CC, EXIT, MUTE, RED, GREEN, BLUE, YELLOW, VOLUMEUP, VOLUMEDOWN, CHANNELUP, CHANNELDOWN, PLAY, PAUSE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9", - "required": true, - "example": "LEFT", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } } } }, - "command": { - "name": "Command", - "description": "Send a command.", + "alexa_media_dining": { + "name": "Send a notification via alexa_media_dining", + "description": "Sends a notification message using the alexa_media_dining integration.", "fields": { - "entity_id": { - "name": "Entity", - "description": "Name(s) of the webostv entities where to run the API method.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "entity": { - "integration": "webostv", - "domain": "media_player" - } + "text": null } }, - "command": { - "name": "Command", - "description": "Endpoint of the command.", - "required": true, - "example": "system.launcher/open", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "payload": { - "name": "Payload", - "description": "An optional payload to provide to the endpoint in the format of key value pair(s).", - "example": "target: https://www.google.com", - "advanced": true, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", "selector": { "object": null } } } }, - "select_sound_output": { - "name": "Select Sound Output", - "description": "Send the TV the command to change sound output.", + "alexa_media_everywhere_2": { + "name": "Send a notification via alexa_media_everywhere_2", + "description": "Sends a notification message using the alexa_media_everywhere_2 integration.", "fields": { - "entity_id": { - "name": "Entity", - "description": "Name(s) of the webostv entities to change sound output on.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "entity": { - "integration": "webostv", - "domain": "media_player" - } + "text": null } }, - "sound_output": { - "name": "Sound Output", - "description": "Name of the sound output to switch to.", - "required": true, - "example": "external_speaker", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } } } - } - }, - "min_max": { - "reload": { - "name": "Reload", - "description": "Reload all min_max entities.", - "fields": {} - } - }, - "mqtt": { - "publish": { - "name": "Publish", - "description": "Publish a message to an MQTT topic.", + }, + "alexa_media_playroom": { + "name": "Send a notification via alexa_media_playroom", + "description": "Sends a notification message using the alexa_media_playroom integration.", "fields": { - "topic": { - "name": "Topic", - "description": "Topic to publish payload.", + "message": { "required": true, - "example": "/homeassistant/hello", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "payload": { - "name": "Payload", - "description": "Payload to publish.", - "example": "This is great", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "payload_template": { - "name": "Payload Template", - "description": "Template to render as payload value. Ignored if payload given.", - "advanced": true, - "example": "{{ states(\u0027sensor.temperature\u0027) }}", + "target": { + "example": "platform specific", "selector": { "object": null } }, - "qos": { - "name": "QoS", - "description": "Quality of Service to use.", - "advanced": true, - "default": 0, - "selector": { - "select": { - "options": [ - "0", - "1", - "2" - ] - } - } - }, - "retain": { - "name": "Retain", - "description": "If message should have the retain flag set.", - "default": false, + "data": { + "example": "platform specific", "selector": { - "boolean": null + "object": null } } } }, - "dump": { - "name": "Dump", - "description": "Dump messages on a topic selector to the \u0027mqtt_dump.txt\u0027 file in your configuration folder.", + "alexa_media_master": { + "name": "Send a notification via alexa_media_master", + "description": "Sends a notification message using the alexa_media_master integration.", "fields": { - "topic": { - "name": "Topic", - "description": "topic to listen to", - "example": "OpenZWave/#", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "duration": { - "name": "Duration", - "description": "how long we should listen for messages in seconds", - "default": 5, + "title": { + "example": "Your Garage Door Friend", "selector": { - "number": { - "min": 1, - "max": 300, - "unit_of_measurement": "seconds" - } - } - } - } - }, - "reload": { - "name": "Reload", - "description": "Reload all MQTT entities from YAML.", - "fields": {} - } - }, - "button": { - "press": { - "name": "Press", - "description": "Press the button entity.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "button" - ] - } - ] - } - } - }, - "humidifier": { - "turn_on": { - "name": "Turn on", - "description": "Turn humidifier device on.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "humidifier" - ] + "text": null } - ] - } - }, - "turn_off": { - "name": "Turn off", - "description": "Turn humidifier device off.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "humidifier" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] - } - }, - "toggle": { - "name": "Toggle", - "description": "Toggles a humidifier device.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "humidifier" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "set_mode": { - "name": "Set mode", - "description": "Set mode for humidifier device.", + "alexa_media_jayden": { + "name": "Send a notification via alexa_media_jayden", + "description": "Sends a notification message using the alexa_media_jayden integration.", "fields": { - "mode": { - "description": "New mode", + "message": { "required": true, - "example": "away", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "humidifier" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "set_humidity": { - "name": "Set humidity", - "description": "Set target humidity of humidifier device.", + "alexa_media_eugene_s_sonos_arc": { + "name": "Send a notification via alexa_media_eugene_s_sonos_arc", + "description": "Sends a notification message using the alexa_media_eugene_s_sonos_arc integration.", "fields": { - "humidity": { - "description": "New target humidity for humidifier device.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "number": { - "min": 0, - "max": 100, - "unit_of_measurement": "%" - } - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "humidifier" - ] + "text": null } - ] - } - } - }, - "alarm_control_panel": { - "alarm_disarm": { - "name": "Disarm", - "description": "Send the alarm the command for disarm.", - "fields": { - "code": { - "name": "Code", - "description": "An optional code to disarm the alarm control panel with.", - "example": "1234", + }, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "alarm_arm_home": { - "name": "Arm home", - "description": "Send the alarm the command for arm home.", + "alexa_media_lounge_sonos": { + "name": "Send a notification via alexa_media_lounge_sonos", + "description": "Sends a notification message using the alexa_media_lounge_sonos integration.", "fields": { - "code": { - "name": "Code", - "description": "An optional code to arm home the alarm control panel with.", - "example": "1234", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null + } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "alarm_arm_away": { - "name": "Arm away", - "description": "Send the alarm the command for arm away.", + "alexa_media_eugene_s_lg_oled_webos_2021_tv": { + "name": "Send a notification via alexa_media_eugene_s_lg_oled_webos_2021_tv", + "description": "Sends a notification message using the alexa_media_eugene_s_lg_oled_webos_2021_tv integration.", "fields": { - "code": { - "name": "Code", - "description": "An optional code to arm away the alarm control panel with.", - "example": "1234", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] - } - ] - } - }, - "alarm_arm_night": { - "name": "Arm night", - "description": "Send the alarm the command for arm night.", - "fields": { - "code": { - "name": "Code", - "description": "An optional code to arm night the alarm control panel with.", - "example": "1234", + }, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] - } - }, - "alarm_arm_vacation": { - "name": "Arm vacation", - "description": "Send the alarm the command for arm vacation.", - "fields": { - "code": { - "name": "Code", - "description": "An optional code to arm vacation the alarm control panel with.", - "example": "1234", + }, + "data": { + "example": "platform specific", "selector": { - "text": null + "object": null } } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] - } - ] } }, - "alarm_arm_custom_bypass": { - "name": "Arm with custom bypass", - "description": "Send arm custom bypass command.", + "alexa_media_eugene_s_5th_echo_dot": { + "name": "Send a notification via alexa_media_eugene_s_5th_echo_dot", + "description": "Sends a notification message using the alexa_media_eugene_s_5th_echo_dot integration.", "fields": { - "code": { - "name": "Code", - "description": "An optional code to arm custom bypass the alarm control panel with.", - "example": "1234", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "alarm_trigger": { - "name": "Trigger", - "description": "Send the alarm the command for trigger.", + "alexa_media_kitchen": { + "name": "Send a notification via alexa_media_kitchen", + "description": "Sends a notification message using the alexa_media_kitchen integration.", "fields": { - "code": { - "name": "Code", - "description": "An optional code to trigger the alarm control panel with.", - "example": "1234", + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "alarm_control_panel" - ] - } - ] - } - } - }, - "vacuum": { - "turn_on": { - "name": "Turn on", - "description": "Start a new cleaning task.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] - } - }, - "turn_off": { - "name": "Turn off", - "description": "Stop the current cleaning task and return to home.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] - } - }, - "toggle": { - "name": "", - "description": "", - "fields": {} - }, - "start_pause": { - "name": "Start/Pause", - "description": "Start, pause, or resume the cleaning task.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "start": { - "name": "Start", - "description": "Start or resume the cleaning task.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + "alexa_media_this_device_3": { + "name": "Send a notification via alexa_media_this_device_3", + "description": "Sends a notification message using the alexa_media_this_device_3 integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null } - ] - } - }, - "pause": { - "name": "Pause", - "description": "Pause the cleaning task.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] - } - }, - "return_to_base": { - "name": "Return to base", - "description": "Tell the vacuum cleaner to return to its dock.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] - } - }, - "clean_spot": { - "name": "Clean spot", - "description": "Tell the vacuum cleaner to do a spot clean-up.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "locate": { - "name": "Locate", - "description": "Locate the vacuum cleaner robot.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + "alexa_media_this_device": { + "name": "Send a notification via alexa_media_this_device", + "description": "Sends a notification message using the alexa_media_this_device integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null } - ] - } - }, - "stop": { - "name": "Stop", - "description": "Stop the current cleaning task.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "set_fan_speed": { - "name": "Set fan speed", - "description": "Set the fan speed of the vacuum cleaner.", + "alexa_media": { + "name": "Send a notification with alexa_media", + "description": "Sends a notification message using the alexa_media service.", "fields": { - "fan_speed": { - "name": "Fan speed", - "description": "Platform dependent vacuum cleaner fan speed, with speed steps, like \u0027medium\u0027 or by percentage, between 0 and 100.", + "message": { "required": true, - "example": "low", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null } - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "send_command": { - "name": "Send command", - "description": "Send a raw command to the vacuum cleaner.", + "lounge_tv": { + "name": "Send a notification with lounge_tv", + "description": "Sends a notification message using the lounge_tv service.", "fields": { - "command": { - "name": "Command", - "description": "Command to execute.", + "message": { "required": true, - "example": "set_dnd_timer", + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "params": { - "name": "Parameters", - "description": "Parameters for the command.", - "example": "{ \u0022key\u0022: \u0022value\u0022 }", + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null + } + }, + "target": { + "example": "platform specific", "selector": { "object": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "vacuum" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } - } - }, - "siren": { - "turn_on": { - "name": "", - "description": "Turn siren on.", + }, + "master_tv": { + "name": "Send a notification with master_tv", + "description": "Sends a notification message using the master_tv service.", "fields": { - "tone": { - "description": "The tone to emit when turning the siren on. When \u0060available_tones\u0060 property is a map, either the key or the value can be used. Must be supported by the integration.", - "example": "fire", - "required": false, + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "volume_level": { - "description": "The volume level of the noise to emit when turning the siren on. Must be supported by the integration.", - "example": 0.5, - "required": false, + "title": { + "example": "Your Garage Door Friend", "selector": { - "number": { - "min": 0, - "max": 1, - "step": 0.05 - } + "text": null } }, - "duration": { - "description": "The duration in seconds of the noise to emit when turning the siren on. Must be supported by the integration.", - "example": 15, - "required": false, + "target": { + "example": "platform specific", "selector": { - "text": null + "object": null } - } - }, - "target": { - "entity": [ - { - "domain": [ - "siren" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "turn_off": { - "name": "", - "description": "Turn siren off.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "siren" - ] + "mobile_app_haileys_macbook_air": { + "name": "Send a notification via mobile_app_haileys_macbook_air", + "description": "Sends a notification message using the mobile_app_haileys_macbook_air integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null } - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null + } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } }, - "toggle": { - "name": "", - "description": "Toggles a siren.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "siren" - ] + "mobile_app_iphone": { + "name": "Send a notification via mobile_app_iphone", + "description": "Sends a notification message using the mobile_app_iphone integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null } - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null + } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } - } - }, - "home_connect": { - "set_option_active": { - "name": "Set active program option", - "description": "Sets an option for the active program.", + }, + "mobile_app_jayden_s_iphone": { + "name": "Send a notification via mobile_app_jayden_s_iphone", + "description": "Sends a notification message using the mobile_app_jayden_s_iphone integration.", "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "device": { - "integration": "home_connect" - } + "text": null } }, - "key": { - "name": "Key", - "description": "Key of the option.", - "example": "LaundryCare.Dryer.Option.DryingTarget", - "required": true, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "value": { - "name": "Value", - "description": "Value of the option.", - "example": "LaundryCare.Dryer.EnumType.DryingTarget.IronDry", - "required": true, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", "selector": { "object": null } } } }, - "set_option_selected": { - "name": "Set selected program option", - "description": "Sets an option for the selected program.", + "mobile_app_eugene_s_iphone": { + "name": "Send a notification via mobile_app_eugene_s_iphone", + "description": "Sends a notification message using the mobile_app_eugene_s_iphone integration.", "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "device": { - "integration": "home_connect" - } + "text": null } }, - "key": { - "name": "Key", - "description": "Key of the option.", - "example": "LaundryCare.Dryer.Option.DryingTarget", - "required": true, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "value": { - "name": "Value", - "description": "Value of the option.", - "example": "LaundryCare.Dryer.EnumType.DryingTarget.IronDry", - "required": true, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", "selector": { "object": null } } } }, - "change_setting": { - "name": "Change setting", - "description": "Changes a setting.", + "mobile_app_hailey_s_iphone": { + "name": "Send a notification via mobile_app_hailey_s_iphone", + "description": "Sends a notification message using the mobile_app_hailey_s_iphone integration.", "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "device": { - "integration": "home_connect" - } + "text": null } }, - "key": { - "name": "Key", - "description": "Key of the setting.", - "example": "BSH.Common.Setting.ChildLock", - "required": true, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "value": { - "name": "Value", - "description": "Value of the setting.", - "example": "true", - "required": true, + "target": { + "example": "platform specific", "selector": { "object": null } - } - } - }, - "pause_program": { - "name": "Pause program", - "description": "Pauses the current running program.", - "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", - "required": true, + }, + "data": { + "example": "platform specific", "selector": { - "device": { - "integration": "home_connect" - } + "object": null } } } }, - "resume_program": { - "name": "Resume program", - "description": "Resumes a paused program.", + "mobile_app_jayden_s_ipad": { + "name": "Send a notification via mobile_app_jayden_s_ipad", + "description": "Sends a notification message using the mobile_app_jayden_s_ipad integration.", "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "device": { - "integration": "home_connect" - } + "text": null + } + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null + } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } } } }, - "select_program": { - "name": "Select program", - "description": "Selects a program without starting it.", + "mobile_app_ml_nx07kg671n": { + "name": "Send a notification via mobile_app_ml_nx07kg671n", + "description": "Sends a notification message using the mobile_app_ml_nx07kg671n integration.", "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", - "required": true, - "selector": { - "device": { - "integration": "home_connect" - } - } - }, - "program": { - "name": "Program", - "description": "Program to select", - "example": "Dishcare.Dishwasher.Program.Auto2", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { "text": null } }, - "key": { - "name": "Option key", - "description": "Key of the option.", - "example": "BSH.Common.Option.StartInRelative", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "value": { - "name": "Option value", - "description": "Value of the option.", - "example": 1800, + "target": { + "example": "platform specific", "selector": { "object": null } }, - "unit": { - "name": "Option unit", - "description": "Unit for the option.", - "example": "seconds", + "data": { + "example": "platform specific", "selector": { - "text": null + "object": null } } } }, - "start_program": { - "name": "Start program", - "description": "Selects a program and starts it.", + "mobile_app_iphone8p": { + "name": "Send a notification via mobile_app_iphone8p", + "description": "Sends a notification message using the mobile_app_iphone8p integration.", "fields": { - "device_id": { - "name": "Device ID", - "description": "Id of the device.", + "message": { "required": true, + "example": "The garage door has been open for 10 minutes.", "selector": { - "device": { - "integration": "home_connect" - } + "text": null } }, - "program": { - "name": "Program", - "description": "Program to select", - "example": "Dishcare.Dishwasher.Program.Auto2", - "required": true, + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } }, - "key": { - "name": "Option key", - "description": "Key of the option.", - "example": "BSH.Common.Option.StartInRelative", + "target": { + "example": "platform specific", "selector": { - "text": null + "object": null } }, - "value": { - "name": "Option value", - "description": "Value of the option.", - "example": 1800, + "data": { + "example": "platform specific", "selector": { "object": null } + } + } + }, + "notify": { + "name": "Send a notification with notify", + "description": "Sends a notification message using the notify service.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null + } }, - "unit": { - "name": "Option unit", - "description": "Unit for the option.", - "example": "seconds", + "title": { + "example": "Your Garage Door Friend", "selector": { "text": null } - } - } - } - }, - "switch": { - "turn_off": { - "name": "Turn off", - "description": "Turn a switch off", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "switch" - ] + }, + "target": { + "example": "platform specific", + "selector": { + "object": null } - ] - } - }, - "turn_on": { - "name": "Turn on", - "description": "Turn a switch on", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "switch" - ] + }, + "data": { + "example": "platform specific", + "selector": { + "object": null } - ] + } } }, - "toggle": { - "name": "Toggle", - "description": "Toggles a switch state", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "switch" - ] + "alexa_media_last_called": { + "name": "Send a notification via alexa_media_last_called", + "description": "Sends a notification message using the alexa_media_last_called integration.", + "fields": { + "message": { + "required": true, + "example": "The garage door has been open for 10 minutes.", + "selector": { + "text": null } - ] + }, + "title": { + "example": "Your Garage Door Friend", + "selector": { + "text": null + } + }, + "target": { + "example": "platform specific", + "selector": { + "object": null + } + }, + "data": { + "example": "platform specific", + "selector": { + "object": null + } + } } } }, @@ -9121,1692 +8888,1911 @@ } } }, - "pi_hole": { - "disable": { - "name": "Disable", - "description": "Disable configured Pi-hole(s) for an amount of time", - "fields": { - "duration": { - "name": "Duration", - "description": "Time that the Pi-hole should be disabled for", - "required": true, - "example": "00:00:15", - "selector": { - "text": null - } - } - }, - "target": { - "entity": [ - { - "integration": "pi_hole", - "domain": [ - "switch" - ] - } - ] - } - } - }, - "adaptive_lighting": { - "apply": { - "name": "", - "description": "Applies the current Adaptive Lighting settings to lights.", - "fields": { - "entity_id": { - "description": "The \u0060entity_id\u0060 of the switch with the settings to apply. \uD83D\uDCDD", - "selector": { - "entity": { - "integration": "adaptive_lighting", - "domain": "switch", - "multiple": false - } - } - }, - "lights": { - "description": "A light (or list of lights) to apply the settings to. \uD83D\uDCA1", - "selector": { - "entity": { - "domain": "light", - "multiple": true - } - } - }, - "transition": { - "description": "Duration of transition when lights change, in seconds. \uD83D\uDD51", - "example": 10, - "selector": { - "text": null - } - }, - "adapt_brightness": { - "description": "Whether to adapt the brightness of the light. \uD83C\uDF1E", - "example": true, - "selector": { - "boolean": null - } - }, - "adapt_color": { - "description": "Whether to adapt the color on supporting lights. \uD83C\uDF08", - "example": true, - "selector": { - "boolean": null - } - }, - "prefer_rgb_color": { - "description": "Whether to prefer RGB color adjustment over light color temperature when possible. \uD83C\uDF08", - "example": false, - "selector": { - "boolean": null - } - }, - "turn_on_lights": { - "description": "Whether to turn on lights that are currently off. \uD83D\uDD06", - "example": false, - "selector": { - "boolean": null - } - } - } - }, - "set_manual_control": { - "name": "", - "description": "Mark whether a light is \u0027manually controlled\u0027.", - "fields": { - "entity_id": { - "description": "The \u0060entity_id\u0060 of the switch in which to (un)mark the light as being \u0060manually controlled\u0060. \uD83D\uDCDD", - "selector": { - "entity": { - "integration": "adaptive_lighting", - "domain": "switch", - "multiple": false - } - } - }, - "lights": { - "description": "entity_id(s) of lights, if not specified, all lights in the switch are selected. \uD83D\uDCA1", - "selector": { - "entity": { - "domain": "light", - "multiple": true - } - } - }, - "manual_control": { - "description": "Whether to add (\u0022true\u0022) or remove (\u0022false\u0022) the light from the \u0022manual_control\u0022 list. \uD83D\uDD12", - "example": true, - "default": true, - "selector": { - "boolean": null - } - } - } - }, - "change_switch_settings": { - "name": "", - "description": "Change any settings you\u0027d like in the switch. All options here are the same as in the config flow.", + "octopus_energy": { + "update_target_config": { + "name": "Update target rate config", + "description": "Updates a given target rate\u0027s config. Please note this is temporary and will not persist between restarts.", "fields": { - "entity_id": { - "description": "Entity ID of the switch. \uD83D\uDCDD", - "required": true, - "selector": { - "entity": { - "domain": "switch" - } - } - }, - "use_defaults": { - "description": "Sets the default values not specified in this service call. Options: \u0022current\u0022 (default, retains current values), \u0022factory\u0022 (resets to documented defaults), or \u0022configuration\u0022 (reverts to switch config defaults). \u2699\uFE0F", - "example": "current", - "required": false, - "default": "current", - "selector": { - "select": { - "options": [ - "current", - "configuration", - "factory" - ] - } - } - }, - "include_config_in_attributes": { - "description": "Show all options as attributes on the switch in Home Assistant when set to \u0060true\u0060. \uD83D\uDCDD", - "required": false, - "selector": { - "boolean": null - } - }, - "turn_on_lights": { - "description": "Whether to turn on lights that are currently off. \uD83D\uDD06", - "example": false, - "required": false, - "selector": { - "boolean": null - } - }, - "initial_transition": { - "description": "Duration of the first transition when lights turn from \u0060off\u0060 to \u0060on\u0060 in seconds. \u23F2\uFE0F", - "example": 1, - "required": false, - "selector": { - "text": null - } - }, - "sleep_transition": { - "description": "Duration of transition when \u0022sleep mode\u0022 is toggled in seconds. \uD83D\uDE34", - "example": 1, - "required": false, - "selector": { - "text": null - } - }, - "max_brightness": { - "description": "Maximum brightness percentage. \uD83D\uDCA1", - "required": false, - "example": 100, - "selector": { - "text": null - } - }, - "max_color_temp": { - "description": "Coldest color temperature in Kelvin. \u2744\uFE0F", - "required": false, - "example": 5500, - "selector": { - "text": null - } - }, - "min_brightness": { - "description": "Minimum brightness percentage. \uD83D\uDCA1", - "required": false, - "example": 1, - "selector": { - "text": null - } - }, - "min_color_temp": { - "description": "Warmest color temperature in Kelvin. \uD83D\uDD25", - "required": false, - "example": 2000, + "target_hours": { + "name": "Hours", + "description": "The optional number of hours the target rate sensor should come on during a 24 hour period.", + "example": "1.5", "selector": { "text": null } }, - "only_once": { - "description": "Adapt lights only when they are turned on (\u0060true\u0060) or keep adapting them (\u0060false\u0060). \uD83D\uDD04", - "example": false, - "required": false, - "selector": { - "boolean": null - } - }, - "prefer_rgb_color": { - "description": "Whether to prefer RGB color adjustment over light color temperature when possible. \uD83C\uDF08", - "required": false, - "example": false, - "selector": { - "boolean": null - } - }, - "separate_turn_on_commands": { - "description": "Use separate \u0060light.turn_on\u0060 calls for color and brightness, needed for some light types. \uD83D\uDD00", - "required": false, - "example": false, + "target_start_time": { + "name": "Start time", + "description": "The optional time the evaluation period should start.", + "example": "06:00", "selector": { - "boolean": null + "text": null } }, - "send_split_delay": { - "description": "Delay (ms) between \u0060separate_turn_on_commands\u0060 for lights that don\u0027t support simultaneous brightness and color setting. \u23F2\uFE0F", - "required": false, - "example": 0, + "target_end_time": { + "name": "End time", + "description": "The optional time the evaluation period should end.", + "example": "19:00", "selector": { - "boolean": null + "text": null } }, - "sleep_brightness": { - "description": "Brightness percentage of lights in sleep mode. \uD83D\uDE34", - "required": false, - "example": 1, + "target_offset": { + "name": "Offset", + "description": "The optional offset to apply to the target rate when it starts", "selector": { "text": null } - }, - "sleep_rgb_or_color_temp": { - "description": "Use either \u0060\u0022rgb_color\u0022\u0060 or \u0060\u0022color_temp\u0022\u0060 in sleep mode. \uD83C\uDF19", - "required": false, - "example": "color_temp", - "selector": { - "select": { - "options": [ - "rgb_color", - "color_temp" - ] - } + } + }, + "target": { + "entity": [ + { + "integration": "octopus_energy", + "domain": [ + "binary_sensor" + ] } - }, - "sleep_rgb_color": { - "description": "RGB color in sleep mode (used when \u0060sleep_rgb_or_color_temp\u0060 is \u0022rgb_color\u0022). \uD83C\uDF08", - "required": false, + ] + } + } + }, + "webostv": { + "button": { + "name": "Button", + "description": "Sends a button press command.", + "fields": { + "entity_id": { + "required": true, "selector": { - "color_rgb": null - } + "entity": { + "integration": "webostv", + "domain": "media_player" + } + }, + "name": "Entity", + "description": "Name(s) of the webostv entities where to run the API method." }, - "sleep_color_temp": { - "description": "Color temperature in sleep mode (used when \u0060sleep_rgb_or_color_temp\u0060 is \u0060color_temp\u0060) in Kelvin. \uD83D\uDE34", - "required": false, - "example": 1000, + "button": { + "required": true, + "example": "LEFT", "selector": { "text": null - } - }, - "sunrise_offset": { - "description": "Adjust sunrise time with a positive or negative offset in seconds. \u23F0", - "required": false, - "example": 0, + }, + "name": "Button", + "description": "Name of the button to press. Known possible values are LEFT, RIGHT, DOWN, UP, HOME, MENU, BACK, ENTER, DASH, INFO, ASTERISK, CC, EXIT, MUTE, RED, GREEN, BLUE, YELLOW, VOLUMEUP, VOLUMEDOWN, CHANNELUP, CHANNELDOWN, PLAY, PAUSE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9." + } + } + }, + "command": { + "name": "Command", + "description": "Sends a command.", + "fields": { + "entity_id": { + "required": true, "selector": { - "number": { - "min": 0, - "max": 86300 + "entity": { + "integration": "webostv", + "domain": "media_player" } - } + }, + "name": "Entity", + "description": "Name(s) of the webostv entities where to run the API method." }, - "sunrise_time": { - "description": "Set a fixed time (HH:MM:SS) for sunrise. \uD83C\uDF05", - "required": false, - "example": "", + "command": { + "required": true, + "example": "system.launcher/open", "selector": { - "time": null - } + "text": null + }, + "name": "Command", + "description": "Endpoint of the command." }, - "sunset_offset": { - "description": "Adjust sunset time with a positive or negative offset in seconds. \u23F0", - "required": false, - "example": "", + "payload": { + "example": "target: https://www.google.com", + "advanced": true, "selector": { - "number": { - "min": 0, - "max": 86300 + "object": null + }, + "name": "Payload", + "description": "An optional payload to provide to the endpoint in the format of key value pair(s)." + } + } + }, + "select_sound_output": { + "name": "Select sound output", + "description": "Sends the TV the command to change sound output.", + "fields": { + "entity_id": { + "required": true, + "selector": { + "entity": { + "integration": "webostv", + "domain": "media_player" } - } + }, + "name": "Entity", + "description": "Name(s) of the webostv entities to change sound output on." }, - "sunset_time": { - "description": "Set a fixed time (HH:MM:SS) for sunset. \uD83C\uDF07", - "example": "", - "required": false, + "sound_output": { + "required": true, + "example": "external_speaker", "selector": { - "time": null + "text": null + }, + "name": "Sound output", + "description": "Name of the sound output to switch to." + } + } + } + }, + "utility_meter": { + "reset": { + "name": "Reset", + "description": "Resets all counters of a utility meter.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "select" + ] } - }, - "max_sunrise_time": { - "description": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier real sunrises. \uD83C\uDF05", - "example": "", - "required": false, + ] + } + }, + "calibrate": { + "name": "Calibrate", + "description": "Calibrates a utility meter sensor.", + "fields": { + "value": { + "example": "100", + "required": true, "selector": { - "time": null + "text": null + }, + "name": "Value", + "description": "Value to which set the meter." + } + }, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "integration": "utility_meter" } + ] + } + } + }, + "calendar": { + "create_event": { + "name": "Create event", + "description": "Adds a new calendar event.", + "fields": { + "summary": { + "required": true, + "example": "Department Party", + "selector": { + "text": null + }, + "name": "Summary", + "description": "Defines the short summary or subject for the event." }, - "min_sunset_time": { - "description": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later real sunsets. \uD83C\uDF07", - "example": "", - "required": false, + "description": { + "example": "Meeting to provide technical review for \u0027Phoenix\u0027 design.", "selector": { - "time": null - } + "text": null + }, + "name": "Description", + "description": "A more complete description of the event than the one provided by the summary." }, - "take_over_control": { - "description": "Disable Adaptive Lighting if another source calls \u0060light.turn_on\u0060 while lights are on and being adapted. Note that this calls \u0060homeassistant.update_entity\u0060 every \u0060interval\u0060! \uD83D\uDD12", - "required": false, - "example": true, + "start_date_time": { + "example": "2022-03-22 20:00:00", "selector": { - "boolean": null - } + "datetime": null + }, + "name": "Start time", + "description": "The date and time the event should start." }, - "detect_non_ha_changes": { - "description": "Detects and halts adaptations for non-\u0060light.turn_on\u0060 state changes. Needs \u0060take_over_control\u0060 enabled. \uD83D\uDD75\uFE0F Caution: \u26A0\uFE0F Some lights might falsely indicate an \u0027on\u0027 state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.", - "required": false, - "example": false, + "end_date_time": { + "example": "2022-03-22 22:00:00", "selector": { - "boolean": null - } + "datetime": null + }, + "name": "End time", + "description": "The date and time the event should end." }, - "transition": { - "description": "Duration of transition when lights change, in seconds. \uD83D\uDD51", - "required": false, - "example": 45, + "start_date": { + "example": "2022-03-22", "selector": { - "text": null - } + "date": null + }, + "name": "Start date", + "description": "The date the all-day event should start." }, - "adapt_delay": { - "description": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. \u23F2\uFE0F", - "required": false, - "example": 0, + "end_date": { + "example": "2022-03-23", "selector": { - "text": null - } + "date": null + }, + "name": "End date", + "description": "The date the all-day event should end (exclusive)." }, - "autoreset_control_seconds": { - "description": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. \u23F2\uFE0F", - "required": false, - "example": 0, + "in": { + "example": "{\u0022days\u0022: 2} or {\u0022weeks\u0022: 2}", + "name": "In", + "description": "Days or weeks that you want to create the event in." + }, + "location": { + "example": "Conference Room - F123, Bldg. 002", "selector": { "text": null - } + }, + "name": "Location", + "description": "The location of the event." } - } - } - }, - "unifi": { - "reconnect_client": { - "name": "Reconnect wireless client", - "description": "Try to get wireless client to reconnect to UniFi Network", - "fields": { - "device_id": { - "name": "Device", - "description": "Try reconnect client to wireless network", - "required": true, - "selector": { - "device": { - "integration": "unifi" - } + }, + "target": { + "entity": [ + { + "domain": [ + "calendar" + ], + "supported_features": [ + 1 + ] } - } + ] } }, - "remove_clients": { - "name": "Remove clients from the UniFi Network", - "description": "Clean up clients that has only been associated with the controller for a short period of time.", - "fields": {} - } - }, - "alarmo": { - "enable_user": { - "name": "Enable User", - "description": "Allow a user to arm/disarm alarmo.", + "list_events": { + "name": "List event", + "description": "Lists events on a calendar within a time range.", "fields": { - "name": { - "name": "Name", - "description": "Name of the user to enable.", - "example": "Frank", - "required": true, + "start_date_time": { + "example": "2022-03-22 20:00:00", "selector": { - "text": null - } - } - } - }, - "disable_user": { - "name": "Disable User", - "description": "Block a user from arming/disarming alarmo.", - "fields": { - "name": { - "name": "Name", - "description": "Name of the user to disable.", - "example": "Frank", - "required": true, + "datetime": null + }, + "name": "Start time", + "description": "Returns active events after this time (exclusive). When not set, defaults to now." + }, + "end_date_time": { + "example": "2022-03-22 22:00:00", "selector": { - "text": null - } + "datetime": null + }, + "name": "End time", + "description": "Returns active events before this time (exclusive). Cannot be used with \u0027duration\u0027." + }, + "duration": { + "selector": { + "duration": null + }, + "name": "Duration", + "description": "Returns active events from start_date_time until the specified duration." } + }, + "target": { + "entity": [ + { + "domain": [ + "calendar" + ] + } + ] + }, + "response": { + "optional": false } - }, - "arm": { - "name": "Arm", - "description": "Arm an Alarmo entity with custom settings.", + } + }, + "tts": { + "google_translate_say": { + "name": "Say a TTS message with google_translate", + "description": "Say something using text-to-speech on a media player with google_translate.", "fields": { "entity_id": { - "name": "Entity ID", - "description": "Name of entity that should be armed.", - "example": "alarm_control_panel.alarm", "required": true, "selector": { "entity": { - "integration": "alarmo", - "domain": "alarm_control_panel" + "domain": "media_player" } } }, - "code": { - "name": "Code", - "description": "Code to arm the alarm with.", - "example": "1234", - "required": false, + "message": { + "example": "My name is hanna", + "required": true, "selector": { "text": null } }, - "mode": { - "name": "Mode", - "description": "Mode to arm the alarm in.", - "example": "away", - "required": false, - "default": "away", + "cache": { + "default": false, "selector": { - "select": { - "options": [ - "away", - "night", - "home", - "vacation", - "custom" - ] - } + "boolean": null } }, - "skip_delay": { - "name": "Skip Delay", - "description": "Skip the exit delay.", - "example": true, - "required": false, - "default": false, + "language": { + "example": "ru", "selector": { - "boolean": null + "text": null } }, - "force": { - "name": "Force", - "description": "Automatically bypass all sensors that prevent the arming operation.", - "example": true, - "required": false, - "default": false, + "options": { + "advanced": true, + "example": "platform specific", "selector": { - "boolean": null + "object": null } } } }, - "disarm": { - "name": "Disarm", - "description": "Disarm an Alarmo entity.", + "speak": { + "name": "Speak", + "description": "Speaks something using text-to-speech on a media player.", "fields": { - "entity_id": { - "name": "Entity ID", - "description": "Name of entity that should be disarmed.", - "example": "alarm_control_panel.alarm", + "media_player_entity_id": { "required": true, "selector": { "entity": { - "integration": "alarmo", - "domain": "alarm_control_panel" + "domain": "media_player" } - } + }, + "name": "Media player entity", + "description": "Media players to play the message." }, - "code": { - "name": "Code", - "description": "Code to disarm the alarm with.", - "example": "1234", - "required": false, + "message": { + "example": "My name is hanna", + "required": true, "selector": { "text": null - } - } - } - } - }, - "generic_thermostat": { - "reload": { - "name": "Reload", - "description": "Reload all generic_thermostat entities.", - "fields": {} - } - }, - "sonos": { - "snapshot": { - "name": "Snapshot", - "description": "Take a snapshot of the media player.", - "fields": { - "entity_id": { - "name": "Entity", - "description": "Name of entity that will be snapshot.", - "selector": { - "entity": { - "integration": "sonos", - "domain": "media_player" - } - } + }, + "name": "Message", + "description": "The text you want to convert into speech so that you can listen to it on your device." }, - "with_group": { - "name": "With group", - "description": "True or False. Also snapshot the group layout.", + "cache": { "default": true, "selector": { "boolean": null - } + }, + "name": "Cache", + "description": "Stores this message locally so that when the text is requested again, the output can be produced more quickly." + }, + "language": { + "example": "ru", + "selector": { + "text": null + }, + "name": "Language", + "description": "Language to use for speech generation." + }, + "options": { + "advanced": true, + "example": "platform specific", + "selector": { + "object": null + }, + "name": "Options", + "description": "A dictionary containing integration-specific options." } + }, + "target": { + "entity": [ + { + "domain": [ + "tts" + ] + } + ] } }, - "restore": { - "name": "Restore", - "description": "Restore a snapshot of the media player.", + "clear_cache": { + "name": "Clear TTS cache", + "description": "Removes all cached text-to-speech files and purges the memory.", + "fields": {} + }, + "cloud_say": { + "name": "Say a TTS message with cloud", + "description": "Say something using text-to-speech on a media player with cloud.", "fields": { "entity_id": { - "name": "Entity", - "description": "Name of entity that will be restored.", + "required": true, "selector": { "entity": { - "integration": "sonos", "domain": "media_player" } } }, - "with_group": { - "name": "With group", - "description": "True or False. Also restore the group layout.", - "default": true, + "message": { + "example": "My name is hanna", + "required": true, "selector": { - "boolean": null + "text": null } - } - } - }, - "set_sleep_timer": { - "name": "Set timer", - "description": "Set a Sonos timer.", - "fields": { - "sleep_time": { - "name": "Sleep Time", - "description": "Number of seconds to set the timer.", + }, + "cache": { + "default": false, "selector": { - "number": { - "min": 0, - "max": 7200, - "unit_of_measurement": "seconds" - } + "boolean": null } - } - }, - "target": { - "device": [ - { - "integration": "sonos" + }, + "language": { + "example": "ru", + "selector": { + "text": null } - ] - } - }, - "clear_sleep_timer": { - "name": "Clear timer", - "description": "Clear a Sonos timer.", - "fields": {}, - "target": { - "device": [ - { - "integration": "sonos" + }, + "options": { + "advanced": true, + "example": "platform specific", + "selector": { + "object": null } - ] + } } - }, - "update_alarm": { - "name": "Update alarm", - "description": "Updates an alarm with new time and volume settings.", + } + }, + "home_connect": { + "set_option_active": { + "name": "Set active program option", + "description": "Sets an option for the active program.", "fields": { - "alarm_id": { - "name": "Alarm ID", - "description": "ID for the alarm to be updated.", + "device_id": { "required": true, "selector": { - "number": { - "min": 1, - "max": 1440, - "mode": "box" + "device": { + "integration": "home_connect" } - } + }, + "name": "Device ID", + "description": "Id of the device." }, - "time": { - "name": "Time", - "description": "Set time for the alarm.", - "example": "07:00", + "key": { + "example": "LaundryCare.Dryer.Option.DryingTarget", + "required": true, "selector": { - "time": null - } + "text": null + }, + "name": "Key", + "description": "Key of the option." }, - "volume": { - "name": "Volume", - "description": "Set alarm volume level.", + "value": { + "example": "LaundryCare.Dryer.EnumType.DryingTarget.IronDry", + "required": true, "selector": { - "number": { - "min": 0, - "max": 1, - "step": 0.01 + "object": null + }, + "name": "Value", + "description": "Value of the option." + } + } + }, + "set_option_selected": { + "name": "Set selected program option", + "description": "Sets an option for the selected program.", + "fields": { + "device_id": { + "required": true, + "selector": { + "device": { + "integration": "home_connect" } - } + }, + "name": "Device ID", + "description": "Id of the device." }, - "enabled": { - "name": "Alarm enabled", - "description": "Enable or disable the alarm.", + "key": { + "example": "LaundryCare.Dryer.Option.DryingTarget", + "required": true, "selector": { - "boolean": null - } + "text": null + }, + "name": "Key", + "description": "Key of the option." }, - "include_linked_zones": { - "name": "Include linked zones", - "description": "Enable or disable including grouped rooms.", + "value": { + "example": "LaundryCare.Dryer.EnumType.DryingTarget.IronDry", + "required": true, "selector": { - "boolean": null - } + "object": null + }, + "name": "Value", + "description": "Value of the option." } - }, - "target": { - "device": [ - { - "integration": "sonos" - } - ] } }, - "play_queue": { - "name": "Play queue", - "description": "Start playing the queue from the first item.", + "change_setting": { + "name": "Change setting", + "description": "Changes a setting.", "fields": { - "queue_position": { - "name": "Queue position", - "description": "Position of the song in the queue to start playing from.", + "device_id": { + "required": true, "selector": { - "number": { - "min": 0, - "max": 10000, - "mode": "box" + "device": { + "integration": "home_connect" } - } + }, + "name": "Device ID", + "description": "Id of the device." + }, + "key": { + "example": "BSH.Common.Setting.ChildLock", + "required": true, + "selector": { + "text": null + }, + "name": "Key", + "description": "Key of the setting." + }, + "value": { + "example": "true", + "required": true, + "selector": { + "object": null + }, + "name": "Value", + "description": "Value of the setting." } - }, - "target": { - "device": [ - { - "integration": "sonos" - } - ] } }, - "remove_from_queue": { - "name": "Remove from queue", - "description": "Removes an item from the queue.", + "pause_program": { + "name": "Pause program", + "description": "Pauses the current running program.", "fields": { - "queue_position": { - "name": "Queue position", - "description": "Position in the queue to remove.", + "device_id": { + "required": true, "selector": { - "number": { - "min": 0, - "max": 10000, - "mode": "box" + "device": { + "integration": "home_connect" } - } + }, + "name": "Device ID", + "description": "Id of the device." } - }, - "target": { - "device": [ - { - "integration": "sonos" - } - ] - } - } - }, - "powercalc": { - "reset_energy": { - "name": "Reset energy sensor", - "description": "Reset an energy sensor to zero kWh", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "sensor" - ], - "device_class": [ - "energy" - ] - } - ] } }, - "calibrate_utility_meter": { - "name": "Calibrate utility meter", - "description": "Calibrates a utility meter sensor.", + "resume_program": { + "name": "Resume program", + "description": "Resumes a paused program.", "fields": { - "value": { - "name": "Value", - "description": "Value to which set the meter", - "example": "100", + "device_id": { "required": true, "selector": { - "text": null - } + "device": { + "integration": "home_connect" + } + }, + "name": "Device ID", + "description": "Id of the device." } - }, - "target": { - "entity": [ - { - "domain": [ - "sensor" - ] - } - ] } }, - "calibrate_energy": { - "name": "Calibrate energy sensor", - "description": "Sets the energy sensor to a given kWh value.", + "select_program": { + "name": "Select program", + "description": "Selects a program without starting it.", "fields": { - "value": { - "name": "Value", - "description": "Value to which set the meter", - "example": "100", + "device_id": { + "required": true, + "selector": { + "device": { + "integration": "home_connect" + } + }, + "name": "Device ID", + "description": "Id of the device." + }, + "program": { + "example": "Dishcare.Dishwasher.Program.Auto2", "required": true, "selector": { "text": null - } + }, + "name": "Program", + "description": "Program to select." + }, + "key": { + "example": "BSH.Common.Option.StartInRelative", + "selector": { + "text": null + }, + "name": "Option key", + "description": "Key of the option." + }, + "value": { + "example": 1800, + "selector": { + "object": null + }, + "name": "Option value", + "description": "Value of the option." + }, + "unit": { + "example": "seconds", + "selector": { + "text": null + }, + "name": "Option unit", + "description": "Unit for the option." } - }, - "target": { - "entity": [ - { - "domain": [ - "sensor" - ], - "device_class": [ - "energy" - ] - } - ] } }, - "increase_daily_energy": { - "name": "Increase daily energy sensor", - "description": "Increases the sensor with a given amount", + "start_program": { + "name": "Start program", + "description": "Selects a program and starts it.", "fields": { - "value": { - "name": "Value", - "description": "Amount to add to the sensor", - "example": "100", + "device_id": { + "required": true, + "selector": { + "device": { + "integration": "home_connect" + } + }, + "name": "Device ID", + "description": "Id of the device." + }, + "program": { + "example": "Dishcare.Dishwasher.Program.Auto2", "required": true, "selector": { "text": null - } + }, + "name": "Program", + "description": "Program to select." + }, + "key": { + "example": "BSH.Common.Option.StartInRelative", + "selector": { + "text": null + }, + "name": "Option key", + "description": "Key of the option." + }, + "value": { + "example": 1800, + "selector": { + "object": null + }, + "name": "Option value", + "description": "Value of the option." + }, + "unit": { + "example": "seconds", + "selector": { + "text": null + }, + "name": "Option unit", + "description": "Unit for the option." } - }, + } + } + }, + "switch": { + "turn_off": { + "name": "Turn off", + "description": "Turns a switch off.", + "fields": {}, "target": { "entity": [ { "domain": [ - "sensor" - ], - "integration": "powercalc", - "device_class": [ - "energy" + "switch" ] } ] } }, - "activate_playbook": { - "name": "Activate playbook", - "description": "Activate playbook", - "fields": { - "playbook_id": { - "name": "Playbook", - "description": "Playbook identifier", - "required": true, - "example": "program1", - "selector": { - "text": null - } - } - }, + "turn_on": { + "name": "Turn on", + "description": "Turns a switch on.", + "fields": {}, "target": { "entity": [ { "domain": [ - "sensor" - ], - "integration": "powercalc", - "device_class": [ - "power" + "switch" ] } ] } }, - "stop_playbook": { - "name": "Stop playbook", - "description": "Stop active playbook", + "toggle": { + "name": "Toggle", + "description": "Toggles a switch on/off.", "fields": {}, "target": { "entity": [ { "domain": [ - "sensor" - ], - "integration": "powercalc", - "device_class": [ - "power" + "switch" ] } ] } } }, - "backup": { - "create": { - "name": "Create backup", - "description": "Create a new backup.", + "history_stats": { + "reload": { + "name": "Reload", + "description": "Reloads history stats sensors from the YAML-configuration.", "fields": {} } }, - "remote": { - "turn_off": { - "name": "Turn Off", - "description": "Sends the Power Off Command.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "remote" - ] - } - ] - } - }, - "turn_on": { - "name": "Turn On", - "description": "Sends the Power On Command.", + "min_max": { + "reload": { + "name": "Reload", + "description": "Reloads min/max sensors from the YAML-configuration.", + "fields": {} + } + }, + "pi_hole": { + "disable": { + "name": "Disable", + "description": "Disables configured Pi-hole(s) for an amount of time.", "fields": { - "activity": { - "name": "Activity", - "description": "Activity ID or Activity Name to start.", - "example": "BedroomTV", + "duration": { + "required": true, + "example": "00:00:15", "selector": { "text": null - } + }, + "name": "Duration", + "description": "Time that the Pi-hole should be disabled for." } }, "target": { "entity": [ { + "integration": "pi_hole", "domain": [ - "remote" + "switch" ] } ] } + } + }, + "adaptive_lighting": { + "apply": { + "name": "apply", + "description": "Applies the current Adaptive Lighting settings to lights.", + "fields": { + "entity_id": { + "description": "The \u0060entity_id\u0060 of the switch with the settings to apply. \uD83D\uDCDD", + "selector": { + "entity": { + "integration": "adaptive_lighting", + "domain": "switch", + "multiple": false + } + }, + "name": "entity_id" + }, + "lights": { + "description": "A light (or list of lights) to apply the settings to. \uD83D\uDCA1", + "selector": { + "entity": { + "domain": "light", + "multiple": true + } + }, + "name": "lights" + }, + "transition": { + "description": "Duration of transition when lights change, in seconds. \uD83D\uDD51", + "example": 10, + "selector": { + "text": null + }, + "name": "transition" + }, + "adapt_brightness": { + "description": "Whether to adapt the brightness of the light. \uD83C\uDF1E", + "example": true, + "selector": { + "boolean": null + }, + "name": "adapt_brightness" + }, + "adapt_color": { + "description": "Whether to adapt the color on supporting lights. \uD83C\uDF08", + "example": true, + "selector": { + "boolean": null + }, + "name": "adapt_color" + }, + "prefer_rgb_color": { + "description": "Whether to prefer RGB color adjustment over light color temperature when possible. \uD83C\uDF08", + "example": false, + "selector": { + "boolean": null + }, + "name": "prefer_rgb_color" + }, + "turn_on_lights": { + "description": "Whether to turn on lights that are currently off. \uD83D\uDD06", + "example": false, + "selector": { + "boolean": null + }, + "name": "turn_on_lights" + } + } }, - "toggle": { - "name": "Toggle", - "description": "Toggles a device.", - "fields": {}, - "target": { - "entity": [ - { - "domain": [ - "remote" - ] - } - ] + "set_manual_control": { + "name": "set_manual_control", + "description": "Mark whether a light is \u0027manually controlled\u0027.", + "fields": { + "entity_id": { + "description": "The \u0060entity_id\u0060 of the switch in which to (un)mark the light as being \u0060manually controlled\u0060. \uD83D\uDCDD", + "selector": { + "entity": { + "integration": "adaptive_lighting", + "domain": "switch", + "multiple": false + } + }, + "name": "entity_id" + }, + "lights": { + "description": "entity_id(s) of lights, if not specified, all lights in the switch are selected. \uD83D\uDCA1", + "selector": { + "entity": { + "domain": "light", + "multiple": true + } + }, + "name": "lights" + }, + "manual_control": { + "description": "Whether to add (\u0022true\u0022) or remove (\u0022false\u0022) the light from the \u0022manual_control\u0022 list. \uD83D\uDD12", + "example": true, + "default": true, + "selector": { + "boolean": null + }, + "name": "manual_control" + } } }, - "send_command": { - "name": "Send Command", - "description": "Sends a command or a list of commands to a device.", + "change_switch_settings": { + "name": "change_switch_settings", + "description": "Change any settings you\u0027d like in the switch. All options here are the same as in the config flow.", "fields": { - "device": { - "name": "Device", - "description": "Device ID to send command to.", - "example": "32756745", + "entity_id": { + "description": "Entity ID of the switch. \uD83D\uDCDD", + "required": true, + "selector": { + "entity": { + "domain": "switch" + } + }, + "name": "entity_id" + }, + "use_defaults": { + "description": "Sets the default values not specified in this service call. Options: \u0022current\u0022 (default, retains current values), \u0022factory\u0022 (resets to documented defaults), or \u0022configuration\u0022 (reverts to switch config defaults). \u2699\uFE0F", + "example": "current", + "required": false, + "default": "current", + "selector": { + "select": { + "options": [ + "current", + "configuration", + "factory" + ] + } + }, + "name": "use_defaults" + }, + "include_config_in_attributes": { + "description": "Show all options as attributes on the switch in Home Assistant when set to \u0060true\u0060. \uD83D\uDCDD", + "required": false, + "selector": { + "boolean": null + }, + "name": "include_config_in_attributes" + }, + "turn_on_lights": { + "description": "Whether to turn on lights that are currently off. \uD83D\uDD06", + "example": false, + "required": false, + "selector": { + "boolean": null + }, + "name": "turn_on_lights" + }, + "initial_transition": { + "description": "Duration of the first transition when lights turn from \u0060off\u0060 to \u0060on\u0060 in seconds. \u23F2\uFE0F", + "example": 1, + "required": false, "selector": { "text": null - } + }, + "name": "initial_transition" }, - "command": { - "name": "Command", - "description": "A single command or a list of commands to send.", - "required": true, - "example": "Play", + "sleep_transition": { + "description": "Duration of transition when \u0022sleep mode\u0022 is toggled in seconds. \uD83D\uDE34", + "example": 1, + "required": false, "selector": { - "object": null - } + "text": null + }, + "name": "sleep_transition" }, - "num_repeats": { - "name": "Repeats", - "description": "The number of times you want to repeat the command(s).", - "default": 1, + "max_brightness": { + "description": "Maximum brightness percentage. \uD83D\uDCA1", + "required": false, + "example": 100, "selector": { - "number": { - "min": 0, - "max": 255 - } - } + "text": null + }, + "name": "max_brightness" }, - "delay_secs": { - "name": "Delay Seconds", - "description": "The time you want to wait in between repeated commands.", - "default": 0.4, + "max_color_temp": { + "description": "Coldest color temperature in Kelvin. \u2744\uFE0F", + "required": false, + "example": 5500, "selector": { - "number": { - "min": 0, - "max": 60, - "step": 0.1, - "unit_of_measurement": "seconds" + "text": null + }, + "name": "max_color_temp" + }, + "min_brightness": { + "description": "Minimum brightness percentage. \uD83D\uDCA1", + "required": false, + "example": 1, + "selector": { + "text": null + }, + "name": "min_brightness" + }, + "min_color_temp": { + "description": "Warmest color temperature in Kelvin. \uD83D\uDD25", + "required": false, + "example": 2000, + "selector": { + "text": null + }, + "name": "min_color_temp" + }, + "only_once": { + "description": "Adapt lights only when they are turned on (\u0060true\u0060) or keep adapting them (\u0060false\u0060). \uD83D\uDD04", + "example": false, + "required": false, + "selector": { + "boolean": null + }, + "name": "only_once" + }, + "prefer_rgb_color": { + "description": "Whether to prefer RGB color adjustment over light color temperature when possible. \uD83C\uDF08", + "required": false, + "example": false, + "selector": { + "boolean": null + }, + "name": "prefer_rgb_color" + }, + "separate_turn_on_commands": { + "description": "Use separate \u0060light.turn_on\u0060 calls for color and brightness, needed for some light types. \uD83D\uDD00", + "required": false, + "example": false, + "selector": { + "boolean": null + }, + "name": "separate_turn_on_commands" + }, + "send_split_delay": { + "description": "Delay (ms) between \u0060separate_turn_on_commands\u0060 for lights that don\u0027t support simultaneous brightness and color setting. \u23F2\uFE0F", + "required": false, + "example": 0, + "selector": { + "boolean": null + }, + "name": "send_split_delay" + }, + "sleep_brightness": { + "description": "Brightness percentage of lights in sleep mode. \uD83D\uDE34", + "required": false, + "example": 1, + "selector": { + "text": null + }, + "name": "sleep_brightness" + }, + "sleep_rgb_or_color_temp": { + "description": "Use either \u0060\u0022rgb_color\u0022\u0060 or \u0060\u0022color_temp\u0022\u0060 in sleep mode. \uD83C\uDF19", + "required": false, + "example": "color_temp", + "selector": { + "select": { + "options": [ + "rgb_color", + "color_temp" + ] } - } + }, + "name": "sleep_rgb_or_color_temp" }, - "hold_secs": { - "name": "Hold Seconds", - "description": "The time you want to have it held before the release is send.", - "default": 0, + "sleep_rgb_color": { + "description": "RGB color in sleep mode (used when \u0060sleep_rgb_or_color_temp\u0060 is \u0022rgb_color\u0022). \uD83C\uDF08", + "required": false, + "selector": { + "color_rgb": null + }, + "name": "sleep_rgb_color" + }, + "sleep_color_temp": { + "description": "Color temperature in sleep mode (used when \u0060sleep_rgb_or_color_temp\u0060 is \u0060color_temp\u0060) in Kelvin. \uD83D\uDE34", + "required": false, + "example": 1000, + "selector": { + "text": null + }, + "name": "sleep_color_temp" + }, + "sunrise_offset": { + "description": "Adjust sunrise time with a positive or negative offset in seconds. \u23F0", + "required": false, + "example": 0, "selector": { "number": { "min": 0, - "max": 60, - "step": 0.1, - "unit_of_measurement": "seconds" + "max": 86300 } - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "remote" - ] - } - ] - } - }, - "learn_command": { - "name": "Learn Command", - "description": "Learns a command or a list of commands from a device.", - "fields": { - "device": { - "name": "Device", - "description": "Device ID to learn command from.", - "example": "television", + }, + "name": "sunrise_offset" + }, + "sunrise_time": { + "description": "Set a fixed time (HH:MM:SS) for sunrise. \uD83C\uDF05", + "required": false, + "example": "", + "selector": { + "time": null + }, + "name": "sunrise_time" + }, + "sunset_offset": { + "description": "Adjust sunset time with a positive or negative offset in seconds. \u23F0", + "required": false, + "example": "", "selector": { - "text": null - } + "number": { + "min": 0, + "max": 86300 + } + }, + "name": "sunset_offset" }, - "command": { - "name": "Command", - "description": "A single command or a list of commands to learn.", - "example": "Turn on", + "sunset_time": { + "description": "Set a fixed time (HH:MM:SS) for sunset. \uD83C\uDF07", + "example": "", + "required": false, "selector": { - "object": null - } + "time": null + }, + "name": "sunset_time" }, - "command_type": { - "name": "Command Type", - "description": "The type of command to be learned.", - "default": "ir", + "max_sunrise_time": { + "description": "Set the latest virtual sunrise time (HH:MM:SS), allowing for earlier sunrises. \uD83C\uDF05", + "example": "", + "required": false, "selector": { - "select": { - "options": [ - "ir", - "rf" - ] - } - } + "time": null + }, + "name": "max_sunrise_time" }, - "alternative": { - "name": "Alternative", - "description": "If code must be stored as alternative (useful for discrete remotes).", + "min_sunset_time": { + "description": "Set the earliest virtual sunset time (HH:MM:SS), allowing for later sunsets. \uD83C\uDF07", + "example": "", + "required": false, + "selector": { + "time": null + }, + "name": "min_sunset_time" + }, + "take_over_control": { + "description": "Disable Adaptive Lighting if another source calls \u0060light.turn_on\u0060 while lights are on and being adapted. Note that this calls \u0060homeassistant.update_entity\u0060 every \u0060interval\u0060! \uD83D\uDD12", + "required": false, + "example": true, "selector": { "boolean": null - } + }, + "name": "take_over_control" }, - "timeout": { - "name": "Timeout", - "description": "Timeout for the command to be learned.", + "detect_non_ha_changes": { + "description": "Detects and halts adaptations for non-\u0060light.turn_on\u0060 state changes. Needs \u0060take_over_control\u0060 enabled. \uD83D\uDD75\uFE0F Caution: \u26A0\uFE0F Some lights might falsely indicate an \u0027on\u0027 state, which could result in lights turning on unexpectedly. Disable this feature if you encounter such issues.", + "required": false, + "example": false, "selector": { - "number": { - "min": 0, - "max": 60, - "step": 5, - "unit_of_measurement": "seconds" - } - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "remote" - ] - } - ] - } - }, - "delete_command": { - "name": "Delete Command", - "description": "Deletes a command or a list of commands from the database.", - "fields": { - "device": { - "name": "Device", - "description": "Name of the device from which commands will be deleted.", - "example": "television", + "boolean": null + }, + "name": "detect_non_ha_changes" + }, + "transition": { + "description": "Duration of transition when lights change, in seconds. \uD83D\uDD51", + "required": false, + "example": 45, "selector": { "text": null - } + }, + "name": "transition" }, - "command": { - "name": "Command", - "description": "A single command or a list of commands to delete.", - "required": true, - "example": "Mute", + "adapt_delay": { + "description": "Wait time (seconds) between light turn on and Adaptive Lighting applying changes. Might help to avoid flickering. \u23F2\uFE0F", + "required": false, + "example": 0, "selector": { - "object": null - } + "text": null + }, + "name": "adapt_delay" + }, + "autoreset_control_seconds": { + "description": "Automatically reset the manual control after a number of seconds. Set to 0 to disable. \u23F2\uFE0F", + "required": false, + "example": 0, + "selector": { + "text": null + }, + "name": "autoreset_control_seconds" } - }, - "target": { - "entity": [ - { - "domain": [ - "remote" - ] - } - ] } } }, - "ring": { - "update": { - "name": "Update", - "description": "Updates the data we have for all your ring devices", + "generic_thermostat": { + "reload": { + "name": "Reload", + "description": "Reloads generic thermostats from the YAML-configuration.", "fields": {} } }, - "alexa_media": { - "update_last_called": { - "name": "", - "description": "Forces update of last_called echo device for each Alexa account.", + "alarmo": { + "enable_user": { + "name": "Enable User", + "description": "Allow a user to arm/disarm alarmo.", "fields": { - "email": { - "description": "List of Alexa accounts to update. If empty, will update all known accounts.", - "example": "my_email@alexa.com" + "name": { + "name": "Name", + "description": "Name of the user to enable.", + "example": "Frank", + "required": true, + "selector": { + "text": null + } } } }, - "clear_history": { - "name": "", - "description": "Clear last entries from Alexa history for each Alexa account.", + "disable_user": { + "name": "Disable User", + "description": "Block a user from arming/disarming alarmo.", "fields": { - "email": { - "description": "List of Alexa accounts to update. If empty, will delete from all known accounts.", - "example": "my_email@alexa.com" - }, - "entries": { - "description": "Number of entries to clear from 1 to 50. If empty, clear 50.", - "example": 50 + "name": { + "name": "Name", + "description": "Name of the user to disable.", + "example": "Frank", + "required": true, + "selector": { + "text": null + } } } }, - "force_logout": { - "name": "", - "description": "Force logout of Alexa Login account and deletion of .pickle. Intended for debugging use.", - "fields": { - "email": { - "description": "List of Alexa accounts to log out. If empty, will log out from all known accounts.", - "example": "my_email@alexa.com" - } - } - } - }, - "zha": { - "permit": { - "name": "Permit", - "description": "Allow nodes to join the Zigbee network.", + "arm": { + "name": "Arm", + "description": "Arm an Alarmo entity with custom settings.", "fields": { - "duration": { - "name": "Duration", - "description": "Time to permit joins, in seconds", - "default": 60, + "entity_id": { + "name": "Entity ID", + "description": "Name of entity that should be armed.", + "example": "alarm_control_panel.alarm", + "required": true, "selector": { - "number": { - "min": 0, - "max": 254, - "unit_of_measurement": "seconds" + "entity": { + "integration": "alarmo", + "domain": "alarm_control_panel" } } }, - "ieee": { - "name": "IEEE", - "description": "IEEE address of the node permitting new joins", - "example": "00:0d:6f:00:05:7d:2d:34", + "code": { + "name": "Code", + "description": "Code to arm the alarm with.", + "example": "1234", + "required": false, "selector": { "text": null } }, - "source_ieee": { - "name": "Source IEEE", - "description": "IEEE address of the joining device (must be used with install code)", - "example": "00:0a:bf:00:01:10:23:35", + "mode": { + "name": "Mode", + "description": "Mode to arm the alarm in.", + "example": "away", + "required": false, + "default": "away", + "selector": { + "select": { + "options": [ + "away", + "night", + "home", + "vacation", + "custom" + ] + } + } + }, + "skip_delay": { + "name": "Skip Delay", + "description": "Skip the exit delay.", + "example": true, + "required": false, + "default": false, + "selector": { + "boolean": null + } + }, + "force": { + "name": "Force", + "description": "Automatically bypass all sensors that prevent the arming operation.", + "example": true, + "required": false, + "default": false, + "selector": { + "boolean": null + } + } + } + }, + "disarm": { + "name": "Disarm", + "description": "Disarm an Alarmo entity.", + "fields": { + "entity_id": { + "name": "Entity ID", + "description": "Name of entity that should be disarmed.", + "example": "alarm_control_panel.alarm", + "required": true, "selector": { - "text": null + "entity": { + "integration": "alarmo", + "domain": "alarm_control_panel" + } } }, - "install_code": { - "name": "Install Code", - "description": "Install code of the joining device (must be used with source_ieee)", - "example": "1234-5678-1234-5678-AABB-CCDD-AABB-CCDD-EEFF", + "code": { + "name": "Code", + "description": "Code to disarm the alarm with.", + "example": "1234", + "required": false, "selector": { "text": null } + } + } + } + }, + "sonos": { + "snapshot": { + "name": "Snapshot", + "description": "Takes a snapshot of the media player.", + "fields": { + "entity_id": { + "selector": { + "entity": { + "integration": "sonos", + "domain": "media_player" + } + }, + "name": "Entity", + "description": "Name of entity that will be snapshot." }, - "qr_code": { - "name": "QR Code", - "description": "value of the QR install code (different between vendors)", - "example": "Z:000D6FFFFED4163B$I:52797BF4A5084DAA8E1712B61741CA024051", + "with_group": { + "default": true, "selector": { - "text": null - } + "boolean": null + }, + "name": "With group", + "description": "True or False. Also snapshot the group layout." } } }, - "remove": { - "name": "Remove", - "description": "Remove a node from the Zigbee network.", + "restore": { + "name": "Restore", + "description": "Restores a snapshot of the media player.", "fields": { - "ieee": { - "name": "IEEE", - "description": "IEEE address of the node to remove", - "required": true, - "example": "00:0d:6f:00:05:7d:2d:34", + "entity_id": { "selector": { - "text": null - } + "entity": { + "integration": "sonos", + "domain": "media_player" + } + }, + "name": "Entity", + "description": "Name of entity that will be restored." + }, + "with_group": { + "default": true, + "selector": { + "boolean": null + }, + "name": "With group", + "description": "True or False. Also restore the group layout." } } }, - "set_zigbee_cluster_attribute": { - "name": "Set zigbee cluster attribute", - "description": "Set attribute value for the specified cluster on the specified entity.", + "set_sleep_timer": { + "name": "Set timer", + "description": "Sets a Sonos timer.", "fields": { - "ieee": { - "name": "IEEE", - "description": "IEEE address for the device", - "required": true, - "example": "00:0d:6f:00:05:7d:2d:34", - "selector": { - "text": null - } - }, - "endpoint_id": { - "name": "Endpoint ID", - "description": "Endpoint id for the cluster", - "required": true, + "sleep_time": { "selector": { "number": { - "min": 1, - "max": 65535, - "mode": "box" + "min": 0, + "max": 7200, + "unit_of_measurement": "seconds" } + }, + "name": "Sleep Time", + "description": "Number of seconds to set the timer." + } + }, + "target": { + "device": [ + { + "integration": "sonos" } - }, - "cluster_id": { - "name": "Cluster ID", - "description": "ZCL cluster to retrieve attributes for", + ] + } + }, + "clear_sleep_timer": { + "name": "Clear timer", + "description": "Clears a Sonos timer.", + "fields": {}, + "target": { + "device": [ + { + "integration": "sonos" + } + ] + } + }, + "update_alarm": { + "name": "Update alarm", + "description": "Updates an alarm with new time and volume settings.", + "fields": { + "alarm_id": { "required": true, "selector": { "number": { "min": 1, - "max": 65535 + "max": 1440, + "mode": "box" } - } + }, + "name": "Alarm ID", + "description": "ID for the alarm to be updated." }, - "cluster_type": { - "name": "Cluster Type", - "description": "type of the cluster", - "default": "in", + "time": { + "example": "07:00", "selector": { - "select": { - "options": [ - "in", - "out" - ] - } - } + "time": null + }, + "name": "Time", + "description": "Set time for the alarm." }, - "attribute": { - "name": "Attribute", - "description": "id of the attribute to set", - "required": true, - "example": 0, + "volume": { "selector": { "number": { - "min": 1, - "max": 65535 + "min": 0, + "max": 1, + "step": 0.01 } - } + }, + "name": "Volume", + "description": "Set alarm volume level." }, - "value": { - "name": "Value", - "description": "value to write to the attribute", - "required": true, - "example": 1, + "enabled": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Alarm enabled", + "description": "Enable or disable the alarm." }, - "manufacturer": { - "name": "Manufacturer", - "description": "manufacturer code", - "example": 252, + "include_linked_zones": { "selector": { - "text": null - } + "boolean": null + }, + "name": "Include linked zones", + "description": "Enable or disable including grouped rooms." } + }, + "target": { + "device": [ + { + "integration": "sonos" + } + ] } }, - "issue_zigbee_cluster_command": { - "name": "Issue zigbee cluster command", - "description": "Issue command on the specified cluster on the specified entity.", + "play_queue": { + "name": "Play queue", + "description": "Start playing the queue from the first item.", "fields": { - "ieee": { - "name": "IEEE", - "description": "IEEE address for the device", - "required": true, - "example": "00:0d:6f:00:05:7d:2d:34", - "selector": { - "text": null - } - }, - "endpoint_id": { - "name": "Endpoint ID", - "description": "Endpoint id for the cluster", - "required": true, + "queue_position": { "selector": { "number": { - "min": 1, - "max": 65535 + "min": 0, + "max": 10000, + "mode": "box" } + }, + "name": "Queue position", + "description": "Position of the song in the queue to start playing from." + } + }, + "target": { + "device": [ + { + "integration": "sonos" } - }, - "cluster_id": { - "name": "Cluster ID", - "description": "ZCL cluster to retrieve attributes for", - "required": true, + ] + } + }, + "remove_from_queue": { + "name": "Remove from queue", + "description": "Removes an item from the queue.", + "fields": { + "queue_position": { "selector": { "number": { - "min": 1, - "max": 65535 - } - } - }, - "cluster_type": { - "name": "Cluster Type", - "description": "type of the cluster", - "default": "in", - "selector": { - "select": { - "options": [ - "in", - "out" - ] + "min": 0, + "max": 10000, + "mode": "box" } + }, + "name": "Queue position", + "description": "Position in the queue to remove." + } + }, + "target": { + "device": [ + { + "integration": "sonos" } - }, - "command": { - "name": "Command", - "description": "id of the command to execute", + ] + } + } + }, + "backup": { + "create": { + "name": "Create backup", + "description": "Creates a new backup.", + "fields": {} + } + }, + "unifi": { + "reconnect_client": { + "name": "Reconnect wireless client", + "description": "Tries to get wireless client to reconnect to UniFi Network.", + "fields": { + "device_id": { "required": true, "selector": { - "number": { - "min": 1, - "max": 65535 + "device": { + "integration": "unifi" } + }, + "name": "Device", + "description": "Try reconnect client to wireless network." + } + } + }, + "remove_clients": { + "name": "Remove clients from the UniFi Network", + "description": "Cleans up clients that has only been associated with the controller for a short period of time.", + "fields": {} + } + }, + "powercalc": { + "reset_energy": { + "name": "Reset energy sensor", + "description": "Reset an energy sensor to zero kWh.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "device_class": [ + "energy" + ] } - }, - "command_type": { - "name": "Command Type", - "description": "type of the command to execute", + ] + } + }, + "calibrate_utility_meter": { + "name": "Calibrate utility meter", + "description": "Calibrates a utility meter sensor.", + "fields": { + "value": { + "name": "Value", + "description": "The value to set.", + "example": "100", "required": true, - "selector": { - "select": { - "options": [ - "client", - "server" - ] - } - } - }, - "args": { - "name": "Args", - "description": "args to pass to the command", - "example": "[arg1, arg2, argN]", - "selector": { - "object": null - } - }, - "params": { - "name": "Params", - "description": "parameters to pass to the command", - "selector": { - "object": null - } - }, - "manufacturer": { - "name": "Manufacturer", - "description": "manufacturer code", - "example": 252, "selector": { "text": null } } + }, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ] + } + ] } }, - "issue_zigbee_group_command": { - "name": "Issue zigbee group command", - "description": "Issue command on the specified cluster on the specified group.", + "calibrate_energy": { + "name": "Calibrate energy sensor", + "description": "Sets the energy sensor to a given kWh value.", "fields": { - "group": { - "name": "Group", - "description": "Hexadecimal address of the group", + "value": { + "name": "Value", + "description": "The value to set.", + "example": "100", "required": true, - "example": 546, "selector": { "text": null } - }, - "cluster_id": { - "name": "Cluster ID", - "description": "ZCL cluster to send command to", - "required": true, - "selector": { - "number": { - "min": 1, - "max": 65535 - } - } - }, - "cluster_type": { - "name": "Cluster Type", - "description": "type of the cluster", - "default": "in", - "selector": { - "select": { - "options": [ - "in", - "out" - ] - } + } + }, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "device_class": [ + "energy" + ] } - }, - "command": { - "name": "Command", - "description": "id of the command to execute", + ] + } + }, + "increase_daily_energy": { + "name": "Increase daily energy sensor", + "description": "Increases the sensor with a given amount.", + "fields": { + "value": { + "name": "Value", + "description": "Amount to add to the sensor.", + "example": "100", "required": true, "selector": { - "number": { - "min": 1, - "max": 65535 - } + "text": null } - }, - "args": { - "name": "Args", - "description": "args to pass to the command", - "example": "[arg1, arg2, argN]", - "selector": { - "object": null + } + }, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "integration": "powercalc", + "device_class": [ + "energy" + ] } - }, - "manufacturer": { - "name": "Manufacturer", - "description": "manufacturer code", - "example": 252, + ] + } + }, + "activate_playbook": { + "name": "Activate playbook", + "description": "Start execution of a playbook.", + "fields": { + "playbook_id": { + "name": "Playbook", + "description": "Playbook identifier.", + "required": true, + "example": "program1", "selector": { "text": null } } + }, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "integration": "powercalc", + "device_class": [ + "power" + ] + } + ] } }, - "warning_device_squawk": { - "name": "Warning device squawk", - "description": "This service uses the WD capabilities to emit a quick audible/visible pulse called a \u0022squawk\u0022. The squawk command has no effect if the WD is currently active (warning in progress).", + "stop_playbook": { + "name": "Stop playbook", + "description": "Stop currently active playbook.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "integration": "powercalc", + "device_class": [ + "power" + ] + } + ] + } + }, + "switch_sub_profile": { + "name": "Switch to another sub profile", + "description": "Some profiles in the library has different sub profiles. This service allows you to switch to another one.", "fields": { - "ieee": { - "name": "IEEE", - "description": "IEEE address for the device", + "profile": { + "name": "Sub profile", + "description": "Define one of the possible sub profiles", + "example": "nigh_vision", "required": true, - "example": "00:0d:6f:00:05:7d:2d:34", "selector": { "text": null } - }, - "mode": { - "name": "Mode", - "description": "The Squawk Mode field is used as a 4-bit enumeration, and can have one of the values shown in Table 8-24 of the ZCL spec - Squawk Mode Field. The exact operation of each mode (how the WD \u201Csquawks\u201D) is implementation specific.", - "default": 0, - "selector": { - "number": { - "min": 0, - "max": 1, - "mode": "box" - } + } + }, + "target": { + "entity": [ + { + "domain": [ + "sensor" + ], + "integration": "powercalc", + "device_class": [ + "power" + ] } - }, - "strobe": { - "name": "Strobe", - "description": "The strobe field is used as a Boolean, and determines if the visual indication is also required in addition to the audible squawk, as shown in Table 8-25 of the ZCL spec - Strobe Bit.", - "default": 1, - "selector": { - "number": { - "min": 0, - "max": 1, - "mode": "box" - } + ] + } + } + }, + "ring": { + "update": { + "name": "Update", + "description": "Updates the data we have for all your ring devices.", + "fields": {} + } + }, + "remote": { + "turn_off": { + "name": "Turn off", + "description": "Turns the device off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "remote" + ] } - }, - "level": { - "name": "Level", - "description": "The squawk level field is used as a 2-bit enumeration, and determines the intensity of audible squawk sound as shown in Table 8-26 of the ZCL spec - Squawk Level Field Values.", - "default": 2, + ] + } + }, + "turn_on": { + "name": "Turn on", + "description": "Sends the power on command.", + "fields": { + "activity": { + "example": "BedroomTV", + "filter": { + "supported_features": [ + 4 + ] + }, "selector": { - "number": { - "min": 0, - "max": 3, - "mode": "box" - } - } + "text": null + }, + "name": "Activity", + "description": "Activity ID or activity name to be started." } + }, + "target": { + "entity": [ + { + "domain": [ + "remote" + ] + } + ] } }, - "warning_device_warn": { - "name": "Warning device warn", - "description": "This service starts the WD operation. The WD alerts the surrounding area by audible (siren) and visual (strobe) signals.", + "toggle": { + "name": "Toggle", + "description": "Toggles a device on/off.", + "fields": {}, + "target": { + "entity": [ + { + "domain": [ + "remote" + ] + } + ] + } + }, + "send_command": { + "name": "Send command", + "description": "Sends a command or a list of commands to a device.", "fields": { - "ieee": { - "name": "IEEE", - "description": "IEEE address for the device", - "required": true, - "example": "00:0d:6f:00:05:7d:2d:34", + "device": { + "example": "32756745", "selector": { "text": null - } + }, + "name": "Device", + "description": "Device ID to send command to." }, - "mode": { - "name": "Mode", - "description": "The Warning Mode field is used as an 4-bit enumeration, can have one of the values 0-6 defined below in table 8-20 of the ZCL spec. The exact behavior of the WD device in each mode is according to the relevant security standards.", - "default": 3, + "command": { + "required": true, + "example": "Play", "selector": { - "number": { - "min": 0, - "max": 6, - "mode": "box" - } - } + "object": null + }, + "name": "Command", + "description": "A single command or a list of commands to send." }, - "strobe": { - "name": "Strobe", - "description": "The Strobe field is used as a 2-bit enumeration, and determines if the visual indication is required in addition to the audible siren, as indicated in Table 8-21 of the ZCL spec. \u00220\u0022 means no strobe, \u00221\u0022 means strobe. If the strobe field is \u201C1\u201D and the Warning Mode is \u201C0\u201D (\u201CStop\u201D) then only the strobe is activated.", + "num_repeats": { "default": 1, "selector": { "number": { "min": 0, - "max": 1, - "mode": "box" - } - } - }, - "level": { - "name": "Level", - "description": "The Siren Level field is used as a 2-bit enumeration, and indicates the intensity of audible squawk sound as shown in Table 8-22 of the ZCL spec.", - "default": 2, - "selector": { - "number": { - "min": 0, - "max": 3, - "mode": "box" + "max": 255 } - } + }, + "name": "Repeats", + "description": "The number of times you want to repeat the commands." }, - "duration": { - "name": "Duration", - "description": "Requested duration of warning, in seconds (16 bit). If both Strobe and Warning Mode are \u00220\u0022 this field SHALL be ignored.", - "default": 5, + "delay_secs": { + "default": 0.4, "selector": { "number": { "min": 0, - "max": 65535, + "max": 60, + "step": 0.1, "unit_of_measurement": "seconds" } - } + }, + "name": "Delay seconds", + "description": "The time you want to wait in between repeated commands." }, - "duty_cycle": { - "name": "Duty cycle", - "description": "Indicates the length of the flash cycle. This provides a means of varying the flash duration for different alarm types (e.g., fire, police, burglar). Valid range is 0-100 in increments of 10. All other values SHALL be rounded to the nearest valid value. Strobe SHALL calculate duty cycle over a duration of one second. The ON state SHALL precede the OFF state. For example, if Strobe Duty Cycle Field specifies \u201C40,\u201D then the strobe SHALL flash ON for 4/10ths of a second and then turn OFF for 6/10ths of a second.", + "hold_secs": { "default": 0, "selector": { "number": { "min": 0, - "max": 100, - "step": 10 - } - } - }, - "intensity": { - "name": "Intensity", - "description": "Indicates the intensity of the strobe as shown in Table 8-23 of the ZCL spec. This attribute is designed to vary the output of the strobe (i.e., brightness) and not its frequency, which is detailed in section 8.4.2.3.1.6 of the ZCL spec.", - "default": 2, - "selector": { - "number": { - "min": 0, - "max": 3, - "mode": "box" + "max": 60, + "step": 0.1, + "unit_of_measurement": "seconds" } - } - } - } - }, - "set_lock_user_code": { - "name": "Set lock user code", - "description": "Set a user code on a lock", - "fields": { - "code_slot": { - "name": "Code slot", - "description": "Code slot to set the code in", - "required": true, - "example": 1, - "selector": { - "text": null - } - }, - "user_code": { - "name": "Code", - "description": "Code to set", - "required": true, - "example": 1234, - "selector": { - "text": null - } + }, + "name": "Hold seconds", + "description": "The time you want to have it held before the release is send." } }, "target": { "entity": [ { "domain": [ - "lock" - ], - "integration": "zha" + "remote" + ] } ] } }, - "enable_lock_user_code": { - "name": "Enable lock user", - "description": "Enable a user code on a lock", + "learn_command": { + "name": "Learn command", + "description": "Learns a command or a list of commands from a device.", "fields": { - "code_slot": { - "name": "Code slot", - "description": "Code slot to enable", - "required": true, - "example": 1, + "device": { + "example": "television", "selector": { "text": null - } + }, + "name": "Device", + "description": "Device ID to learn command from." + }, + "command": { + "example": "Turn on", + "selector": { + "object": null + }, + "name": "Command", + "description": "A single command or a list of commands to learn." + }, + "command_type": { + "default": "ir", + "selector": { + "select": { + "options": [ + "ir", + "rf" + ] + } + }, + "name": "Command type", + "description": "The type of command to be learned." + }, + "alternative": { + "selector": { + "boolean": null + }, + "name": "Alternative", + "description": "If code must be stored as an alternative. This is useful for discrete codes. Discrete codes are used for toggles that only perform one function. For example, a code to only turn a device on. If it is on already, sending the code won\u0027t change the state." + }, + "timeout": { + "selector": { + "number": { + "min": 0, + "max": 60, + "step": 5, + "unit_of_measurement": "seconds" + } + }, + "name": "Timeout", + "description": "Timeout for the command to be learned." } }, "target": { "entity": [ { "domain": [ - "lock" - ], - "integration": "zha" + "remote" + ] } ] } }, - "disable_lock_user_code": { - "name": "Disable lock user", - "description": "Disable a user code on a lock", + "delete_command": { + "name": "Delete command", + "description": "Deletes a command or a list of commands from the database.", "fields": { - "code_slot": { - "name": "Code slot", - "description": "Code slot to disable", - "required": true, - "example": 1, + "device": { + "example": "television", "selector": { "text": null - } - } - }, - "target": { - "entity": [ - { - "domain": [ - "lock" - ], - "integration": "zha" - } - ] - } - }, - "clear_lock_user_code": { - "name": "Clear lock user", - "description": "Clear a user code from a lock", - "fields": { - "code_slot": { - "name": "Code slot", - "description": "Code slot to clear code from", + }, + "name": "Device", + "description": "Device from which commands will be deleted." + }, + "command": { "required": true, - "example": 1, + "example": "Mute", "selector": { - "text": null - } + "object": null + }, + "name": "Command", + "description": "The single command or the list of commands to be deleted." } }, "target": { "entity": [ { "domain": [ - "lock" - ], - "integration": "zha" + "remote" + ] } ] } diff --git a/Niemand.Tests/LightManager/LightManagerSut.cs b/Niemand.Tests/LightManager/LightManagerSut.cs new file mode 100644 index 0000000..5b04bd6 --- /dev/null +++ b/Niemand.Tests/LightManager/LightManagerSut.cs @@ -0,0 +1,22 @@ +using LightManagerV2; +using Microsoft.Extensions.Logging; +using NetDaemon.AppModel; +using NetDaemon.Extensions.MqttEntityManager; + +namespace Niemand.Tests.LightManager; + +public class LightManagerSut(IHaContext ha, TestScheduler scheduler, StateChangeManager state, IMqttEntityManager entityManager, IAppConfig config, ILogger managerLogger, ILogger randomLogger) +{ + + public void Init(ManagerConfig? configOverride = null) + { + var cfg = configOverride == null ? config : new FakeAppConfig(configOverride); + var instance = new LightsManager(scheduler, ha, entityManager, cfg, managerLogger, randomLogger); + instance.InitializeAsync(new CancellationToken()); + state.Change(config.Value.ManagerEnabled(), "on"); + AssertionOptions.FormattingOptions.MaxLines = 1000; + } + + public ManagerConfig Config => config.Value; + public TestScheduler Scheduler => scheduler; +} \ No newline at end of file diff --git a/Niemand.Tests/LightManager/LightManagerTests.cs b/Niemand.Tests/LightManager/LightManagerTests.cs new file mode 100644 index 0000000..1700d8f --- /dev/null +++ b/Niemand.Tests/LightManager/LightManagerTests.cs @@ -0,0 +1,557 @@ +using NetDaemon.HassModel.Entities; + +namespace Niemand.Tests.LightManager; + +public class LightManagerFacts(LightManagerSut sut, StateChangeManager state, TestEntityBuilder entityBuilder) +{ + // Watchdog should ignore lights while room state is on. It turned off kitchen lights while I was making coffee exactluy on the hour 22:00 + // Only turn on Adaptive lights when AL is off + + + [Fact] + public void CircadianSwitchTurnsOnWhenLightTurnsOn() + { + // Arrange + sut.Config.Room().CircadianSwitchEntity = entityBuilder.CreateSwitchEntity("switch.circadian", "off"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Switch.TurnOn(sut.Config.Room().CircadianSwitchEntity) + ); + } + + [Fact] + public void GuardTurnsOffLightsLeftOnWhenRoomStateIsOff() + { + // Arrange + sut.Config.Room().RoomState = "off"; + state.Change(sut.Config.Light(), "on"); + sut.Init(); + + // Act + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.GuardTimeout).Ticks); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + [Fact] + public void HouseModeSetToDayTurnsOffAllEntitiesAndTurnOnControlEntities() + { + //Arrange + state.Change(sut.Config.Light(), "off"); + state.Change(sut.Config.Light(2), "off"); + state.Change(sut.Config.NightLight(), "on"); + state.Change(sut.Config.NightLight(2), "on"); + sut.Init(); + + //Act + state.Change(sut.Config.Room().NightTimeEntity, "night"); + + //Assert + state.ServiceCalls.Filter(Domain.Light).Should().BeEquivalentTo(new[] + { + Events.Light.TurnOff(sut.Config.Light()), + Events.Light.TurnOff(sut.Config.Light(2)), + Events.Light.TurnOff(sut.Config.NightLight()), + Events.Light.TurnOff(sut.Config.NightLight(2)) + } + ); + } + + [Fact] + public void HouseModeSetToNightTurnsOffAllNonNightControlEntitiesAndTurnsOnNightControlEntities() + { + // Arrange + + state.Change(sut.Config.Light(), "on"); + state.Change(sut.Config.NightLight(), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Room().NightTimeEntity, "night"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(2).Ticks); + + //Assert + state.ServiceCalls.Filter(Domain.Light).Should().BeEquivalentTo(new[] + { + Events.Light.TurnOff(sut.Config.Light()), + Events.Light.TurnOff(sut.Config.Light(2)), + Events.Light.TurnOff(sut.Config.NightLight()), + Events.Light.TurnOff(sut.Config.NightLight(2)), + Events.Light.TurnOn(sut.Config.NightLight(2)) + } + ); + } + + // [Fact] + // public void LightBrightnessChangedManuallyTurnsOffCircadianSwitch() + // { + // // Arrange + // sut.Config.Room().CircadianSwitchEntity = entityBuilder.CreateSwitchEntity("switch.circadian"); + // //sut.Init(sut.Config); + // + // // Act + // state.Change(sut.Config.Pir1(), "on"); + // + // + // var oldState = new EntityState + // { + // State = "on", + // Context = new Context + // { + // UserId = "EUGENE" + // } + // }.WithAttributes(new LightTurnOnParameters + // { + // Brightness = 0 + // }); + // + // var newState = new EntityState + // { + // State = "on", + // Context = new Context + // { + // UserId = "EUGENE" + // } + // }.WithAttributes(new LightTurnOnParameters + // { + // Brightness = 100 + // }); + // + // state.Change(sut.Config.Light(), oldState, newState); + // + // // Assert + // state.ServiceCalls.Should().ContainEquivalentOf( + // Events.Switch.TurnOff(sut.Config.Room().CircadianSwitchEntity) + // ); + // } + + [Fact] + public void LightDontTurnOnIfOffAndConditionEntityStateIsNotMet() + { + // Arrange + sut.Config.Room().ConditionEntity = entityBuilder.CreateSensorEntity("sensor.condition_entity"); + sut.Config.Room().ConditionEntityState = "under"; + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOn(sut.Config.Light()) + ); + } + + [Fact] + public void LightDontTurnsOffIfOnAndManagerIsDisabled() + { + // Arrange + state.Change(sut.Config.Light(), "on"); + state.Change(sut.Config.Pir1(), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.ManagerEnabled(), "off"); + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().Timeout).Ticks); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + [Fact] + public void LightDontTurnsOffIfOnAndRoomIsOccupied() + { + // Arrange + state.Change(sut.Config.Light(), "on"); + state.Change(sut.Config.Pir1(), "on"); + state.Change(sut.Config.KeepAlive1(), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().Timeout).Ticks); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + [Fact] + public void LightDontTurnsOnIfOffAndManagerIsDisabled() + { + // Arrange + sut.Init(); + + // Act + state.Change(sut.Config.ManagerEnabled(), "off"); + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOn(sut.Config.Light()) + ); + } + + [Fact] + public void LightDontTurnsOnIfOffAndToBright() + { + // Arrange + sut.Config.Room().LuxEntity = entityBuilder.CreateNumericEntity("sensor.lux_value"); + state.Change(sut.Config.Room().LuxEntity, "100"); + sut.Config.Room().LuxLimitEntity = entityBuilder.CreateNumericEntity("sensor.lux_Limit"); + state.Change(sut.Config.Room().LuxLimitEntity, "10"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOn(sut.Config.Light()) + ); + } + + [Fact] + public void LightTurnedOffManuallyCancelsOverrideTimeoutOnlyIfAllControlEntitiesAreOff() + { + // Arrange + state.Change(sut.Config.Light(2), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "on" + }); + + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "off" + }); + state.Change(sut.Config.Light(2), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "off" + }); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().OverrideTimeout).Ticks); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light(2)) + ); + } + + [Fact] + public void LightTurnedOffManuallyDoesNotCancelsOverrideTimeoutIfSomeControlEntitiesAreOn() + { + // Arrange + + state.Change(sut.Config.Light(2), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "on" + }); + + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "off" + }); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().OverrideTimeout).Ticks); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light(2)) + ); + } + + [Fact] + public void LightTurnedOnManuallyActivatesOverrideTimeout() + { + // Arrange + + sut.Init(); + + // Act + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "on" + }); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().OverrideTimeout).Ticks); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + + [Fact] + public void LightTurnsOffWhenPresenceIsOffAfterTimeout() + { + // Arrange + + state.Change(sut.Config.Light(), "on"); + state.Change(sut.Config.Pir1(), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().Timeout).Ticks); + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + [Fact] + public void LightTurnsOnWhenPresenceIsOn() + { + // Arrange + + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOn(sut.Config.Light()) + ); + } + + [Fact] + public void MotionAfterLastOffEventCancelsOffEventTimer() + { + // Arrange + + state.Change(sut.Config.Light(), "on"); + state.Change(sut.Config.Pir1(), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().Timeout - 1).Ticks); + state.Change(sut.Config.Pir1(), "on"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(1).Ticks); + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + + [Fact] + public void NightLightTurnsOnWhenPresenceIsOnAndNightModeIsActive() + { + // Arrange + + sut.Init(); + + // Act + state.Change(sut.Config.Room().NightTimeEntity, "night"); + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOn(sut.Config.NightLight()) + ); + } + + [Fact] + public void OverriddenLightsObeyOverrideTimeoutRegardlessOfNormalTimeoutAndPresence() + { + // Arrange + state.Change(sut.Config.Room().NightTimeEntity, "night"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(20).Ticks); + state.Change(sut.Config.Pir1(), "off"); + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "on" + }); + + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().NightTimeout).Ticks); + + // Assert normal timer does nothing + state.ServiceCalls.Filter(Domain.Light).Should().ContainEquivalentOf( + Events.Light.TurnOn(sut.Config.NightLight()) + ); + + var never = new[] + { + Events.Light.TurnOff(sut.Config.NightLight()), + Events.Light.TurnOff(sut.Config.Light()) + }; + foreach (var e in never) state.ServiceCalls.Filter(Domain.Light).Should().NotContainEquivalentOf(e); + + // Act + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().OverrideTimeout).Ticks); + + // Assert override timer turns light off + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } + + [Fact] + public void RoomStateIsOffWhenEntitiesTurnOff() + { + // Arrange + state.Change(sut.Config.Pir1(), "on"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().Timeout).Ticks); + + // Assert + sut.Config.Room().RoomState.Should().Be("off"); + } + + [Fact] + public void RoomStateIsOnWhenEntitiesTurnOn() + { + // Arrange + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + sut.Config.Room().RoomState.Should().Be("on"); + } + + [Fact] + public void TurnOnLight() + { + // Arrange + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOn(sut.Config.Light()) + ); + } + + [Fact] + public void TurnOnNightLight() + { + // Arrange + state.Change(sut.Config.Room().NightTimeEntity, "night"); + sut.Init(); + + // Act + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOn(sut.Config.NightLight()) + ); + } + + [Fact] + public void WhenOverrideActiveOtherLightsThatAreOffDontTurnOnForPresence() + { + // Arrange + sut.Init(); + + // Act + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "on" + }); + state.Change(sut.Config.Pir1(), "on"); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOn(sut.Config.Light(2)) + ); + } + + [Fact] + public void WhenOverrideActivePresenceResetsOverrideTimeout() + { + // Arrange + sut.Init(); + + // Act + state.Change(sut.Config.Light(), new EntityState + { + Context = new Context + { + UserId = "EUGENE" + }, + State = "on" + }); + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(900).Ticks); + state.Change(sut.Config.Pir1(), "on"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(900).Ticks); + + // Assert + state.ServiceCalls.Should().NotContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + + // Act + state.Change(sut.Config.Pir1(), "off"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(sut.Config.Room().OverrideTimeout).Ticks); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf( + Events.Light.TurnOff(sut.Config.Light()) + ); + } +} \ No newline at end of file diff --git a/Niemand.Tests/LightManager/LightManagerTestsExtensions.cs b/Niemand.Tests/LightManager/LightManagerTestsExtensions.cs new file mode 100644 index 0000000..74a1db5 --- /dev/null +++ b/Niemand.Tests/LightManager/LightManagerTestsExtensions.cs @@ -0,0 +1,13 @@ +using LightManagerV2; + +namespace Niemand.Tests.LightManager; + +public static class LightManagerTestsExtensions +{ + public static BinarySensorEntity KeepAlive1(this ManagerConfig config) => config.Room().KeepAliveEntities.First(); + public static LightEntity Light(this ManagerConfig config, int index = 1) => config.Room().ControlEntities[index - 1]; + public static SwitchEntity ManagerEnabled(this ManagerConfig config) => config.Room().ManagerEnabled; + public static LightEntity NightLight(this ManagerConfig config, int index = 1) => config.Room().NightControlEntities[index - 1]; + public static BinarySensorEntity Pir1(this ManagerConfig config) => config.Room().PresenceEntities.First(); + public static Manager Room(this ManagerConfig config, int index = 1) => config.Rooms.ToList()[index - 1]; +} \ No newline at end of file diff --git a/Niemand.Tests/Mocks/AlexaMock.cs b/Niemand.Tests/Mocks/AlexaMock.cs new file mode 100644 index 0000000..4ffcdcd --- /dev/null +++ b/Niemand.Tests/Mocks/AlexaMock.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System.Reactive.Subjects; +using NetDaemon.Helpers; + +namespace Niemand.Tests.Mocks; + +public class AlexaMock(IServices services) : IAlexa +{ + private readonly Subject _promptResponses = new(); + + public virtual void Announce(Alexa.Config config) + { + services.Notify.AlexaMedia(config.Entity, target: config.Entity, data: new { type = "announce" }); + } + + public virtual void Announce(string mediaPlayer, string message) + { + services.Notify.AlexaMedia(message, target: mediaPlayer, data: new { type = "announce" }); + } + + public Dictionary People { get; } = new(); + + public virtual void Prompt(string mediaPlayer, string message, string eventId) + { + } + + public IObservable PromptResponses => _promptResponses; + + public virtual void TextToSpeech(Alexa.Config config) + { + services.Notify.AlexaMedia(config.Entity, target: config.Entity, data: new { type = "tts" }); + } + + public virtual void TextToSpeech(string mediaPlayer, string message) + { + services.Notify.AlexaMedia(message, target: mediaPlayer, data: new { type = "tts" }); + } + + public void QueueResponse(PromptResponse response) + { + _promptResponses.OnNext(response); + } +} \ No newline at end of file diff --git a/Niemand.Tests/Mocks/MqttEntityManagerMock.cs b/Niemand.Tests/Mocks/MqttEntityManagerMock.cs new file mode 100644 index 0000000..1198ef7 --- /dev/null +++ b/Niemand.Tests/Mocks/MqttEntityManagerMock.cs @@ -0,0 +1,20 @@ +using MQTTnet.Protocol; +using NetDaemon.Extensions.MqttEntityManager; + +namespace Niemand.Tests.Mocks; + +public class MqttEntityManagerMock : IMqttEntityManager +{ + public Task CreateAsync(string entityId, EntityCreationOptions? options = null, object? additionalConfig = null) => Task.CompletedTask; + + public Task> PrepareCommandSubscriptionAsync(string entityId) => (Task>)Task.CompletedTask; + public MqttQualityOfServiceLevel QualityOfServiceLevel { get; set; } + + public Task RemoveAsync(string entityId) => Task.CompletedTask; + + public Task SetAttributesAsync(string entityId, object attributes) => Task.CompletedTask; + + public Task SetAvailabilityAsync(string entityId, string availability) => Task.CompletedTask; + + public Task SetStateAsync(string entityId, string state) => Task.CompletedTask; +} \ No newline at end of file diff --git a/Niemand.Tests/Mocks/RandomManagerMock.cs b/Niemand.Tests/Mocks/RandomManagerMock.cs new file mode 100644 index 0000000..c4b86a8 --- /dev/null +++ b/Niemand.Tests/Mocks/RandomManagerMock.cs @@ -0,0 +1,29 @@ +using LightManagerV2; + +namespace Niemand.Tests.Mocks; + +public class RandomManagerMock : IRandomManager +{ + public void Init(LightEntity entity, IEnumerable randomStates) + { + throw new NotImplementedException(); + } + + public void Init(IEnumerable entities, IEnumerable randomStates) + { + throw new NotImplementedException(); + } + + public TimeSpan RandomDelay { get; set; } + public SwitchEntity RandomSwitchEntity { get; } + + public void StartQueue() + { + throw new NotImplementedException(); + } + + public void StopQueue() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Niemand.Tests/Niemand.Tests.csproj b/Niemand.Tests/Niemand.Tests.csproj new file mode 100644 index 0000000..6d4814d --- /dev/null +++ b/Niemand.Tests/Niemand.Tests.csproj @@ -0,0 +1,39 @@ + + + + net8.0 + enable + enable + false + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + Niemand.Tests + + + + diff --git a/Niemand.Tests/Notifications/NotificationManagerSut.cs b/Niemand.Tests/Notifications/NotificationManagerSut.cs new file mode 100644 index 0000000..af67139 --- /dev/null +++ b/Niemand.Tests/Notifications/NotificationManagerSut.cs @@ -0,0 +1,12 @@ +using Niemand.Tests.Mocks; + +namespace Niemand.Tests; + +public class NotificationManagerSut(IHaContext haContext, IEntities entities, IAlexa alexa, TestScheduler scheduler) +{ + public NotificationsManager Init() => new(haContext, entities, alexa, scheduler); + + public TestScheduler Scheduler => scheduler; + + public AlexaMock Alexa => (AlexaMock)alexa; +} \ No newline at end of file diff --git a/Niemand.Tests/Notifications/NotificationsManagerTests.cs b/Niemand.Tests/Notifications/NotificationsManagerTests.cs new file mode 100644 index 0000000..97d681c --- /dev/null +++ b/Niemand.Tests/Notifications/NotificationsManagerTests.cs @@ -0,0 +1,127 @@ +using NetDaemon.Helpers; +using Niemand.NotificationManager; +using Niemand.Tests; + +namespace NetDaemonApps.Tests; + +public class NotificationsManagerTests(NotificationManagerSut sut, IEntities entities, StateChangeManager state, TestEntityBuilder entityBuilder) +{ + [Fact] + public void AcknowledgePromptAndResetWhenPromptResponseIsYes() + { + var ack = entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "off"); + var mediaPlayer = entityBuilder.CreateMediaPlayerEntity("media_player.kitchen"); + sut.Init(); + + sut.Alexa.QueueResponse(new PromptResponse { EventId = "DishwasherTts", ResponseType = PromptResponseType.ResponseYes }); + + state.ServiceCalls.Should().ContainEquivalentOf(Events.InputBoolean.TurnOn(ack)); + state.ServiceCalls.Should().ContainEquivalentOf(Events.Notify.AlexaMedia(mediaPlayer, "Thanks", "tts")); + } + + [Fact] + public void AcknowledgePromptWhenPromptResponseIsNo() + { + entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "off"); + var mediaPlayer = entityBuilder.CreateMediaPlayerEntity("media_player.kitchen"); + sut.Init(); + + sut.Alexa.QueueResponse(new PromptResponse { EventId = "DishwasherTts", ResponseType = PromptResponseType.ResponseNo }); + + state.ServiceCalls.Should().ContainEquivalentOf(Events.Notify.AlexaMedia(mediaPlayer, "Ok", "tts")); + } + + [Fact] + public void AnnounceWhenAnnouncedMoreThan60MinutesAgo() + { + entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "on"); + var mediaPlayer = entityBuilder.CreateMediaPlayerEntity("media_player.kitchen"); + var motion = entityBuilder.CreateBinarySensorEntity(entities.BinarySensor.KitchenMotion.EntityId, "off"); + var status = new DishwasherNotificationConfig(entities).Status; + state.Change(status, "ready"); + sut.Init(); + + state.Change(motion, "on"); + + sut.Scheduler.AdvanceBy(TimeSpan.FromMinutes(61).Ticks); + + state.Change(motion, "off"); + state.Change(motion, "on"); + + state.ServiceCalls.Filter(Domain.Notify).Should().BeEquivalentTo(new[] { + Events.Notify.AlexaMedia(mediaPlayer, "The Dishwasher is ready", "announce"), + Events.Notify.AlexaMedia(mediaPlayer, "The Dishwasher is ready", "announce") + }); + } + + [Fact] + public void DontAnnounceWhenAnnouncedInTheLast60Minutes() + { + entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "on"); + var mediaPlayer = entityBuilder.CreateMediaPlayerEntity("media_player.kitchen"); + var motion = entityBuilder.CreateBinarySensorEntity(entities.BinarySensor.KitchenMotion.EntityId, "off"); + var status = new DishwasherNotificationConfig(entities).Status; + state.Change(status, "ready"); + sut.Init(); + + state.Change(motion, "on"); + + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks); + + state.Change(motion, "off"); + state.Change(motion, "on"); + + state.ServiceCalls.Filter(Domain.Notify).Should().BeEquivalentTo(new[] { + Events.Notify.AlexaMedia(mediaPlayer, "The Dishwasher is ready", "announce") + }); + } + + [Fact] + public void DontPromptWhenPromptedInTheLast15Minutes() + { + entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "off"); + var motion = entityBuilder.CreateBinarySensorEntity(entities.BinarySensor.KitchenMotion.EntityId, "off"); + + sut.Init(); + + state.Change(motion, "on"); + + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(5).Ticks); + + state.Change(motion, "off"); + state.Change(motion, "on"); + + //ctx.VerifyPrompt("media_player.kitchen", "The Dishwasher is done. Has it been unpacked?", "DishwasherTts", Times.Once()); + } + + [Fact] + public void PromptWhenPromptedMoreThan15MinutesAgo() + { + entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "off"); + var motion = entityBuilder.CreateBinarySensorEntity(entities.BinarySensor.KitchenMotion.EntityId, "off"); + + sut.Init(); + + state.Change(motion, "on"); + + sut.Scheduler.AdvanceBy(TimeSpan.FromMinutes(16).Ticks); + + state.Change(motion, "off"); + state.Change(motion, "on"); + + //ctx.VerifyPrompt("media_player.kitchen", "The Dishwasher is done. Has it been unpacked?", "DishwasherTts", Times.Exactly(2)); + } + + [Fact] + public void PromptWhenThereHasBeenNoPreviousPrompt() + { + entityBuilder.CreateInputBooleanEntity(entities.InputBoolean.DishwasherAck.EntityId, "off"); + var motion = entityBuilder.CreateBinarySensorEntity(entities.BinarySensor.KitchenMotion.EntityId, "off"); + + sut.Init(); + + state.Change(motion, "on"); + + //ctx.VerifyPrompt("media_player.kitchen", "The Dishwasher is done. Has it been unpacked?", "DishwasherTts", Times.Once()); + } +} \ No newline at end of file diff --git a/Niemand.Tests/Routines/RoutineTests.cs b/Niemand.Tests/Routines/RoutineTests.cs new file mode 100644 index 0000000..55b4b5d --- /dev/null +++ b/Niemand.Tests/Routines/RoutineTests.cs @@ -0,0 +1,62 @@ +using System.Reactive.Concurrency; +using Microsoft.Extensions.Logging; + +namespace Niemand.Tests; + +public class RoutineTests(RoutinesSut sut, StateChangeManager state, IEntities entities) +{ + [Fact] + public void AlarmArmedWhenEveryoneIsAway() + { + // Arrange + state.Change(entities.Person.Eugene, "home"); + state.Change(entities.Person.Hailey, "home"); + state.Change(entities.Person.Aubrecia, "home"); + state.Change(entities.AlarmControlPanel.Alarmo, "disarmed"); + + // Act + var _ = sut.Instance; + state.Change(entities.Person.Eugene, "not_home"); + state.Change(entities.Person.Hailey, "not_home"); + state.Change(entities.Person.Aubrecia, "mum_home"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf(Events.AlarmPanel.ArmedAway(entities.AlarmControlPanel.Alarmo)); + } + + [Fact] + public void AlarmDisarmsWhenAnyoneArrivesHome() + { + // Arrange + state.Change(entities.Person.Eugene, "not_home"); + + // Act + var _ = sut.Instance; + state.Change(entities.Person.Eugene, "home"); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf(Events.AlarmPanel.Disarmed(entities.AlarmControlPanel.Alarmo)); + } + + [Fact] + public void AlarmDisarmsWhenSomeoneComesDownTheStairs() + { + // Arrange + state.Change(entities.AlarmControlPanel.Alarmo, "armed_night"); + + // Act + var _ = sut.Instance; + state.Change(entities.BinarySensor.Hallway, "on"); + state.Change(entities.BinarySensor.LandingMotion, "on"); + sut.Scheduler.AdvanceBy(TimeSpan.FromSeconds(1).Ticks); + + // Assert + state.ServiceCalls.Should().ContainEquivalentOf(Events.AlarmPanel.Disarmed(entities.AlarmControlPanel.Alarmo)); + } +} + +public class RoutinesSut(IEntities entities, IServices services, TestScheduler scheduler, People people, ILogger logger) +{ + public Routines Instance => new(entities, services, scheduler, people, logger); + public TestScheduler Scheduler => scheduler; +} \ No newline at end of file diff --git a/Niemand.Tests/Startup.cs b/Niemand.Tests/Startup.cs new file mode 100644 index 0000000..9667786 --- /dev/null +++ b/Niemand.Tests/Startup.cs @@ -0,0 +1,77 @@ +using System.Reactive.Concurrency; +using LightManagerV2; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Testing; +using NetDaemon.AppModel; +using NetDaemon.Extensions.MqttEntityManager; +using NetDaemon.Extensions.Scheduler; +using Niemand.Tests.LightManager; +using Niemand.Tests.Mocks; +using Xunit.DependencyInjection.Logging; + +namespace Niemand.Tests; + +public static class Startup +{ + public static void ConfigureServices(IServiceCollection services) + { + services.AddLogging(x => x.AddXunitOutput()); + services.AddTransient(); + services.AddTransient(); + services.AddNetDaemonScheduler(); + services.AddScoped(); + services.AddScoped(); + services.AddTransient(s => s.GetRequiredService()); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient, FakeLogger>(); + services.AddTransient>(s => new FakeAppConfig(GetManagerConfig(s.GetRequiredService(), s.GetRequiredService()))); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + } + + private static ManagerConfig GetManagerConfig(StateChangeManager state, TestEntityBuilder entityBuilder) + { +#pragma warning disable CS8604 +#pragma warning disable CS8601 + var cfg = new ManagerConfig + { + NdUserId = "ND_USER_ID_1234", + MinDuration = "00:05:00", + MaxDuration = "00:15:00", + GuardTimeout = 301, + RandomSwitchEntity = entityBuilder.CreateSwitchEntity("switch.random"), + Rooms = new List + { + new() + { + Name = "TestRoom", + + PresenceEntities = new List { entityBuilder.CreateBinarySensorEntity("binary_sensor.pir") }, + ControlEntities = new List { entityBuilder.CreateLightEntity("light.bulb_1"), entityBuilder.CreateLightEntity("light.bulb_2") }, + KeepAliveEntities = new List { entityBuilder.CreateBinarySensorEntity("binary_sensor.keep_alive") }, + NightControlEntities = new List { entityBuilder.CreateLightEntity("light.bulb_3"), entityBuilder.CreateLightEntity("light.bulb_4") }, + NightTimeEntity = entityBuilder.CreateInputSelectEntity("input_select.house_mode"), + NightTimeEntityStates = new List { "night" }, + Timeout = 90, + NightTimeout = 30, + OverrideTimeout = 1800 + } + } + }; + + foreach (var entity in cfg.Room().PresenceEntities) state.Change(entity, "off"); + foreach (var entity in cfg.Room().ControlEntities) state.Change(entity, "off"); + foreach (var entity in cfg.Room().NightControlEntities) state.Change(entity, "off"); + foreach (var entity in cfg.Room().KeepAliveEntities) state.Change(entity, "off"); + cfg.Room().ManagerEnabled = entityBuilder.CreateSwitchEntity("switch.light_manager_test"); + return cfg; +#pragma warning restore CS8601 +#pragma warning restore CS8604 + } +} \ No newline at end of file diff --git a/Niemand.Tests/Usings.cs b/Niemand.Tests/Usings.cs new file mode 100644 index 0000000..f4bc366 --- /dev/null +++ b/Niemand.Tests/Usings.cs @@ -0,0 +1,8 @@ +global using Xunit; +global using Microsoft.Reactive.Testing; +global using HomeAssistantGenerated; +global using FluentAssertions; +global using NetDaemon.Extensions.Testing; +global using NetDaemon.HassModel; +global using NetDaemon; +global using Niemand.Helpers; diff --git a/Niemand.Tests/global.json b/Niemand.Tests/global.json new file mode 100644 index 0000000..f242f75 --- /dev/null +++ b/Niemand.Tests/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "8.0.100", + "rollForward": "latestMinor", + "allowPrerelease": true + } +} \ No newline at end of file diff --git a/apps/Alarm/AlarmApp.cs b/apps/Alarm/AlarmApp.cs deleted file mode 100644 index ecde935..0000000 --- a/apps/Alarm/AlarmApp.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace Niemand.TestApp; - -[NetDaemonApp] -//[Focus] -public class Alarm -{ - public Alarm(IEntities entities, IAlexa alexa) - { - entities.AlarmControlPanel.Alarmo.StateChanges().Subscribe(s => - { - switch (s.New.State) - { - case "armed_night": - var reminderMessages = new List(); - if (entities.InputBoolean.DryerReminder.IsOn()) - reminderMessages.Add("Dryer"); - if (entities.InputBoolean.WashingReminder.IsOn()) - reminderMessages.Add("Washer"); - if (entities.InputBoolean.DryerReminder.IsOn()) - reminderMessages.Add("Dishwasher"); - - var reminderMessage = reminderMessages.Any() ? string.Join(",", reminderMessages) + " is ready but not turned on." : ""; - alexa.TextToSpeech(new Alexa.Config { Entities = new List { "media_player.master", "media_player.office" }, Message = $"{reminderMessage} Alarm armed" }); - break; - case "disarmed": - alexa.TextToSpeech(new Alexa.Config { Entities = new List { "media_player.master", "media_player.office" }, Message = "Alarm disarmed" }); - break; - } - }); - } -} \ No newline at end of file diff --git a/apps/AlarmClock/AlarmClock.cs b/apps/AlarmClock/AlarmClock.cs index 92bbb2f..8110ab3 100644 --- a/apps/AlarmClock/AlarmClock.cs +++ b/apps/AlarmClock/AlarmClock.cs @@ -1,4 +1,7 @@ -namespace Niemand; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace Niemand; [NetDaemonApp] //[Focus] diff --git a/apps/BatteriesApp/BatteriesApp.cs b/apps/BatteriesApp/BatteriesApp.cs index 378cf3d..c32d6dc 100644 --- a/apps/BatteriesApp/BatteriesApp.cs +++ b/apps/BatteriesApp/BatteriesApp.cs @@ -1,4 +1,7 @@ -namespace Niemand.Energy; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace Niemand.Energy; [NetDaemonApp] //[Focus] diff --git a/apps/DebugState/DebugState.yaml b/apps/DebugState/DebugState.yaml index dbb7672..3e1b14e 100644 --- a/apps/DebugState/DebugState.yaml +++ b/apps/DebugState/DebugState.yaml @@ -1,6 +1,6 @@ DebugStateConfiguration: DebugStateEnabled: false - DebugStateEntities: + DebugStateEntities: - binary_sensor.office_motion - binary_sensor.dining_motion - binary_sensor.landing_motion diff --git a/apps/DiningApp/DiningApp.cs b/apps/DiningApp/DiningApp.cs index 2c4897a..3d1b7d2 100644 --- a/apps/DiningApp/DiningApp.cs +++ b/apps/DiningApp/DiningApp.cs @@ -1,4 +1,7 @@ -namespace Niemand.Dining; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace Niemand.Dining; [NetDaemonApp] //[Focus] diff --git a/apps/DisciplineManager.cs b/apps/DisciplineManager.cs index 7ec83a7..2cb6d59 100644 --- a/apps/DisciplineManager.cs +++ b/apps/DisciplineManager.cs @@ -1,13 +1,4 @@ -using System; -using System.Reactive.Linq; -using System.Threading; -using System.Threading.Tasks; -using HomeAssistantGenerated; -using Microsoft.Extensions.Logging; -using NetDaemon.AppModel; -using NetDaemon.Extensions.MqttEntityManager; -using NetDaemon.HassModel; -using NetDaemon.HassModel.Entities; +using NetDaemon.Extensions.MqttEntityManager; namespace Niemand; diff --git a/apps/Energy/AgileRatesApp.cs b/apps/Energy/AgileRatesApp.cs index 2c5792c..9561d2c 100644 --- a/apps/Energy/AgileRatesApp.cs +++ b/apps/Energy/AgileRatesApp.cs @@ -86,6 +86,21 @@ private class Rates [JsonPropertyName("results")] public List Results { get; set; } [JsonPropertyName("next")] public string Next { get; set; } [JsonPropertyName("previous")] public string Previous { get; set; } + + // { + // "count": 31536, + // "next": "https://api.octopus.energy/v1/products/AGILE-VAR-22-10-19/electricity-tariffs/E-1R-AGILE-VAR-22-10-19-A/standard-unit-rates/?page\u003d2", + // "previous": null, + // "results": [ + // { + // "value_exc_vat": 14.22, + // "value_inc_vat": 14.931, + // "valid_from": "2024-01-17T22:30:00Z", + // "valid_to": "2024-01-17T23:00:00Z", + // "payment_method": null + // } + // ] + // } } private class Rate @@ -93,5 +108,15 @@ private class Rate [JsonPropertyName("valid_from")] public DateTime ValidFrom { get; set; } [JsonPropertyName("valid_to")] public DateTime ValidTo { get; set; } [JsonPropertyName("value_inc_vat")] public double Value { get; set; } + [JsonPropertyName("value_exc_vat")] public double ValueExVat { get; set; } + [JsonPropertyName("payment_method")] public object? PaymentMethod { get; set; } + + // "value_exc_vat": 14.22, + // "value_inc_vat": 14.931, + // "valid_from": "2024-01-17T22:30:00Z", + // "valid_to": "2024-01-17T23:00:00Z", + // "payment_method": null } + + } \ No newline at end of file diff --git a/apps/Energy/EnergyApp.cs b/apps/Energy/EnergyApp.cs index 0c0343c..e45a294 100644 --- a/apps/Energy/EnergyApp.cs +++ b/apps/Energy/EnergyApp.cs @@ -1,7 +1,9 @@ -namespace Niemand.Energy; +using NetDaemon.Helpers; + +namespace Niemand.Energy; [NetDaemonApp] -[Focus] +//[Focus] public class EnergyApp { private readonly IEntities _entities; @@ -39,6 +41,8 @@ public EnergyApp(IHaContext haContext, IScheduler scheduler, ILogger CacheCheapestWindows(); NotifyWindowsStarted(_cheapestWindows); }); + + NotifyRates(_cheapestWindows); } public SortedDictionary Rates @@ -113,6 +117,12 @@ private void NotifyRates(List<(DateTime, double, int)>? cheapestWindows) if (cheapestWindows == null) CacheCheapestWindows(); + if (_cheapestWindows == null) + { + _logger.LogError("No Rates Found"); + return; + } + _services.TelegramBot.SendMessage(GetRatesMessageText(_cheapestWindows), parseMode: "MarkdownV2"); } diff --git a/apps/Internet/InternetApp.cs b/apps/Internet/InternetApp.cs new file mode 100644 index 0000000..ecee688 --- /dev/null +++ b/apps/Internet/InternetApp.cs @@ -0,0 +1,19 @@ +namespace Niemand; + +[NetDaemonApp] +//[Focus] +public class InternetApp +{ + public InternetApp(IEntities entities, IScheduler scheduler, ILogger logger) + { + entities.Switch.PiHole.TurnOn(); + + entities.Switch.PiHole.StateChanges() + .Where(change => change.Old.IsOn() && change.New.IsOff()) + .Subscribe(change => + { + logger.LogInformation("Pi-Hole turned off"); + scheduler.Schedule(TimeSpan.FromMinutes(5), () => entities.Switch.PiHole.TurnOn()); + }); + } +} \ No newline at end of file diff --git a/apps/Kitchen/Kitchen.cs b/apps/Kitchen/Kitchen.cs index a7c6915..9ccb902 100644 --- a/apps/Kitchen/Kitchen.cs +++ b/apps/Kitchen/Kitchen.cs @@ -1,4 +1,7 @@ -namespace Niemand; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace Niemand; public class KitchenConfiguration { diff --git a/apps/LightsManager/LightsManager.cs b/apps/LightsManager/LightsManager.cs index 3ef9d75..842591c 100644 --- a/apps/LightsManager/LightsManager.cs +++ b/apps/LightsManager/LightsManager.cs @@ -30,27 +30,14 @@ public LightsManager(IScheduler scheduler, IHaContext haContext, IMqttEntityMana public Task InitializeAsync(CancellationToken cancellationToken) { - try - { - _randomManager = new RandomManager(_scheduler, _config.RandomSwitchEntity, _config.MinDuration, _config.MaxDuration, _randomLogger); - ( _config.Rooms.Any(r => r.Debug) - ? _config.Rooms.Where(r => r.Debug).ToList() - : _config.Rooms.ToList() ) - .ForEach(async r => - { - //foreach (var controlEntity in r.PresenceEntities) - // _haContext.StateAllChanges().Where(s => s.Entity.EntityId == controlEntity.EntityId).Subscribe(s => - // _managerLogger.LogDebug("StateChange for {room} : {entity} from {oldSate} to state {newState}", r.Name, s?.New?.EntityId, s?.Old?.State, s?.New?.State) - // ); - await r.Init(_managerLogger, _config.NdUserId, _randomManager, _scheduler, _haContext, _entityManager, _config.GuardTimeout); - }); - } - catch (Exception e) - { - Console.WriteLine(e); - _managerLogger.LogError(e, "Error Occurred"); - } - - return null; + _randomManager = new RandomManager(_scheduler, _config.RandomSwitchEntity, _config.MinDuration, _config.MaxDuration, _randomLogger); + ( _config.Rooms.Any(r => r.Debug) + ? _config.Rooms.Where(r => r.Debug).ToList() + : _config.Rooms.ToList() ) + .ForEach(async r => + { + await r.Init(_managerLogger, _config.NdUserId, _randomManager, _scheduler, _haContext, _entityManager, _config.GuardTimeout); + }); + return Task.CompletedTask; } } \ No newline at end of file diff --git a/apps/LightsManager/LightsManager.yaml b/apps/LightsManager/LightsManager.yaml index 343b360..6b1e722 100644 --- a/apps/LightsManager/LightsManager.yaml +++ b/apps/LightsManager/LightsManager.yaml @@ -1,356 +1,396 @@ -LightManagerV2.ManagerConfig: +LightManagerV2.ManagerConfig: NdUserId: ef606e2918da4355ba036a019cdcc6a0 GuardTimeout: 300 MinDuration: "0.00:03:00" MaxDuration: "0.00:15:00" RandomSwitchEntity: alarm_control_panel.alarmo Rooms: - - Name: Study - Timeout: 300 - OverrideTimeout: 1800 - PresenceEntities: - - binary_sensor.office_motion - - binary_sensor.study - KeepAliveEntities: - - binary_sensor.eugenes_macbook_active - - binary_sensor.haileys_macbook_air_active - ControlEntities: - - switch.office_skylight - MonitorEntities: - - light.office_1 - - light.office_2 - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.office - LuxlimitEntity: input_number.office_lux_limit - LuxEntity: sensor.office_lux - CircadianSwitchEntity: switch.adaptive_lighting_study - RandomStates: - - armed_home - - armed_away - # debug: true + - Name: Study + Timeout: 300 + OverrideTimeout: 1800 + PresenceEntities: + - binary_sensor.office_motion + - binary_sensor.study + KeepAliveEntities: + - binary_sensor.eugenes_macbook_active + - binary_sensor.haileys_macbook_air_active + - binary_sensor.eugene_desktop_active + ControlEntities: + - switch.office_skylight + MonitorEntities: + - light.office_1 + - light.office_2 + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.office + LuxlimitEntity: input_number.office_lux_limit + LuxEntity: sensor.office_lux + CircadianSwitchEntity: switch.adaptive_lighting_study + RandomStates: + - armed_home + - armed_away + # debug: true - - Name: Dining - PresenceEntities: - - binary_sensor.dining_motion - - binary_sensor.dining - ControlEntities: - - light.dining - - light.dining_wall - MonitorEntities: - - light.dining_1 - - light.dining_2 - - light.dining_3 - - light.dining_4 - - light.dining_5 - - light.dining_wall_1 - - light.dining_wall_2 - Timeout: 300 - NightTimeout: 90 - LuxEntity: sensor.dining_lux - LuxlimitEntity: input_number.dining_lux_limit - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.dining_1 - CircadianSwitchEntity: switch.adaptive_lighting_dining - RandomStates: - - armed_home - - armed_away - # debug: true + - Name: Dining + PresenceEntities: + - binary_sensor.dining_motion + - binary_sensor.dining + ControlEntities: + - light.dining + - light.dining_wall + MonitorEntities: + - light.dining_1 + - light.dining_2 + - light.dining_3 + - light.dining_4 + - light.dining_5 + - light.dining_wall_1 + - light.dining_wall_2 + Timeout: 300 + NightTimeout: 90 + LuxEntity: sensor.dining_lux + LuxlimitEntity: input_number.dining_lux_limit + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.dining_1 + CircadianSwitchEntity: switch.adaptive_lighting_dining + RandomStates: + - armed_home + - armed_away + # debug: true - - Name: Fish - PresenceEntities: - - binary_sensor.dining_motion - - binary_sensor.dining - ControlEntities: - - switch.plug_2 - Timeout: 900 - # debug: true + - Name: Christmas + PresenceEntities: + - binary_sensor.lounge_motion + - binary_sensor.lounge + ControlEntities: + - switch.plug_2 + Timeout: 900 + # debug: true - - Name: Landing - PresenceEntities: - - binary_sensor.landing_motion - - binary_sensor.landing - ControlEntities: - - light.landing_day - - light.landing_night - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.landing_night - Timeout: 90 - LuxEntity: sensor.landing_lux - LuxlimitEntity: input_number.landing_lux_limit - RandomStates: - - armed_away - # debug: true + - Name: Landing + PresenceEntities: + - binary_sensor.landing_motion + - binary_sensor.landing + ControlEntities: + - light.landing + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.landing_7 + Timeout: 90 + LuxEntity: sensor.landing_lux + LuxlimitEntity: input_number.landing_lux_limit + CircadianSwitchEntity: switch.adaptive_lighting_landing + RandomStates: + - armed_away + # debug: true - - Name: Porch - PresenceEntities: - - binary_sensor.front_door - - binary_sensor.niemand_front_door_motion - KeepAliveEntities: - - binary_sensor.front_door - ControlEntities: - - light.porch - Timeout: 90 - ConditionEntity: sun.sun - ConditionEntityState: below_horizon - # debug: true + - Name: Porch + PresenceEntities: + - binary_sensor.front_door + - binary_sensor.niemand_front_door_motion + KeepAliveEntities: + - binary_sensor.front_door + ControlEntities: + - light.porch + Timeout: 90 + ConditionEntity: sun.sun + ConditionEntityState: below_horizon + # debug: true - - Name: Drive - PresenceEntities: - - binary_sensor.niemand_drive_motion - - binary_sensor.niemand_drive_motion_2 - ControlEntities: - - light.lounge - Timeout: 300 - ConditionEntity: alarm_control_panel.alarmo - ConditionEntityState: armded_night - Watchdog: false + - Name: Backdoor + PresenceEntities: + - binary_sensor.back_door + - binary_sensor.niemand_garage_motion + - binary_sensor.niemand_garage_motion_2 + KeepAliveEntities: + - binary_sensor.back_door + ControlEntities: + - light.backdoor + Timeout: 90 + ConditionEntity: sun.sun + ConditionEntityState: below_horizon + # debug: true - - Name: Garden - PresenceEntities: - - binary_sensor.niemand_garden_motion - - binary_sensor.niemand_garden_motion_2 - ControlEntities: - - light.dining - - light.dining_wall - Timeout: 300 - ConditionEntity: alarm_control_panel.alarmo - ConditionEntityState: armded_night - Watchdog: false + - Name: Drive + PresenceEntities: + - binary_sensor.niemand_drive_motion + - binary_sensor.niemand_drive_motion_2 + ControlEntities: + - light.lounge + Timeout: 300 + ConditionEntity: alarm_control_panel.alarmo + ConditionEntityState: armed_night + Watchdog: false - - Name: Garage - PresenceEntities: - - binary_sensor.niemand_garage_motion - - binary_sensor.niemand_garage_motion_2 - ControlEntities: - - light.utility - - light.kitchen - Timeout: 300 - ConditionEntity: alarm_control_panel.alarmo - ConditionEntityState: armded_night - Watchdog: false - #debug: true + - Name: Garden + PresenceEntities: + - binary_sensor.niemand_garden_motion + - binary_sensor.niemand_garden_motion_2 + ControlEntities: + - light.dining + - light.dining_wall + Timeout: 300 + ConditionEntity: alarm_control_panel.alarmo + ConditionEntityState: armed_night + Watchdog: false - - Name: Aaron - Timeout: 300 - NightTimeout: 90 - PresenceEntities: - - binary_sensor.aaron_motion - ControlEntities: - - light.aaron - - light.aaron_main - MonitorEntities: - - light.aaron_1 - - light.aaron_2 - - light.aaron_3 - - light.aaron_4 - LuxEntity: sensor.aaron_lux - LuxlimitEntity: input_number.aaron_lux_limit - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.aaron_4 - CircadianSwitchEntity: switch.adaptive_lighting_aaron - RandomStates: - - armed_away + - Name: Garage + PresenceEntities: + - binary_sensor.niemand_garage_motion + - binary_sensor.niemand_garage_motion_2 + ControlEntities: + - light.utility + - light.kitchen + Timeout: 300 + ConditionEntity: alarm_control_panel.alarmo + ConditionEntityState: armed_night + Watchdog: false + #debug: true - - Name: Jayden - Timeout: 300 - NightTimeout: 600 - PresenceEntities: - - binary_sensor.jayden_motion - ControlEntities: - - light.jayden - MonitorEntities: - - light.jayden_1 - - light.jayden_2 - - light.jayden_3 - - light.jayden_4 - LuxEntity: sensor.jayden_lux - LuxlimitEntity: input_number.jayden_lux_limit - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.jayden_3 - CircadianSwitchEntity: switch.adaptive_lighting_jayden - RandomStates: - - armed_away + - Name: Aaron + Timeout: 300 + NightTimeout: 90 + PresenceEntities: + - binary_sensor.aaron_motion + ControlEntities: + - light.aaron + - light.aaron_main + MonitorEntities: + - light.aaron_1 + - light.aaron_2 + - light.aaron_3 + - light.aaron_4 + LuxEntity: sensor.aaron_lux + LuxlimitEntity: input_number.aaron_lux_limit + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.aaron_4 + CircadianSwitchEntity: switch.adaptive_lighting_aaron + RandomStates: + - armed_away - - Name: Hallway - Timeout: 300 - PresenceEntities: - - binary_sensor.landing_motion - - binary_sensor.hallway - ControlEntities: - - light.hallway - LuxlimitEntity: input_number.hallway_lux_limit - LuxEntity: sensor.entrance_lux - CircadianSwitchEntity: switch.adaptive_lighting_hallway - RandomStates: - - armed_home - - armed_away - # debug: true + - Name: Jayden + Timeout: 300 + NightTimeout: 600 + PresenceEntities: + - binary_sensor.jayden_motion + ControlEntities: + - light.jayden + MonitorEntities: + - light.jayden_1 + - light.jayden_2 + - light.jayden_3 + - light.jayden_4 + LuxEntity: sensor.jayden_lux + LuxlimitEntity: input_number.jayden_lux_limit + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.jayden_1 + CircadianSwitchEntity: switch.adaptive_lighting_jayden + RandomStates: + - armed_away - - Name: Entrance - Timeout: 300 - PresenceEntities: - - binary_sensor.entrance_motion - ControlEntities: - - light.entrance - LuxlimitEntity: input_number.entrance_lux_limit - LuxEntity: sensor.entrance_lux - CircadianSwitchEntity: switch.adaptive_lighting_entrance - RandomStates: - - armed_home - - armed_away - # debug: true + - Name: Hallway + Timeout: 300 + PresenceEntities: + - binary_sensor.landing_motion + - binary_sensor.hallway + - binary_sensor.entrance_motion + ControlEntities: + - light.hallway + - light.entrance + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.landing_7 + LuxlimitEntity: input_number.hallway_lux_limit + LuxEntity: sensor.entrance_lux + CircadianSwitchEntity: switch.adaptive_lighting_hallway + RandomStates: + - armed_home + - armed_away + # debug: true - - Name: Master - Timeout: 300 - NightTimeout: 90 - PresenceEntities: - - binary_sensor.master_motion - ControlEntities: - - light.master - MonitorEntities: - - light.master_1 - - light.master_2 - - light.master_3 - - light.master_4 - - light.master_5 - LuxEntity: sensor.master_lux - LuxlimitEntity: input_number.master_lux_limit - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.master_5 - CircadianSwitchEntity: switch.adaptive_lighting_master - RandomStates: - - armed_away + - Name: Entrance + Timeout: 300 + PresenceEntities: + - binary_sensor.entrance_motion + ControlEntities: + - light.hallway + - light.entrance + NightControlEntities: + - light.hallway + - light.entrance + LuxlimitEntity: input_number.entrance_lux_limit + LuxEntity: sensor.entrance_lux + CircadianSwitchEntity: switch.adaptive_lighting_entrance + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + RandomStates: + - armed_home + - armed_away + # debug: true - - Name: Lounge - Timeout: 300 - NightTimeout: 300 - PresenceEntities: - - binary_sensor.lounge_motion - - binary_sensor.lounge - ControlEntities: - - light.lounge - MonitorEntities: - - light.lounge_front - - light.lounge_back - LuxEntity: sensor.lounge_lux - LuxlimitEntity: input_number.lounge_lux_limit - KeepAliveEntities: - - media_player.lounge - - media_player.lounge_tv - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.floor - CircadianSwitchEntity: switch.adaptive_lighting_floor - RandomStates: - - armed_home - - armed_away - # debug: true + - Name: Master + Timeout: 300 + NightTimeout: 90 + PresenceEntities: + - binary_sensor.master_motion + ControlEntities: + - light.master + MonitorEntities: + - light.master_1 + - light.master_2 + - light.master_3 + - light.master_4 + - light.master_5 + LuxEntity: sensor.master_lux + LuxlimitEntity: input_number.master_lux_limit + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.master_5 + CircadianSwitchEntity: switch.adaptive_lighting_master + RandomStates: + - armed_away - #- Name: Christmas - # Timeout: 600 - # PresenceEntities: - # - binary_sensor.lounge_motion - # - binary_sensor.lounge - # ControlEntities: - # - switch.tuya_socket_3 - # - switch.plug_1 - # KeepAliveEntities: - # - media_player.lounge - # - media_player.lounge_tv + - Name: Lounge + Timeout: 300 + NightTimeout: 300 + PresenceEntities: + - binary_sensor.lounge_motion + - binary_sensor.lounge + ControlEntities: + - light.lounge + MonitorEntities: + - light.lounge_front + - light.lounge_back + LuxEntity: sensor.lounge_lux + LuxlimitEntity: input_number.lounge_lux_limit + KeepAliveEntities: + - media_player.lounge + - media_player.lounge_tv + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.floor + CircadianSwitchEntity: switch.adaptive_lighting_floor + RandomStates: + - armed_home + - armed_away + # debug: true - - Name: Playroom - Timeout: 300 - PresenceEntities: - - binary_sensor.playroom_motion - ControlEntities: - - light.playroom - LuxEntity: sensor.playroom_lux - LuxlimitEntity: input_number.playroom_lux_limit - RandomStates: - - armed_away + - Name: Playroom + Timeout: 300 + PresenceEntities: + - binary_sensor.playroom_motion + ControlEntities: + - light.playroom + - light.playroom_main + NightControlEntities: + - light.playroom_4 + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + LuxEntity: sensor.playroom_lux + LuxlimitEntity: input_number.playroom_lux_limit + CircadianSwitchEntity: switch.adaptive_lighting_playroom + RandomStates: + - armed_away + # debug: true - - Name: Kitchen - Timeout: 300 - PresenceEntities: - - binary_sensor.kitchen_motion - - binary_sensor.kitchen - ControlEntities: - - light.kitchen - MonitorEntities: - - light.kitchen_1 - - light.kitchen_2 - - light.kitchen_3 - - light.kitchen_4 - - light.kitchen_5 - - light.kitchen_6 - LuxEntity: sensor.kitchen_lux - LuxlimitEntity: input_number.kitchen_lux_limit - CircadianSwitchEntity: switch.adaptive_lighting_kitchen - RandomStates: - - armed_home - - armed_away - # debug: true + - Name: Kitchen + Timeout: 300 + PresenceEntities: + - binary_sensor.kitchen_motion + - binary_sensor.kitchen + ControlEntities: + - light.kitchen + NightControlEntities: + - light.kitchen + MonitorEntities: + - light.kitchen_1 + - light.kitchen_2 + - light.kitchen_3 + - light.kitchen_4 + - light.kitchen_5 + - light.kitchen_6 + LuxEntity: sensor.kitchen_lux + LuxlimitEntity: input_number.kitchen_lux_limit + CircadianSwitchEntity: switch.adaptive_lighting_kitchen + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + RandomStates: + - armed_home + - armed_away + # debug: true - - Name: Toilet - Timeout: 300 - PresenceEntities: - - binary_sensor.toilet_motion - ControlEntities: - - light.toilet - LuxEntity: sensor.toilet_lux - luxLimitEntity: input_number.toilet_lux_limit - CircadianSwitchEntity: switch.adaptive_lighting_toilet - # debug: true + - Name: Toilet + Timeout: 300 + PresenceEntities: + - binary_sensor.toilet_motion + ControlEntities: + - light.toilet + NightControlEntities: + - light.toilet + LuxEntity: sensor.toilet_lux + luxLimitEntity: input_number.toilet_lux_limit + CircadianSwitchEntity: switch.adaptive_lighting_toilet + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + # debug: true - - Name: Utility - Timeout: 300 - PresenceEntities: - - binary_sensor.utility_motion - ControlEntities: - - light.utility - - light.utilitycupboard - MonitorEntities: - - light.utility_1 - - light.utility_2 - - light.utility_3 - LuxEntity: sensor.utility_lux - LuxLimitEntity: input_number.utility_lux_limit - CircadianSwitchEntity: switch.adaptive_lighting_utility - NightTimeEntity: input_select.house_mode - NightTimeEntityStates: - - night - - sleeping - NightControlEntities: - - light.utility_1 - - light.utilitycupboard - RandomStates: - - armed_home - - armed_away - # debug: true \ No newline at end of file + - Name: Utility + Timeout: 300 + PresenceEntities: + - binary_sensor.utility_motion + ControlEntities: + - light.utility + - light.utilitycupboard + MonitorEntities: + - light.utility_1 + - light.utility_2 + - light.utility_3 + LuxEntity: sensor.utility_lux + LuxLimitEntity: input_number.utility_lux_limit + CircadianSwitchEntity: switch.adaptive_lighting_utility + NightTimeEntity: input_select.house_mode + NightTimeEntityStates: + - night + - sleeping + NightControlEntities: + - light.utility_1 + - light.utilitycupboard + RandomStates: + - armed_home + - armed_away + # debug: true \ No newline at end of file diff --git a/apps/LightsManager/Manager.cs b/apps/LightsManager/Manager.cs index c7f471d..7376e40 100644 --- a/apps/LightsManager/Manager.cs +++ b/apps/LightsManager/Manager.cs @@ -31,9 +31,8 @@ public Manager() } public bool Debug { get; set; } - - public bool IsAnyControlEntityOn => AllControlEntities.Any(e => e.IsOn()); + public bool AllControlEntitiesAreOff => AllControlEntities.All(e => e.IsOff()); public bool IsNightMode => NightTimeEntity != null && NightTimeEntityStates.Contains(NightTimeEntity.State); public bool IsOccupied => PresenceEntities.Union(KeepAliveEntities).Any(entity => entity.IsOn() || _onStates.Contains(entity.State!)); public bool IsTooBright => LuxEntity != null && ( LuxLimitEntity != null ? LuxEntity.State >= LuxLimitEntity.State : LuxEntity.State >= LuxLimit ); @@ -55,18 +54,18 @@ public Manager() public NumericSensorEntity? LuxEntity { get; set; } public NumericSensorEntity? LuxLimitEntity { get; set; } public string Name { get; set; } - public string RoomState { get; set; } public string? ConditionEntityState { get; set; } public SwitchEntity ManagerEnabled { get; set; } public SwitchEntity? CircadianSwitchEntity { get; set; } public TimeSpan DynamicTimeout => TimeSpan.FromSeconds(_overrideActive ? OverrideTimeoutParsed : TimeoutParsed); - private bool ConditionEntityStateNotMet => ConditionEntity != null && ConditionEntityState != null && ConditionEntity.State != ConditionEntityState; private int NightTimeoutParsed => NightTimeout == 0 ? 90 : NightTimeout; private int OverrideTimeoutParsed => OverrideTimeout == 0 ? 1800 : OverrideTimeout; private int TimeoutParsed => IsNightMode ? NightTimeoutParsed : Timeout; + public List Tasks { get; set; } = new(); + public async Task Init(ILogger logger, string ndUserId, IRandomManager randomManager, IScheduler scheduler, IHaContext haContext, IMqttEntityManager entityManager, int guardTimeout) { _logger = logger; @@ -110,13 +109,17 @@ private bool LightTurnedOnManually(StateChange { + _logger.LogDebug("{room} Override Timeout", Name); _overrideActive = false; TurnOffEntities($"Override ({Name})"); + WaitAllTasks(); }); + UpdateAttributes(true); } private async Task SetupEnabledSwitch() @@ -155,38 +158,58 @@ private void SubscribeGuard() if (RoomState == "on" || _overrideActive || AllControlEntities.All(e => e.IsOff())) return; _logger.LogDebug("{room} Watchdog turning off entities", Name); TurnOffEntities($"Watchdog ({Name})"); + WaitAllTasks(); }); } private void SubscribeHouseModeEvent() { _logger.LogDebug("{room} Subscribed to House Mode Changed Events", Name); - NightTimeEntity?.StateChanges().Subscribe(async e => + NightTimeEntity?.StateChanges().Subscribe( e => { - _logger.LogInformation("{room} House Mode Changed", Name); - if (!IsAnyControlEntityOn) + try { - await UpdateAttributes(); - return; - } + _logger.LogInformation("{room} House Mode Changed", Name); - if (IsNightMode) - ControlEntities.Except(NightControlEntities).ToList() - .ForEach(f => - { - f.TurnOff(); - _scheduler.Sleep(TimeSpan.FromMilliseconds(250)); - }); - if (!IsNightMode) - NightControlEntities.Except(ControlEntities).Where(w => w.IsOn()).ToList() - .ForEach(f => - { - f.TurnOff(); - _scheduler.Sleep(TimeSpan.FromMilliseconds(250)); - }); - - TurnOnEntities(NightTimeEntity.EntityId); - await UpdateAttributes(); + if (CircadianSwitchEntity != null) + { + var sleepModeEntityId = CircadianSwitchEntity.EntityId.Replace("switch.adaptive_lighting_", "switch.adaptive_lighting_sleep_mode_"); + var sleepModeSwitch = new SwitchEntity(_haContext, sleepModeEntityId); + if (IsNightMode) + { + _logger.LogDebug("{room} Turn On Sleep Mode", Name); + sleepModeSwitch.TurnOn(); + } + else + { + _logger.LogDebug("{room} Turn Off Sleep Mode", Name); + sleepModeSwitch.TurnOff(); + } + } + + if (AllControlEntitiesAreOff) + { + UpdateAttributes(); + WaitAllTasks(); + return; + } + _logger.LogDebug("{room} Control Entities On: {entities}", Name, AllControlEntities.Select(e=>e.EntityId)); + + TurnOffEntities("House Mode Change", true); + + _scheduler.Schedule(TimeSpan.FromMilliseconds(250), (_,_) => + { + TurnOnEntities("House Mode Change", true); + UpdateAttributes(); + }); + + WaitAllTasks(); + } + catch (Exception ex) + { + _logger.LogError("{room} Error Occured - {error}", Name, ex); + throw; + } }); } @@ -196,10 +219,9 @@ private void SubscribeManualTurnOffOverrideEvent() AllControlEntities .StateAllChanges() .Where(LightTurnedOffManually) - .Subscribe(async e => + .Subscribe( e => { _logger.LogInformation("{room} Manual Turn Off Override by user", Name); - await _scheduler.Sleep(TimeSpan.FromSeconds(2)); if (AllControlEntities.Any(e => e.IsOn())) { _logger.LogInformation("{room} Override active as some control entities are on", Name); @@ -209,7 +231,9 @@ private void SubscribeManualTurnOffOverrideEvent() _logger.LogInformation("{room} Override reset as all control entities are off", Name); _overrideActive = false; overrideSchedule?.Dispose(); - await UpdateAttributes(); + UpdateAttributes(); + + WaitAllTasks(); }); } @@ -219,16 +243,14 @@ private void SubscribeManualTurnOnOverrideEvent() AllControlEntities .StateAllChanges() .Where(LightTurnedOnManually) - .Subscribe(async e => + .Subscribe( e => { - _logger.LogInformation("{room} Manual Turn On Override by user", Name); - _services.Logbook.Log( - entityId: e.New?.EntityId, - message: "Override Triggered", - name: e.New?.EntityId ?? "UNKNOWN", - domain: "light"); + _logger.LogInformation("{room} Manual Turn On Override for {light} by user", Name, e.New?.EntityId); + LogInLogbook(e.New?.EntityId ?? "UNKNOWN", "Override Triggered"); ResetOverride(); - await UpdateAttributes(true); + UpdateAttributes(true); + + WaitAllTasks(); }); } @@ -238,25 +260,24 @@ private void SubscribeOverrideEvent() AllControlEntities .StateAllChanges() .Where(LightAttributesOverride) - .Subscribe(async e => + .Subscribe( e => { _logger.LogInformation("{room} Attribute Override by user", Name); - _services.Logbook.Log( - entityId: e.New?.EntityId, - message: "Override Triggered", - name: e.New?.EntityId ?? "UNKNOWN", - domain: "light"); - + LogInLogbook(e.New?.EntityId ?? "UNKNOWN", "Override Triggered"); + ResetOverride(); if (CircadianSwitchEntity == null) { - await UpdateAttributes(); + UpdateAttributes(); + WaitAllTasks(); return; } _logger.LogInformation("{room} Turn off circadian switch", Name); CircadianSwitchEntity.TurnOff(); - await UpdateAttributes(); + UpdateAttributes(); + + WaitAllTasks(); }); } @@ -265,9 +286,9 @@ private void SubscribePresenceOffEvent() _logger.LogDebug("{room} Subscribed to Presence Off Events", Name); PresenceEntities.Union(KeepAliveEntities) .StateChanges() - .Where(e => e.New.IsOff()) .Throttle(_ => Observable.Timer(DynamicTimeout, _scheduler)) - .Subscribe(async e => + .Where(e => e.New.IsOff()) + .Subscribe(e => { _logger.LogInformation("{room} No Motion Timeout '{entity}'", Name, e.New?.EntityId); if (_overrideActive) @@ -277,16 +298,20 @@ private void SubscribePresenceOffEvent() } TurnOffEntities(e.New?.EntityId); - await UpdateAttributes(true); + UpdateAttributes(true); + + WaitAllTasks(); }); PresenceEntities.Union(KeepAliveEntities) .StateChanges() .Where(e => e.New.IsOff()) - .Subscribe(async e => + .Subscribe(e => { _logger.LogInformation("{room} No Motion '{entity}'", Name, e.New?.EntityId); - await UpdateAttributes(true); + UpdateAttributes(true); + + WaitAllTasks(); }); } @@ -295,23 +320,26 @@ private void SubscribePresenceOnEvent() _logger.LogDebug("{room} Subscribed to Presence On Events", Name); PresenceEntities.StateAllChanges() .Where(e => e.New.IsOn()) - .Subscribe(async e => + .Subscribe( e => { _logger.LogInformation("{room} Motion '{entity}'", Name, e.New?.EntityId); + if (_overrideActive) { _logger.LogInformation("{room} Not turning on - resetting Override timeout", Name); ResetOverride(); - await UpdateAttributes(); + WaitAllTasks(); return; } TurnOnEntities(e.New?.EntityId); - await UpdateAttributes(); + UpdateAttributes(); + + WaitAllTasks(); }); } - private void TurnOffEntities(string? trigger) + private void TurnOffEntities(string? trigger, bool ignoreConditions = false) { if (ManagerEnabled.IsOff()) { @@ -319,37 +347,60 @@ private void TurnOffEntities(string? trigger) return; } - if (IsOccupied) + if (!ignoreConditions && IsOccupied) { _logger.LogInformation("{room} Cant turn off - Occupied", Name); return; } - // IF TIMER EXPIRES AND CONDITION IS NOT MET THEN IT WILL NOT TURN OFF. - //if (ConditionEntityStateNotMet) - //{ - // _logger.LogInformation("{room} Condition not met {conditionEntity}!={state}", Name, ConditionEntity.EntityId, ConditionEntityState); - // return; - //} + if (!ignoreConditions && ConditionEntityStateNotMet) + { + _logger.LogInformation("{room} Cant turn off - Condition not met {conditionEntity}!={state}", Name, ConditionEntity.EntityId, ConditionEntityState); + return; + } - _logger.LogInformation("{room} Turn Off", Name); - AllControlEntities - .Where(w => w.IsOn()).ToList() - .ForEach(e => - { - _logger.LogDebug("{room} Turning Off {light}", Name, e.EntityId); + var triggerMsg = $"Turned off by {trigger ?? "UNKNOWN"}"; + _logger.LogInformation("{room} Turn Off by {trigger}", Name, triggerMsg); + foreach (var e in AllControlEntities.ToList()) + { + _logger.LogDebug("{room} Turning Off {light} ", Name, e.EntityId); e.TurnOff(); - _services.Logbook.Log( - entityId: e.EntityId, - message: $"Turned off by {trigger ?? "UNKNOWN"}", - name: e.EntityId, - domain: "light"); - }); + + LogInLogbook(e, triggerMsg); + } + if (CircadianSwitchEntity != null && CircadianSwitchEntity.IsOff()) + { + _logger.LogDebug("{room} Turn On Circadian Switch", Name); + CircadianSwitchEntity.TurnOn(); + } + RoomState = "off"; } + private void LogInLogbook(Entity entity, string triggerMsg) + { + Tasks.Add(Task.Run(() => + _services.Logbook.Log( + entityId: entity.EntityId, + message: triggerMsg, + name: entity.EntityId, + domain: "light") + )); + } + + private void LogInLogbook(string entityId, string triggerMsg) + { + Tasks.Add( Task.Run(() => + _services.Logbook.Log( + entityId: entityId, + message: triggerMsg, + name: entityId, + domain: "light") + )); + } + - private void TurnOnEntities(string? trigger) + private void TurnOnEntities(string? trigger, bool ignoreConditions = false) { List lightEntities; @@ -359,13 +410,13 @@ private void TurnOnEntities(string? trigger) return; } - if (ConditionEntityStateNotMet) + if (!ignoreConditions && ConditionEntityStateNotMet) { _logger.LogInformation("{room} Condition not met {conditionEntity}!={state}", Name, ConditionEntity.EntityId, ConditionEntityState); return; } - if (IsTooBright) + if (!ignoreConditions && IsTooBright) { _logger.LogInformation("{room} Too Bright", Name); return; @@ -381,32 +432,26 @@ private void TurnOnEntities(string? trigger) _logger.LogDebug("{room} Turn On Control Entities", Name); lightEntities = ControlEntities.ToList(); } - - if (CircadianSwitchEntity != null && lightEntities.All(e => e.IsOff())) + + if (CircadianSwitchEntity != null && CircadianSwitchEntity.IsOff()) { _logger.LogDebug("{room} Turn On Circadian Switch", Name); CircadianSwitchEntity.TurnOn(); } - - foreach (var e in lightEntities.Where(e => e.IsOff())) + + foreach (var e in lightEntities.Where(l=> l.IsOff())) { _logger.LogInformation("{room} Turning On {light}", Name, e.EntityId); e.TurnOn(); - _services.Logbook.Log( - entityId: e.EntityId, - message: $"Turned on by {trigger ?? "UNKNOWN"}", - name: e.EntityId, - domain: "light"); - - _scheduler.Sleep(TimeSpan.FromMilliseconds(250)); + LogInLogbook(e, $"Turned on by {trigger ?? "UNKNOWN"}"); } RoomState = "on"; } - private async Task UpdateAttributes(bool showTurningOff = false) + private void UpdateAttributes(bool showTurningOff = false) { - _logger.LogDebug("{room} Updating Attributes", Name); + //_logger.LogDebug("{room} Updating Attributes", Name); var attributes = showTurningOff ? new @@ -433,7 +478,12 @@ private async Task UpdateAttributes(bool showTurningOff = false) ConditionEntityState = ConditionEntityState ?? "N/A", LastUpdated = DateTime.Now.ToString("G") }; - await _entityManager.SetAttributesAsync(_enabledSwitch, attributes); - _logger.LogDebug("{room} Attributes updated to {attr}", Name, attributes); + Tasks.Add( _entityManager.SetAttributesAsync(_enabledSwitch, attributes)); + _logger.LogTrace("{room} Attributes updated to {attr}", Name, attributes); + } + + private void WaitAllTasks() + { + Task.WaitAll(Tasks.ToArray()); } } \ No newline at end of file diff --git a/apps/LightsManager/ManagerConfig.cs b/apps/LightsManager/ManagerConfig.cs index 9c5df96..5d07bea 100644 --- a/apps/LightsManager/ManagerConfig.cs +++ b/apps/LightsManager/ManagerConfig.cs @@ -2,7 +2,7 @@ public class ManagerConfig { - public IEnumerable? Rooms { get; set; } + public List Rooms { get; set; } = new List(); public int GuardTimeout { get; set; } = 900; public string MaxDuration { get; set; } public string MinDuration { get; set; } diff --git a/apps/LightsManager/RandomManager.cs b/apps/LightsManager/RandomManager.cs index 462a6c8..f61d840 100644 --- a/apps/LightsManager/RandomManager.cs +++ b/apps/LightsManager/RandomManager.cs @@ -1,12 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reactive.Concurrency; -using System.Threading; -using HomeAssistantGenerated; -using Microsoft.Extensions.Logging; - -namespace LightManagerV2; +namespace LightManagerV2; public interface IRandomManager { diff --git a/apps/MotionAlerts/MotionAlerts.cs b/apps/MotionAlerts/MotionAlerts.cs index 4d1ea7b..4ccd66a 100644 --- a/apps/MotionAlerts/MotionAlerts.cs +++ b/apps/MotionAlerts/MotionAlerts.cs @@ -28,7 +28,7 @@ public MotionAlerts(IHaContext ha, ILogger logger, IAppConfig { //if (lastNotification != DateTime.MinValue && ( DateTime.Now - lastNotification ).TotalMinutes < 15) return; - if (DateTime.Now.Hour is >= 19 or <= 5) + if (DateTime.Now.Hour is >= 19 or <= 5 || _entities.InputBoolean.NetdaemonDebugState.IsOn()) services.Notify.Eugene($"Motion detected on {e.Entity.EntityId.Replace("binary_sensor.", "", StringComparison.OrdinalIgnoreCase).Replace("_motion", "", StringComparison.OrdinalIgnoreCase)}"); //lastNotification = DateTime.Now; }); diff --git a/apps/MotionAlerts/MotionAlerts.yaml b/apps/MotionAlerts/MotionAlerts.yaml index b7ebffd..546f6ac 100644 --- a/apps/MotionAlerts/MotionAlerts.yaml +++ b/apps/MotionAlerts/MotionAlerts.yaml @@ -1,18 +1,18 @@ Niemand.MotionAlertsConfiguration: sensors: - #- binary_sensor.toilet_motion - #- binary_sensor.lounge_motion - #- binary_sensor.dining_motion - #- binary_sensor.kitchen_motion - #- binary_sensor.utility_motion - #- binary_sensor.landing_motion - #- binary_sensor.bathroom_motion - - binary_sensor.master_motion - - binary_sensor.jayden_motion - - binary_sensor.aaron_motion - #- binary_sensor.entrance_motion - #- binary_sensor.hallway - #- binary_sensor.lounge - #- binary_sensor.dining - #- binary_sensor.kitchen - #- binary_sensor.landing \ No newline at end of file + #- binary_sensor.toilet_motion + #- binary_sensor.lounge_motion + #- binary_sensor.dining_motion + #- binary_sensor.kitchen_motion + #- binary_sensor.utility_motion + - binary_sensor.landing_motion + - binary_sensor.bathroom_motion + - binary_sensor.master_motion + - binary_sensor.jayden_motion + - binary_sensor.aaron_motion + #- binary_sensor.entrance_motion + #- binary_sensor.hallway + #- binary_sensor.lounge + #- binary_sensor.dining + #- binary_sensor.kitchen + - binary_sensor.landing \ No newline at end of file diff --git a/apps/NotificationsManager/ApplianceNotification.cs b/apps/NotificationsManager/ApplianceNotification.cs new file mode 100644 index 0000000..c638b02 --- /dev/null +++ b/apps/NotificationsManager/ApplianceNotification.cs @@ -0,0 +1,109 @@ +using Humanizer; +using Humanizer.Localisation; +using NetDaemon; +using Niemand.Helpers; + +namespace Niemand.NotificationManager; + +public class ApplianceNotification : IApplianceNotification +{ + private readonly InputBooleanEntity _acknowledge; + + private readonly string _appliance; + private readonly Dictionary _cycleStates; + private readonly SensorEntity _remainingTime; + private readonly IScheduler _scheduler; + private readonly SensorEntity _status; + + public ApplianceNotification(IScheduler scheduler, IApplianceNotificationConfig config) + { + _scheduler = scheduler; + _appliance = config.Name; + _status = config.Status; + _remainingTime = config.RemainingTime; + _acknowledge = config.Acknowledge; + _cycleStates = config.CycleStates; + } + + public CycleState CycleState => _status.State != null ? _cycleStates[_status.State.ToLower()] : CycleState.Unknown; + + public string EventId => $"{_appliance}Tts"; + + public Notification? GetNotification(CycleState cycle, TimeSpan lastPrompt) + { + var notification = new Notification + { + EventId = EventId + }; + + switch (cycle) + { + case CycleState.Running: + switch (TimeRemaining.TotalMinutes) + { + case >= 60 when lastPrompt.TotalMinutes <= 15: + case >= 30 when lastPrompt.TotalMinutes <= 10: + case >= 10 when lastPrompt.TotalMinutes <= 5: + return null; + } + + notification.Message = $"The {_appliance} will be done in {TimeRemaining.Humanize(minUnit: TimeUnit.Minute)}"; + notification.Type = Alexa.NotificationType.Announcement; + break; + case CycleState.Finished: + return null; + case CycleState.Ready: + if (_acknowledge.IsOff() && lastPrompt.TotalMinutes <= 15) return null; + + if (_acknowledge.IsOff() && lastPrompt.TotalMinutes > 15) + { + notification.Message = $"The {_appliance} finished {TimeFinished.Humanize(minUnit: TimeUnit.Minute)} ago. Has it been unloaded?"; + notification.Type = Alexa.NotificationType.Prompt; + } + else if (_acknowledge.IsOn() && lastPrompt.TotalMinutes >= 60) + { + notification.Message = $"The {_appliance} is ready"; + notification.Type = Alexa.NotificationType.Announcement; + } + + break; + case CycleState.Unknown: + throw new ArgumentOutOfRangeException(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return notification; + } + + public Notification? HandleResponse(PromptResponseType? responseType) + { + if (responseType == null) return null; + + var notification = new Notification + { + EventId = EventId, + Type = Alexa.NotificationType.Tts + }; + + switch (responseType) + { + case PromptResponseType.ResponseNo: + notification.Message = "Ok"; + break; + case PromptResponseType.ResponseYes: + _acknowledge.TurnOn(); + notification.Message = "Thanks"; + break; + default: + return null; + } + + return notification; + } + + public TimeSpan TimeFinished => _scheduler.Now.LocalDateTime - _status.EntityState.LastChanged.Value; + + public TimeSpan TimeRemaining => DateTime.Parse(_remainingTime.State ?? _scheduler.Now.LocalDateTime.ToString()) - _scheduler.Now; +} \ No newline at end of file diff --git a/apps/NotificationsManager/DishwasherNotification.cs b/apps/NotificationsManager/DishwasherNotification.cs new file mode 100644 index 0000000..55d4131 --- /dev/null +++ b/apps/NotificationsManager/DishwasherNotification.cs @@ -0,0 +1,96 @@ +using Humanizer; +using Humanizer.Localisation; +using NetDaemon; +using Niemand.Helpers; + +namespace Niemand.NotificationManager; + +public class DishwasherNotification : IApplianceNotification +{ + private readonly IEntities _entities; + private readonly IScheduler _scheduler; + + private readonly Dictionary DishwasherCycleStates = new() + { + { "run", CycleState.Running }, + { "finished", CycleState.Finished }, + { "ready", CycleState.Ready } + }; + + public DishwasherNotification(IEntities entities, IScheduler scheduler) + { + _entities = entities; + _scheduler = scheduler; + } + + public CycleState CycleState => DishwasherCycleStates[_entities.Sensor.DishwasherOperationState.State.ToLower()]; + + public string EventId => "DishwasherTts"; + + public Notification? GetNotification(CycleState cycle, TimeSpan lastPrompt) + { + var notification = new Notification + { + EventId = EventId + }; + + switch (cycle) + { + case CycleState.Running: + notification.Message = $"The Dishwasher will be done in {TimeRemaining.Humanize(minUnit: TimeUnit.Minute)}"; + notification.Type = Alexa.NotificationType.Announcement; + break; + case CycleState.Finished: + return null; + case CycleState.Ready: + if (_entities.InputBoolean.DishwasherAck.IsOff() && lastPrompt.TotalMinutes <= 15) return null; + + if (_entities.InputBoolean.DishwasherAck.IsOff() && lastPrompt.TotalMinutes > 15) + { + notification.Message = $"The Dishwasher finished {TimeFinished.Humanize(minUnit: TimeUnit.Minute)} ago. Has it been unpacked?"; + notification.Type = Alexa.NotificationType.Prompt; + } + else if (_entities.InputBoolean.DishwasherAck.IsOn() && lastPrompt.TotalMinutes >= 60) + { + notification.Message = "The Dishwasher is ready"; + notification.Type = Alexa.NotificationType.Announcement; + } + + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return notification; + } + + public Notification? HandleResponse(PromptResponseType? responseType) + { + if (responseType == null) return null; + + var notification = new Notification + { + EventId = EventId, + Type = Alexa.NotificationType.Tts + }; + + switch (responseType) + { + case PromptResponseType.ResponseNo: + notification.Message = "Ok"; + break; + case PromptResponseType.ResponseYes: + _entities.InputBoolean.DishwasherAck.TurnOn(); + notification.Message = "Thanks"; + break; + default: + return null; + } + + return notification; + } + + public TimeSpan TimeFinished => _scheduler.Now.LocalDateTime - _entities.Sensor.DishwasherOperationState.EntityState.LastChanged.Value; + + public TimeSpan TimeRemaining => DateTime.Parse(_entities.Sensor.DishwasherRemainingProgramTime.State ?? _scheduler.Now.LocalDateTime.ToString()) - _scheduler.Now; +} \ No newline at end of file diff --git a/apps/NotificationsManager/DishwasherNotificationConfig.cs b/apps/NotificationsManager/DishwasherNotificationConfig.cs new file mode 100644 index 0000000..e37ff33 --- /dev/null +++ b/apps/NotificationsManager/DishwasherNotificationConfig.cs @@ -0,0 +1,26 @@ +using NetDaemon; + +namespace Niemand.NotificationManager; + +public class DishwasherNotificationConfig : IApplianceNotificationConfig +{ + private readonly IEntities _entities; + + public DishwasherNotificationConfig(IEntities entities) + { + _entities = entities; + } + + public InputBooleanEntity Acknowledge => _entities.InputBoolean.DishwasherAck; + + public Dictionary CycleStates => new() + { + { "run", CycleState.Running }, + { "finished", CycleState.Finished }, + { "ready", CycleState.Ready } + }; + + public string Name => "Dishwasher"; + public SensorEntity RemainingTime => _entities.Sensor.DishwasherRemainingProgramTime; + public SensorEntity Status => _entities.Sensor.DishwasherOperationState; +} \ No newline at end of file diff --git a/apps/NotificationsManager/DryerNotificationConfig.cs b/apps/NotificationsManager/DryerNotificationConfig.cs new file mode 100644 index 0000000..53dc3ae --- /dev/null +++ b/apps/NotificationsManager/DryerNotificationConfig.cs @@ -0,0 +1,26 @@ +using NetDaemon; + +namespace Niemand.NotificationManager; + +public class DryerNotificationConfig : IApplianceNotificationConfig +{ + private readonly IEntities _entities; + + public DryerNotificationConfig(IEntities entities) + { + _entities = entities; + } + + public InputBooleanEntity Acknowledge => _entities.InputBoolean.DryerAck; + + public Dictionary CycleStates => new() + { + { "run", CycleState.Running }, + { "stop", CycleState.Ready }, + { "pause", CycleState.Paused } + }; + + public string Name => "Dryer"; + public SensorEntity RemainingTime => _entities.Sensor.TumbleDryerDryerCompletionTime; + public SensorEntity Status => _entities.Sensor.TumbleDryerDryerMachineState; +} \ No newline at end of file diff --git a/apps/NotificationsManager/IApplianceNotification.cs b/apps/NotificationsManager/IApplianceNotification.cs new file mode 100644 index 0000000..c5149d1 --- /dev/null +++ b/apps/NotificationsManager/IApplianceNotification.cs @@ -0,0 +1,13 @@ +using NetDaemon; + +namespace Niemand.NotificationManager; + +public interface IApplianceNotification +{ + CycleState CycleState { get; } + string EventId { get; } + TimeSpan TimeFinished { get; } + TimeSpan TimeRemaining { get; } + Notification? GetNotification(CycleState cycle, TimeSpan lastPrompt); + Notification? HandleResponse(PromptResponseType? responseType); +} \ No newline at end of file diff --git a/apps/NotificationsManager/IApplianceNotificationConfig.cs b/apps/NotificationsManager/IApplianceNotificationConfig.cs new file mode 100644 index 0000000..65c682c --- /dev/null +++ b/apps/NotificationsManager/IApplianceNotificationConfig.cs @@ -0,0 +1,12 @@ +using NetDaemon; + +namespace Niemand.NotificationManager; + +public interface IApplianceNotificationConfig +{ + Dictionary CycleStates { get; } + InputBooleanEntity Acknowledge { get; } + SensorEntity RemainingTime { get; } + SensorEntity Status { get; } + string Name { get; } +} \ No newline at end of file diff --git a/apps/NotificationsManager/Notification.cs b/apps/NotificationsManager/Notification.cs new file mode 100644 index 0000000..3f3d2c6 --- /dev/null +++ b/apps/NotificationsManager/Notification.cs @@ -0,0 +1,10 @@ +using Niemand.Helpers; + +namespace Niemand.NotificationManager; + +public class Notification +{ + public Alexa.NotificationType Type { get; set; } + public string EventId { get; set; } + public string Message { get; set; } +} \ No newline at end of file diff --git a/apps/NotificationsManager/NotificationsManager.cs b/apps/NotificationsManager/NotificationsManager.cs index cbe507d..54c881a 100644 --- a/apps/NotificationsManager/NotificationsManager.cs +++ b/apps/NotificationsManager/NotificationsManager.cs @@ -1,22 +1,31 @@ -namespace Niemand.TestApp; +using Niemand.NotificationManager; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace NetDaemon; [NetDaemonApp] -[Focus] +//[Focus] public class NotificationsManager { - private const string DishwasherDoneEventId = "DishwasherDone"; private readonly IAlexa _alexa; + private readonly IApplianceNotification _dishwasherNotification; + private readonly ApplianceNotification _dryerNotification; private readonly IEntities _entities; private readonly IHaContext _haContext; private readonly IDictionary _lastPrompt = new Dictionary(); private readonly IScheduler _scheduler; + private readonly IApplianceNotification _washingNotification; public NotificationsManager(IHaContext haContext, IEntities entities, IAlexa alexa, IScheduler scheduler) { - _haContext = haContext; - _entities = entities; - _alexa = alexa; - _scheduler = scheduler; + _haContext = haContext; + _entities = entities; + _alexa = alexa; + _scheduler = scheduler; + _dishwasherNotification = new ApplianceNotification(scheduler, new DishwasherNotificationConfig(entities)); + _washingNotification = new ApplianceNotification(scheduler, new WasherNotificationConfig(entities)); + _dryerNotification = new ApplianceNotification(scheduler, new DryerNotificationConfig(entities)); MediaPlayerVolume(); AlarmReminder(); @@ -30,16 +39,16 @@ private void AlarmReminder() switch (s.New.State) { case "armed_night": - var reminders = new List(); + var reminderMessages = new List(); if (_entities.InputBoolean.DryerReminder.IsOn()) - reminders.Add("Dryer"); + reminderMessages.Add("Dryer"); if (_entities.InputBoolean.WashingReminder.IsOn()) - reminders.Add("Washer"); + reminderMessages.Add("Washer"); if (_entities.InputBoolean.DryerReminder.IsOn()) - reminders.Add("Dishwasher"); + reminderMessages.Add("Dishwasher"); - var message = string.Join(",", reminders) + " is ready but not turned on."; - _alexa.TextToSpeech(new Alexa.Config { Entities = new List { "media_player.master", "media_player.office" }, Message = message }); + var reminderMessage = reminderMessages.Any() ? string.Join(",", reminderMessages) + " is ready but not turned on." : ""; + _alexa.TextToSpeech(new Alexa.Config { Entities = new List { "media_player.master", "media_player.office" }, Message = $"{reminderMessage} Alarm armed" }); break; case "disarmed": break; @@ -51,44 +60,57 @@ private void Appliances() { _entities.Sensor.TumbleDryerDryerMachineState.StateChanges().Subscribe(s => { - switch (s.New.State.ToLower()) + switch (_washingNotification.CycleState) { - case "run": + case CycleState.Running: _entities.InputBoolean.DryerReminder.TurnOff(); break; - case "stop": + case CycleState.Finished: _entities.InputBoolean.DryerAck.TurnOff(); break; + case CycleState.Ready: + break; + case CycleState.Paused: + break; + default: + throw new ArgumentOutOfRangeException(); } }); _entities.Sensor.WashingMachineWasherMachineState.StateChanges().Subscribe(s => { - switch (s.New.State.ToLower()) + switch (_washingNotification.CycleState) { - case "run": + case CycleState.Running: _entities.InputBoolean.WashingReminder.TurnOff(); break; - case "stop": + case CycleState.Finished: _entities.InputBoolean.WasherAck.TurnOff(); break; - case "pause": + case CycleState.Ready: + break; + case CycleState.Paused: break; + default: + throw new ArgumentOutOfRangeException(); } }); _entities.Sensor.DishwasherOperationState.StateChanges().Subscribe(s => { - switch (s.New.State.ToLower()) + switch (_dishwasherNotification.CycleState) { - case "run": + case CycleState.Running: _entities.InputBoolean.DishwasherReminder.TurnOff(); break; - case "finished": + case CycleState.Finished: + _alexa.Announce(_entities.MediaPlayer.Kitchen.EntityId, "The Dishwasher just finished"); _entities.InputBoolean.DishwasherAck.TurnOff(); break; - case "ready": + case CycleState.Ready: break; + default: + throw new ArgumentOutOfRangeException(); } }); @@ -96,32 +118,53 @@ private void Appliances() .Where(s => s.Old.IsOff() && s.New.IsOn()) .Subscribe(s => { - if (_entities.InputBoolean.DishwasherAck.IsOff() && PromptLessThanMinutesAgo(DishwasherDoneEventId, 15)) return; - - if (_entities.InputBoolean.DishwasherAck.IsOff() && !PromptLessThanMinutesAgo(DishwasherDoneEventId, 15)) - { - _alexa.Prompt(_entities.MediaPlayer.Kitchen.EntityId, "The Dishwasher is done. Has it been unpacked?", DishwasherDoneEventId); - _lastPrompt[DishwasherDoneEventId] = DateTime.Now; - } - - if (_entities.InputBoolean.DishwasherAck.IsOn() && !PromptLessThanMinutesAgo(DishwasherDoneEventId, 60)) - { - _alexa.Announce(_entities.MediaPlayer.Kitchen.EntityId, "The Dishwasher is ready"); - _lastPrompt[DishwasherDoneEventId] = DateTime.Now; - } + var notification = _dishwasherNotification.GetNotification(_dishwasherNotification.CycleState, LastPrompt(_dishwasherNotification.EventId)); + SendNotification(notification, _entities.MediaPlayer.Kitchen.EntityId); }); - _alexa.PromptResponses.Where(r => r.EventId == DishwasherDoneEventId).Subscribe(r => - { - if (r.ResponseType == PromptResponseType.ResponseNo) _alexa.TextToSpeech(_entities.MediaPlayer.Kitchen.EntityId, "Ok"); - if (r.ResponseType == PromptResponseType.ResponseYes) - { - _entities.InputBoolean.DishwasherAck.TurnOn(); - _alexa.TextToSpeech(_entities.MediaPlayer.Kitchen.EntityId, "Thanks"); - } - }); + _entities.BinarySensor.UtilityMotion.StateChanges() + .Where(s => s.Old.IsOff() && s.New.IsOn()) + .Subscribe(s => + { + var notification = _washingNotification.GetNotification(_washingNotification.CycleState, LastPrompt(_washingNotification.EventId)); + SendNotification(notification, _entities.MediaPlayer.Kitchen.EntityId); + }); + + _entities.BinarySensor.UtilityMotion.StateChanges() + .Where(s => s.Old.IsOff() && s.New.IsOn()) + .Subscribe(s => + { + var notification = _dryerNotification.GetNotification(_dryerNotification.CycleState, LastPrompt(_dryerNotification.EventId)); + SendNotification(notification, _entities.MediaPlayer.Kitchen.EntityId); + }); + + _alexa.PromptResponses? + .Where(r => r.EventId == _dishwasherNotification.EventId) + .Subscribe(r => + { + var notification = _dishwasherNotification.HandleResponse(r.ResponseType); + SendNotification(notification, _entities.MediaPlayer.Kitchen.EntityId); + }); + + _alexa.PromptResponses? + .Where(r => r.EventId == _washingNotification.EventId) + .Subscribe(r => + { + var notification = _washingNotification.HandleResponse(r.ResponseType); + SendNotification(notification, _entities.MediaPlayer.Kitchen.EntityId); + }); + + _alexa.PromptResponses? + .Where(r => r.EventId == _dryerNotification.EventId) + .Subscribe(r => + { + var notification = _dryerNotification.HandleResponse(r.ResponseType); + SendNotification(notification, _entities.MediaPlayer.Kitchen.EntityId); + }); } + private TimeSpan LastPrompt(string eventId) => _lastPrompt.ContainsKey(eventId) ? _scheduler.Now.LocalDateTime - _lastPrompt[eventId] : TimeSpan.MaxValue; + private void MediaPlayerVolume() { _entities.InputSelect.HouseMode.StateChanges().Subscribe(s => @@ -138,5 +181,34 @@ private void MediaPlayerVolume() }); } - private bool PromptLessThanMinutesAgo(string eventId, int minutes) => _lastPrompt.ContainsKey(eventId) && ( DateTime.Now - _lastPrompt[eventId] ).TotalMinutes <= minutes; + private void SendNotification(Notification? notification, string mediaPlayer) + { + if (notification == null || string.IsNullOrEmpty(notification.Message)) return; + + switch (notification.Type) + { + case Alexa.NotificationType.Prompt: + _alexa.Prompt(mediaPlayer, notification.Message, notification.EventId); + break; + case Alexa.NotificationType.Announcement: + _alexa.Announce(mediaPlayer, notification.Message); + break; + case Alexa.NotificationType.Tts: + _alexa.TextToSpeech(mediaPlayer, notification.Message); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + _lastPrompt[notification.EventId] = _scheduler.Now.LocalDateTime; + } +} + +public enum CycleState +{ + Running, + Finished, + Ready, + Paused, + Unknown } \ No newline at end of file diff --git a/apps/NotificationsManager/WasherNotificationConfig.cs b/apps/NotificationsManager/WasherNotificationConfig.cs new file mode 100644 index 0000000..d6914ef --- /dev/null +++ b/apps/NotificationsManager/WasherNotificationConfig.cs @@ -0,0 +1,26 @@ +using NetDaemon; + +namespace Niemand.NotificationManager; + +public class WasherNotificationConfig : IApplianceNotificationConfig +{ + private readonly IEntities _entities; + + public WasherNotificationConfig(IEntities entities) + { + _entities = entities; + } + + public InputBooleanEntity Acknowledge => _entities.InputBoolean.WasherAck; + + public Dictionary CycleStates => new() + { + { "run", CycleState.Running }, + { "stop", CycleState.Ready }, + { "pause", CycleState.Paused } + }; + + public string Name => "Washer"; + public SensorEntity RemainingTime => _entities.Sensor.WashingMachineWasherCompletionTime; + public SensorEntity Status => _entities.Sensor.WashingMachineWasherMachineState; +} \ No newline at end of file diff --git a/apps/NotificationsManager/WashingNotification.cs b/apps/NotificationsManager/WashingNotification.cs new file mode 100644 index 0000000..b8d025b --- /dev/null +++ b/apps/NotificationsManager/WashingNotification.cs @@ -0,0 +1,96 @@ +using Humanizer; +using Humanizer.Localisation; +using NetDaemon; +using Niemand.Helpers; + +namespace Niemand.NotificationManager; + +public class WashingNotification : IApplianceNotification +{ + private readonly IEntities _entities; + private readonly IScheduler _scheduler; + + private readonly Dictionary WashingCycleStates = new() + { + { "run", CycleState.Running }, + { "stop", CycleState.Ready }, + { "pause", CycleState.Paused } + }; + + public WashingNotification(IEntities entities, IScheduler scheduler) + { + _entities = entities; + _scheduler = scheduler; + } + + public CycleState CycleState => WashingCycleStates[_entities.Sensor.WashingMachineWasherMachineState.State.ToLower()]; + + public string EventId => "WashingTts"; + + public Notification? GetNotification(CycleState cycle, TimeSpan lastPrompt) + { + var notification = new Notification + { + EventId = EventId + }; + + switch (cycle) + { + case CycleState.Running: + notification.Message = $"The Washing will be done in {TimeRemaining.Humanize(minUnit: TimeUnit.Minute)}"; + notification.Type = Alexa.NotificationType.Announcement; + break; + case CycleState.Finished: + return null; + case CycleState.Ready: + if (_entities.InputBoolean.WasherAck.IsOff() && lastPrompt.TotalMinutes <= 15) return null; + + if (_entities.InputBoolean.WasherAck.IsOff() && lastPrompt.TotalMinutes > 15) + { + notification.Message = $"The Washing finished {TimeFinished.Humanize(minUnit: TimeUnit.Minute)} ago. Has it been unloaded?"; + notification.Type = Alexa.NotificationType.Prompt; + } + else if (_entities.InputBoolean.WasherAck.IsOn() && lastPrompt.TotalMinutes >= 60) + { + notification.Message = "The Washer is ready"; + notification.Type = Alexa.NotificationType.Announcement; + } + + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return notification; + } + + public Notification? HandleResponse(PromptResponseType? responseType) + { + if (responseType == null) return null; + + var notification = new Notification + { + EventId = EventId, + Type = Alexa.NotificationType.Tts + }; + + switch (responseType) + { + case PromptResponseType.ResponseNo: + notification.Message = "Ok"; + break; + case PromptResponseType.ResponseYes: + _entities.InputBoolean.WasherAck.TurnOn(); + notification.Message = "Thanks"; + break; + default: + return null; + } + + return notification; + } + + public TimeSpan TimeFinished => _scheduler.Now.LocalDateTime - _entities.Sensor.WashingMachineWasherMachineState.EntityState.LastChanged.Value; + + public TimeSpan TimeRemaining => DateTime.Parse(_entities.Sensor.WashingMachineWasherCompletionTime.State ?? _scheduler.Now.LocalDateTime.ToString()) - _scheduler.Now; +} \ No newline at end of file diff --git a/apps/Office/Office.cs b/apps/Office/Office.cs index b13ac0f..f2f2d2b 100644 --- a/apps/Office/Office.cs +++ b/apps/Office/Office.cs @@ -1,38 +1,118 @@ -namespace Niemand; +using NetDaemon.Extensions.MqttEntityManager; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace Niemand; [NetDaemonApp] //[Focus] -public class Office +public class Office : IAsyncInitializable, IAsyncDisposable { - private readonly IAlexa _alexa; - private readonly IEntities _entities; - private readonly IScheduler _scheduler; - private readonly IServices _services; - private IDisposable _sleepDelaySchedule; + private const string EugeneDesktopActive = "binary_sensor.eugene_desktop_active"; + private readonly IAlexa _alexa; + private readonly IEntities _entities; + private readonly IMqttEntityManager _entityManager; + private readonly IHaContext _haContext; + private readonly ILogger _logger; + private readonly IScheduler _scheduler; + private readonly IServices _services; + private IDisposable _acSwitchOffDelaySchedule; + private IDisposable _sleepDelaySchedule; + + public Office(IHaContext haContext, IEntities entities, IServices services, IAlexa alexa, IScheduler scheduler, IMqttEntityManager entityManager, ILogger logger) + { + _haContext = haContext; + _entities = entities; + _services = services; + _alexa = alexa; + _scheduler = scheduler; + _entityManager = entityManager; + _logger = logger; + + _logger.LogDebug("Office Started"); + } + + public async ValueTask DisposeAsync() + { + } + + public async Task InitializeAsync(CancellationToken cancellationToken) + { + _logger.LogDebug("Office InitializeAsync"); + await SetupEugeneDesktopActiveSensor(); + + // Computer Sensors + _entities.Sensor.EugeneDesktopLastactive.StateChanges().Throttle(TimeSpan.FromMinutes(5), _scheduler) + .Subscribe(async s => + { + _logger.LogDebug("EugeneDesktopLastactive Timeout"); + await _entityManager.SetStateAsync(EugeneDesktopActive, "off"); + SleepPcWhenUnoccupied(); + }); - public Office(IEntities entities, IServices services, IAlexa alexa, IScheduler scheduler) + _entities.Sensor.EugeneDesktopLastactive.StateChanges().Sample(TimeSpan.FromMinutes(1), _scheduler) + .Subscribe(async s => { _logger.LogDebug("EugeneDesktopLastactive throttled log"); }); + + _entities.Sensor.EugeneDesktopLastactive.StateChanges() + .Subscribe(async _ => + { + await _entityManager.SetStateAsync(EugeneDesktopActive, "on"); + _sleepDelaySchedule?.Dispose(); + }); + + // Motion Sensors + _entities.BinarySensor.OfficeMotionOccupancy.StateChanges() + .WhenStateIsFor(s => s.IsOff(), TimeSpan.FromMinutes(5), _scheduler) + .Subscribe(s => + { + SleepPcWhenUnoccupied(); + TurnOffAcWhenDoorLeftOpen(); + }); + + _entities.BinarySensor.OfficeMotion.StateChanges().Where(s => s.New.IsOn()).Subscribe(_ => + { + _sleepDelaySchedule?.Dispose(); + _acSwitchOffDelaySchedule?.Dispose(); + }); + + _entities.BinarySensor.Study.StateChanges().Where(s => s.New.IsOn()).Subscribe(_ => + { + _sleepDelaySchedule?.Dispose(); + _acSwitchOffDelaySchedule?.Dispose(); + }); + + // Door Sensor + _entities.BinarySensor.LumiLumiSensorMagnetAq2OnOff.StateChanges() + .WhenStateIsFor(s => s.IsOn(), TimeSpan.FromMinutes(2), _scheduler) + .Subscribe(_ => TurnOffAcWhenDoorLeftOpen()); + _entities.BinarySensor.LumiLumiSensorMagnetAq2OnOff.StateChanges() + .Where(s => s.New.IsOff()) + .Subscribe(_ => _acSwitchOffDelaySchedule?.Dispose()); + } + + private async Task SetupEugeneDesktopActiveSensor() { - _entities = entities; - _services = services; - _alexa = alexa; - _scheduler = scheduler; + if (_haContext.Entity(EugeneDesktopActive).State == null || string.Equals(_haContext.Entity(EugeneDesktopActive).State, "unavailable", StringComparison.InvariantCultureIgnoreCase)) + await _entityManager.CreateAsync(EugeneDesktopActive, new EntityCreationOptions(Name: "EugeneDesktopActive", DeviceClass: "connectivity", Persist: true, PayloadOn: "on", PayloadOff: "off")); - entities.BinarySensor.OfficeMotionOccupancy.StateChanges() - .WhenStateIsFor(s => s.IsOff(), TimeSpan.FromMinutes(5), scheduler) - .Subscribe(s => Setup()); - entities.BinarySensor.OfficeMotion.StateChanges().Where(s => s.New.IsOn()).Subscribe(_ => _sleepDelaySchedule?.Dispose()); - entities.BinarySensor.Study.StateChanges().Where(s => s.New.IsOn()).Subscribe(_ => _sleepDelaySchedule?.Dispose()); + await _entityManager.SetStateAsync(EugeneDesktopActive, "unknown"); } - private void Setup() + private void SleepPcWhenUnoccupied() { - if (_entities.Sensor.TemplateLastMotion.State == "Office Motion" || - _entities.BinarySensor.EugenesMacbookActive.IsOn() || - _entities.BinarySensor.HaileysMacbookAirActive.IsOn()) return; + if (( DateTime.Now - DateTime.Parse(_entities.Sensor.EugeneDesktopLastactive.State) ).TotalMinutes <= 10) return; _alexa.Announce(_entities.MediaPlayer.Office.EntityId, "Your PC is about to sleep"); _services.Notify.Eugene("Your PC will sleep in 30 seconds"); _sleepDelaySchedule = _scheduler.Schedule(TimeSpan.FromSeconds(30), () => _entities.Button.EugeneDesktopSleep.Press()); } + + private void TurnOffAcWhenDoorLeftOpen() + { + if (_entities.Climate.Office.IsOff()) return; + + _alexa.Announce(_entities.MediaPlayer.Downstairs.EntityId, "The Office AC will be turned off if the door is not closed"); + _acSwitchOffDelaySchedule = _scheduler.Schedule(TimeSpan.FromSeconds(60), () => _entities.Climate.Office.TurnOff()); + } } \ No newline at end of file diff --git a/apps/Routines/Routines.cs b/apps/Routines/Routines.cs new file mode 100644 index 0000000..578c5b8 --- /dev/null +++ b/apps/Routines/Routines.cs @@ -0,0 +1,89 @@ +namespace Niemand; + +[NetDaemonApp] +[Focus] +public class Routines +{ + public Routines(IEntities entities, IServices services, IScheduler scheduler, People people, ILogger logger) + { + // Arriving Home + foreach (var person in people.Persons) + person.Person.StateChanges() + .Where(change => string.Equals(change.Old.State, "not_home", StringComparison.InvariantCultureIgnoreCase)) + .Where(change => string.Equals(change.New.State, "home", StringComparison.InvariantCultureIgnoreCase)) + .Subscribe(change => + { + var person = change.Entity.EntityId.Replace("person.", ""); + person = char.ToUpper(person[0]) + person[1..]; + + logger.LogInformation("{person} is home", person); + + if (!string.Equals(entities.AlarmControlPanel.Alarmo.State, "disarmed")) + { + logger.LogInformation("Disarming Alarm - {person} is home", person); + entities.AlarmControlPanel.Alarmo.AlarmDisarm(); + } + + if (string.Equals(entities.Sun.Sun.State, "below_horizon", StringComparison.InvariantCultureIgnoreCase)) + { + logger.LogInformation("Turning on Outside Front Lights"); + entities.Light.OutsideFront.TurnOn(); + entities.Light.Porch.TurnOn(); + entities.Light.Entrance.TurnOn(); + entities.Light.Hallway.TurnOn(); + } + + services.Notify.Twinstead($"{person} is home"); + }); + + // Leaving Home + people.Persons.Select(p => p.Person.StateChanges() + .StartWith(new StateChange(p.Person, p.Person.EntityState, p.Person.EntityState))) + .CombineLatest() + .Do(list => logger.LogDebug("Leaving Home: {states}", list.Select( p => new {p.Entity.EntityId , p.Entity.State} ))) + .Where(change => change.All(c => !string.Equals(c.New?.State, "home", StringComparison.InvariantCultureIgnoreCase))) + .Subscribe(change => + { + logger.LogInformation("Everyone has left home"); + + if (string.Equals(entities.AlarmControlPanel.Alarmo.State, "disarmed")) + { + logger.LogInformation("Arming Alarm"); + entities.AlarmControlPanel.Alarmo.AlarmArmAway(); + } + + services.Notify.Twinstead("Good bye, alarm armed"); + }); + + // Coming Down Stairs When Alarm is Armed Night + var motionSensors = new[] + { + entities.BinarySensor.Hallway.StateChanges(), + entities.BinarySensor.LandingMotion.StateChanges() + }; + + Observable.Merge(motionSensors) + .Select(e => e.New.State) + .Throttle(TimeSpan.FromSeconds(1), scheduler) + .Where(s => string.Equals(s, "on", StringComparison.InvariantCultureIgnoreCase)) + .Subscribe(_ => + { + if (!string.Equals(entities.AlarmControlPanel.Alarmo.State, "armed_night")) return; + + logger.LogInformation("Disarming Alarm - Motion on stairs"); + entities.AlarmControlPanel.Alarmo.AlarmDisarm(); + }); + } +} + +public record PersonDetails(PersonEntity Person, string Home); + +public class People(IEntities entities) +{ + public IEnumerable Persons { get; } = new[] + { + new PersonDetails(entities.Person.Eugene, "home"), + new PersonDetails(entities.Person.Hailey, "home"), + new PersonDetails(entities.Person.Aubrecia, "mum_home") + }; +} \ No newline at end of file diff --git a/apps/Security/Alarm.cs b/apps/Security/Alarm.cs new file mode 100644 index 0000000..1de4d96 --- /dev/null +++ b/apps/Security/Alarm.cs @@ -0,0 +1,26 @@ +// namespace Niemand; +// +// [NetDaemonApp] +// //[Focus] +// public class Alarm +// { +// public Alarm(IEntities entities, ILogger logger) +// { +// var doors = new[] +// { +// entities.BinarySensor.BackDoor, +// entities.BinarySensor.FrontDoor, +// entities.BinarySensor.DiningDoor, +// entities.BinarySensor.GarageBackDoor, +// entities.BinarySensor.LoungeDoor +// }; +// +// doors.StateChanges() +// .Where(change => change.New.IsOn()) +// .Subscribe(change => +// { +// logger.LogDebug("Door Opened: {door}", change.Entity.EntityId); +// entities.Switch.AlarmBeepTwo.TurnOn(); +// }); +// } +// } \ No newline at end of file diff --git a/apps/Security/Security.cs b/apps/Security/Security.cs new file mode 100644 index 0000000..8f43e81 --- /dev/null +++ b/apps/Security/Security.cs @@ -0,0 +1,26 @@ +namespace Niemand; + +[NetDaemonApp] +//[Focus] +public class Security +{ + public Security(IEntities entities, ILogger logger) + { + var doors = new[] + { + entities.BinarySensor.BackDoor, + entities.BinarySensor.FrontDoor, + entities.BinarySensor.DiningDoor, + entities.BinarySensor.GarageBackDoor, + entities.BinarySensor.LoungeDoor + }; + + doors.StateChanges() + .Where(change => change.New.IsOn()) + .Subscribe(change => + { + logger.LogDebug("Door Opened: {door}", change.Entity.EntityId); + entities.Switch.AlarmBeepTwo.TurnOn(); + }); + } +} \ No newline at end of file diff --git a/apps/TestApp/TestApp.cs b/apps/TestApp/TestApp.cs index 0d24ff8..16c3083 100644 --- a/apps/TestApp/TestApp.cs +++ b/apps/TestApp/TestApp.cs @@ -1,4 +1,7 @@ -namespace Niemand.TestApp; +using NetDaemon.Helpers; +using Niemand.Helpers; + +namespace Niemand.TestApp; [NetDaemonApp] //[Focus] diff --git a/apps/VacationApp/VacationApp.yaml b/apps/VacationApp/VacationApp.yaml index d9b7b8e..bbf7918 100644 --- a/apps/VacationApp/VacationApp.yaml +++ b/apps/VacationApp/VacationApp.yaml @@ -1,14 +1,14 @@ Niemand.VacationAppConfiguration: lights: - - light.kitchen - - light.office - - light.dining - - light.dining_wall - - light.lounge - - light.floor - - light.utility - - light.landing - - light.aaron - - light.master - - light.jayden - - light.playroom \ No newline at end of file + - light.kitchen + - light.office + - light.dining + - light.dining_wall + - light.lounge + - light.floor + - light.utility + - light.landing + - light.aaron + - light.master + - light.jayden + - light.playroom \ No newline at end of file diff --git a/apps/VoiceTimer/VoiceTimer.cs b/apps/VoiceTimer/VoiceTimer.cs index cbbb114..01d6947 100644 --- a/apps/VoiceTimer/VoiceTimer.cs +++ b/apps/VoiceTimer/VoiceTimer.cs @@ -60,4 +60,5 @@ // } // ); // } -//} \ No newline at end of file +//} + diff --git a/daemonapp.csproj b/daemonapp.csproj index 1d687df..00502a6 100644 --- a/daemonapp.csproj +++ b/daemonapp.csproj @@ -1,76 +1,80 @@  - - Exe - net7.0 - 10.0 - enable - en - - - - Always - - - + + Exe + net8.0 + 12 + enable + en + + + + Always + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - - - Always - Always - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + + + Always + Always + + + + + + + + + + + + + + diff --git a/global.json b/global.json new file mode 100644 index 0000000..f242f75 --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "8.0.100", + "rollForward": "latestMinor", + "allowPrerelease": true + } +} \ No newline at end of file diff --git a/netdaemon-app-template.sln b/netdaemon-app-template.sln index 32a6bd1..67117af 100644 --- a/netdaemon-app-template.sln +++ b/netdaemon-app-template.sln @@ -9,6 +9,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetDaemonApps.Tests", "NetD EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetDaemon.Extensions.MqttEntityManager", "..\netdaemon\src\Extensions\NetDaemon.Extensions.MqttEntityManager\NetDaemon.Extensions.MqttEntityManager.csproj", "{0645ABCB-4B33-4C4F-AAD0-2FC5562165FB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetDaemonApp.Specs", "..\NetDaemonApp.Specs\NetDaemonApp.Specs.csproj", "{DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Niemand.Tests", "Niemand.Tests\Niemand.Tests.csproj", "{2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetDaemon.Extensions.Testing", "..\netdaemon-extentions-testing\NetDaemon.Extensions.Testing\NetDaemon.Extensions.Testing.csproj", "{FC355B08-30C0-41C2-A24D-4B0313FFFA93}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,6 +61,42 @@ Global {0645ABCB-4B33-4C4F-AAD0-2FC5562165FB}.Release|x64.Build.0 = Release|Any CPU {0645ABCB-4B33-4C4F-AAD0-2FC5562165FB}.Release|x86.ActiveCfg = Release|Any CPU {0645ABCB-4B33-4C4F-AAD0-2FC5562165FB}.Release|x86.Build.0 = Release|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Debug|x64.Build.0 = Debug|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Debug|x86.ActiveCfg = Debug|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Debug|x86.Build.0 = Debug|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Release|Any CPU.Build.0 = Release|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Release|x64.ActiveCfg = Release|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Release|x64.Build.0 = Release|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Release|x86.ActiveCfg = Release|Any CPU + {DB11DC9C-01D7-4C84-AD9D-2B96E018A9DC}.Release|x86.Build.0 = Release|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Debug|x64.ActiveCfg = Debug|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Debug|x64.Build.0 = Debug|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Debug|x86.ActiveCfg = Debug|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Debug|x86.Build.0 = Debug|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Release|Any CPU.Build.0 = Release|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Release|x64.ActiveCfg = Release|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Release|x64.Build.0 = Release|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Release|x86.ActiveCfg = Release|Any CPU + {2D60E34D-FD5B-46ED-BC6B-8428527EB7D9}.Release|x86.Build.0 = Release|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Debug|x64.ActiveCfg = Debug|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Debug|x64.Build.0 = Debug|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Debug|x86.ActiveCfg = Debug|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Debug|x86.Build.0 = Debug|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Release|Any CPU.Build.0 = Release|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Release|x64.ActiveCfg = Release|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Release|x64.Build.0 = Release|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Release|x86.ActiveCfg = Release|Any CPU + {FC355B08-30C0-41C2-A24D-4B0313FFFA93}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/program.cs b/program.cs index a1db612..42517f6 100644 --- a/program.cs +++ b/program.cs @@ -20,7 +20,7 @@ await Host.CreateDefaultBuilder(args) .AddAppsFromAssembly(Assembly.GetExecutingAssembly()) .AddNetDaemonStateManager() .AddNetDaemonScheduler() - .AddGeneratedCode() + .SetupDependencies() ) .Build() .RunAsync()