Skip to content

ThinkingHome.DeviceModel.Remoting.ProxyServer

ThinkingHome.DeviceModel.Remoting.ProxyServer

RemoteHost Class

Прокси-сторона одного домашнего хоста: реализует IDeviceHost, но вызовы уходят по SignalR текущему соединению этого hostId. connectionId резолвится на каждый вызов (переживает реконнект). Discovery — pull + кэш (сбрасывается при (ре)коннекте). Живёт в реестре и после разрыва, чтобы подписки бриджа на Changed переживали реконнект.

csharp
public sealed class RemoteHost : ThinkingHome.DeviceModel.IDeviceHost

Inheritance System.Object → RemoteHost

Implements IDeviceHost

Constructors

RemoteHost(string, IHubContext<DeviceHub>) Constructor

Прокси-сторона одного домашнего хоста: реализует IDeviceHost, но вызовы уходят по SignalR текущему соединению этого hostId. connectionId резолвится на каждый вызов (переживает реконнект). Discovery — pull + кэш (сбрасывается при (ре)коннекте). Живёт в реестре и после разрыва, чтобы подписки бриджа на Changed переживали реконнект.

csharp
public RemoteHost(string hostId, Microsoft.AspNetCore.SignalR.IHubContext<ThinkingHome.DeviceModel.Remoting.ProxyServer.DeviceHub> hub);

Parameters

hostId System.String

hub Microsoft.AspNetCore.SignalR.IHubContext<DeviceHub>

Properties

RemoteHost.HostId Property

Идентификатор домашнего хоста.

csharp
public string HostId { get; }

Property Value

System.String

RemoteHost.IsOnline Property

Есть ли живое соединение с хостом прямо сейчас.

csharp
public bool IsOnline { get; }

Property Value

System.Boolean

Methods

RemoteHost.ExecuteAsync(string, DeviceCommand, CancellationToken) Method

Исполнить команду над устройством (execute).

csharp
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.CommandOutcome> ExecuteAsync(string deviceId, ThinkingHome.DeviceModel.Commands.DeviceCommand command, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));

Parameters

deviceId System.String

command DeviceCommand

ct System.Threading.CancellationToken

Implements ExecuteAsync(string, DeviceCommand, CancellationToken)

Returns

System.Threading.Tasks.Task<CommandOutcome>

RemoteHost.GenerateLinkingOtpAsync(CancellationToken) Method

Привязка: попросить хост сгенерировать и доставить OTP.

csharp
public System.Threading.Tasks.Task GenerateLinkingOtpAsync(System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));

Parameters

ct System.Threading.CancellationToken

Returns

System.Threading.Tasks.Task

RemoteHost.GetDeviceAsync(string, CancellationToken) Method

Описание одного устройства или null, если его нет.

csharp
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.DeviceDescriptor?> GetDeviceAsync(string deviceId, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));

Parameters

deviceId System.String

ct System.Threading.CancellationToken

Implements GetDeviceAsync(string, CancellationToken)

Returns

System.Threading.Tasks.Task<DeviceDescriptor>

RemoteHost.GetDevicesAsync(CancellationToken) Method

Все зарегистрированные устройства (discovery). Async — может уходить по сети (remote host).

csharp
public System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<ThinkingHome.DeviceModel.DeviceDescriptor>> GetDevicesAsync(System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));

Parameters

ct System.Threading.CancellationToken

Implements GetDevicesAsync(CancellationToken)

Returns

System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<DeviceDescriptor>>

RemoteHost.QueryAsync(string, CancellationToken) Method

Опросить состояние устройства (query).

csharp
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.State.DeviceSnapshot> QueryAsync(string deviceId, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));

Parameters

deviceId System.String

ct System.Threading.CancellationToken

Implements QueryAsync(string, CancellationToken)

Returns

System.Threading.Tasks.Task<DeviceSnapshot>

RemoteHost.ValidateLinkingOtpAsync(string, CancellationToken) Method

Привязка: проверить OTP на хосте.

csharp
public System.Threading.Tasks.Task<bool> ValidateLinkingOtpAsync(string otp, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));

Parameters

otp System.String

ct System.Threading.CancellationToken

Returns

System.Threading.Tasks.Task<System.Boolean>

Events

RemoteHost.Changed Event

Агрегированный поток изменений состояния всех устройств (report).

csharp
public event Action<StateChange>? Changed;

Implements Changed

Event Type

System.Action<StateChange>

Опубликовано под лицензией MIT