163 lines
4.1 KiB
Go
163 lines
4.1 KiB
Go
package modbustcpclient
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const testNibeHost = "NIBE-06543922346009.solver.nu:502"
|
|
const testIAMhost = "IAM_248000012514.solver.nu:502"
|
|
|
|
func TestNibeInputRegsters(t *testing.T) {
|
|
inputRegs := []uint16{1, 5, 7 /*8,*/, 9, 10, 11, 12, 13, 14, 16 /*26,*/ /*39,*/, 86, 1046, 1083, 1100, 1102, 1104, // S1155 specific
|
|
40 /*46, 48, 50*/ /* 396, 398,*/, 1017 /*1567,*/, 1025, 1028, 1029, 1083, 1087, 1575, 1577 /*1581,*/, 1583, 1585, 1975} // common registers
|
|
c, err := New(testNibeHost, 1, 100*time.Millisecond, 5*time.Second, 0)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for _, reg := range inputRegs {
|
|
|
|
res, err := c.ReadInputRegisters(uint16(reg), 1)
|
|
assert.NoError(t, err, "Failed to read reg %v", reg)
|
|
|
|
if err == nil {
|
|
t.Logf("reg: %v res: %v \n", reg, res)
|
|
}
|
|
time.Sleep(10 * time.Millisecond)
|
|
}
|
|
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
|
|
func TestNibeHoldingRegsters(t *testing.T) {
|
|
holdingRegs := []uint16{18, 20, 22, 26, 30, 34, 38, 39, 40, 41, 45, 43, 44, 45, 56 /*97, 159,*/, 196, 197, 237}
|
|
c, err := New(testNibeHost, 1, 100*time.Millisecond, 5*time.Second, 0)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for _, reg := range holdingRegs {
|
|
|
|
res, err := c.ReadHoldingRegisters(uint16(reg), 1)
|
|
assert.NoError(t, err, "Failed to read reg %v", reg)
|
|
|
|
if err == nil {
|
|
t.Logf("reg: %v res: %v \n", reg, res)
|
|
}
|
|
time.Sleep(10 * time.Millisecond)
|
|
}
|
|
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
|
|
func TestNibeReads32Register(t *testing.T) {
|
|
holdingRegs := []uint16{1083}
|
|
c, err := New(testNibeHost, 1, 100*time.Millisecond, 5*time.Second, 0)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for _, reg := range holdingRegs {
|
|
|
|
res, err := c.ReadInputRegisters(uint16(reg), 2)
|
|
assert.NoError(t, err, "Failed to read reg %v", reg)
|
|
|
|
if err == nil {
|
|
t.Logf("reg: %v res: %v \n", reg, res)
|
|
}
|
|
time.Sleep(10 * time.Millisecond)
|
|
}
|
|
}
|
|
|
|
func TestNibeReadu32ScaledRegister(t *testing.T) {
|
|
holdingRegs := []uint16{1583}
|
|
c, err := New(testNibeHost, 1, 100*time.Millisecond, 5*time.Second, 0)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for _, reg := range holdingRegs {
|
|
|
|
res, err := c.ReadInputRegisters(uint16(reg), 2)
|
|
assert.NoError(t, err, "Failed to read reg %v", reg)
|
|
|
|
if err == nil {
|
|
t.Logf("reg: %v res: %v \n", reg, res)
|
|
}
|
|
time.Sleep(10 * time.Millisecond)
|
|
}
|
|
}
|
|
|
|
func TestReadOneRegisterKeepAlive(t *testing.T) {
|
|
c, err := New(testIAMhost, 1, 100*time.Millisecond, 5*time.Second, 1)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for n := 0; n < 5; n++ {
|
|
res, err := c.ReadHoldingRegisters(12401, 2)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, res, 2)
|
|
t.Log(res)
|
|
|
|
res, err = c.ReadHoldingRegisters(12102, 2)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, res, 2)
|
|
t.Log(res)
|
|
|
|
}
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
|
|
func TestReadOneRegisterShortKeepAlive(t *testing.T) {
|
|
c, err := New(testIAMhost, 1, 10*time.Nanosecond, 5*time.Second, 1)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for n := 0; n < 5; n++ {
|
|
res, err := c.ReadHoldingRegisters(12401, 2)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, res, 2)
|
|
t.Log(res)
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
res, err = c.ReadHoldingRegisters(12102, 2)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, res, 2)
|
|
t.Log(res)
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
res, err = c.ReadHoldingRegisters(12544, 1)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, res, 1)
|
|
t.Log(float32(res[0]) / 10)
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
res, err = c.ReadHoldingRegisters(12136, 1)
|
|
assert.NoError(t, err)
|
|
assert.Len(t, res, 1)
|
|
t.Log(res)
|
|
time.Sleep(100 * time.Millisecond)
|
|
}
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
|
|
func TestReadALot(t *testing.T) {
|
|
c, err := New(testIAMhost, 1, 100*time.Millisecond, 5*time.Second, 1)
|
|
t.Log("Connect")
|
|
assert.NoError(t, err)
|
|
for n := 0; n < 500; n++ {
|
|
t.Log(n)
|
|
_, err := c.ReadHoldingRegisters(12401, 2)
|
|
if err != nil {
|
|
t.Log(err)
|
|
}
|
|
_, err = c.ReadHoldingRegisters(12102, 2)
|
|
if err != nil {
|
|
t.Log(err)
|
|
}
|
|
|
|
_, err = c.ReadHoldingRegisters(12544, 1)
|
|
if err != nil {
|
|
t.Log(err)
|
|
}
|
|
_, err = c.ReadHoldingRegisters(12136, 1)
|
|
if err != nil {
|
|
t.Log(err)
|
|
}
|
|
}
|
|
time.Sleep(200 * time.Millisecond)
|
|
}
|