This commit is contained in:
fuenmao
2026-10-09 16:46:30 +08:00
parent 4a634ef4c2
commit e6b90a06ab
63 changed files with 4170 additions and 1518 deletions
@@ -1,4 +1,5 @@
using System.Text.Json;
using System.Globalization;
using System.Text.Json.Serialization;
namespace Evergreen.Health.Application.Health.Integrations.HomeAssistant;
@@ -17,17 +18,20 @@ public sealed class HomeAssistantState
[JsonPropertyName("last_updated")]
public DateTimeOffset? LastUpdated { get; set; }
[JsonPropertyName("last_reported")]
public DateTimeOffset? LastReported { get; set; }
public string? GetStringAttribute(string name)
{
if (!Attributes.TryGetProperty(name, out var value)) return null;
if (Attributes.ValueKind != JsonValueKind.Object || !Attributes.TryGetProperty(name, out var value)) return null;
return value.ValueKind == JsonValueKind.String ? value.GetString() : value.ToString();
}
public double? GetDoubleAttribute(string name)
{
if (!Attributes.TryGetProperty(name, out var value)) return null;
if (value.ValueKind == JsonValueKind.Number && value.TryGetDouble(out var d)) return d;
if (double.TryParse(value.ToString(), out var parsed)) return parsed;
if (Attributes.ValueKind != JsonValueKind.Object || !Attributes.TryGetProperty(name, out var value)) return null;
if (value.ValueKind == JsonValueKind.Number && value.TryGetDouble(out var d) && double.IsFinite(d)) return d;
if (double.TryParse(value.ToString(), NumberStyles.Float, CultureInfo.InvariantCulture, out var parsed) && double.IsFinite(parsed)) return parsed;
return null;
}
}
@@ -54,6 +58,9 @@ public sealed class HomeAssistantDeviceRegistryItem
[JsonPropertyName("disabled_by")]
public string? DisabledBy { get; set; }
[JsonPropertyName("entry_type")]
public string? EntryType { get; set; }
}
public sealed class HomeAssistantEntityRegistryItem