diff --git a/NetDaemonApps/NetDaemonApps/.config/dotnet-tools.json b/NetDaemonApps/NetDaemonApps/.config/dotnet-tools.json
new file mode 100644
index 0000000..9a42de7
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "joysoftware.netdaemon.hassmodel.codegen": {
+ "version": "23.26.0",
+ "commands": [
+ "nd-codegen"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/NetDaemonApps/NetDaemonApps/.devcontainer/Dockerfile b/NetDaemonApps/NetDaemonApps/.devcontainer/Dockerfile
new file mode 100644
index 0000000..8d1a022
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/.devcontainer/Dockerfile
@@ -0,0 +1,4 @@
+FROM mcr.microsoft.com/dotnet/sdk:6.0
+
+ENV PATH="/root/.dotnet/tools:${PATH}"
+RUN dotnet tool install -g JoySoftware.NetDaemon.HassModel.CodeGen
diff --git a/NetDaemonApps/NetDaemonApps/.devcontainer/devcontainer.json b/NetDaemonApps/NetDaemonApps/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..05507f3
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/.devcontainer/devcontainer.json
@@ -0,0 +1,12 @@
+{
+ "name": "NetDaemon App-development",
+ "dockerFile": "./Dockerfile",
+ "postCreateCommand": "dotnet restore *.csproj",
+ "settings": {
+ "terminal.integrated.shell.linux": "/bin/bash",
+ "terminal.integrated.fontSize": 10
+ },
+ "extensions": [
+ "ms-dotnettools.csharp"
+ ]
+}
diff --git a/NetDaemonApps/NetDaemonApps/.gitignore b/NetDaemonApps/NetDaemonApps/.gitignore
new file mode 100644
index 0000000..29c3c21
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/.gitignore
@@ -0,0 +1,8 @@
+obj
+bin
+appsettings.Development.json
+.vs
+*.gen
+.idea
+#appsettings.json
+#HomeAssistantGenerated.cs
diff --git a/NetDaemonApps/NetDaemonApps/.vscode/launch.json b/NetDaemonApps/NetDaemonApps/.vscode/launch.json
new file mode 100644
index 0000000..b002edf
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/.vscode/launch.json
@@ -0,0 +1,28 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Debug Apps",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build",
+ "program": "${workspaceFolder}/bin/Debug/net6.0/NetDaemonApps.dll",
+ "args": [],
+ "cwd": "${workspaceFolder}",
+ "env": {
+ "DOTNET_ENVIRONMENT": "Development",
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "stopAtEntry": false,
+ "logging": {
+ "moduleLoad": false
+ }
+ },
+ {
+ "name": ".NET Core Attach",
+ "type": "coreclr",
+ "request": "attach",
+ "processId": "${command:pickProcess}"
+ }
+ ]
+}
diff --git a/NetDaemonApps/NetDaemonApps/.vscode/tasks.json b/NetDaemonApps/NetDaemonApps/.vscode/tasks.json
new file mode 100644
index 0000000..f8523b7
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/.vscode/tasks.json
@@ -0,0 +1,29 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "build",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "build",
+ "${workspaceFolder}/NetDaemonApps.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "publish",
+ "command": "dotnet",
+ "type": "process",
+ "args": [
+ "publish",
+ "${workspaceFolder}/NetDaemonApps.csproj",
+ "/property:GenerateFullPaths=true",
+ "/consoleloggerparameters:NoSummary"
+ ],
+ "problemMatcher": "$msCompile"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/AreaControl.cs b/NetDaemonApps/NetDaemonApps/AreaControl/AreaControl.cs
new file mode 100644
index 0000000..f53472e
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/AreaControl.cs
@@ -0,0 +1,120 @@
+using NetDaemonInterface;
+using NetDaemonInterface;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl
+{
+ public class AreaControl : IAreaControl
+ {
+ internal CancellationTokenSource? CTSAfter;
+ internal CancellationTokenSource? CTSRun;
+ internal readonly IHaContext haContext;
+ internal readonly IScheduler scheduler;
+ internal readonly IEntities entities;
+ internal readonly IServices services;
+
+ public AreaControl(IHaContext haContext, IScheduler scheduler)
+ {
+ haContext = haContext;
+ scheduler = scheduler;
+ entities = new Entities(haContext);
+ services = new Services(haContext);
+ }
+
+ ///
+ /// The after task is designed for an action that needs to be executed after a delay.
+ /// Starting a new after task will stop the currently running task
+ ///
+ /// The delay
+ /// The action
+ internal void StartAfterTask(TimeSpan Delay, Action action)
+ {
+ CTSAfter?.Cancel();
+ CTSAfter = new CancellationTokenSource();
+ Task.Run(() =>
+ {
+ try
+ {
+ Task.Delay(Delay).Wait(CTSAfter.Token);
+ CTSAfter.Token.ThrowIfCancellationRequested();
+ action();
+ }
+ catch (OperationCanceledException)
+ {
+ // Ignore
+ }
+ });
+ }
+
+ ///
+ /// The RunTask is used to execute longer running tasks without blocking the return
+ /// Starting a new run task will stop the currently running task
+ ///
+ ///
+ internal void StartRunTask(Action action)
+ {
+ CTSRun?.Cancel();
+ CTSRun = new CancellationTokenSource();
+ Task.Run(() =>
+ {
+ try
+ {
+ action(CTSRun.Token);
+ }
+ catch (OperationCanceledException)
+ {
+ // Ignore
+ }
+ });
+ }
+
+ ///
+ /// Helper to be used within a RunTask action, waits for a delay and checks for cancellation
+ ///
+ /// The delay
+ /// The cancellation token
+ internal void DelayRunTaskAndCheckCancellation(TimeSpan delay, CancellationToken ct)
+ {
+ Task.Delay(delay).Wait(ct);
+ ct.ThrowIfCancellationRequested();
+ }
+
+ ///
+ /// Stops the currently running RunTask
+ ///
+ internal void StopAfterTask()
+ {
+ CTSAfter?.Cancel();
+ }
+
+ ///
+ /// Stops the currently running RunTask
+ ///
+ internal void StopRunTask()
+ {
+ CTSRun?.Cancel();
+ }
+
+ public virtual void ButtonPressed(string entityId, CallServiceDataElement dataElement)
+ {
+
+ }
+
+ public virtual void SunDawn()
+ {
+ }
+
+ public virtual void SunRising()
+ {
+ }
+
+ public virtual void SunDusk()
+ {
+ }
+
+ public virtual void SunSetting()
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Bath.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Bath.cs
new file mode 100644
index 0000000..d0bc00e
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Bath.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Bath : AreaControl
+ {
+ public Bath(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Bedroom.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Bedroom.cs
new file mode 100644
index 0000000..6de7902
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Bedroom.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Bedroom : AreaControl
+ {
+ public Bedroom(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Corridor1stFloor.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Corridor1stFloor.cs
new file mode 100644
index 0000000..dd25783
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Corridor1stFloor.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Corridor1stFloor : AreaControl
+ {
+ public Corridor1stFloor(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Corridor2ndFloor.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Corridor2ndFloor.cs
new file mode 100644
index 0000000..b166cec
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Corridor2ndFloor.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Corridor2ndFloor : AreaControl
+ {
+ public Corridor2ndFloor(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/CorridorGroundFloor.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/CorridorGroundFloor.cs
new file mode 100644
index 0000000..effc9d4
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/CorridorGroundFloor.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class CorridorGroundFloor : AreaControl
+ {
+ public CorridorGroundFloor(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/EntranceArea.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/EntranceArea.cs
new file mode 100644
index 0000000..51e9b97
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/EntranceArea.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class EntranceArea : AreaControl
+ {
+ public EntranceArea(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/KidsRoom.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/KidsRoom.cs
new file mode 100644
index 0000000..6624a07
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/KidsRoom.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class KidsRoom : AreaControl
+ {
+ public KidsRoom(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Kitchen.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Kitchen.cs
new file mode 100644
index 0000000..4188329
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Kitchen.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Kitchen : AreaControl
+ {
+ public Kitchen(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/LivingRoom.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/LivingRoom.cs
new file mode 100644
index 0000000..a048dbc
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/LivingRoom.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class LivingRoom : AreaControl
+ {
+ public LivingRoom(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Office.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Office.cs
new file mode 100644
index 0000000..9d2bc45
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Office.cs
@@ -0,0 +1,52 @@
+using NetDaemonInterface;
+using NetDaemonInterface;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Office : AreaControl
+ {
+
+ public Office(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+
+ }
+
+ public override void ButtonPressed(string ButtonSensor, CallServiceDataElement dataElement)
+ {
+
+ }
+
+ ///
+ /// Morgendämmerung
+ ///
+ public override void SunDawn()
+ {
+
+ }
+
+ ///
+ /// Sonnenaufgang
+ ///
+ public override void SunRising()
+ {
+
+ }
+
+ ///
+ /// Abenddämmerung
+ ///
+ public override void SunDusk()
+ {
+
+ }
+
+ ///
+ /// Sonnenuntergang
+ ///
+ public override void SunSetting()
+ {
+
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Studio.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Studio.cs
new file mode 100644
index 0000000..05b7fc2
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/Studio.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class Studio : AreaControl
+ {
+ public Studio(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/TechnicalRoom.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/TechnicalRoom.cs
new file mode 100644
index 0000000..20b475f
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/TechnicalRoom.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class TechnicalRoom : AreaControl
+ {
+ public TechnicalRoom(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/AreaControl/Areas/TmpArea.cs b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/TmpArea.cs
new file mode 100644
index 0000000..bb9c49a
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/AreaControl/Areas/TmpArea.cs
@@ -0,0 +1,125 @@
+using NetDaemonApps.DeviceLib.UseeLink;
+using NetDaemonInterface;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.AreaControl.Areas
+{
+ public class TmpArea : AreaControl
+ {
+ private EntityEvents events;
+ private NotifyServices notifyServices;
+
+ SmartSurgeProtectorSocket socketAllDevices;
+ Task socketAllDevicesTask;
+ SmartSurgeProtectorSocket socketTvDvd;
+ Task socketTvDvDTask;
+
+ public TmpArea(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ events = new EntityEvents();
+ events.Click += Events_Click;
+ events.DoubleClick += Events_DoubleClick;
+ notifyServices = new NotifyServices(haContext);
+
+
+ socketAllDevices = new SmartSurgeProtectorSocket()
+ {
+ Input = entities.InputButton.Deengzb002dgStMxBtnonoff,
+
+ Outputs = new List
+ {
+ entities.Light.Deengzb002dgStMxLight, // TV
+ entities.Light.Deengzb002dgStMxLight2, // PC
+ entities.Light.Deengzb002dgStMxLight3, // DVD
+ entities.Light.Deengzb002dgStMxLight4, // Wifi
+ //entities.Light.Deengzb002dgStMxLight5, // USB
+ },
+
+ SwitchOnDelayTime = 1000,
+ SwitchOffTime = 0,
+ };
+
+ socketTvDvd = new SmartSurgeProtectorSocket()
+ {
+ Input = entities.InputButton.Deengzb002dgStMxBtnonoff,
+
+ Outputs = new List
+ {
+ entities.Light.Deengzb002dgStMxLight, // TV
+ entities.Light.Deengzb002dgStMxLight2, // PC
+ //entities.Light.Deengzb002dgStMxLight3, // DVD
+ //entities.Light.Deengzb002dgStMxLight4, // Wifi
+ //entities.Light.Deengzb002dgStMxLight5, // USB
+ },
+
+ SwitchOnDelayTime = 1000,
+ SwitchOffTime = 0,
+ };
+
+ }
+
+ private void Events_DoubleClick(object? sender, EventArgs e)
+ {
+
+ }
+
+ private void Events_Click(object? sender, EventArgs e)
+ {
+
+ }
+
+
+ public override void ButtonPressed(string ButtonSensor, CallServiceDataElement dataElement)
+ {
+ events.VarName = ButtonSensor;
+ events.Trigger = true;
+
+ // Alle Geräte außer die USB'S einschalten
+ if (entities.InputButton.Deengzb002dgStMxBtnonoff.EntityId.Equals(ButtonSensor))
+ {
+ socketAllDevicesTask = socketAllDevices.CheckStateAsync(dataElement);
+ }
+
+ // TV und PC einschalten - der Rest bleibt aus
+ if (entities.InputButton.Deengzb002dgStMxBtnonoffTvpc.EntityId.Equals(ButtonSensor))
+ {
+ socketTvDvDTask = socketTvDvd.CheckStateAsync(dataElement);
+ }
+ }
+
+
+ ///
+ /// Morgendämmerung
+ ///
+ public override void SunDawn()
+ {
+ notifyServices.Whatsapp("Morgendämmerung");
+ }
+
+ ///
+ /// Sonnenaufgang
+ ///
+ public override void SunRising()
+ {
+ notifyServices.Whatsapp("Sonnenaufgang");
+ }
+
+ ///
+ /// Abenddämmerung
+ ///
+ public override void SunDusk()
+ {
+ notifyServices.Whatsapp("Abenddämmerung");
+ }
+
+ ///
+ /// Sonnenuntergang
+ ///
+ public override void SunSetting()
+ {
+ notifyServices.Whatsapp("Sonnenuntergang");
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/ButtonMapping.cs b/NetDaemonApps/NetDaemonApps/ButtonMapping.cs
new file mode 100644
index 0000000..bf55a7f
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/ButtonMapping.cs
@@ -0,0 +1,19 @@
+using NetDaemonInterface;
+using System.Collections.Generic;
+
+namespace NetDaemonApps
+{
+ public class ButtonMapping
+ {
+ public List> mapping;
+
+ public ButtonMapping(IEntities entities)
+ {
+ mapping = new()
+ {
+ new(AreaControlEnum.TmpArea, entities.InputButton.Deengzb002dgStMxBtnonoff.EntityId),
+ new(AreaControlEnum.TmpArea, entities.InputButton.Deengzb002dgStMxBtnonoffTvpc.EntityId),
+ };
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/Constants.cs b/NetDaemonApps/NetDaemonApps/Constants.cs
new file mode 100644
index 0000000..fd898e0
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/Constants.cs
@@ -0,0 +1,6 @@
+namespace NetDaemonApps;
+
+public static class Constants
+{
+ public static string dateTime_TimeFormat = "HH:mm:ss";
+}
diff --git a/NetDaemonApps/NetDaemonApps/DeviceControl/DeviceControl.cs b/NetDaemonApps/NetDaemonApps/DeviceControl/DeviceControl.cs
new file mode 100644
index 0000000..38c3b2f
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/DeviceControl/DeviceControl.cs
@@ -0,0 +1,103 @@
+using NetDaemonInterface;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.DeviceControl
+{
+ public class DeviceControl : IDeviceControl
+ {
+ internal CancellationTokenSource? CTSAfter;
+ internal CancellationTokenSource? CTSRun;
+ internal readonly IHaContext haContext;
+ internal readonly IScheduler scheduler;
+ internal readonly IEntities entities;
+ internal readonly IServices services;
+
+ public DeviceControl(IHaContext haContext, IScheduler scheduler)
+ {
+ haContext = haContext;
+ scheduler = scheduler;
+ entities = new Entities(haContext);
+ services = new Services(haContext);
+ }
+
+ ///
+ /// The after task is designed for an action that needs to be executed after a delay.
+ /// Starting a new after task will stop the currently running task
+ ///
+ /// The delay
+ /// The action
+ internal void StartAfterTask(TimeSpan Delay, Action action)
+ {
+ CTSAfter?.Cancel();
+ CTSAfter = new CancellationTokenSource();
+ Task.Run(() =>
+ {
+ try
+ {
+ Task.Delay(Delay).Wait(CTSAfter.Token);
+ CTSAfter.Token.ThrowIfCancellationRequested();
+ action();
+ }
+ catch (OperationCanceledException)
+ {
+ // Ignore
+ }
+ });
+ }
+
+ ///
+ /// The RunTask is used to execute longer running tasks without blocking the return
+ /// Starting a new run task will stop the currently running task
+ ///
+ ///
+ internal void StartRunTask(Action action)
+ {
+ CTSRun?.Cancel();
+ CTSRun = new CancellationTokenSource();
+ Task.Run(() =>
+ {
+ try
+ {
+ action(CTSRun.Token);
+ }
+ catch (OperationCanceledException)
+ {
+ // Ignore
+ }
+ });
+ }
+
+ ///
+ /// Helper to be used within a RunTask action, waits for a delay and checks for cancellation
+ ///
+ /// The delay
+ /// The cancellation token
+ internal void DelayRunTaskAndCheckCancellation(TimeSpan delay, CancellationToken ct)
+ {
+ Task.Delay(delay).Wait(ct);
+ ct.ThrowIfCancellationRequested();
+ }
+
+ ///
+ /// Stops the currently running RunTask
+ ///
+ internal void StopAfterTask()
+ {
+ CTSAfter?.Cancel();
+ }
+
+ ///
+ /// Stops the currently running RunTask
+ ///
+ internal void StopRunTask()
+ {
+ CTSRun?.Cancel();
+ }
+
+ public virtual void Idle(IEntities entities, IScheduler scheduler)
+ {
+ }
+
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/DeviceControl/Devices/Deengph001.cs b/NetDaemonApps/NetDaemonApps/DeviceControl/Devices/Deengph001.cs
new file mode 100644
index 0000000..d08b1ad
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/DeviceControl/Devices/Deengph001.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.DeviceControl.Devices
+{
+ internal class Deengph001 : DeviceControl
+ {
+ public Deengph001(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+
+ }
+
+ public override void Idle(IEntities entities, IScheduler scheduler)
+ {
+ entities.Sensor.Deengph001BatteryLevel.StateChanges()
+ .Throttle(TimeSpan.FromSeconds(1), scheduler)
+ .Where(x => x.Old?.State >x.New?.State && x.New?.State <= 25)
+ .Subscribe(x => new NotifyServices(haContext)
+ .Whatsapp(x.Entity.EntityId.ToString() + Environment.NewLine + "Akku bei " + x.New.State + " %"));
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/DeviceControl/Devices/Deengph002.cs b/NetDaemonApps/NetDaemonApps/DeviceControl/Devices/Deengph002.cs
new file mode 100644
index 0000000..f925b78
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/DeviceControl/Devices/Deengph002.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.DeviceControl.Devices
+{
+ internal class Deengph002 : DeviceControl
+ {
+ public Deengph002(IHaContext haContext, IScheduler scheduler)
+ : base(haContext, scheduler)
+ {
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/DeviceLib/SilverCrest/SwitchedSocket.cs b/NetDaemonApps/NetDaemonApps/DeviceLib/SilverCrest/SwitchedSocket.cs
new file mode 100644
index 0000000..1081ed8
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/DeviceLib/SilverCrest/SwitchedSocket.cs
@@ -0,0 +1,38 @@
+using NetDaemonInterface;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.DeviceLib.UseeLink
+{
+ public class SwitchedSocket : SocketBase
+ {
+ private BackgroundWorker worker;
+
+ public SwitchedSocket()
+ {
+ worker = new BackgroundWorker();
+ worker.DoWork += Worker_DoWork;
+ }
+
+ private int SwitchOnDelayTime
+ {
+ get { throw new NotImplementedException(); }
+ set { throw new NotImplementedException(); }
+ }
+
+ private void Worker_DoWork(object? sender, DoWorkEventArgs e)
+ {
+ Thread.Sleep(SwitchOffTime);
+ Outputs.ForEach(x => x.TurnOff());
+ }
+
+
+ ///
+ /// Steckdose nach Zeit x ms ausschalten.
+ ///
+ public int SwitchOffTime { get; set; } = 250;
+ }
+}
\ No newline at end of file
diff --git a/NetDaemonApps/NetDaemonApps/DeviceLib/SocketBase.cs b/NetDaemonApps/NetDaemonApps/DeviceLib/SocketBase.cs
new file mode 100644
index 0000000..c48b6af
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/DeviceLib/SocketBase.cs
@@ -0,0 +1,111 @@
+using NetDaemon.HassModel.Entities;
+using NetDaemonInterface;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.DeviceLib
+{
+ public class SocketBase
+ {
+ private Task switchOnSockets;
+ private CancellationTokenSource cts;
+
+ public SocketBase()
+ {
+ // worker.DoWork += Worker_DoWork;
+ cts = new CancellationTokenSource();
+ }
+ ///
+ ///
+ ///
+ /// Entitäten von HA
+ /// Daten aus dem CallService Event
+ ///
+ public Task CheckStateAsync(CallServiceDataElement dataElement)
+ {
+ return Task.Factory.StartNew(async () =>
+ {
+ if (Input != null && Outputs != null) // Aus- bzw Eingänge nicht null
+ {
+ if (Outputs.All(x => x.IsOff())) // alle Steckdosen ausgeschalten
+ {
+ cts = new CancellationTokenSource();
+ switchOnSockets = TurnOnSockets(cts.Token);
+ }
+ else // min. eine Steckdose eingeschalten
+ {
+ if (switchOnSockets != null && !switchOnSockets.IsCompleted && cts != null && !cts.IsCancellationRequested)
+ cts.Cancel();
+
+ if (switchOnSockets != null)
+ Task.WaitAll(switchOnSockets);
+
+ Outputs.ForEach(x => x.TurnOff()); // alle Steckdosen ausschalten
+ }
+ }
+ });
+ }
+
+ private Task TurnOnSockets(CancellationToken token = default(CancellationToken))
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ // alle Steckdosen verzögert einschalten
+ foreach (var output in Outputs)
+ {
+
+ // Task abbrechen
+ if (token.IsCancellationRequested)
+ {
+ return;
+ }
+
+ // Steckdose einschalten
+ output.TurnOn();
+
+ if (!output.Equals(Outputs.LastOrDefault()))
+ Thread.Sleep(SwitchOnDelayTime); // Verzögerung
+ }
+
+ if (SwitchOffTime > 0)
+ {
+ //Thread.Sleep(SwitchOffTime);
+ Task.WaitAll(TurnOffSockets(token));
+ }
+ });
+ }
+
+ private Task TurnOffSockets(CancellationToken token = default(CancellationToken))
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ Task.WaitAny(Task.Delay(SwitchOffTime, token));
+ Outputs.ForEach(x => x.TurnOff());
+ });
+ }
+
+ ///
+ /// Eingangs Entitäten, wobei Entitäten [0] die Master-Entitäten. Mit der Master-Entitäten werden alle Ausgänge verzögert geschalten.
+ ///
+ public InputButtonEntity Input { get; set; }
+
+ ///
+ /// Ausgangs Entitäten (die geschalten werden sollen)
+ ///
+ public List Outputs { get; set; }
+
+ ///
+ /// Verzögerungszeit in ms zwischen den Out-Entitäten, wenn alle geschalten werden sollen
+ ///
+ public int SwitchOnDelayTime { get; set; } = 500;
+
+ ///
+ /// Steckdose nach Zeit x ms ausschalten.
+ ///
+ public int SwitchOffTime { get; set; } = 250;
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/DeviceLib/UseeLink/SmartSurgeProtectorSocket.cs b/NetDaemonApps/NetDaemonApps/DeviceLib/UseeLink/SmartSurgeProtectorSocket.cs
new file mode 100644
index 0000000..66f513b
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/DeviceLib/UseeLink/SmartSurgeProtectorSocket.cs
@@ -0,0 +1,14 @@
+using NetDaemonInterface;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace NetDaemonApps.DeviceLib.UseeLink
+{
+ public class SmartSurgeProtectorSocket : SocketBase
+ {
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/Extensions/EntityExtensions.cs b/NetDaemonApps/NetDaemonApps/Extensions/EntityExtensions.cs
new file mode 100644
index 0000000..d289a50
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/Extensions/EntityExtensions.cs
@@ -0,0 +1,32 @@
+using NetDaemon.HassModel.Entities;
+
+namespace NetDaemonApps.Extensions
+{
+ public static class EntityExtensions
+ {
+ public static void SetState(this Entity x, IServices services, string state)
+ {
+ services.Netdaemon.EntityUpdate(x.EntityId, state: state);
+ }
+
+ public static bool IsOn(this LightEntity x)
+ {
+ return x.State == "on";
+ }
+
+ public static bool IsOff(this LightEntity x)
+ {
+ return x.State == "off";
+ }
+
+ public static bool IsOn(this SwitchEntity x)
+ {
+ return x.State == "on";
+ }
+
+ public static bool IsOff(this SwitchEntity x)
+ {
+ return x.State == "off";
+ }
+ }
+}
diff --git a/NetDaemonApps/NetDaemonApps/GlobalUsings.cs b/NetDaemonApps/NetDaemonApps/GlobalUsings.cs
new file mode 100644
index 0000000..ab3d65c
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/GlobalUsings.cs
@@ -0,0 +1,10 @@
+// Common usings for NetDaemon apps
+global using HomeAssistantGenerated;
+global using Microsoft.Extensions.Logging;
+global using NetDaemon.AppModel;
+global using NetDaemon.HassModel;
+global using NetDaemon.HassModel.Integration;
+global using NetDaemonApps.Extensions;
+global using System;
+global using System.Reactive.Linq;
+global using System.Reactive.Concurrency;
\ No newline at end of file
diff --git a/NetDaemonApps/NetDaemonApps/HomeAssistantGenerated.cs b/NetDaemonApps/NetDaemonApps/HomeAssistantGenerated.cs
new file mode 100644
index 0000000..d838af4
--- /dev/null
+++ b/NetDaemonApps/NetDaemonApps/HomeAssistantGenerated.cs
@@ -0,0 +1,7314 @@
+//------------------------------------------------------------------------------
+//
+// Generated using NetDaemon CodeGenerator nd-codegen v23.32.0.0
+// At: 2023-08-24T05:36:26.7733651+02: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:
+// dotnet tool update JoySoftware.NetDaemon.HassModel.CodeGen
+//
+// To update this file with latest entities run this command in your project directory:
+// dotnet tool run nd-codegen
+//
+// In the template projects we provided a convenience powershell script that will update
+// the codegen and nugets to latest versions update_all_dependencies.ps1.
+//
+// For more information: https://netdaemon.xyz/docs/v3/hass_model/hass_model_codegen
+// For more information about NetDaemon: https://netdaemon.xyz/
+//
+//------------------------------------------------------------------------------
+#nullable enable
+using System;
+using System.Collections.Generic;
+using Microsoft.Extensions.DependencyInjection;
+using System.Text.Json.Serialization;
+using NetDaemon.HassModel;
+using NetDaemon.HassModel.Entities;
+using NetDaemon.HassModel.Entities.Core;
+
+namespace HomeAssistantGenerated;
+public static class GeneratedExtensions
+{
+ ///Registers all injectable generated types in the serviceCollection
+ public static IServiceCollection AddHomeAssistantGenerated(this IServiceCollection serviceCollection)
+ {
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ serviceCollection.AddTransient();
+ return serviceCollection;
+ }
+}
+
+public interface IEntities
+{
+ BinarySensorEntities BinarySensor { get; }
+
+ ButtonEntities Button { get; }
+
+ DeviceTrackerEntities DeviceTracker { get; }
+
+ InputBooleanEntities InputBoolean { get; }
+
+ LightEntities Light { get; }
+
+ MediaPlayerEntities MediaPlayer { get; }
+
+ PersonEntities Person { get; }
+
+ SelectEntities Select { get; }
+
+ SensorEntities Sensor { get; }
+
+ SunEntities Sun { get; }
+
+ SwitchEntities Switch { get; }
+
+ UpdateEntities Update { get; }
+
+ WeatherEntities Weather { get; }
+
+ ZoneEntities Zone { get; }
+
+ InputButtonEntities InputButton { get; }
+
+ ImageEntities Image { get; }
+
+ InputNumberEntities InputNumber { get; }
+
+ ScheduleEntities Schedule { get; }
+
+ InputDatetimeEntities InputDatetime { get; }
+}
+
+public partial class Entities : IEntities
+{
+ private readonly IHaContext _haContext;
+ public Entities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ public BinarySensorEntities BinarySensor => new(_haContext);
+ public ButtonEntities Button => new(_haContext);
+ public DeviceTrackerEntities DeviceTracker => new(_haContext);
+ public InputBooleanEntities InputBoolean => new(_haContext);
+ public LightEntities Light => new(_haContext);
+ public MediaPlayerEntities MediaPlayer => new(_haContext);
+ public PersonEntities Person => new(_haContext);
+ public SelectEntities Select => new(_haContext);
+ public SensorEntities Sensor => new(_haContext);
+ public SunEntities Sun => new(_haContext);
+ public SwitchEntities Switch => new(_haContext);
+ public UpdateEntities Update => new(_haContext);
+ public WeatherEntities Weather => new(_haContext);
+ public ZoneEntities Zone => new(_haContext);
+ public InputButtonEntities InputButton => new(_haContext);
+ public ImageEntities Image => new(_haContext);
+ public InputNumberEntities InputNumber => new(_haContext);
+ public ScheduleEntities Schedule => new(_haContext);
+ public InputDatetimeEntities InputDatetime => new(_haContext);
+}
+
+public partial class BinarySensorEntities
+{
+ private readonly IHaContext _haContext;
+ public BinarySensorEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///FB00-AM-LM WAN-Status
+ public BinarySensorEntity Deengfb001WanStatus => new(_haContext, "binary_sensor.deengfb001_wan_status");
+ ///deengph001 Is charging
+ public BinarySensorEntity Deengph001IsCharging => new(_haContext, "binary_sensor.deengph001_is_charging");
+ ///deengph002 Is Charging
+ public BinarySensorEntity Deengph002IsCharging => new(_haContext, "binary_sensor.deengph002_is_charging");
+ ///FB00-AM-LM Verbinden
+ public BinarySensorEntity Fb00AmLmVerbinden => new(_haContext, "binary_sensor.fb00_am_lm_verbinden");
+ ///FB00-AM-LM Verbindung
+ public BinarySensorEntity Fb00AmLmVerbindung => new(_haContext, "binary_sensor.fb00_am_lm_verbindung");
+ ///RPi Power status
+ public BinarySensorEntity RpiPowerStatus => new(_haContext, "binary_sensor.rpi_power_status");
+ ///Workday Sensor
+ public BinarySensorEntity WorkdaySensor => new(_haContext, "binary_sensor.workday_sensor");
+}
+
+public partial class ButtonEntities
+{
+ private readonly IHaContext _haContext;
+ public ButtonEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///deengzb002dg-st-mx Identify
+ public ButtonEntity Deengzb002dgStMxIdentify => new(_haContext, "button.deengzb002dg_st_mx_identify");
+ ///FB00-AM-LM Aufräumen
+ public ButtonEntity Fb00AmLmAufraumen => new(_haContext, "button.fb00_am_lm_aufraumen");
+ ///FB00-AM-LM Firmware Update
+ public ButtonEntity Fb00AmLmFirmwareUpdate => new(_haContext, "button.fb00_am_lm_firmware_update");
+ ///FB00-AM-LM Neu starten
+ public ButtonEntity Fb00AmLmNeuStarten => new(_haContext, "button.fb00_am_lm_neu_starten");
+ ///FB00-AM-LM Neu verbinden
+ public ButtonEntity Fb00AmLmNeuVerbinden => new(_haContext, "button.fb00_am_lm_neu_verbinden");
+ ///Google Assistant Geräte synchronisieren
+ public ButtonEntity SynchronizeDevices => new(_haContext, "button.synchronize_devices");
+ ///_TZ3000_kdi2o9m6 TS011F Identify
+ public ButtonEntity Tz3000Kdi2o9m6Ts011fIdentify => new(_haContext, "button.tz3000_kdi2o9m6_ts011f_identify");
+}
+
+public partial class DeviceTrackerEntities
+{
+ private readonly IHaContext _haContext;
+ public DeviceTrackerEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ public DeviceTrackerEntity Accm80317e877768cd21577b => new(_haContext, "device_tracker.accm80317e877768cd21_577b");
+ ///deengph002
+ public DeviceTrackerEntity Android217ffb982e982cf9 => new(_haContext, "device_tracker.android_217ffb982e982cf9");
+ ///android-792e9092fe50e529
+ public DeviceTrackerEntity Android792e9092fe50e529 => new(_haContext, "device_tracker.android_792e9092fe50e529");
+ public DeviceTrackerEntity Care6ee7 => new(_haContext, "device_tracker.care_6ee7");
+ ///deengap001
+ public DeviceTrackerEntity Deengap001dns => new(_haContext, "device_tracker.deengap001dns");
+ ///deengha001
+ public DeviceTrackerEntity Deengha001 => new(_haContext, "device_tracker.deengha001");
+ ///deengna001
+ public DeviceTrackerEntity Deengna001 => new(_haContext, "device_tracker.deengna001");
+ ///deengna002
+ public DeviceTrackerEntity Deengna002 => new(_haContext, "device_tracker.deengna002");
+ ///deengna002
+ public DeviceTrackerEntity Deengna0022 => new(_haContext, "device_tracker.deengna002_2");
+ ///deengna003
+ public DeviceTrackerEntity Deengna003 => new(_haContext, "device_tracker.deengna003");
+ ///deengna003
+ public DeviceTrackerEntity Deengna0032 => new(_haContext, "device_tracker.deengna003_2");
+ ///deengna004
+ public DeviceTrackerEntity Deengna004 => new(_haContext, "device_tracker.deengna004");
+ ///deengna004
+ public DeviceTrackerEntity Deengna0042 => new(_haContext, "device_tracker.deengna004_2");
+ ///deengnb001
+ public DeviceTrackerEntity Deengnb001stm => new(_haContext, "device_tracker.deengnb001stm");
+ ///deengnb001
+ public DeviceTrackerEntity Deengnb001stm2 => new(_haContext, "device_tracker.deengnb001stm_2");
+ ///deengnb003lm
+ public DeviceTrackerEntity Deengnb003lm => new(_haContext, "device_tracker.deengnb003lm");
+ ///deengns001
+ public DeviceTrackerEntity Deengns001 => new(_haContext, "device_tracker.deengns001");
+ ///deengns002
+ public DeviceTrackerEntity Deengns002 => new(_haContext, "device_tracker.deengns002");
+ ///deengpc001
+ public DeviceTrackerEntity Deengpc001 => new(_haContext, "device_tracker.deengpc001");
+ ///deengpc001
+ public DeviceTrackerEntity Deengpc0012 => new(_haContext, "device_tracker.deengpc001_2");
+ ///deengpc002
+ public DeviceTrackerEntity Deengpc002 => new(_haContext, "device_tracker.deengpc002");
+ ///deengph001
+ public DeviceTrackerEntity Deengph001 => new(_haContext, "device_tracker.deengph001");
+ ///deengph002
+ public DeviceTrackerEntity Deengph002 => new(_haContext, "device_tracker.deengph002");
+ ///deengpr001
+ public DeviceTrackerEntity Deengpr001 => new(_haContext, "device_tracker.deengpr001");
+ ///deengir002
+ public DeviceTrackerEntity Deengrs001amln => new(_haContext, "device_tracker.deengrs001amln");
+ ///deengsd001
+ public DeviceTrackerEntity Deengsd001 => new(_haContext, "device_tracker.deengsd001");
+ ///deengir001
+ public DeviceTrackerEntity Deengsr002stm => new(_haContext, "device_tracker.deengsr002stm");
+ ///deengst001amlm
+ public DeviceTrackerEntity Deengst001amlm => new(_haContext, "device_tracker.deengst001amlm");
+ ///deengtv001
+ public DeviceTrackerEntity Deengst002 => new(_haContext, "device_tracker.deengst002");
+ ///deengws001
+ public DeviceTrackerEntity Deengws001 => new(_haContext, "device_tracker.deengws001");
+ public DeviceTrackerEntity Dp20Tovjt1951342ee4 => new(_haContext, "device_tracker.dp_2_0_tovjt195134_2ee4");
+ public DeviceTrackerEntity Dp20Tovjx225777016a => new(_haContext, "device_tracker.dp_2_0_tovjx225777_016a");
+ public DeviceTrackerEntity Dp20Tovjx37709625cd => new(_haContext, "device_tracker.dp_2_0_tovjx377096_25cd");
+ public DeviceTrackerEntity Dp20Tovjx503147Ab20 => new(_haContext, "device_tracker.dp_2_0_tovjx503147_ab20");
+ public DeviceTrackerEntity Dp21Togjy0244164639 => new(_haContext, "device_tracker.dp_2_1_togjy024416_4639");
+ public DeviceTrackerEntity Dp21Togkx010618675a => new(_haContext, "device_tracker.dp_2_1_togkx010618_675a");
+ public DeviceTrackerEntity Dp21Togkx189047Cd97 => new(_haContext, "device_tracker.dp_2_1_togkx189047_cd97");
+ public DeviceTrackerEntity Dp21Togkx197117382c => new(_haContext, "device_tracker.dp_2_1_togkx197117_382c");
+ public DeviceTrackerEntity Dp21Togky119454C3a5 => new(_haContext, "device_tracker.dp_2_1_togky119454_c3a5");
+ public DeviceTrackerEntity Dp21Toglx117325528e => new(_haContext, "device_tracker.dp_2_1_toglx117325_528e");
+ public DeviceTrackerEntity Dp21Togly034829B86e => new(_haContext, "device_tracker.dp_2_1_togly034829_b86e");
+ public DeviceTrackerEntity Dp21Tognx012049E283 => new(_haContext, "device_tracker.dp_2_1_tognx012049_e283");
+ public DeviceTrackerEntity Dp21Tormx105463A20b => new(_haContext, "device_tracker.dp_2_1_tormx105463_a20b");
+ public DeviceTrackerEntity Drivedot2919235f => new(_haContext, "device_tracker.drivedot_2919_235f");
+ public DeviceTrackerEntity Drivedot3372Ccf3 => new(_haContext, "device_tracker.drivedot_3372_ccf3");
+ public DeviceTrackerEntity Drivedot4319C4fb => new(_haContext, "device_tracker.drivedot_4319_c4fb");
+ public DeviceTrackerEntity Drivedot6574D1ef => new(_haContext, "device_tracker.drivedot_6574_d1ef");
+ public DeviceTrackerEntity Drivedot9703Afa8 => new(_haContext, "device_tracker.drivedot_9703_afa8");
+ public DeviceTrackerEntity Ooono3e7d => new(_haContext, "device_tracker.ooono_3e7d");
+ public DeviceTrackerEntity Ooono80b1 => new(_haContext, "device_tracker.ooono_80b1");
+ ///deengns002
+ public DeviceTrackerEntity Pc265eBeffFe1e20f7 => new(_haContext, "device_tracker.pc_265e_beff_fe1e_20f7");
+ ///deengph001
+ public DeviceTrackerEntity RedmiNote9Pro => new(_haContext, "device_tracker.redmi_note_9_pro");
+ public DeviceTrackerEntity Wsbc004011516t9fdc => new(_haContext, "device_tracker.wsbc004011516t_9fdc");
+}
+
+public partial class InputBooleanEntities
+{
+ private readonly IHaContext _haContext;
+ public InputBooleanEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///dev_netdaemon_net_daemon_apps_apps_call_service_event_handler_app
+ public InputBooleanEntity DevNetdaemonNetDaemonAppsAppsCallServiceEventHandlerApp => new(_haContext, "input_boolean.dev_netdaemon_net_daemon_apps_apps_call_service_event_handler_app");
+ ///dev_netdaemon_net_daemon_apps_apps_persistance_handler_app
+ public InputBooleanEntity DevNetdaemonNetDaemonAppsAppsPersistanceHandlerApp => new(_haContext, "input_boolean.dev_netdaemon_net_daemon_apps_apps_persistance_handler_app");
+ ///dev_netdaemon_net_daemon_apps_apps_scheduler
+ public InputBooleanEntity DevNetdaemonNetDaemonAppsAppsScheduler => new(_haContext, "input_boolean.dev_netdaemon_net_daemon_apps_apps_scheduler");
+ ///netdaemon_net_daemon_apps_apps_call_service_event_handler_app
+ public InputBooleanEntity NetdaemonNetDaemonAppsAppsCallServiceEventHandlerApp => new(_haContext, "input_boolean.netdaemon_net_daemon_apps_apps_call_service_event_handler_app");
+ ///netdaemon_net_daemon_apps_apps_deconz_event_handler_app
+ public InputBooleanEntity NetdaemonNetDaemonAppsAppsDeconzEventHandlerApp => new(_haContext, "input_boolean.netdaemon_net_daemon_apps_apps_deconz_event_handler_app");
+ ///netdaemon_net_daemon_apps_apps_notify_handler_app
+ public InputBooleanEntity NetdaemonNetDaemonAppsAppsNotifyHandlerApp => new(_haContext, "input_boolean.netdaemon_net_daemon_apps_apps_notify_handler_app");
+ ///netdaemon_net_daemon_apps_apps_persistance_handler_app
+ public InputBooleanEntity NetdaemonNetDaemonAppsAppsPersistanceHandlerApp => new(_haContext, "input_boolean.netdaemon_net_daemon_apps_apps_persistance_handler_app");
+}
+
+public partial class LightEntities
+{
+ private readonly IHaContext _haContext;
+ public LightEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///deengzb002dg-st-mx Light
+ public LightEntity Deengzb002dgStMxLight => new(_haContext, "light.deengzb002dg_st_mx_light");
+ ///deengzb002dg-st-mx Light
+ public LightEntity Deengzb002dgStMxLight2 => new(_haContext, "light.deengzb002dg_st_mx_light_2");
+ ///deengzb002dg-st-mx Light
+ public LightEntity Deengzb002dgStMxLight3 => new(_haContext, "light.deengzb002dg_st_mx_light_3");
+ ///deengzb002dg-st-mx Light
+ public LightEntity Deengzb002dgStMxLight4 => new(_haContext, "light.deengzb002dg_st_mx_light_4");
+ ///deengzb002dg-st-mx Light
+ public LightEntity Deengzb002dgStMxLight5 => new(_haContext, "light.deengzb002dg_st_mx_light_5");
+}
+
+public partial class MediaPlayerEntities
+{
+ private readonly IHaContext _haContext;
+ public MediaPlayerEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///deengir001
+ public MediaPlayerEntity Deengir001 => new(_haContext, "media_player.deengir001");
+ ///deengir001
+ public MediaPlayerEntity Deengir0012 => new(_haContext, "media_player.deengir001_2");
+ ///deengir002
+ public MediaPlayerEntity Deengir002 => new(_haContext, "media_player.deengir002");
+ ///deengir002
+ public MediaPlayerEntity Deengir0022 => new(_haContext, "media_player.deengir002_2");
+ ///deengsd001
+ public MediaPlayerEntity Deengsd001 => new(_haContext, "media_player.deengsd001");
+ ///VLC-TELNET
+ public MediaPlayerEntity VlcTelnet => new(_haContext, "media_player.vlc_telnet");
+}
+
+public partial class PersonEntities
+{
+ private readonly IHaContext _haContext;
+ public PersonEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///admin
+ public PersonEntity Admin => new(_haContext, "person.admin");
+ ///mqtt-user
+ public PersonEntity MqttUser => new(_haContext, "person.mqtt_user");
+ ///Stephan Maier
+ public PersonEntity StephanMaier => new(_haContext, "person.stephan_maier");
+}
+
+public partial class SelectEntities
+{
+ private readonly IHaContext _haContext;
+ public SelectEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///deengzb002dg-st-mx Start-up behavior
+ public SelectEntity Deengzb002dgStMxStartUpBehavior => new(_haContext, "select.deengzb002dg_st_mx_start_up_behavior");
+ ///deengzb002dg-st-mx Start-up behavior
+ public SelectEntity Deengzb002dgStMxStartUpBehavior2 => new(_haContext, "select.deengzb002dg_st_mx_start_up_behavior_2");
+ ///deengzb002dg-st-mx Start-up behavior
+ public SelectEntity Deengzb002dgStMxStartUpBehavior3 => new(_haContext, "select.deengzb002dg_st_mx_start_up_behavior_3");
+ ///deengzb002dg-st-mx Start-up behavior
+ public SelectEntity Deengzb002dgStMxStartUpBehavior4 => new(_haContext, "select.deengzb002dg_st_mx_start_up_behavior_4");
+ ///deengzb002dg-st-mx Start-up behavior
+ public SelectEntity Deengzb002dgStMxStartUpBehavior5 => new(_haContext, "select.deengzb002dg_st_mx_start_up_behavior_5");
+ ///_TZ3000_kdi2o9m6 TS011F Backlight mode
+ public SelectEntity Tz3000Kdi2o9m6Ts011fBacklightMode => new(_haContext, "select.tz3000_kdi2o9m6_ts011f_backlight_mode");
+ ///_TZ3000_kdi2o9m6 TS011F Power on state
+ public SelectEntity Tz3000Kdi2o9m6Ts011fPowerOnState => new(_haContext, "select.tz3000_kdi2o9m6_ts011f_power_on_state");
+}
+
+public partial class SensorEntities
+{
+ private readonly IHaContext _haContext;
+ public SensorEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///Canon TR4500 series
+ public SensorEntity CanonTr4500Series => new(_haContext, "sensor.canon_tr4500_series");
+ ///FB00-AM-LM Externe IP
+ public SensorEntity Deengfb001ExternalIp => new(_haContext, "sensor.deengfb001_external_ip");
+ ///deengph001 Battery state
+ public SensorEntity Deengph001BatteryState => new(_haContext, "sensor.deengph001_battery_state");
+ ///deengph001 Charger type
+ public SensorEntity Deengph001ChargerType => new(_haContext, "sensor.deengph001_charger_type");
+ ///deengph001 Next alarm
+ public SensorEntity Deengph001NextAlarm => new(_haContext, "sensor.deengph001_next_alarm");
+ ///deengph002 Battery State
+ public SensorEntity Deengph002BatteryState => new(_haContext, "sensor.deengph002_battery_state");
+ ///deengph002 Charger Type
+ public SensorEntity Deengph002ChargerType => new(_haContext, "sensor.deengph002_charger_type");
+ ///FB00-AM-LM Externe IP
+ public SensorEntity Fb00AmLmExterneIp => new(_haContext, "sensor.fb00_am_lm_externe_ip");
+ ///FB00-AM-LM Externe IPv6
+ public SensorEntity Fb00AmLmExterneIpv6 => new(_haContext, "sensor.fb00_am_lm_externe_ipv6");
+ ///FB00-AM-LM Letzter Neustart
+ public SensorEntity Fb00AmLmLetzterNeustart => new(_haContext, "sensor.fb00_am_lm_letzter_neustart");
+ ///FB00-AM-LM Verbindungsverfügbarkeit
+ public SensorEntity Fb00AmLmVerbindungsverfugbarkeit => new(_haContext, "sensor.fb00_am_lm_verbindungsverfugbarkeit");
+ ///Fritz!Box 7430 Call Monitor Deengtb100Stm
+ public SensorEntity FritzBox7430CallMonitorDeengtb100stm => new(_haContext, "sensor.fritz_box_7430_call_monitor_deengtb100stm");
+ ///Moon Phase
+ public SensorEntity MoonPhase => new(_haContext, "sensor.moon_phase");
+ ///Sun Nächste Morgendämmerung
+ public SensorEntity SunNextDawn => new(_haContext, "sensor.sun_next_dawn");
+ ///Sun Nächste Abenddämmerung
+ public SensorEntity SunNextDusk => new(_haContext, "sensor.sun_next_dusk");
+ ///Sun Nächste Mitternacht
+ public SensorEntity SunNextMidnight => new(_haContext, "sensor.sun_next_midnight");
+ ///Sun Nächsten Mittag
+ public SensorEntity SunNextNoon => new(_haContext, "sensor.sun_next_noon");
+ ///Sun Nächster Sonnenaufgang
+ public SensorEntity SunNextRising => new(_haContext, "sensor.sun_next_rising");
+ ///Sun Nächster Sonnenuntergang
+ public SensorEntity SunNextSetting => new(_haContext, "sensor.sun_next_setting");
+ ///deengzb002dg-st-mx LQI
+ public SensorEntity Tz3000Cfnprab5Ts011fLqi => new(_haContext, "sensor.tz3000_cfnprab5_ts011f_lqi");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Accm80317e877768cd21577bGeschatzteEntfernung => new(_haContext, "sensor.accm80317e877768cd21_577b_geschatzte_entfernung");
+ ///Canon TR4500 series Black
+ public NumericSensorEntity CanonTr4500SeriesBlack => new(_haContext, "sensor.canon_tr4500_series_black");
+ ///Canon TR4500 series Color
+ public NumericSensorEntity CanonTr4500SeriesColor => new(_haContext, "sensor.canon_tr4500_series_color");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Care6ee7GeschatzteEntfernung => new(_haContext, "sensor.care_6ee7_geschatzte_entfernung");
+ ///FB00-AM-LM Download-Geschwindigkeit
+ public NumericSensorEntity Deengfb001KibSReceived => new(_haContext, "sensor.deengfb001_kib_s_received");
+ ///FB00-AM-LM Upload-Geschwindigkeit
+ public NumericSensorEntity Deengfb001KibSSent => new(_haContext, "sensor.deengfb001_kib_s_sent");
+ ///deengph001 Battery level
+ public NumericSensorEntity Deengph001BatteryLevel => new(_haContext, "sensor.deengph001_battery_level");
+ ///deengph001 Battery temperature
+ public NumericSensorEntity Deengph001BatteryTemperature => new(_haContext, "sensor.deengph001_battery_temperature");
+ ///deengph002 Battery Level
+ public NumericSensorEntity Deengph002BatteryLevel => new(_haContext, "sensor.deengph002_battery_level");
+ ///deengph002 Battery Temperature
+ public NumericSensorEntity Deengph002BatteryTemperature => new(_haContext, "sensor.deengph002_battery_temperature");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp20Tovjt1951342ee4GeschatzteEntfernung => new(_haContext, "sensor.dp_2_0_tovjt195134_2ee4_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp20Tovjx225777016aGeschatzteEntfernung => new(_haContext, "sensor.dp_2_0_tovjx225777_016a_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp20Tovjx37709625cdGeschatzteEntfernung => new(_haContext, "sensor.dp_2_0_tovjx377096_25cd_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp20Tovjx503147Ab20GeschatzteEntfernung => new(_haContext, "sensor.dp_2_0_tovjx503147_ab20_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Togjy0244164639GeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_togjy024416_4639_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Togkx010618675aGeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_togkx010618_675a_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Togkx189047Cd97GeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_togkx189047_cd97_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Togkx197117382cGeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_togkx197117_382c_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Togky119454C3a5GeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_togky119454_c3a5_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Toglx117325528eGeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_toglx117325_528e_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Togly034829B86eGeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_togly034829_b86e_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Tognx012049E283GeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_tognx012049_e283_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Dp21Tormx105463A20bGeschatzteEntfernung => new(_haContext, "sensor.dp_2_1_tormx105463_a20b_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Drivedot2919235fGeschatzteEntfernung => new(_haContext, "sensor.drivedot_2919_235f_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Drivedot3372Ccf3GeschatzteEntfernung => new(_haContext, "sensor.drivedot_3372_ccf3_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Drivedot4319C4fbGeschatzteEntfernung => new(_haContext, "sensor.drivedot_4319_c4fb_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Drivedot6574D1efGeschatzteEntfernung => new(_haContext, "sensor.drivedot_6574_d1ef_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Drivedot9703Afa8GeschatzteEntfernung => new(_haContext, "sensor.drivedot_9703_afa8_geschatzte_entfernung");
+ ///FB00-AM-LM Download-Durchsatz
+ public NumericSensorEntity Fb00AmLmDownloadDurchsatz => new(_haContext, "sensor.fb00_am_lm_download_durchsatz");
+ ///FB00-AM-LM GB empfangen
+ public NumericSensorEntity Fb00AmLmGbEmpfangen => new(_haContext, "sensor.fb00_am_lm_gb_empfangen");
+ ///FB00-AM-LM GB gesendet
+ public NumericSensorEntity Fb00AmLmGbGesendet => new(_haContext, "sensor.fb00_am_lm_gb_gesendet");
+ ///FB00-AM-LM Link-Download-Durchsatz
+ public NumericSensorEntity Fb00AmLmLinkDownloadDurchsatz => new(_haContext, "sensor.fb00_am_lm_link_download_durchsatz");
+ ///FB00-AM-LM Link-Download-Leistungsdämpfung
+ public NumericSensorEntity Fb00AmLmLinkDownloadLeistungsdampfung => new(_haContext, "sensor.fb00_am_lm_link_download_leistungsdampfung");
+ ///FB00-AM-LM Link-Upload-Durchsatz
+ public NumericSensorEntity Fb00AmLmLinkUploadDurchsatz => new(_haContext, "sensor.fb00_am_lm_link_upload_durchsatz");
+ ///FB00-AM-LM Link-Upload-Leistungsdämpfung
+ public NumericSensorEntity Fb00AmLmLinkUploadLeistungsdampfung => new(_haContext, "sensor.fb00_am_lm_link_upload_leistungsdampfung");
+ ///FB00-AM-LM Maximaler Download-Durchsatz der Verbindung
+ public NumericSensorEntity Fb00AmLmMaximalerDownloadDurchsatzDerVerbindung => new(_haContext, "sensor.fb00_am_lm_maximaler_download_durchsatz_der_verbindung");
+ ///FB00-AM-LM Maximaler Upload-Durchsatz der Verbindung
+ public NumericSensorEntity Fb00AmLmMaximalerUploadDurchsatzDerVerbindung => new(_haContext, "sensor.fb00_am_lm_maximaler_upload_durchsatz_der_verbindung");
+ ///FB00-AM-LM Rauschabstand zum Link-Download
+ public NumericSensorEntity Fb00AmLmRauschabstandZumLinkDownload => new(_haContext, "sensor.fb00_am_lm_rauschabstand_zum_link_download");
+ ///FB00-AM-LM Rauschabstand zum Link-Upload
+ public NumericSensorEntity Fb00AmLmRauschabstandZumLinkUpload => new(_haContext, "sensor.fb00_am_lm_rauschabstand_zum_link_upload");
+ ///FB00-AM-LM Upload-Durchsatz
+ public NumericSensorEntity Fb00AmLmUploadDurchsatz => new(_haContext, "sensor.fb00_am_lm_upload_durchsatz");
+ ///hacs
+ public NumericSensorEntity Hacs => new(_haContext, "sensor.hacs");
+ ///FB00-AM-LM Download-Geschwindigkeit
+ public NumericSensorEntity Internetgatewaydevicev2Deengfb001KibSReceived => new(_haContext, "sensor.internetgatewaydevicev2_deengfb001_kib_s_received");
+ ///FB00-AM-LM Upload-Geschwindigkeit
+ public NumericSensorEntity Internetgatewaydevicev2Deengfb001KibSSent => new(_haContext, "sensor.internetgatewaydevicev2_deengfb001_kib_s_sent");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Ooono3e7dGeschatzteEntfernung => new(_haContext, "sensor.ooono_3e7d_geschatzte_entfernung");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Ooono80b1GeschatzteEntfernung => new(_haContext, "sensor.ooono_80b1_geschatzte_entfernung");
+ ///Sun Azimut
+ public NumericSensorEntity SunSolarAzimuth => new(_haContext, "sensor.sun_solar_azimuth");
+ ///Sun Sonnenhöhe
+ public NumericSensorEntity SunSolarElevation => new(_haContext, "sensor.sun_solar_elevation");
+ ///deengzb002dg-st-mx RSSI
+ public NumericSensorEntity Tz3000Cfnprab5Ts011fRssi => new(_haContext, "sensor.tz3000_cfnprab5_ts011f_rssi");
+ ///Geschätzte Entfernung
+ public NumericSensorEntity Wsbc004011516t9fdcGeschatzteEntfernung => new(_haContext, "sensor.wsbc004011516t_9fdc_geschatzte_entfernung");
+}
+
+public partial class SunEntities
+{
+ private readonly IHaContext _haContext;
+ public SunEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///Sun
+ public SunEntity Sun => new(_haContext, "sun.sun");
+}
+
+public partial class SwitchEntities
+{
+ private readonly IHaContext _haContext;
+ public SwitchEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///deengph002 Internet Access
+ public SwitchEntity Android217ffb982e982cf9InternetAccess => new(_haContext, "switch.android_217ffb982e982cf9_internet_access");
+ ///android-792e9092fe50e529 Internet Access
+ public SwitchEntity Android792e9092fe50e529InternetAccess => new(_haContext, "switch.android_792e9092fe50e529_internet_access");
+ ///deengap001 Internet Access
+ public SwitchEntity Deengap001dnsInternetAccess => new(_haContext, "switch.deengap001dns_internet_access");
+ ///deengha001 Internet Access
+ public SwitchEntity Deengha001InternetAccess => new(_haContext, "switch.deengha001_internet_access");
+ ///deengna001 Internet Access
+ public SwitchEntity Deengna001InternetAccess => new(_haContext, "switch.deengna001_internet_access");
+ ///deengna002 Internet Access
+ public SwitchEntity Deengna002InternetAccess => new(_haContext, "switch.deengna002_internet_access");
+ ///deengna002 Internet Access
+ public SwitchEntity Deengna002InternetAccess2 => new(_haContext, "switch.deengna002_internet_access_2");
+ ///deengna003 Internet Access
+ public SwitchEntity Deengna003InternetAccess => new(_haContext, "switch.deengna003_internet_access");
+ ///deengna003 Internet Access
+ public SwitchEntity Deengna003InternetAccess2 => new(_haContext, "switch.deengna003_internet_access_2");
+ ///deengna004 Internet Access
+ public SwitchEntity Deengna004InternetAccess => new(_haContext, "switch.deengna004_internet_access");
+ ///deengna004 Internet Access
+ public SwitchEntity Deengna004InternetAccess2 => new(_haContext, "switch.deengna004_internet_access_2");
+ ///deengnb001 Internet Access
+ public SwitchEntity Deengnb001stmInternetAccess => new(_haContext, "switch.deengnb001stm_internet_access");
+ ///deengnb001 Internet Access
+ public SwitchEntity Deengnb001stmInternetAccess2 => new(_haContext, "switch.deengnb001stm_internet_access_2");
+ ///deengnb003lm Internet Access
+ public SwitchEntity Deengnb003lmInternetAccess => new(_haContext, "switch.deengnb003lm_internet_access");
+ ///deengns001 Internet Access
+ public SwitchEntity Deengns001InternetAccess => new(_haContext, "switch.deengns001_internet_access");
+ ///deengns002 Internet Access
+ public SwitchEntity Deengns002InternetAccess => new(_haContext, "switch.deengns002_internet_access");
+ ///deengpc001 Internet Access
+ public SwitchEntity Deengpc001InternetAccess => new(_haContext, "switch.deengpc001_internet_access");
+ ///deengpc001 Internet Access
+ public SwitchEntity Deengpc001InternetAccess2 => new(_haContext, "switch.deengpc001_internet_access_2");
+ ///deengpc002 Internet Access
+ public SwitchEntity Deengpc002InternetAccess => new(_haContext, "switch.deengpc002_internet_access");
+ ///deengpr001 Internet Access
+ public SwitchEntity Deengpr001InternetAccess => new(_haContext, "switch.deengpr001_internet_access");
+ ///deengir002 Internet Access
+ public SwitchEntity Deengrs001amlnInternetAccess => new(_haContext, "switch.deengrs001amln_internet_access");
+ ///deengsd001 Internet Access
+ public SwitchEntity Deengsd001InternetAccess => new(_haContext, "switch.deengsd001_internet_access");
+ ///deengir001 Internet Access
+ public SwitchEntity Deengsr002stmInternetAccess => new(_haContext, "switch.deengsr002stm_internet_access");
+ ///deengst001amlm Internet Access
+ public SwitchEntity Deengst001amlmInternetAccess => new(_haContext, "switch.deengst001amlm_internet_access");
+ ///deengtv001 Internet Access
+ public SwitchEntity Deengst002InternetAccess => new(_haContext, "switch.deengst002_internet_access");
+ ///deengws001 Internet Access
+ public SwitchEntity Deengws001InternetAccess => new(_haContext, "switch.deengws001_internet_access");
+ ///FB00-AM-LM Call deflection 0
+ public SwitchEntity Fb00AmLmCallDeflection0 => new(_haContext, "switch.fb00_am_lm_call_deflection_0");
+ ///FB00-AM-LM Call deflection 1
+ public SwitchEntity Fb00AmLmCallDeflection1 => new(_haContext, "switch.fb00_am_lm_call_deflection_1");
+ ///FB00-AM-LM Port forward 137-139
+ public SwitchEntity Fb00AmLmPortForward137139 => new(_haContext, "switch.fb00_am_lm_port_forward_137_139");
+ ///FB00-AM-LM Port forward 443
+ public SwitchEntity Fb00AmLmPortForward443 => new(_haContext, "switch.fb00_am_lm_port_forward_443");
+ ///FB00-AM-LM Port forward 445
+ public SwitchEntity Fb00AmLmPortForward445 => new(_haContext, "switch.fb00_am_lm_port_forward_445");
+ ///FB00-AM-LM Wi-Fi deengwl001
+ public SwitchEntity Fb00AmLmWiFiDeengwl001 => new(_haContext, "switch.fb00_am_lm_wi_fi_deengwl001");
+ ///FB00-AM-LM Wi-Fi FB00-AM-LM Gastzugang
+ public SwitchEntity Fb00AmLmWiFiFb00AmLmGastzugang => new(_haContext, "switch.fb00_am_lm_wi_fi_fb00_am_lm_gastzugang");
+ ///deengns002 Internet Access
+ public SwitchEntity Pc265eBeffFe1e20f7InternetAccess => new(_haContext, "switch.pc_265e_beff_fe1e_20f7_internet_access");
+ ///deengph001 Internet Access
+ public SwitchEntity RedmiNote9ProInternetAccess => new(_haContext, "switch.redmi_note_9_pro_internet_access");
+ ///stm
+ public SwitchEntity Stm => new(_haContext, "switch.stm");
+ ///_TZ3000_kdi2o9m6 TS011F Switch
+ public SwitchEntity Tz3000Kdi2o9m6Ts011fSwitch => new(_haContext, "switch.tz3000_kdi2o9m6_ts011f_switch");
+}
+
+public partial class UpdateEntities
+{
+ private readonly IHaContext _haContext;
+ public UpdateEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///Duck DNS Update
+ public UpdateEntity DuckDnsUpdate => new(_haContext, "update.duck_dns_update");
+ ///FB00-AM-LM FRITZ!OS
+ public UpdateEntity Fb00AmLmFritzOs => new(_haContext, "update.fb00_am_lm_fritz_os");
+ ///File editor Update
+ public UpdateEntity FileEditorUpdate => new(_haContext, "update.file_editor_update");
+ ///Google Assistant SDK Update
+ public UpdateEntity GoogleAssistantSdkUpdate => new(_haContext, "update.google_assistant_sdk_update");
+ ///Home Assistant Core Update
+ public UpdateEntity HomeAssistantCoreUpdate => new(_haContext, "update.home_assistant_core_update");
+ ///Home Assistant Operating System Update
+ public UpdateEntity HomeAssistantOperatingSystemUpdate => new(_haContext, "update.home_assistant_operating_system_update");
+ ///Home Assistant Supervisor Update
+ public UpdateEntity HomeAssistantSupervisorUpdate => new(_haContext, "update.home_assistant_supervisor_update");
+ ///NetDaemon V3.1 (.NET 7) Update
+ public UpdateEntity NetdaemonV31Net7Update => new(_haContext, "update.netdaemon_v3_1_net_7_update");
+ ///NGINX Home Assistant SSL proxy Update
+ public UpdateEntity NginxHomeAssistantSslProxyUpdate => new(_haContext, "update.nginx_home_assistant_ssl_proxy_update");
+ ///RPC Shutdown Update
+ public UpdateEntity RpcShutdownUpdate => new(_haContext, "update.rpc_shutdown_update");
+ ///Samba share Update
+ public UpdateEntity SambaShareUpdate => new(_haContext, "update.samba_share_update");
+ ///Studio Code Server Update
+ public UpdateEntity StudioCodeServerUpdate => new(_haContext, "update.studio_code_server_update");
+ ///Terminal & SSH Update
+ public UpdateEntity TerminalSshUpdate => new(_haContext, "update.terminal_ssh_update");
+ ///Vaultwarden (Bitwarden) Update
+ public UpdateEntity VaultwardenBitwardenUpdate => new(_haContext, "update.vaultwarden_bitwarden_update");
+ ///VLC Update
+ public UpdateEntity VlcUpdate => new(_haContext, "update.vlc_update");
+}
+
+public partial class WeatherEntities
+{
+ private readonly IHaContext _haContext;
+ public WeatherEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///Forecast Home
+ public WeatherEntity ForecastHome => new(_haContext, "weather.forecast_home");
+}
+
+public partial class ZoneEntities
+{
+ private readonly IHaContext _haContext;
+ public ZoneEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///Fondium
+ public ZoneEntity Fondium => new(_haContext, "zone.fondium");
+ ///Home
+ public ZoneEntity Home => new(_haContext, "zone.home");
+ ///Kletterwerk
+ public ZoneEntity Kletterwerk => new(_haContext, "zone.kletterwerk");
+}
+
+public partial class InputButtonEntities
+{
+ private readonly IHaContext _haContext;
+ public InputButtonEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///deengzb002dg-st-mx.btnOnOff
+ public InputButtonEntity Deengzb002dgStMxBtnonoff => new(_haContext, "input_button.deengzb002dg_st_mx_btnonoff");
+ ///deengzb002dg-st-mx.btnOnOff.TvPc
+ public InputButtonEntity Deengzb002dgStMxBtnonoffTvpc => new(_haContext, "input_button.deengzb002dg_st_mx_btnonoff_tvpc");
+ ///tmp
+ public InputButtonEntity Tmp => new(_haContext, "input_button.tmp");
+ ///tmp2
+ public InputButtonEntity Tmp2 => new(_haContext, "input_button.tmp2");
+ ///tmp3
+ public InputButtonEntity Tmp3 => new(_haContext, "input_button.tmp3");
+ ///tmp4
+ public InputButtonEntity Tmp4 => new(_haContext, "input_button.tmp4");
+ ///tmp5
+ public InputButtonEntity Tmp5 => new(_haContext, "input_button.tmp5");
+ ///tmp6
+ public InputButtonEntity Tmp6 => new(_haContext, "input_button.tmp6");
+}
+
+public partial class ImageEntities
+{
+ private readonly IHaContext _haContext;
+ public ImageEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///FB00-AM-LM FB00-AM-LM Gastzugang
+ public ImageEntity Fb00AmLmFb00AmLmGastzugang => new(_haContext, "image.fb00_am_lm_fb00_am_lm_gastzugang");
+}
+
+public partial class InputNumberEntities
+{
+ private readonly IHaContext _haContext;
+ public InputNumberEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///test_number
+ public InputNumberEntity TestNumber => new(_haContext, "input_number.test_number");
+}
+
+public partial class ScheduleEntities
+{
+ private readonly IHaContext _haContext;
+ public ScheduleEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///test
+ public ScheduleEntity Test => new(_haContext, "schedule.test");
+}
+
+public partial class InputDatetimeEntities
+{
+ private readonly IHaContext _haContext;
+ public InputDatetimeEntities(IHaContext haContext)
+ {
+ _haContext = haContext;
+ }
+
+ ///uhr
+ public InputDatetimeEntity Uhr => new(_haContext, "input_datetime.uhr");
+}
+
+public partial record BinarySensorEntity : Entity, BinarySensorAttributes>
+{
+ public BinarySensorEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public BinarySensorEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record BinarySensorAttributes
+{
+ [JsonPropertyName("device_class")]
+ public string? DeviceClass { get; init; }
+
+ [JsonPropertyName("icon")]
+ public string? Icon { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+
+ [JsonPropertyName("workdays")]
+ public IReadOnlyList? Workdays { get; init; }
+
+ [JsonPropertyName("excludes")]
+ public IReadOnlyList? Excludes { get; init; }
+
+ [JsonPropertyName("days_offset")]
+ public double? DaysOffset { get; init; }
+}
+
+public partial record ButtonEntity : Entity, ButtonAttributes>
+{
+ public ButtonEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public ButtonEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record ButtonAttributes
+{
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+
+ [JsonPropertyName("device_class")]
+ public string? DeviceClass { get; init; }
+
+ [JsonPropertyName("icon")]
+ public string? Icon { get; init; }
+}
+
+public partial record DeviceTrackerEntity : Entity, DeviceTrackerAttributes>
+{
+ public DeviceTrackerEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public DeviceTrackerEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record DeviceTrackerAttributes
+{
+ [JsonPropertyName("source_type")]
+ public string? SourceType { get; init; }
+
+ [JsonPropertyName("latitude")]
+ public double? Latitude { get; init; }
+
+ [JsonPropertyName("longitude")]
+ public double? Longitude { get; init; }
+
+ [JsonPropertyName("gps_accuracy")]
+ public double? GpsAccuracy { get; init; }
+
+ [JsonPropertyName("altitude")]
+ public double? Altitude { get; init; }
+
+ [JsonPropertyName("course")]
+ public double? Course { get; init; }
+
+ [JsonPropertyName("speed")]
+ public double? Speed { get; init; }
+
+ [JsonPropertyName("vertical_accuracy")]
+ public double? VerticalAccuracy { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+
+ [JsonPropertyName("ip")]
+ public string? Ip { get; init; }
+
+ [JsonPropertyName("mac")]
+ public string? Mac { get; init; }
+
+ [JsonPropertyName("host_name")]
+ public string? HostName { get; init; }
+
+ [JsonPropertyName("last_time_reachable")]
+ public string? LastTimeReachable { get; init; }
+
+ [JsonPropertyName("icon")]
+ public string? Icon { get; init; }
+
+ [JsonPropertyName("connected_to")]
+ public string? ConnectedTo { get; init; }
+
+ [JsonPropertyName("connection_type")]
+ public string? ConnectionType { get; init; }
+
+ [JsonPropertyName("ssid")]
+ public string? Ssid { get; init; }
+
+ [JsonPropertyName("restored")]
+ public bool? Restored { get; init; }
+
+ [JsonPropertyName("supported_features")]
+ public double? SupportedFeatures { get; init; }
+
+ [JsonPropertyName("uuid")]
+ public string? Uuid { get; init; }
+
+ [JsonPropertyName("major")]
+ public double? Major { get; init; }
+
+ [JsonPropertyName("minor")]
+ public double? Minor { get; init; }
+
+ [JsonPropertyName("source")]
+ public string? Source { get; init; }
+}
+
+public partial record InputBooleanEntity : Entity, InputBooleanAttributes>
+{
+ public InputBooleanEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public InputBooleanEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record InputBooleanAttributes
+{
+ [JsonPropertyName("editable")]
+ public bool? Editable { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+}
+
+public partial record LightEntity : Entity, LightAttributes>
+{
+ public LightEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public LightEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record LightAttributes
+{
+ [JsonPropertyName("supported_color_modes")]
+ public IReadOnlyList? SupportedColorModes { get; init; }
+
+ [JsonPropertyName("off_with_transition")]
+ public bool? OffWithTransition { get; init; }
+
+ [JsonPropertyName("off_brightness")]
+ public object? OffBrightness { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+
+ [JsonPropertyName("supported_features")]
+ public double? SupportedFeatures { get; init; }
+
+ [JsonPropertyName("color_mode")]
+ public string? ColorMode { get; init; }
+}
+
+public partial record MediaPlayerEntity : Entity, MediaPlayerAttributes>
+{
+ public MediaPlayerEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public MediaPlayerEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record MediaPlayerAttributes
+{
+ [JsonPropertyName("volume_level")]
+ public double? VolumeLevel { get; init; }
+
+ [JsonPropertyName("media_content_type")]
+ public string? MediaContentType { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+
+ [JsonPropertyName("supported_features")]
+ public double? SupportedFeatures { get; init; }
+
+ [JsonPropertyName("device_class")]
+ public string? DeviceClass { get; init; }
+
+ [JsonPropertyName("source_list")]
+ public IReadOnlyList? SourceList { get; init; }
+
+ [JsonPropertyName("sound_mode_list")]
+ public IReadOnlyList? SoundModeList { get; init; }
+
+ [JsonPropertyName("is_volume_muted")]
+ public bool? IsVolumeMuted { get; init; }
+
+ [JsonPropertyName("media_content_id")]
+ public string? MediaContentId { get; init; }
+
+ [JsonPropertyName("media_duration")]
+ public double? MediaDuration { get; init; }
+
+ [JsonPropertyName("media_position")]
+ public double? MediaPosition { get; init; }
+
+ [JsonPropertyName("media_position_updated_at")]
+ public string? MediaPositionUpdatedAt { get; init; }
+
+ [JsonPropertyName("media_track")]
+ public double? MediaTrack { get; init; }
+
+ [JsonPropertyName("shuffle")]
+ public bool? Shuffle { get; init; }
+
+ [JsonPropertyName("repeat")]
+ public string? Repeat { get; init; }
+}
+
+public partial record PersonEntity : Entity, PersonAttributes>
+{
+ public PersonEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public PersonEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record PersonAttributes
+{
+ [JsonPropertyName("editable")]
+ public bool? Editable { get; init; }
+
+ [JsonPropertyName("id")]
+ public string? Id { get; init; }
+
+ [JsonPropertyName("latitude")]
+ public double? Latitude { get; init; }
+
+ [JsonPropertyName("longitude")]
+ public double? Longitude { get; init; }
+
+ [JsonPropertyName("gps_accuracy")]
+ public double? GpsAccuracy { get; init; }
+
+ [JsonPropertyName("source")]
+ public string? Source { get; init; }
+
+ [JsonPropertyName("user_id")]
+ public string? UserId { get; init; }
+
+ [JsonPropertyName("device_trackers")]
+ public IReadOnlyList? DeviceTrackers { get; init; }
+
+ [JsonPropertyName("entity_picture")]
+ public string? EntityPicture { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+}
+
+public partial record SelectEntity : Entity, SelectAttributes>
+{
+ public SelectEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public SelectEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record SelectAttributes
+{
+ [JsonPropertyName("options")]
+ public IReadOnlyList? Options { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+}
+
+public partial record SensorEntity : Entity, SensorAttributes>
+{
+ public SensorEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public SensorEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record SensorAttributes
+{
+ [JsonPropertyName("device_class")]
+ public string? DeviceClass { get; init; }
+
+ [JsonPropertyName("icon")]
+ public string? Icon { get; init; }
+
+ [JsonPropertyName("friendly_name")]
+ public string? FriendlyName { get; init; }
+
+ [JsonPropertyName("options")]
+ public IReadOnlyList? Options { get; init; }
+
+ [JsonPropertyName("info")]
+ public string? Info { get; init; }
+
+ [JsonPropertyName("serial")]
+ public object? Serial { get; init; }
+
+ [JsonPropertyName("location")]
+ public string? Location { get; init; }
+
+ [JsonPropertyName("state_message")]
+ public object? StateMessage { get; init; }
+
+ [JsonPropertyName("state_reason")]
+ public object? StateReason { get; init; }
+
+ [JsonPropertyName("command_set")]
+ public string? CommandSet { get; init; }
+
+ [JsonPropertyName("uri_supported")]
+ public IReadOnlyList? UriSupported { get; init; }
+
+ [JsonPropertyName("state_class")]
+ public string? StateClass { get; init; }
+}
+
+public partial record NumericSensorEntity : NumericEntity, NumericSensorAttributes>
+{
+ public NumericSensorEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+ {
+ }
+
+ public NumericSensorEntity(Entity entity) : base(entity)
+ {
+ }
+}
+
+public partial record NumericSensorAttributes
+{
+ [JsonPropertyName("marker_high_level")]
+ public double? MarkerHighLevel { get; init; }
+
+ [JsonPropertyName("marker_low_level")]
+ public double? MarkerLowLevel { get; init; }
+
+ [JsonPropertyName("marker_type")]
+ public string? MarkerType { 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; }
+
+ [JsonPropertyName("device_class")]
+ public string? DeviceClass { get; init; }
+
+ [JsonPropertyName("state_class")]
+ public string? StateClass { get; init; }
+
+ [JsonPropertyName("repositories")]
+ public IReadOnlyList