Skip to content

Commit cc879e4

Browse files
committed
Add support for all four possible gas meter channels defined by DSMR4
1 parent 1093bde commit cc879e4

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

hardware/P1MeterBase.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ typedef enum {
2828
#define P1VOLTL3 "1-0:72.7.0" // voltage L3 (DSMRv5)
2929
#define P1GTS "0-1:24.3.0" // timestamp gas usage sample
3030
#define P1GTSME382 "0-2:24.3.0" // timestamp gas usage sample
31-
#define P1GUDSMR4 "0-1:24.2.1" // gas usage sample
32-
#define P1GUGYRE350 "0-2:24.2.1" // gas usage sample
33-
#define P1GUDSMR5 "0-3:24.2.1" // gas usage sample
31+
#define P1GUDSMR4C1 "0-1:24.2.1" // DSMR4 gas usage sample - channel 1
32+
#define P1GUDSMR4C2 "0-2:24.2.1" // DSMR4 gas usage sample - channel 2
33+
#define P1GUDSMR4C3 "0-3:24.2.1" // DSMR4 gas usage sample - channel 3
34+
#define P1GUDSMR4C4 "0-4:24.2.1" // DSMR4 gas usage sample - channel 4
3435

3536
typedef enum {
3637
P1TYPE_SMID=0,
@@ -47,9 +48,10 @@ typedef enum {
4748
P1TYPE_GASTIMESTAMP,
4849
P1TYPE_GASTIMESTAMPME382,
4950
P1TYPE_GASUSAGE,
50-
P1TYPE_GASUSAGEDSMR4,
51-
P1TYPE_GASUSAGEGYRE350,
52-
P1TYPE_GASUSAGEDSMR5,
51+
P1TYPE_GASUSAGEDSMR4_CHANNEL1,
52+
P1TYPE_GASUSAGEDSMR4_CHANNEL2,
53+
P1TYPE_GASUSAGEDSMR4_CHANNEL3,
54+
P1TYPE_GASUSAGEDSMR4_CHANNEL4,
5355
P1TYPE_END,
5456
} P1Type;
5557

@@ -77,9 +79,10 @@ Match matchlist[] = {
7779
{LINE17, P1TYPE_GASTIMESTAMP, P1GTS, "gastimestamp", 11, 12},
7880
{LINE17, P1TYPE_GASTIMESTAMPME382, P1GTSME382, "gastimestamp", 11, 12},
7981
{LINE18, P1TYPE_GASUSAGE, "(", "gasusage", 1, 9},
80-
{STD, P1TYPE_GASUSAGEDSMR4, P1GUDSMR4, "gasusage", 26, 8},
81-
{STD, P1TYPE_GASUSAGEGYRE350, P1GUGYRE350, "gasusage", 26, 8},
82-
{STD, P1TYPE_GASUSAGEDSMR5, P1GUDSMR5, "gasusage", 26, 8},
82+
{STD, P1TYPE_GASUSAGEDSMR4_CHANNEL1, P1GUDSMR4C1, "gasusage", 26, 8},
83+
{STD, P1TYPE_GASUSAGEDSMR4_CHANNEL2, P1GUDSMR4C2, "gasusage", 26, 8},
84+
{STD, P1TYPE_GASUSAGEDSMR4_CHANNEL3, P1GUDSMR4C3, "gasusage", 26, 8},
85+
{STD, P1TYPE_GASUSAGEDSMR4_CHANNEL4, P1GUDSMR4C4, "gasusage", 26, 8},
8386
{EXCLMARK, P1TYPE_END, "!", "", 0, 0}
8487
};
8588

@@ -299,9 +302,10 @@ bool P1MeterBase::MatchLine()
299302
case P1TYPE_GASTIMESTAMPME382:
300303
break;
301304
case P1TYPE_GASUSAGE:
302-
case P1TYPE_GASUSAGEDSMR4:
303-
case P1TYPE_GASUSAGEGYRE350:
304-
case P1TYPE_GASUSAGEDSMR5:
305+
case P1TYPE_GASUSAGEDSMR4_CHANNEL1:
306+
case P1TYPE_GASUSAGEDSMR4_CHANNEL2:
307+
case P1TYPE_GASUSAGEDSMR4_CHANNEL3:
308+
case P1TYPE_GASUSAGEDSMR4_CHANNEL4:
305309
temp_usage = (unsigned long)(strtod(value,&validate)*1000.0f);
306310
m_p1gas.gasusage = temp_usage;
307311
break;

0 commit comments

Comments
 (0)