Skip to content

DSMR: cast power values to uint32_t instead of uint16_t - #1288

Open
ArnieO wants to merge 1 commit into
mainfrom
fix/dsmr-power-uint32
Open

ArnieO wants to merge 1 commit into
mainfrom
fix/dsmr-power-uint32

Conversation

@ArnieO

@ArnieO ArnieO commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

IEC6205621 cast 1.7.0, 2.7.0, 3.7.0 and 4.7.0 through uint16_t before storing them in the uint32_t fields of AmsData, so any P1 power above 65 535 W wrapped. The cast is now uint32_t.

Test: P1 telegram based on kamstrup/gh578-1 with 1-0:1.7.0(70.123*kW) and recalculated CRC: 70 123 W (was 4 587 W). Golden master unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LAhKXXvV3q3Ro13EackZPq

AmsData stores power as uint32_t, but IEC6205621 cast 1.7.0/2.7.0/3.7.0/4.7.0
through uint16_t, so anything above 65 535 W wrapped. A P1 telegram with
1.7.0(70.123*kW) decoded as 4587 W; it now decodes as 70123 W.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LAhKXXvV3q3Ro13EackZPq
@github-actions

Copy link
Copy Markdown

🔧 PR Build Artifacts

Version: e34a0bb

All environments built successfully. Download the zip files:

Artifacts expire after 7 days. View workflow run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant