diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-security-config/modbus-security-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-security-config/modbus-security-config.component.ts
index 2f5786882b..bf926d3454 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-security-config/modbus-security-config.component.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-security-config/modbus-security-config.component.ts
@@ -112,7 +112,20 @@ export class ModbusSecurityConfigComponent implements ControlValueAccessor, Vali
}
writeValue(securityConfig: ModbusSecurity): void {
- this.securityConfigFormGroup.patchValue(securityConfig, {emitEvent: false});
+ const { certfile, password, keyfile, server_hostname } = securityConfig;
+ let securityState = {
+ certfile: certfile ?? '',
+ password: password ?? '',
+ keyfile: keyfile ?? '',
+ server_hostname: server_hostname?? '',
+ reqclicert: !!securityConfig.reqclicert,
+ };
+ if (this.isMaster) {
+ securityState = { ...securityState, reqclicert: !!securityConfig.reqclicert };
+ } else {
+ securityState = { ...securityState, server_hostname: server_hostname ?? '' };
+ }
+ this.securityConfigFormGroup.reset(securityState, {emitEvent: false});
}
private observeValueChanges(): void {
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.html
index 5587cd09ee..13f31bdda5 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.html
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.html
@@ -16,6 +16,7 @@
-->
+
{{ 'gateway.hints.modbus-server' | translate }}
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.ts
index 4211b2b09c..27de908e11 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-config/modbus-slave-config.component.ts
@@ -23,7 +23,8 @@ import {
UntypedFormControl,
UntypedFormGroup,
ValidationErrors,
- Validator, Validators,
+ Validator,
+ Validators,
} from '@angular/forms';
import {
ModbusMethodLabelsMap,
@@ -31,8 +32,11 @@ import {
ModbusOrderType,
ModbusProtocolLabelsMap,
ModbusProtocolType,
+ ModbusRegisterValues,
+ ModbusSlave,
noLeadTrailSpacesRegex,
- PortLimits, SlaveConfig,
+ PortLimits,
+ SlaveConfig,
} from '@home/components/widget/lib/gateway/gateway-widget.models';
import { SharedModule } from '@shared/shared.module';
import { CommonModule } from '@angular/common';
@@ -104,7 +108,7 @@ export class ModbusSlaveConfigComponent implements ControlValueAccessor, Validat
port: [null, [Validators.required, Validators.min(PortLimits.MIN), Validators.max(PortLimits.MAX)]],
serialPort: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]],
method: [ModbusMethodType.SOCKET, []],
- unitId: [null, []],
+ unitId: [null, [Validators.required]],
baudrate: [null, []],
deviceName: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]],
deviceType: ['', [Validators.required, Validators.pattern(noLeadTrailSpacesRegex)]],
@@ -155,13 +159,9 @@ export class ModbusSlaveConfigComponent implements ControlValueAccessor, Validat
};
}
- writeValue(slaveConfig: SlaveConfig): void {
- if (slaveConfig.type === ModbusProtocolType.Serial) {
- slaveConfig.serialPort = slaveConfig.port as string;
- delete slaveConfig.port;
- }
- this.slaveConfigFormGroup.patchValue(slaveConfig, {emitEvent: false});
+ writeValue(slaveConfig: ModbusSlave): void {
this.showSecurityControl.patchValue(!!slaveConfig.security);
+ this.updateSlaveConfig(slaveConfig);
this.updateControlsEnabling(slaveConfig.type);
}
@@ -180,4 +180,50 @@ export class ModbusSlaveConfigComponent implements ControlValueAccessor, Validat
this.tcpUdpSpecificControlKeys.forEach(key => this.slaveConfigFormGroup.get(key)?.enable({emitEvent: false}));
}
};
+
+ private updateSlaveConfig(slaveConfig: ModbusSlave): void {
+ const {
+ type,
+ method,
+ unitId,
+ deviceName,
+ deviceType,
+ pollPeriod,
+ sendDataToThingsBoard,
+ byteOrder,
+ security,
+ identity,
+ values,
+ baudrate,
+ host,
+ port,
+ } = slaveConfig;
+ let slaveState: ModbusSlave = {
+ host: host ?? '',
+ type: type ?? ModbusProtocolType.TCP,
+ method: method ?? ModbusMethodType.SOCKET,
+ unitId: unitId ?? null,
+ deviceName: deviceName ?? '',
+ deviceType: deviceType ?? '',
+ pollPeriod: pollPeriod ?? null,
+ sendDataToThingsBoard: !!sendDataToThingsBoard,
+ byteOrder: byteOrder ?? ModbusOrderType.BIG,
+ security: security ?? {},
+ identity: identity ?? {
+ vendorName: '',
+ productCode: '',
+ vendorUrl: '',
+ productName: '',
+ modelName: '',
+ },
+ values: values ?? {} as ModbusRegisterValues,
+ port: port ?? null,
+ };
+ if (slaveConfig.type === ModbusProtocolType.Serial) {
+ slaveState = { ...slaveState, baudrate, serialPort: port, host: '', port: null } as ModbusSlave;
+ } else {
+ slaveState = { ...slaveState, serialPort: '', baudrate: null } as ModbusSlave;
+ }
+ this.slaveConfigFormGroup.setValue(slaveState, {emitEvent: false});
+ }
}
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.html
index 95e7700886..3ac441447c 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.html
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.html
@@ -176,6 +176,15 @@
+
+ warning
+
diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.ts
index 991c71c16b..d989478e98 100644
--- a/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.ts
+++ b/ui-ngx/src/app/modules/home/components/widget/lib/gateway/connectors-configuration/modbus/modbus-slave-dialog/modbus-slave-dialog.component.ts
@@ -125,7 +125,7 @@ export class ModbusSlaveDialogComponent extends DialogComponent