thingsboard-aplcache

Details

diff --git a/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js b/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
index 2dfc961..96c398b 100644
--- a/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
+++ b/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
@@ -31,17 +31,38 @@ export default function ExtensionFormModbusDirective($compile, $templateCache, $
 
     var linker = function(scope, element) {
 
+        function TcpTransport() {
+            this.type = "tcp",
+            this.host = "localhost",
+            this.port = 502,
+            this.timeout = 5000,
+            this.reconnect = true,
+            this.rtuOverTcp = false
+        }
+
+        function UdpTransport() {
+            this.type = "udp",
+            this.host = "localhost",
+            this.port = 502,
+            this.timeout = 5000
+        }
+
+        function RtuTransport() {
+            this.type = "rtu",
+            this.portName = "COM1",
+            this.encoding = "ascii",
+            this.timeout = 5000,
+            this.baudRate = 115200,
+            this.dataBits = 7,
+            this.stopBits = 1,
+            this.parity ="even"
+        }
 
         function Server() {
-            this.transport = {
-                "type": "tcp",
-                "host": "localhost",
-                "port": 502,
-                "timeout": 3000
-            };
+            this.transport = new TcpTransport();
             this.devices = []
         }
-
+		
         function Device() {
             this.unitId = 1;
             this.deviceName = "";
@@ -105,9 +126,13 @@ export default function ExtensionFormModbusDirective($compile, $templateCache, $
         scope.onTransportChanged = function(server) {
             var type = server.transport.type;
 
-            server.transport = {};
-            server.transport.type = type;
-            server.transport.timeout = 3000;
+            if (type === "tcp") {
+                server.transport = new TcpTransport();
+            } else if (type === "udp") {
+                server.transport = new UdpTransport();
+            } else if (type === "rtu") {
+                server.transport = new RtuTransport();
+            }
 
             scope.theForm.$setDirty();
         };
diff --git a/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html b/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
index 989d3f0..508ddc0 100644
--- a/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
+++ b/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
@@ -73,49 +73,69 @@
                                             
                                         </div>
                                         
-                                        <div layout="row" ng-if="server.transport.type == 'tcp' || server.transport.type == 'udp'">
-                                            <md-input-container flex="33" class="md-block">
-                                                <label translate>extension.host</label>
-                                                <input required name="transportHost_{{serverIndex}}" ng-model="server.transport.host">
-                                                <div ng-messages="theForm['transportHost_' + serverIndex].$error">
-                                                    <div translate ng-message="required">extension.field-required</div>
-                                                </div>
-                                            </md-input-container>
+                                        <div ng-if="server.transport.type == 'tcp' || server.transport.type == 'udp'">
+                                            <div layout="row">
+                                                <md-input-container flex="33" class="md-block">
+                                                    <label translate>extension.host</label>
+                                                    <input required name="transportHost_{{serverIndex}}" ng-model="server.transport.host">
+                                                    <div ng-messages="theForm['transportHost_' + serverIndex].$error">
+                                                        <div translate ng-message="required">extension.field-required</div>
+                                                    </div>
+                                                </md-input-container>
 
-                                            <md-input-container flex="33" class="md-block">
-                                                <label translate>extension.port</label>
-                                                <input type="number"
-                                                       required
-                                                       name="transportPort_{{serverIndex}}"
-                                                       ng-model="server.transport.port"
-                                                       min="1"
-                                                       max="65535"
-                                                >
-                                                <div ng-messages="theForm['transportPort_' + serverIndex].$error">
-                                                    <div translate
-                                                         ng-message="required"
-                                                    >extension.field-required</div>
-                                                    <div translate
-                                                         ng-message="min"
-                                                    >extension.port-range</div>
-                                                    <div translate
-                                                         ng-message="max"
-                                                    >extension.port-range</div>
-                                                </div>
-                                            </md-input-container>
-                                            
-                                            <md-input-container flex="33" class="md-block">
-                                                <label translate>extension.timeout</label>
-                                                <input type="number"
-                                                       required name="transportTimeout_{{serverIndex}}"
-                                                       ng-model="server.transport.timeout"
-                                                >
-                                                <div ng-messages="theForm['transportTimeout_' + serverIndex].$error">
-                                                    <div translate
-                                                         ng-message="required"
-                                                    >extension.field-required</div>
-                                                </div>
-                                            </md-input-container>
+                                                <md-input-container flex="33" class="md-block">
+                                                    <label translate>extension.port</label>
+                                                    <input type="number"
+                                                           required
+                                                           name="transportPort_{{serverIndex}}"
+                                                           ng-model="server.transport.port"
+                                                           min="1"
+                                                           max="65535"
+                                                    >
+                                                    <div ng-messages="theForm['transportPort_' + serverIndex].$error">
+                                                        <div translate
+                                                             ng-message="required"
+                                                        >extension.field-required</div>
+                                                        <div translate
+                                                             ng-message="min"
+                                                        >extension.port-range</div>
+                                                        <div translate
+                                                             ng-message="max"
+                                                        >extension.port-range</div>
+                                                    </div>
+                                                </md-input-container>
+                                                
+                                                <md-input-container flex="33" class="md-block">
+                                                    <label translate>extension.timeout</label>
+                                                    <input type="number"
+                                                           required name="transportTimeout_{{serverIndex}}"
+                                                           ng-model="server.transport.timeout"
+                                                    >
+                                                    <div ng-messages="theForm['transportTimeout_' + serverIndex].$error">
+                                                        <div translate
+                                                             ng-message="required"
+                                                        >extension.field-required</div>
+                                                    </div>
+                                                </md-input-container>
+                                            </div>
+
+                                            <div layout="row" ng-if="server.transport.type == 'tcp'">
+                                                <md-input-container flex="50" class="md-block">
+                                                    <md-checkbox aria-label="{{ 'extension.modbus-tcp-reconnect' | translate }}"
+                                                                 ng-checked="server.transport.reconnect"
+                                                                 name="transportTcpReconnect_{{serverIndex}}"
+                                                                 ng-model="server.transport.reconnect">{{ 'extension.modbus-tcp-reconnect' | translate }}
+                                                    </md-checkbox>
+                                                </md-input-container>
+
+                                                <md-input-container flex="50" class="md-block">
+                                                    <md-checkbox aria-label="{{ 'extension.modbus-rtu-over-tcp' | translate }}"
+                                                                 ng-checked="server.transport.rtuOverTcp"
+                                                                 name="transportRtuOverTcp_{{serverIndex}}"
+                                                                 ng-model="server.transport.rtuOverTcp">{{ 'extension.modbus-rtu-over-tcp' | translate }}
+                                                    </md-checkbox>
+                                                </md-input-container>
+                                            </div>
                                         </div>
                                         
                                         <div ng-if="server.transport.type == 'rtu'">
diff --git a/ui/src/app/locale/locale.constant-en_US.json b/ui/src/app/locale/locale.constant-en_US.json
index 30e1eb1..3aa520a 100644
--- a/ui/src/app/locale/locale.constant-en_US.json
+++ b/ui/src/app/locale/locale.constant-en_US.json
@@ -1008,6 +1008,8 @@
         "modbus-add-server": "Add server/slave",
         "modbus-add-server-prompt": "Please add server/slave",
         "modbus-transport": "Transport",
+        "modbus-tcp-reconnect": "Automatically reconnect",
+        "modbus-rtu-over-tcp": "RTU over TCP",
         "modbus-port-name": "Serial port name",
         "modbus-encoding": "Encoding",
         "modbus-parity": "Parity",