From d8d9368c35ca09fa1bc7c5bfbd92228dfa16c565 Mon Sep 17 00:00:00 2001 From: andig Date: Tue, 11 May 2021 15:05:40 +0200 Subject: [PATCH] Detect number of inverter strings (#999) --- detect/definitions.go | 13 +++++++++++++ detect/tasks/modbus.go | 2 ++ 2 files changed, 15 insertions(+) diff --git a/detect/definitions.go b/detect/definitions.go index b0aa21487..c037a4554 100644 --- a/detect/definitions.go +++ b/detect/definitions.go @@ -35,6 +35,7 @@ const ( taskEVSEWifi = "evsewifi" taskGoE = "go-e" taskInverter = "inverter" + taskStrings = "strings" taskBattery = "battery" taskMeter = "meter" taskFronius = "fronius" @@ -90,6 +91,18 @@ func init() { }, }) + taskList.Add(tasks.Task{ + ID: taskStrings, + Type: tasks.Modbus, + Depends: TaskSunspec, + Config: map[string]interface{}{ + "ids": sunspecIDs, + "models": []int{160}, + "point": "N", + "invalid": []int{0xFFFF}, + }, + }) + taskList.Add(tasks.Task{ ID: taskBattery, Type: tasks.Modbus, diff --git a/detect/tasks/modbus.go b/detect/tasks/modbus.go index f859f8a34..3c32c611e 100644 --- a/detect/tasks/modbus.go +++ b/detect/tasks/modbus.go @@ -150,6 +150,8 @@ func (h *ModbusHandler) testSunSpec(log *util.Logger, conn meters.Connection, de val = int(res.Uint16()) case "enum16": val = int(res.Enum16()) + case "count": + val = int(res.Count()) default: panic("invalid point type: " + typ) }