Abraham.HomenetFramework
1.0.5
dotnet add package Abraham.HomenetFramework --version 1.0.5
NuGet\Install-Package Abraham.HomenetFramework -Version 1.0.5
<PackageReference Include="Abraham.HomenetFramework" Version="1.0.5" />
<PackageVersion Include="Abraham.HomenetFramework" Version="1.0.5" />
<PackageReference Include="Abraham.HomenetFramework" />
paket add Abraham.HomenetFramework --version 1.0.5
#r "nuget: Abraham.HomenetFramework, 1.0.5"
#:package Abraham.HomenetFramework@1.0.5
#addin nuget:?package=Abraham.HomenetFramework&version=1.0.5
#tool nuget:?package=Abraham.HomenetFramework&version=1.0.5
Abraham.HomenetFramework
OVERVIEW
Contains a collection of functions that I typically need for worker applications.
- Command line options parser
- Configuration file reader
- State file reader/writer
- Scheduler for background tasks
- NLog logger
- MQTT client
- Client for my personal home automation server
CREDITS
LICENSE
Licensed under Apache licence. https://www.apache.org/licenses/LICENSE-2.0
Compatibility
The nuget package was build with DotNET 6.
INSTALLATION
Install the Nuget package "Abraham.HomenetFramework" into your application (from https://www.nuget.org). Take my demo project as a template for your application.
The following code should only give an idea how to use it.
using Abraham.HomenetFramework;
public static void Main(string[] args)
{
F.ParseCommandLineArguments();
F.ReadConfiguration(F.CommandLineArguments.ConfigurationFile);
F.ValidateConfiguration();
F.InitLogger(F.CommandLineArguments.NlogConfigurationFile);
PrintGreeting();
HealthChecks();
F.ReadStateFile(F.CommandLineArguments.StateFile);
F.StartBackgroundWorker(MyBackgroundWorker, F.Config.IntervalInSeconds);
DomainLogic();
F.Logger.Debug($"Press any key to end the application.");
Console.ReadKey();
F.StopBackgroundJob();
F.SaveStateFile(F.CommandLineArguments.StateFile);
}
DEMO APPLICATION
My demo will
read options from command line
read a state file containing a counter fale and save the current value when the app ends
log output to a log file which is rotated every monday at midnight. Watch the log file FrameworkDemo.log in your bin folder. Logging is widely configurable, see NLog documentation for details
install a background job that increments the counter by one every second (just as a demo)
watch the counter continue when you start the app the second time.
HOW TO INSTALL A NUGET PACKAGE
This is very simple:
- Start Visual Studio (with NuGet installed)
- Right-click on your project's References and choose "Manage NuGet Packages..."
- Choose Online category from the left
- Enter the name of the nuget package to the top right search and hit enter
- Choose your package from search results and hit install
- Done!
or from NuGet Command-Line:
Install-Package Abraham.HomenetFramework
AUTHOR
Oliver Abraham, mail@oliver-abraham.de, https://www.oliver-abraham.de
Please feel free to comment and suggest improvements!
SOURCE CODE
The source code is hosted at:
https://github.com/OliverAbraham/Abraham.HomenetFramework
The Nuget Package is hosted at:
https://www.nuget.org/packages/Abraham.HomenetFramework
SCREENSHOTS
MAKE A DONATION !
If you find this application useful, buy me a coffee! I would appreciate a small donation on https://www.buymeacoffee.com/oliverabraham
<a href="https://www.buymeacoffee.com/app/oliverabraham" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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 was computed. 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. |
-
net6.0
- Abraham.MQTTClient (>= 1.0.13)
- Abraham.ProgramSettingsManager (>= 1.0.4)
- Abraham.Scheduler (>= 1.0.5)
- CommandLineParser (>= 2.9.1)
- Newtonsoft.Json (>= 13.0.4)
- NLog (>= 6.0.7)
- NLog.Web.AspNetCore (>= 6.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Updated to MQTT client 1.0.13