Commit fe7af3a
authored
Upgrade to .NET 10. Rewrite SML Parser for new SmartMeter. Use Cake build. Add installer script. (#8)
* Refactor project and build configuration: remove nuke files, introduce centralized package management, update to .NET 10. Adjust dependencies and descriptions across projects.
* Refactor `MqttValuePublisher` to use `ReadOnlySequence` for payloads; upgrade to .NET 10 and centralize test package versions.
* Update test package versions and fix balance value sign logic in `SmlValueProcessor`.
* Refactor `SmartMeterServer` constructor to leverage parameterized properties and streamline initialization logic. Simplify subscription disposal and improve logging.
* Add SmartMeter CLI project with reactive data producer and basic CLI functionality.
* Add debug logging for serial port data reception in `SmartMeterDataProducer`
* Add CRC-16/X-25 implementation, SML message framing, parsing, and unit tests.
- Introduced `Crc16X25` class for calculating CRC-16/X-25 checksums.
- Added `SmlFrame`, `SmlMessageDetector`, and related classes for framing and detecting SML transport v1 messages.
- Implemented parsing logic with `ObisValue` to support SML GetListResponse payloads.
- Created unit tests for framing, parsing, and end-to-end workflows.
- Added utilities for OBIS code parsing and smart meter unlocking strategies with comprehensive options and result enums.
* Refactor `SmartMeterReactiveDataPipeline` to use `Subject` for reactive value streams, improve OBIS code filtering logic, and simplify logging to debug level.
* Add `SmartMeterOptions` to inject configurable energy offsets and refactor `SmartMeterReactiveDataPipeline` to apply these offsets. Adjust log levels to debug and fix power balance sign logic in `SmlValueProcessor`.
* Adjust logging levels in SmlMessageDetectorLoggingTests and SmlParserLoggingTests to use Debug consistently.
* Refactor exception logging and initialization logic, and improve cancellation token handling for `SmartMeterDataProducer`, `ValueHistoryDataSet`, and `SmartMeterValue`.
* Refactor `SmartMeterDataProducer` to implement `IDisposable`, improve resource management, and replace custom subscription handling in `SmartMeterServer` with `ISmartMeterDataProducer`.
* Move SmartMeter-related classes to `SmlData` namespace for clearer organization and improved code structure.
* Extract unlock functionality into `ISmartMeterUnlocker` and `SmartMeterUnlocker`; refactor `SmartMeterDataProducer` to remove redundant unlock logic and simplify interface.
* Refactor `SmlValueType` to `SmlMessageValueType` for improved clarity and consistency; update references across parsing, reactive data pipeline, and testing layers.
* Move `ValueHistory`-related classes to `History` namespace for better organization and consistency with project structure.
* Remove obsolete SML-related classes (`ISmlValueReader`, `SmlDataReader`, `SmlMessage`, `SmlReadDataMode`, `SmlValueReader`, and reactive extensions) to clean up and streamline the codebase.
* Migrate SML-related components from `CreativeCoders.SmartMeter.Sml` to `CreativeCoders.SmartMeter.Core`; remove obsolete references, update namespaces, and streamline project structure.
* Refactor `SmartMeterReactiveDataPipeline` to handle observer completion and error logging properly; fix test assertion syntax; replace `lock(this)` with dedicated sync object in `ValueHistory`; minor cleanup in CLI entry point.
* Add unit tests for SmartMeter core, server, and data processing components; introduce test fixtures and streamline test project organization.
* Dispose resources properly in `MqttValuePublisher` and update related tests; suppress false-positive analyzer warnings in test fixtures and parsing logic; improve `SmartMeterServer` shutdown sequence.
* Introduce Cake build system and GitHub Actions workflows; add `BuildContext` and related CI/CD scripts.
* Rename `HomeMatic` to `SmartMeter` across build scripts, workflows, and project files; remove redundant Windows-specific steps in CI pipelines.
* Add .NET SDK detection to `build.sh` and include `scripts` folder in solution file
* Update .NET SDK version in `global.json` and remove redundant SDK listing in `build.sh`
* Refactor `GitVersion.yml` for consistent branch configuration and improved versioning flexibility.
* Fix flaky test in `SmartMeterDataProducerTests` by adding polling mechanism for asynchronous `Subscribe` assertions.
* Update GitHub Actions workflows to use newer versions of `checkout`, `cache`, and `upload-artifact` actions.
* Bump `CreativeCoders.*` package versions to `6.7.2`.
* Rename `HomeMatic.Cli` to `SmartMeter.Cli` in GitHub Actions workflow and remove redundant Windows-specific steps.
* Add support for building and publishing `SmartMeter.Server.Linux` package in CI/CD pipelines.
* Add `install-smartmeter.sh` script for automating SmartMeter server installation and include it in the solution file.
* Update `install.sh` to create a backup of the existing installation instead of deleting files
* Refactor SML parser and related tests for consistent formatting and improved readability. Apply minor code cleanups across projects.
* Refactor `Crc16X25` table usage for clarity1 parent a8e8f86 commit fe7af3a
110 files changed
Lines changed: 6207 additions & 825 deletions
File tree
- .github/workflows
- build
- source
- CreativeCoders.SmartMessageLanguage
- Framing
- Parsing
- Tlv
- Units
- CreativeCoders.SmartMeter.Cli
- CreativeCoders.SmartMeter.Core
- SmlData
- Unlock
- CreativeCoders.SmartMeter.DataProcessing
- History
- CreativeCoders.SmartMeter.Server.Core
- CreativeCoders.SmartMeter.Server.Linux
- CreativeCoders.SmartMeter.Sml
- Reactive
- tests
- CreativeCoders.SmartMessageLanguage.Tests
- Fixtures
- Framing
- Parsing
- TestSupport
- Tlv
- CreativeCoders.SmartMeter.Core.Tests
- Fixtures
- SmlData
- Unlock
- CreativeCoders.SmartMeter.DataProcessing.Tests
- History
- CreativeCoders.SmartMeter.Server.Core.Tests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | 1 | | |
18 | 2 | | |
19 | 3 | | |
20 | 4 | | |
21 | 5 | | |
22 | 6 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | 7 | | |
27 | 8 | | |
28 | 9 | | |
29 | 10 | | |
30 | 11 | | |
31 | 12 | | |
32 | | - | |
| 13 | + | |
33 | 14 | | |
34 | 15 | | |
35 | | - | |
36 | | - | |
| 16 | + | |
| 17 | + | |
37 | 18 | | |
38 | 19 | | |
39 | | - | |
40 | 20 | | |
41 | 21 | | |
42 | | - | |
43 | | - | |
| 22 | + | |
| 23 | + | |
44 | 24 | | |
45 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | 1 | | |
18 | 2 | | |
19 | 3 | | |
| |||
26 | 10 | | |
27 | 11 | | |
28 | 12 | | |
29 | | - | |
| 13 | + | |
30 | 14 | | |
31 | 15 | | |
32 | | - | |
33 | | - | |
| 16 | + | |
| 17 | + | |
34 | 18 | | |
35 | 19 | | |
36 | | - | |
37 | 20 | | |
38 | 21 | | |
39 | | - | |
40 | | - | |
| 22 | + | |
| 23 | + | |
41 | 24 | | |
| 25 | + | |
42 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | 1 | | |
18 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
19 | 7 | | |
20 | 8 | | |
21 | 9 | | |
| |||
26 | 14 | | |
27 | 15 | | |
28 | 16 | | |
29 | | - | |
| 17 | + | |
30 | 18 | | |
31 | 19 | | |
32 | | - | |
33 | | - | |
| 20 | + | |
| 21 | + | |
34 | 22 | | |
35 | 23 | | |
36 | | - | |
37 | 24 | | |
38 | 25 | | |
39 | | - | |
40 | | - | |
| 26 | + | |
| 27 | + | |
41 | 28 | | |
| 29 | + | |
42 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
0 commit comments