The HSYCO Remote I/O Server is a powerful and secure server-to-server communication system that allows an HSYCO server read and write access to all the I/O data points and GUI variables of other remote HSYCO servers. It also supports near real-time replication of data loggers data from remote servers.
Using the HSYCO Remote I/O Server you can build a multi-level architecture with one or more HSYCO servers acting as concentrators for data points managed by other HSYCO servers.
The HSYCO Remote I/O Server uses a secure HTTPS API based on the REST (Representational state transfer) model and the JSON data format. A subset of this API can be used by third-party HTTP client applications. Read the HSYCO Remote API specification for additional details.
The I/O Server communicates with the remote HSYCO server by establishing encrypted HTTPS connections to the HTTPS port of that server. The network infrastructure should be configured to allow these connections. The bandwidth and latency requirements depend on the specific application and the amount of data points on the remote HSYCO server.
Local HSYCO Configuration
Add an HSYCO I/O Server in the I/O Servers section of the Settings and set its parameters:
- IP Address: public IP address or server name of the remote HSYCO server
- IP Port: HTTPS port of the remote HSYCO server, leave blank for default port 443.
- Password: must correspond to the RemoteServerPassword parameter set in the remote HSYCO's settings (see below).
- Shutdown when inactive: defaults to false.
|discovery||true||true||automatically creates the list of remote devices and individual data points in the systemtopo.txt file|
|false||discovery is disabled|
|startupevents||false||true||generate IO events also during the driver’s start-up phase|
|false||start generating events only after HSYCO is aligned with the current status of the system|
|io||true||true||I/O data points of the remote HSYCO server are replicated on this server|
|false||I/O data points of the remote HSYCO server are not used|
|ui||false||true||Web GUI elements of the remote HSYCO server are replicated on this server|
|false||Web GUI elements of the remote HSYCO server are not used|
|clocksync||false||true||automatically synchronises the remote system's clock to the local clock when the clock delta reaches the drift limit|
|false||remote system's clock is not synchronised automatically|
|drift||4||0...9999||used in combination with a remote SYSTEM I/O Server, sets the maximum clock drift between the local and the remote clocks, in seconds|
of data logger IDs
|semicolon separated list of remote data logger IDs that should be replicated on this HSYCO server|
|dataloggersnameprefix||true||true||the ID of each local data logger is <this I/O server name>.<remote data logger ID>|
|false||the ID of each local data logger is exactly the same as the corresponding remote data logger|
|dataloggerspollinterval||60||positive integer||the remote data logger data minimum refresh interval, in seconds|
Remote HSYCO Configuration
In the system settings of the remote HSYCO server the following parameters must be set:
- RemoteServerPassword: must correspond to the password set on the HSYCO I/O server's parameters on the local server
- RemoteServerAddress = IP address of the local HSYCO server
- RemoteServerControl = set to "true" to allow the local server to modify the datapoints values of this HSYCO server, "false" otherwise.
On the local HSYCO server, all datapoints of the remote server will be mapped with the original datapoint names, prefixed with the I/O server name and a separation point. For example, if the I/O server name is “remote”, a remote datapoint “dummy.light.1” will be mapped as “remote.dummy.light.1” on the local server.
On the local HSYCO server, all GUI elements of the remote server will be mapped with the original names, prefixed with the I/O server name and a separation point. For example, if the I/O server name is “remote”, a remote GUI element “status.text” will be mapped as “remote.status.text” on the local server.
The HSYCO Remote I/O Server can also be used to create local copies of data loggers from the remote HSYCO Server.
The data replication occurs at a rate defined with the dataloggerspollinterval option, which defaults to 60 seconds. The consolidation and data expiration times of the locally mirrored data loggers are independent from the remote data loggers. You can have a relatively short retention period on the remote server, and a very long period on the replicating server. You should set the retention and consolidation times on the remote server long enough to ensure no data is deleted before replication has occurred.
The local, replicated data loggers must also be defined locally, as you would define any normal data logger. You can choose to have the same IDs on both the local and remote server, or have the remote names replicated locally with the prefix of the HSYCO Remote I/O server.
System clock synchronisation
If the remote HSYCO server has a SYSTEM I/O Server defined, a read-only ".time.delta" data point becomes available, reporting the difference in seconds between the remote and local clocks. A positive value indicates that the remote clock is ahead of the local one.
The remote ".time" data point can be written from the local HSYCO server, if remote control is enabled on the remote server, to update the remote clock.
The remote HSYCO server's system clock can be automatically synchronised to the local clock whenever the time difference between the two clocks reaches the preset drift limit. The accuracy of the synchronisation depends on the network performance and other factors, and it may be impossible to achieve a time accuracy better than a few seconds.
The following conditions must all be met to enable the automatic synchronisation:
- the remote HSYCO server must have a SYSTEM I/O Server defined
- the "RemoteServerControl" configuration option on the remore HSYCO server must be set to true
- the "clocksync" option must be set to true.
- data points with the '*' character in the value string couldn't be written to the remote server
- the I/O Server could time out during initialization on a very large local database
- added support for data loggers replication
- new "clocksync" option to automatically sync the clock of the remote server with the local one
- added support of the SYSTEM I/O Server on remote systems for clock drift check
- the RemoteServerAddress option can now be set to * to allow any remote IP address
- new RemoteServerIOFilter and RemoteServerUIFilter options to filter the status data returned to the remote server
- initial release