# Gidrolock Modbus Scanner

RU | [EN](README_en.md)

Сканнер Modbus с функцией автоопроса устройства с помощью файлов конфигурации. Подходит для любых устройств, подключенных через Modbus RTU. Конфиги для продукции Gidrolock в комплекте.

Позволяет формировать простые сообщения для отправки на устройство. 

Modbus TCP пока в разработке.

## Конфигурации и автоопрос
Конфигурация — это `.json` файл с описанием команд чтения для конкретных моделей устройств. 
Запись `checkEntry` в конфигурации позволяет перебирать файлы в папке для определения подходящей конфигурации.

Поля и возможные значения:

```js
{
	// имя шаблона/устройства
	"name" : "Gidrolock Standard Wi-Fi RS-485",

	// Описание устройства
	"description" : "Smart valve controller unit with wired and wireless leak sensor support",

	// Заводской Modbus ID устройства, в десятичной системе
	// Поле без функционала, парсится в строку и выводится в окне конфигурации
	"modbusID" : 30

	// список данных, получаемых с устройства
	// каждая запись является отдельным полем данных
	// и поддерживает опрос нескольких регистров, 
	// а также парсинг в стандартные типы данных (UTF-8, int и т.д.)
	"entries" : [
		{
			// имя записи
			"name": "Modbus ID",

			// тип опрашиваемых регистров:
			// "coil", "discrete", "input", "holding"
			"registerType": "holding",

			// адрес стартового регистра
			// отсчет с 0
			"address": 128,

			// количество опрашиваемых регистров
			// значение по-умолчанию: 1
			"length": 1,

			// тип данных для парсинга
			// поддерживаемые типы: bool, uint16, uint32, string
			// значение по умолчанию: uint16
			"dataType": "uint16",

			// опрашивать ли эти регистры повторно
			// при `false` опрашивается только в первый раз
			"readOnce": true
		}
	],

	// Уникальное для устройства значение: модель устройства, версия прошивки, etc.
	"checkEntry": {
		"registerType": "input", 
		"address": 200,
		"length": 6,
		"dataType": "string",

		// ожидаемое значение при опросе этих регистров
		"expectedValue": "STW485"
	}
}
```


### To-Do
- Добавить возможность записи в списке автоопрашиваемых записей.
	-- Выделить отображение значений в отдельный метод для упрощения 
- Поддержка Modbus TCP

