Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
913cd0b
Refactor project and build configuration: remove nuke files, introduc…
darthsharp Apr 17, 2026
84982e2
Merge from main.
darthsharp Apr 17, 2026
e8fd3e7
Refactor `MqttValuePublisher` to use `ReadOnlySequence` for payloads;…
darthsharp Apr 17, 2026
285c8f7
Update test package versions and fix balance value sign logic in `Sml…
darthsharp Apr 17, 2026
fd44461
Refactor `SmartMeterServer` constructor to leverage parameterized pro…
darthsharp Apr 17, 2026
1745719
Add SmartMeter CLI project with reactive data producer and basic CLI …
darthsharp Apr 17, 2026
11a848e
Add debug logging for serial port data reception in `SmartMeterDataPr…
darthsharp Apr 17, 2026
16302cc
Add CRC-16/X-25 implementation, SML message framing, parsing, and uni…
darthsharp Apr 18, 2026
87836e1
Refactor `SmartMeterReactiveDataPipeline` to use `Subject` for reacti…
darthsharp Apr 18, 2026
f3aceb8
Add `SmartMeterOptions` to inject configurable energy offsets and ref…
darthsharp Apr 18, 2026
97533b2
Adjust logging levels in SmlMessageDetectorLoggingTests and SmlParser…
darthsharp Apr 18, 2026
8635746
Refactor exception logging and initialization logic, and improve canc…
darthsharp Apr 18, 2026
daafd8d
Refactor `SmartMeterDataProducer` to implement `IDisposable`, improve…
darthsharp Apr 18, 2026
d90c964
Move SmartMeter-related classes to `SmlData` namespace for clearer or…
darthsharp Apr 18, 2026
38f7f1a
Extract unlock functionality into `ISmartMeterUnlocker` and `SmartMet…
darthsharp Apr 18, 2026
fc59f32
Refactor `SmlValueType` to `SmlMessageValueType` for improved clarity…
darthsharp Apr 18, 2026
f1dd914
Move `ValueHistory`-related classes to `History` namespace for better…
darthsharp Apr 18, 2026
5fdd0d6
Remove obsolete SML-related classes (`ISmlValueReader`, `SmlDataReade…
darthsharp Apr 18, 2026
0b7e151
Migrate SML-related components from `CreativeCoders.SmartMeter.Sml` t…
darthsharp Apr 18, 2026
d2e68c2
Refactor `SmartMeterReactiveDataPipeline` to handle observer completi…
darthsharp Apr 19, 2026
79cb11d
Add unit tests for SmartMeter core, server, and data processing compo…
darthsharp Apr 19, 2026
d8c77b6
Dispose resources properly in `MqttValuePublisher` and update related…
darthsharp Apr 19, 2026
641c3e8
Introduce Cake build system and GitHub Actions workflows; add `BuildC…
darthsharp Apr 19, 2026
cb4e0ef
Rename `HomeMatic` to `SmartMeter` across build scripts, workflows, a…
darthsharp Apr 19, 2026
7de9dba
Add .NET SDK detection to `build.sh` and include `scripts` folder in …
darthsharp Apr 19, 2026
c133684
Update .NET SDK version in `global.json` and remove redundant SDK lis…
darthsharp Apr 19, 2026
ccbcea8
Refactor `GitVersion.yml` for consistent branch configuration and imp…
darthsharp Apr 19, 2026
7e2fee0
Fix flaky test in `SmartMeterDataProducerTests` by adding polling mec…
darthsharp Apr 19, 2026
909040a
Update GitHub Actions workflows to use newer versions of `checkout`, …
darthsharp Apr 19, 2026
fa84f63
Bump `CreativeCoders.*` package versions to `6.7.2`.
darthsharp Apr 19, 2026
3a0088c
Rename `HomeMatic.Cli` to `SmartMeter.Cli` in GitHub Actions workflow…
darthsharp Apr 19, 2026
df61d88
Add support for building and publishing `SmartMeter.Server.Linux` pac…
darthsharp Apr 19, 2026
cb4e463
Add `install-smartmeter.sh` script for automating SmartMeter server i…
darthsharp Apr 19, 2026
ea5449c
Update `install.sh` to create a backup of the existing installation i…
darthsharp Apr 19, 2026
8534aaf
Refactor SML parser and related tests for consistent formatting and i…
darthsharp Apr 19, 2026
de5bcad
Refactor `Crc16X25` table usage for clarity
darthsharp Apr 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 41 additions & 26 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
@@ -1,45 +1,60 @@
# ------------------------------------------------------------------------------
# <auto-generated>
#
# This code was generated.
#
# - To turn off auto-generation set:
#
# [GitHubActions (AutoGenerate = false)]
#
# - To trigger manual generation invoke:
#
# nuke --generate-configuration GitHubActions_integration --host GitHubActions
#
# </auto-generated>
# ------------------------------------------------------------------------------

name: integration

on:
push:
branches:
- 'feature/**'
pull_request:
branches:
- main

jobs:
ubuntu-latest:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
uses: actions/cache@v4
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Run: clean, restore, build, publish'
run: ./build.cmd clean restore build publish
- name: 'Build with target: NuGetPush'
run: ./build.cmd -t nugetpush -t publish -t createdistpackages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NUGET_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-linux
path: .tests/coverage-report
- name: 'Publish: cli dist package'
uses: actions/upload-artifact@v7
with:
name: SmartMeter.Cli
path: .artifacts/dist/SmartMeter.Cli.tar.gz
- name: 'Publish: server Linux dist package'
uses: actions/upload-artifact@v7
with:
name: SmartMeter.Server.Linux
path: .artifacts/dist/SmartMeter.Server.Linux.tar.gz
macos-latest:
name: macos-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Build with target: Pack'
run: ./build.cmd -t pack
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-macos
path: .tests/coverage-report
63 changes: 41 additions & 22 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,3 @@
# ------------------------------------------------------------------------------
# <auto-generated>
#
# This code was generated.
#
# - To turn off auto-generation set:
#
# [GitHubActions (AutoGenerate = false)]
#
# - To trigger manual generation invoke:
#
# nuke --generate-configuration GitHubActions_main --host GitHubActions
#
# </auto-generated>
# ------------------------------------------------------------------------------

name: main

on:
Expand All @@ -26,17 +10,52 @@ jobs:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
uses: actions/cache@v4
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Run: clean, restore, build, publish'
run: ./build.cmd clean restore build publish
- name: 'Build with target: NuGetPush'
run: ./build.cmd -t nugetpush -t publish -t createdistpackages -t creategithubrelease
env:
NUGET_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-linux
path: .tests/coverage-report
- name: 'Publish: cli dist package'
uses: actions/upload-artifact@v7
with:
name: SmartMeter.Cli
path: .artifacts/dist/SmartMeter.Cli.tar.gz
- name: 'Publish: server Linux dist package'
uses: actions/upload-artifact@v7
with:
name: SmartMeter.Server.Linux
path: .artifacts/dist/SmartMeter.Server.Linux.tar.gz
macos-latest:
name: macos-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Build with target: Pack'
run: ./build.cmd -t pack
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-macos
path: .tests/coverage-report
48 changes: 48 additions & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: pull-request

on:
pull_request:
branches:
- main

jobs:
ubuntu-latest:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Build with target: Pack'
run: ./build.cmd -t pack
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-linux
path: .tests/coverage-report
macos-latest:
name: macos-latest
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Build with target: Pack'
run: ./build.cmd -t pack
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-macos
path: .tests/coverage-report
47 changes: 25 additions & 22 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,9 @@
# ------------------------------------------------------------------------------
# <auto-generated>
#
# This code was generated.
#
# - To turn off auto-generation set:
#
# [GitHubActions (AutoGenerate = false)]
#
# - To trigger manual generation invoke:
#
# nuke --generate-configuration GitHubActions_release --host GitHubActions
#
# </auto-generated>
# ------------------------------------------------------------------------------

name: release

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

on:
push:
tags:
Expand All @@ -26,17 +14,32 @@ jobs:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
uses: actions/cache@v4
- name: 'Cache: ~/.nuget/packages'
uses: actions/cache@v5
with:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
- name: 'Run: clean, restore, build, publish, CreateDistPackages, CreateGithubRelease'
run: ./build.cmd clean restore build publish CreateDistPackages CreateGithubRelease
- name: 'Build with target: NuGetPush'
run: ./build.cmd -t pack -t nugetpush -t publish -t createdistpackages -t creategithubrelease
env:
NUGET_TOKEN: ${{ secrets.NUGET_ORG_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: coverage_report'
uses: actions/upload-artifact@v7
with:
name: coverage-report-linux
path: .tests/coverage-report
- name: 'Publish: cli dist package'
uses: actions/upload-artifact@v7
with:
name: SmartMeter.Cli
path: .artifacts/dist/SmartMeter.Cli.tar.gz
- name: 'Publish: server Linux dist package'
uses: actions/upload-artifact@v7
with:
name: SmartMeter.Server.Linux
path: .artifacts/dist/SmartMeter.Server.Linux.tar.gz
11 changes: 11 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Authors>CreativeCoders</Authors>
<NoWarn>$(NoWarn);IDE0079</NoWarn>
<RepositoryUrl>https://github.com/CreativeCodersTeam/SmartMeter</RepositoryUrl>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<IsPackable>false</IsPackable>
</PropertyGroup>
</Project>
30 changes: 30 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="CreativeCoders.CakeBuild" Version="6.7.2" />
<PackageVersion Include="CreativeCoders.Core" Version="6.7.2" />
<PackageVersion Include="CreativeCoders.Daemon" Version="6.7.2" />
<PackageVersion Include="CreativeCoders.Daemon.Linux" Version="6.7.2" />
<PackageVersion Include="CreativeCoders.Net" Version="6.7.2" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.6" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.6" />
<PackageVersion Include="MQTTnet" Version="5.1.0.1559" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="10.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
<PackageVersion Include="Spectre.Console" Version="0.55.2" />
<PackageVersion Include="System.IO.Ports" Version="10.0.6" />
<PackageVersion Include="System.Reactive" Version="6.1.0" />
<!-- Test packages -->
<PackageVersion Include="AwesomeAssertions" Version="9.4.0" />
<PackageVersion Include="coverlet.collector" Version="8.0.1" />
<PackageVersion Include="FakeItEasy" Version="9.0.1" />
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.4" />
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="10.5.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="XunitXml.TestLogger" Version="8.0.0" />
</ItemGroup>
</Project>
Loading