-
Notifications
You must be signed in to change notification settings - Fork 0
/
p1_test.go
51 lines (47 loc) · 3.54 KB
/
p1_test.go
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
49
50
51
package p1
import (
"bufio"
"strings"
"testing"
)
func TestScan(t *testing.T) {
in := ""
for _, v := range testMessages {
in = in + v
}
s := bufio.NewScanner(strings.NewReader(in))
s.Split(Split)
var out []string
for s.Scan() {
out = append(out, s.Text())
}
if s.Err() != nil {
t.Fatal(s.Err())
}
if len(out) != len(testMessages) {
t.Fatalf("expected %d messages, got %d", len(testMessages), len(out))
}
for i := range testMessages {
if out[i] != testMessages[i] {
t.Errorf("message %d mismatched: %q != %q", i, out[i], testMessages[i])
}
}
}
func TestParse(t *testing.T) {
for _, msg := range testMessages {
telegram, err := Parse([]byte(msg))
if err != nil {
t.Error(err)
}
if telegram.Identifier != "KAIFA-METER" {
t.Errorf(`expected identifier "KAIFA-METER", got %q`, telegram.Identifier)
}
}
}
// 3 consecutive messages from my own smart meter, with the Equipment
// Identifier redacted and CRC re-calculated
var testMessages = []string{
"/KFM5KAIFA-METER\r\n\r\n1-3:0.2.8(42)\r\n0-0:1.0.0(160321104324W)\r\n0-0:96.1.1(5f5f52454441435445445f5f)\r\n1-0:1.8.1(000843.085*kWh)\r\n1-0:1.8.2(001201.241*kWh)\r\n1-0:2.8.1(000000.000*kWh)\r\n1-0:2.8.2(000000.000*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(00.347*kW)\r\n1-0:2.7.0(00.000*kW)\r\n0-0:96.7.21(00010)\r\n0-0:96.7.9(00007)\r\n1-0:99.97.0(4)(0-0:96.7.19)(000105033123W)(0000358148*s)(000101000001W)(2147483647*s)(000101000007W)(2147483647*s)(000101000001W)(2147483647*s)\r\n1-0:32.32.0(00001)\r\n1-0:52.32.0(00000)\r\n1-0:72.32.0(00000)\r\n1-0:32.36.0(00000)\r\n1-0:52.36.0(00000)\r\n1-0:72.36.0(00000)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n1-0:31.7.0(001*A)\r\n1-0:51.7.0(000*A)\r\n1-0:71.7.0(000*A)\r\n1-0:21.7.0(00.338*kW)\r\n1-0:22.7.0(00.000*kW)\r\n1-0:41.7.0(00.010*kW)\r\n1-0:42.7.0(00.000*kW)\r\n1-0:61.7.0(00.000*kW)\r\n1-0:62.7.0(00.000*kW)\r\n!7508\r\n",
"/KFM5KAIFA-METER\r\n\r\n1-3:0.2.8(42)\r\n0-0:1.0.0(160321104334W)\r\n0-0:96.1.1(5f5f52454441435445445f5f)\r\n1-0:1.8.1(000843.085*kWh)\r\n1-0:1.8.2(001201.242*kWh)\r\n1-0:2.8.1(000000.000*kWh)\r\n1-0:2.8.2(000000.000*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(00.348*kW)\r\n1-0:2.7.0(00.000*kW)\r\n0-0:96.7.21(00010)\r\n0-0:96.7.9(00007)\r\n1-0:99.97.0(4)(0-0:96.7.19)(000105033123W)(0000358148*s)(000101000001W)(2147483647*s)(000101000007W)(2147483647*s)(000101000001W)(2147483647*s)\r\n1-0:32.32.0(00001)\r\n1-0:52.32.0(00000)\r\n1-0:72.32.0(00000)\r\n1-0:32.36.0(00000)\r\n1-0:52.36.0(00000)\r\n1-0:72.36.0(00000)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n1-0:31.7.0(001*A)\r\n1-0:51.7.0(000*A)\r\n1-0:71.7.0(000*A)\r\n1-0:21.7.0(00.337*kW)\r\n1-0:22.7.0(00.000*kW)\r\n1-0:41.7.0(00.010*kW)\r\n1-0:42.7.0(00.000*kW)\r\n1-0:61.7.0(00.000*kW)\r\n1-0:62.7.0(00.000*kW)\r\n!5F7F\r\n",
"/KFM5KAIFA-METER\r\n\r\n1-3:0.2.8(42)\r\n0-0:1.0.0(160321104343W)\r\n0-0:96.1.1(5f5f52454441435445445f5f)\r\n1-0:1.8.1(000843.085*kWh)\r\n1-0:1.8.2(001201.243*kWh)\r\n1-0:2.8.1(000000.000*kWh)\r\n1-0:2.8.2(000000.000*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(00.348*kW)\r\n1-0:2.7.0(00.000*kW)\r\n0-0:96.7.21(00010)\r\n0-0:96.7.9(00007)\r\n1-0:99.97.0(4)(0-0:96.7.19)(000105033123W)(0000358148*s)(000101000001W)(2147483647*s)(000101000007W)(2147483647*s)(000101000001W)(2147483647*s)\r\n1-0:32.32.0(00001)\r\n1-0:52.32.0(00000)\r\n1-0:72.32.0(00000)\r\n1-0:32.36.0(00000)\r\n1-0:52.36.0(00000)\r\n1-0:72.36.0(00000)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n1-0:31.7.0(001*A)\r\n1-0:51.7.0(000*A)\r\n1-0:71.7.0(000*A)\r\n1-0:21.7.0(00.338*kW)\r\n1-0:22.7.0(00.000*kW)\r\n1-0:41.7.0(00.010*kW)\r\n1-0:42.7.0(00.000*kW)\r\n1-0:61.7.0(00.000*kW)\r\n1-0:62.7.0(00.000*kW)\r\n!42E4\r\n",
}