SmartHome.SDK.Fibaro
0.3.1
dotnet add package SmartHome.SDK.Fibaro --version 0.3.1
NuGet\Install-Package SmartHome.SDK.Fibaro -Version 0.3.1
<PackageReference Include="SmartHome.SDK.Fibaro" Version="0.3.1" />
<PackageVersion Include="SmartHome.SDK.Fibaro" Version="0.3.1" />
<PackageReference Include="SmartHome.SDK.Fibaro" />
paket add SmartHome.SDK.Fibaro --version 0.3.1
#r "nuget: SmartHome.SDK.Fibaro, 0.3.1"
#:package SmartHome.SDK.Fibaro@0.3.1
#addin nuget:?package=SmartHome.SDK.Fibaro&version=0.3.1
#tool nuget:?package=SmartHome.SDK.Fibaro&version=0.3.1
SmartHome.SDK.Fibaro
A lightweight .NET client SDK for Fibaro/Home Center REST API.
Install
NuGet package name: SmartHome.SDK.Fibaro
Install-Package SmartHome.SDK.Fibaro
Quickstart
using Microsoft.Extensions.DependencyInjection;
using SmartHome.SDK.Fibaro.Interfaces;
using SmartHome.SDK.Fibaro.Services;
var services = new ServiceCollection();
// Basic auth (recommended for Fibaro/Home Center)
services.AddFibaroClient(o =>
{
o.BaseAddress = new Uri("https://your-home-center/api/");
o.Username = "apiuser";
o.Password = "apipass";
});
var provider = services.BuildServiceProvider();
var client = provider.GetRequiredService<IFibaroClient>();
var devices = await client.GetDevicesAsync();
await client.ExecuteActionAsync(123, "turnOn");
Device actions (Basic auth)
- Execute an action from code (turnOn, setValue): see
docs/usage-examples.md
. - Run an action from the console example using env vars: see
docs/try-it.md
.
Safer ExecuteAction
Use the overload that maps directly to the Fibaro payload (DeviceActionArgumentsDto):
// { args: [50], integrationPin?: string, delay?: number }
await client.ExecuteActionAsync(123, "setValue", new object?[] { 50 });
// With PIN and delay:
await client.ExecuteActionAsync(123, "setValue", new object?[] { 50 }, integrationPin: "1234", delaySeconds: 30);
Details: see docs/usage-examples.md
and docs/endpoints.md
notes.
Features
- HttpClient-based, DI-friendly typed client
- Authentication: Bearer token or Basic
- Error handling with
FibaroApiException
(status code + payload) - Models mapped with
System.Text.Json
API Surface
Task<IReadOnlyList<Device>> GetDevicesAsync(CancellationToken ct = default)
Task<Device?> GetDeviceAsync(int deviceId, CancellationToken ct = default)
Task ExecuteActionAsync(int deviceId, string action, object? parameters = null, CancellationToken ct = default)
Task DeleteDeviceAsync(int deviceId, CancellationToken ct = default)
Task<IReadOnlyList<Device>> FilterDevicesAsync(DeviceListFiltersDto filters, CancellationToken ct = default)
Task<Device> UpdateDeviceAsync(int deviceId, Device device, CancellationToken ct = default)
Task ExecuteGroupActionAsync(string actionName, GroupActionArguments args, CancellationToken ct = default)
Task AddInterfacesToDevicesAsync(DevicesInterfacesDto request, CancellationToken ct = default)
Task DeleteInterfacesFromDevicesAsync(DevicesInterfacesDto request, CancellationToken ct = default)
Task<Device> AddPollingInterfaceAsync(int deviceId, CancellationToken ct = default)
Task<Device> DeletePollingInterfaceAsync(int deviceId, CancellationToken ct = default)
Task DeleteDelayedActionAsync(long timestamp, int id, CancellationToken ct = default)
Task ExecuteActionOnSlaveAsync(string slaveUuid, int deviceId, string action, object? parameters = null, CancellationToken ct = default)
Task DeleteDeviceOnSlaveAsync(string slaveUuid, int deviceId, CancellationToken ct = default)
Task<DeviceTypeHierarchy> GetDevicesHierarchyAsync(CancellationToken ct = default)
Task<IReadOnlyList<DeviceInfoDto>> GetUiDeviceInfoAsync(UiDeviceInfoQuery? query = null, CancellationToken ct = default)
Scenes:
Task<IReadOnlyList<SceneDto>> GetScenesAsync(bool? alexaProhibited = null, CancellationToken ct = default)
Task<SceneDto?> GetSceneAsync(int sceneId, bool? alexaProhibited = null, CancellationToken ct = default)
Task<CreateSceneResponse> CreateSceneAsync(CreateSceneRequest request, CancellationToken ct = default)
Task UpdateSceneAsync(int sceneId, UpdateSceneRequest request, CancellationToken ct = default)
Task DeleteSceneAsync(int sceneId, CancellationToken ct = default)
Task ExecuteSceneAsync(int sceneId, ExecuteSceneRequest? request = null, string? pin = null, CancellationToken ct = default)
Task ExecuteSceneSyncAsync(int sceneId, ExecuteSceneRequest? request = null, string? pin = null, CancellationToken ct = default)
Task<SceneDto> ConvertSceneAsync(int sceneId, CancellationToken ct = default)
Task<SceneDto> CopySceneAsync(int sceneId, CancellationToken ct = default)
Task<SceneDto> CopyAndConvertSceneAsync(int sceneId, CancellationToken ct = default)
Task KillSceneAsync(int sceneId, string? pin = null, CancellationToken ct = default)
Task<IReadOnlyList<SceneDto>> FilterScenesByTriggersAsync(FilterSceneRequest filters, CancellationToken ct = default)
History Events:
Task<IReadOnlyList<HistoryEventDto>> GetHistoryEventsAsync(HistoryEventsQuery? query = null, CancellationToken ct = default)
Task DeleteHistoryEventsAsync(DeleteHistoryQuery? query = null, CancellationToken ct = default)
Testing
Project includes xUnit + Moq tests. To run:
# From repo root
Dotnet restore
Dotnet build -c Release
Dotnet test .\tests\SmartHome.SDK.Fibaro.Tests\SmartHome.SDK.Fibaro.Tests.csproj -c Release
Packaging
Pack the library (README and XML docs included):
Dotnet pack .\SmartHome.SDK.Fibaro.csproj -c Release
CI/CD
This repo includes a GitHub Actions workflow to build/test on push and publish on version tags. Configure the secret NUGET_API_KEY
in your repository settings.
Documentation
See the docs/
folder:
docs/getting-started.md
– install and first requestdocs/authentication.md
– Basic and Bearer setupdocs/endpoints.md
– full API surfacedocs/scenes.md
– guide for Scenesdocs/usage-examples.md
– cookbookdocs/error-handling.md
– FibaroApiException and patternsdocs/testing-and-ci.md
– tests and CIdocs/troubleshooting.md
– common issuesdocs/versioning.md
– release processdocs/try-it.md
– quick run example
License
MIT
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Http (>= 9.0.0)
-
net8.0
- Microsoft.Extensions.Http (>= 9.0.0)
-
net9.0
- Microsoft.Extensions.Http (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v0.3.1: History Events API (GET /events/history with filters, DELETE /events/history with shrink/timestamp), models, docs and tests. v0.3.0: Scenes API support (list/get/create/update/delete, execute/executeSync with PIN header, convert/copy/copyAndConvert, kill, filter by triggers); docs (getting-started, endpoints, scenes) and tests. v0.2.4: Safer ExecuteAction overload (args[], integrationPin?, delay?) + docs/README updates. v0.2.3: Device typed property accessors (TryGetProperty/GetPropertyOrDefault) and full /devices/{id} payload mapping. v0.2.2: Documentation updates (README tweaks, examples). v0.2.1: Documentation polish (Basic-auth action examples, console env-var action run), README links. v0.2.0: Devices API coverage (filter, update, delete, actions, group, delayed, interfaces, polling, slave proxy, hierarchy, uiDeviceInfo); viewVersion overloads; docs and tests.