Difference between revisions of "Release Notes 3.7.0"
Jump to navigation
Jump to search
(57 intermediate revisions by 3 users not shown) | |||
Line 7: | Line 7: | ||
**verbose log output of XML content posted to server and return data | **verbose log output of XML content posted to server and return data | ||
**session id support | **session id support | ||
+ | *AVIGILON I/O Server: new I/O Server for the Avigilon Control Center 7 | ||
*CONTATTO I/O Server: | *CONTATTO I/O Server: | ||
**support of MODRHT | **support of MODRHT | ||
Line 15: | Line 16: | ||
**support of MCP counters | **support of MCP counters | ||
**bus and modules fault detection | **bus and modules fault detection | ||
− | * | + | *Dea Xensity I/O Server: new I/O Server for the Dea Xensity indoor shock detectors |
*DOMINO I/O Server: | *DOMINO I/O Server: | ||
**support of DFANA-M | **support of DFANA-M | ||
Line 26: | Line 27: | ||
**support of DFCP counters | **support of DFCP counters | ||
**bus and modules fault detection | **bus and modules fault detection | ||
+ | **high availability support for redundant DFH installations | ||
+ | *DUELUX I/O Server: new I/O Server for the Duemmegi DUELUX DLCP DALI-2 system controller | ||
*DUMMY I/O Server: | *DUMMY I/O Server: | ||
**new "commandstate" option | **new "commandstate" option | ||
Line 38: | Line 41: | ||
**added "<cal_name>.json" and "<cal_name>.pre.json" datapoints | **added "<cal_name>.json" and "<cal_name>.pre.json" datapoints | ||
*KILSEN I/O Server: new I/O Server for the KILSEN fire alarm panels | *KILSEN I/O Server: new I/O Server for the KILSEN fire alarm panels | ||
+ | *KNX I/O Server: | ||
+ | **added support for DPT 29 | ||
+ | **added support for ETS5 export file | ||
+ | **added "initreadinterval" I/O Server option | ||
+ | **minor connection handling improvements | ||
*KSENIA I/O Server: new I/O Server for the KSENIA lares security panels | *KSENIA I/O Server: new I/O Server for the KSENIA lares security panels | ||
*IFTTT I/O Server: new I/O Server for the IFTTT service | *IFTTT I/O Server: new I/O Server for the IFTTT service | ||
Line 46: | Line 54: | ||
**added support for iono pi driver v1.3.0 and "wiegandbits" option | **added support for iono pi driver v1.3.0 and "wiegandbits" option | ||
**added support for local Iono Pi direct access | **added support for local Iono Pi direct access | ||
− | *IONO I/O Server: | + | *IONO PI Max I/O Server: new I/O Server for Sfera Labs Iono Pi Max |
− | * | + | *LoRaWAN I/O Server: new I/O Server for LoRaWAN Network and Application servers implementation |
*MasterBus I/O Server: new I/O Server for Mastervolt's MasterBus | *MasterBus I/O Server: new I/O Server for Mastervolt's MasterBus | ||
*Modbus I/O Server: | *Modbus I/O Server: | ||
Line 54: | Line 62: | ||
*MPOWER I/O Server: new I/O Server for the Ubiquity mFi mPower controllable power outlets | *MPOWER I/O Server: new I/O Server for the Ubiquity mFi mPower controllable power outlets | ||
*MQTTBROKER and MQTTCLIENT I/O Servers: new I/O servers add support for the MQTT protocol, client and broker | *MQTTBROKER and MQTTCLIENT I/O Servers: new I/O servers add support for the MQTT protocol, client and broker | ||
+ | *MyHome I/O Server: added support for HMAC authentication (for MyHome Server 1 and other recent OpenWebNet gateways) | ||
*NetworX I/O Server: added possibility to specify zone names | *NetworX I/O Server: added possibility to specify zone names | ||
*Paradox I/O Server: new "log0" data point | *Paradox I/O Server: new "log0" data point | ||
Line 62: | Line 71: | ||
**added datapoint "<player>.queue = <n>" | **added datapoint "<player>.queue = <n>" | ||
**player state is now restored after a track is played via "<player>.play = <uri>" or via public announcement | **player state is now restored after a track is played via "<player>.play = <uri>" or via public announcement | ||
− | *SSH I/O Server: the SSH I/O Server is now "free". Using it doesn't decrease the number of available I/O servers | + | *SSH I/O Server: |
+ | **the SSH I/O Server is now "free". Using it doesn't decrease the number of available I/O servers | ||
+ | **new exec.<timeout> data point. Sets the command execution timeout in seconds; defaults to 30 | ||
+ | **new connection = close command: closes the SSH connection | ||
+ | **new user = <user name> command; overrides the user configuration parameter | ||
+ | **new password = <user password> command; overrides the password configuration parameter | ||
+ | **new stdout=line option | ||
*Strato I/O Server: | *Strato I/O Server: | ||
**added support for Strato Pi CAN and Strato Pi CM Duo | **added support for Strato Pi CAN and Strato Pi CM Duo | ||
**new cpu.temperature data point | **new cpu.temperature data point | ||
*System I/O Server: new data points: | *System I/O Server: new data points: | ||
+ | **cpu.model | ||
+ | **cpu.revision | ||
**database.backup.time | **database.backup.time | ||
**database.backup.elapsed | **database.backup.elapsed | ||
+ | **database.backup.consolidation.time | ||
+ | **database.backup.consolidation.elapsed | ||
+ | **database.backup.consolidation.status | ||
**database.defrag.time | **database.defrag.time | ||
**database.defrag.elapsed | **database.defrag.elapsed | ||
Line 76: | Line 96: | ||
**os.version | **os.version | ||
*Tecnoalarm I/O Server: added data point "log0" | *Tecnoalarm I/O Server: added data point "log0" | ||
+ | *Telegram I/O Server: camera images and generic image files can now be sent via Telegram messages | ||
*WOLF8ACCESS I/O Server: new I/O Server for the Wolf Safety "8 ACCESS" access control system | *WOLF8ACCESS I/O Server: new I/O Server for the Wolf Safety "8 ACCESS" access control system | ||
*WXONLINE I/O Server: | *WXONLINE I/O Server: | ||
**data source changed from Yahoo to Open Weather Map | **data source changed from Yahoo to Open Weather Map | ||
**increased number of forcasted days from 2 to 5 | **increased number of forcasted days from 2 to 5 | ||
+ | **location can be set to latitude and longitude, as well as with the location id | ||
+ | *YAMAHAEC I/O Server: new I/O Server for the Yamaha Extended Control communication protocol | ||
**location can be set to latitude and longitude, as well as with the location id | **location can be set to latitude and longitude, as well as with the location id | ||
*new embedded Natural Language Processor to support speech and free format text commands | *new embedded Natural Language Processor to support speech and free format text commands | ||
*Cameras: cameras with static image sources are now supported. If Camera.<id>.Type is set to "static", a single HTTP request is sent to acquire the image when a CAMERAREC action is executed. The live camerapanel display will not trigger HTTP requests to the source, but show the last recorded image. Events are grouped per day. For static cameras only, a variable name (starting with $) can be set in the configuration instead of the URL in order to allow dynamic URLs | *Cameras: cameras with static image sources are now supported. If Camera.<id>.Type is set to "static", a single HTTP request is sent to acquire the image when a CAMERAREC action is executed. The live camerapanel display will not trigger HTTP requests to the source, but show the last recorded image. Events are grouped per day. For static cameras only, a variable name (starting with $) can be set in the configuration instead of the URL in order to allow dynamic URLs | ||
*Data loggers: new HourConsolidationFactor option for data loggers. Splits hourly consolidated data in multiple sub-intervals (e.g. HourConsolidationFactor = 4 leaves data grouped at minutes 0, 15, 30, 45 after hour consolidation) | *Data loggers: new HourConsolidationFactor option for data loggers. Splits hourly consolidated data in multiple sub-intervals (e.g. HourConsolidationFactor = 4 leaves data grouped at minutes 0, 15, 30, 45 after hour consolidation) | ||
− | *Program timers: if the program timer id starts with $, then the server will also automatically set a variable, with a name equal to the program timer's id, to the remaining number of seconds. Note that the variable is not | + | *Program timers: if the program timer id starts with $, then the server will also automatically set a variable, with a name equal to the program timer's id, to the remaining number of seconds. Note that the variable is not guaranteed to be updated at every second, as some updates may be skipped due to timing constraints. |
*Communication ports, serial gateways configuration: it is now possible to define a custom read timeout to override the 2 seconds default. Set using CommPort.<id>.Params = <timeoutmillis> in hsyco.ini | *Communication ports, serial gateways configuration: it is now possible to define a custom read timeout to override the 2 seconds default. Set using CommPort.<id>.Params = <timeoutmillis> in hsyco.ini | ||
*Access control: new trustedUsers option: comma separated list of user IDs that are always considered trusted, even when connected from outside of the trusted network. Trusted users connecting to HSYCO are subject to the time-out defined in KeysTrustedValidityHours | *Access control: new trustedUsers option: comma separated list of user IDs that are always considered trusted, even when connected from outside of the trusted network. Trusted users connecting to HSYCO are subject to the time-out defined in KeysTrustedValidityHours | ||
*Location Services: improved compatibility with Ubiquiti UniFi access points | *Location Services: improved compatibility with Ubiquiti UniFi access points | ||
*New Database options for scheduled data structure optimization: DatabaseCompactDay, DatabaseCompactHour, DatabaseCompactMinute, DatabaseCompactEnable | *New Database options for scheduled data structure optimization: DatabaseCompactDay, DatabaseCompactHour, DatabaseCompactMinute, DatabaseCompactEnable | ||
+ | *New Database option for backup consolidation (integrity verification and compression), with automatic recovery: DatabaseBackupConsolidation | ||
*The Datalogger import API (csvread and cvsreadover) can now also receive a CSV string directly instead of a file path | *The Datalogger import API (csvread and cvsreadover) can now also receive a CSV string directly instead of a file path | ||
+ | *when TimeAutoUpdate is enabled, NTP synchronization is performed every hour (it was once a day, at 00:30 local time, in previous versions) | ||
+ | *on Linux systems with the Intel U1900 CPU, HSYCO will check the system clock source at startup, and set it to "acpi_pm" if different | ||
+ | *High Availability: | ||
+ | **improved client handover between primary and secondary servers | ||
+ | **new hsyco.ini synchronization feature: hsyco.slavediff.ini file contains changes to hsyco.ini to be applied to the slave version of hsyco.ini. It can contain new properties, existing properties with different values, or existing properties with no value, to remove properties from the master's hsyco.ini file. The hsyco.slavediff.ini should be updated from the master only, even if it is only used by the slave | ||
+ | **new haDatabaseSlaveSync hsyco.ini property: haDatabaseSlaveSync = true (defaults to false) restores the slave database, restarting HSYCO, when a new database backup is synced from the master. DatabaseBackupCosolidation must be true to enable database synchronization | ||
== EVENTS == | == EVENTS == | ||
Line 98: | Line 128: | ||
*MAIL action: you can now optionally specify the number of frames back from the defined number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]” | *MAIL action: you can now optionally specify the number of frames back from the defined number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]” | ||
*new format modifiers for $SUNRISE$ and $SUNSSET$ predefined variables, $SUNRISE:HMS$ and $SUNSSET:HMS$ | *new format modifiers for $SUNRISE$ and $SUNSSET$ predefined variables, $SUNRISE:HMS$ and $SUNSSET:HMS$ | ||
+ | *AUDIO action: new audio destination format, web@<channel>. <channel> can be a project name or an arbitrary name assigned to an audio channel set using the "audiochannel" project attribute | ||
== Java API == | == Java API == | ||
Line 104: | Line 135: | ||
*new LocationBeaconEvent(String session, String address, String userid, String zone, String distance) callback | *new LocationBeaconEvent(String session, String address, String userid, String zone, String distance) callback | ||
*new nlp(String text) command | *new nlp(String text) command | ||
+ | *new uiLink(String source, String target) command | ||
*sendMail() command: you can now optionally specify the number of frames back from the defined number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]” | *sendMail() command: you can now optionally specify the number of frames back from the defined number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]” | ||
*ioGet(String id): ioGet("*") returns the ids of all data points in a comma-separated list | *ioGet(String id): ioGet("*") returns the ids of all data points in a comma-separated list | ||
*varGet(String name): varGet("*") returns the names of all variables in a comma-separated list. Variable names are upper case | *varGet(String name): varGet("*") returns the names of all variables in a comma-separated list. Variable names are upper case | ||
*Modbus: all commands now also accept <ip>:<port number> to connect to Modbus TCP servers with a non-standard port number | *Modbus: all commands now also accept <ip>:<port number> to connect to Modbus TCP servers with a non-standard port number | ||
+ | *audioPlay() command: new audio destination format, web@<channel>. <channel> can be a project name or an arbitrary name assigned to an audio channel set using the "audiochannel" project attribute | ||
== JavaScript API == | == JavaScript API == | ||
Line 113: | Line 146: | ||
*new logoutEvent(address, session, userid, lock) callback | *new logoutEvent(address, session, userid, lock) callback | ||
*new LocationBeaconEvent(session, address, userid, zone, distance) callback function | *new LocationBeaconEvent(session, address, userid, zone, distance) callback function | ||
− | *new nlp( | + | *new nlp(text) command |
+ | *new uiLink(source, target) command | ||
*sendMail() command: you can now optionally specify the number of frames back from the defind number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]” | *sendMail() command: you can now optionally specify the number of frames back from the defind number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]” | ||
*ioGet(id): ioGet("*") returns the ids of all data points in a comma-separated list | *ioGet(id): ioGet("*") returns the ids of all data points in a comma-separated list | ||
*varGet(name): varGet("*") returns the names of all variables in a comma-separated list. Variable names are upper case | *varGet(name): varGet("*") returns the names of all variables in a comma-separated list. Variable names are upper case | ||
*Modbus: all commands now also accept <ip>:<port number> to connect to Modbus TCP servers with a non-standard port number | *Modbus: all commands now also accept <ip>:<port number> to connect to Modbus TCP servers with a non-standard port number | ||
+ | *audioPlayFile() and audioPlayText() commands: new audio destination format, web@<channel>. <channel> can be a project name or an arbitrary name assigned to an audio channel set using the "audiochannel" project attribute | ||
== GUI Updates == | == GUI Updates == | ||
+ | *new "html" object | ||
*new "shape" object | *new "shape" object | ||
*UI objects redirect variables support | *UI objects redirect variables support | ||
+ | *new page and popup "focus" attribute. Specifying an id of an object contained in the page, it will gain focus immediately if visible, and every time the page is opened | ||
*button, 3button, buttonicon, buttonimage now have an id and uiset attributes: pos, visible, label, blink, opacity, rotation, confirm | *button, 3button, buttonicon, buttonimage now have an id and uiset attributes: pos, visible, label, blink, opacity, rotation, confirm | ||
*new "confirm” attribute for user and button ui objects. If “true” user has to press a second time to send the command | *new "confirm” attribute for user and button ui objects. If “true” user has to press a second time to send the command | ||
Line 130: | Line 167: | ||
*datalogger object: | *datalogger object: | ||
**multi-year view in browser mode | **multi-year view in browser mode | ||
+ | **click the values legends to hide/unhide the corresponding graph | ||
**set download="true" enable local download of datalogger browser data in CSV format | **set download="true" enable local download of datalogger browser data in CSV format | ||
**new "csvseparator" attribute | **new "csvseparator" attribute | ||
*scale project attribute and URL option keyword: new "auto" and "fit" options. When scale=auto the user interface is automatically expanded to fill the available browser area. When scale=fit, the user interface is expanded as with auto, but also reduced if the available browser area is smaller than the original project's size. The scale attribute can be set as a static project's directive, a URL keyword, or dynamically with UISET | *scale project attribute and URL option keyword: new "auto" and "fit" options. When scale=auto the user interface is automatically expanded to fill the available browser area. When scale=fit, the user interface is expanded as with auto, but also reduced if the available browser area is smaller than the original project's size. The scale attribute can be set as a static project's directive, a URL keyword, or dynamically with UISET | ||
+ | *new "audiochannel" project attribute | ||
*gohome=N project attribute and URL option keyword: after N seconds of inactivity, go to the menu page, or the page set with the page=<page name> URL option | *gohome=N project attribute and URL option keyword: after N seconds of inactivity, go to the menu page, or the page set with the page=<page name> URL option | ||
− | |||
*PIN and PUK can now be pasted from the clipboard | *PIN and PUK can now be pasted from the clipboard | ||
*camerapanel object: | *camerapanel object: | ||
Line 141: | Line 179: | ||
**redesigned download popup and app download support | **redesigned download popup and app download support | ||
**reduced height of playback timeline clickable area | **reduced height of playback timeline clickable area | ||
+ | *input object: new cssstyle attribute | ||
*link, imagelink objects: | *link, imagelink objects: | ||
**the link attribute can be dynamically set with UISET | **the link attribute can be dynamically set with UISET | ||
+ | **link objects now can receive focus | ||
+ | *scheduler object: new groups attribute allows changing the list of schedule groups names via UISET | ||
+ | *video object: new "controls" attribute | ||
*other minor graphical changes to the standard skins | *other minor graphical changes to the standard skins | ||
*in previous versions, the automatic web UI reload was triggered by changes in any file under the www directory or on HSYCO startup. Starting from this version, HSYCO startup will not trigger the reload if no www files are changed. Reload will also occur if www files under the plugins directory are changed | *in previous versions, the automatic web UI reload was triggered by changes in any file under the www directory or on HSYCO startup. Starting from this version, HSYCO startup will not trigger the reload if no www files are changed. Reload will also occur if www files under the plugins directory are changed | ||
Line 148: | Line 190: | ||
== Manager == | == Manager == | ||
*new LoRaWAN configuration utility | *new LoRaWAN configuration utility | ||
+ | *new SSH tunnel configuration utility | ||
*added support for iBeacon configuration in Location Services Settings | *added support for iBeacon configuration in Location Services Settings | ||
*Log Viewer filter now accepts "strings delimited by quotes", single quotes, "escaped\"quotes\"" | *Log Viewer filter now accepts "strings delimited by quotes", single quotes, "escaped\"quotes\"" | ||
Line 154: | Line 197: | ||
**project’s scale parameter now specified through a select field | **project’s scale parameter now specified through a select field | ||
**new "go to page" button on link objects, and other usability improvements | **new "go to page" button on link objects, and other usability improvements | ||
+ | **new QR Code tool | ||
*Modbus Utility: | *Modbus Utility: | ||
**new skip on error interval option: skip reading for the specified amount of time after an error | **new skip on error interval option: skip reading for the specified amount of time after an error | ||
**new error tolerance option: number of consecutive errors accepted before the error data point is triggered | **new error tolerance option: number of consecutive errors accepted before the error data point is triggered | ||
**improved user interface | **improved user interface | ||
+ | *other usability improvements, including resizable attributes input fields, and copy to clipboard for Log Viewer and Status Browser | ||
== Bug Fixes == | == Bug Fixes == | ||
Line 171: | Line 216: | ||
**sync of zero-length files generated an exception message | **sync of zero-length files generated an exception message | ||
**hsyco.jar could fail to synchronize on slave if listed in the AutoKillFiles configuration parameter on the slave | **hsyco.jar could fail to synchronize on slave if listed in the AutoKillFiles configuration parameter on the slave | ||
+ | *Contatto I/O Server: fixes to the MODDALI ballast 1 status data point | ||
+ | *Domino I/O Server: "modulefault" data point of individual modules not working with DFH gateways | ||
+ | *Cradlepoint I/O Server: fixed error parsing data points returning long values | ||
*HSYCO Remote I/O Server: | *HSYCO Remote I/O Server: | ||
**data points with the '*' character in the value string couldn't be written to the remote server | **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 | **the I/O Server could time out during initialization on a very large local database | ||
*IONO I/O Server: port configuration option was ignored | *IONO I/O Server: port configuration option was ignored | ||
+ | *Modbus I/O Server: fixed a bug causing conversion errors when reading 4 consecutive registers with "longx" or "ulongx" data types | ||
*Paradox I/O Server: minor fixes | *Paradox I/O Server: minor fixes | ||
*SMTPSERVER I/O Server: fixed a bug that caused messages without a "Content-type" header in the body to be ignored | *SMTPSERVER I/O Server: fixed a bug that caused messages without a "Content-type" header in the body to be ignored | ||
Line 187: | Line 236: | ||
**fixed return value in UserCommand Javascript callback function (index.js) | **fixed return value in UserCommand Javascript callback function (index.js) | ||
*GUI: | *GUI: | ||
+ | **menu or pages gestures and scope declarations could propagate to all pages following the declaration in index.hsm | ||
+ | **chart object: valuerange set using a "." separator caused a client-side JavaScript error | ||
+ | **all link objects: fixed relative URL opening in new tab | ||
+ | **linkmini, linkmicro objects: fixed dynamic label attributes | ||
+ | **link object to external URLs not working correctly on iOS and Android app | ||
+ | **panel object: setting height via UISET did not work | ||
**rgb object: pressing off could fail to send the off command in some circumstances | **rgb object: pressing off could fail to send the off command in some circumstances | ||
− | ** | + | **scheduler object: group names incorrectly set to lower case on HSYCO restart or scheduler.ini reload |
**minor fixes to camera objects | **minor fixes to camera objects | ||
*Manager: | *Manager: |
Latest revision as of 14:42, 22 October 2020
Server Updates
- Aritech Comfort CSx75 I/O Server: added possibility to specify zone names
- ARTECOOC I/O Server:
- verbose log output of XML content posted to server and return data
- session id support
- AVIGILON I/O Server: new I/O Server for the Avigilon Control Center 7
- CONTATTO I/O Server:
- support of MODRHT
- support of MODAM2
- support of MODIGLASS, MODIGLASS3
- support of MODLC firmware version 3.2
- support of MODDALI firmware version 6.x
- support of MCP counters
- bus and modules fault detection
- Dea Xensity I/O Server: new I/O Server for the Dea Xensity indoor shock detectors
- DOMINO I/O Server:
- support of DFANA-M
- support of DFDALI64
- support of DFDIM
- support of DFLS smart mode
- support of DF4RI/DF4RIR virtual outputs
- support of DF8RIT configuration with temperature input address enabled and temperature control disabled
- support of position information and commands for DFTP, DFTP/I
- support of DFCP counters
- bus and modules fault detection
- high availability support for redundant DFH installations
- DUELUX I/O Server: new I/O Server for the Duemmegi DUELUX DLCP DALI-2 system controller
- DUMMY I/O Server:
- new "commandstate" option
- new HTTP API: data points can now be set and read remotely with the /x/httpcall HTTP API
- default number of lights, dimmers, automation is 0 (zero)
- ELMO I/O Server: added support for Pregio, Vidomo (Villeggio series), Proxima and Titania panels
- ESC/VP (EPSON) I/O Server:
- improved protocol compatibility
- added support for "middle" luminance level
- Google Calendar I/O Server:
- added capability of creating events
- added "<cal_name>.json" and "<cal_name>.pre.json" datapoints
- KILSEN I/O Server: new I/O Server for the KILSEN fire alarm panels
- KNX I/O Server:
- added support for DPT 29
- added support for ETS5 export file
- added "initreadinterval" I/O Server option
- minor connection handling improvements
- KSENIA I/O Server: new I/O Server for the KSENIA lares security panels
- IFTTT I/O Server: new I/O Server for the IFTTT service
- IONO I/O Server:
- the IONO I/O Server is now "free". Using it doesn't decrease the number of available I/O servers
- "minvariation" option now also applies to polling mode
- IONO PI I/O Server:
- added support for iono pi driver v1.3.0 and "wiegandbits" option
- added support for local Iono Pi direct access
- IONO PI Max I/O Server: new I/O Server for Sfera Labs Iono Pi Max
- LoRaWAN I/O Server: new I/O Server for LoRaWAN Network and Application servers implementation
- MasterBus I/O Server: new I/O Server for Mastervolt's MasterBus
- Modbus I/O Server:
- new "tcpmodbuseventunitid" option. When the Modbus TCP gateway option is enabled, setting tcpmodbuseventunitid to a Unit Id value (0 to 255) will redirect all TCP requests to that Unit Id to the ModbusEvent() callback instead of the Modbus RTU serial bus
- high-availability: when "shutdown when inactive" is true and the HSYCO Server is inactive, all Modbus calls are affectively blocked, and return null. The TCP gateway is also blocked
- MPOWER I/O Server: new I/O Server for the Ubiquity mFi mPower controllable power outlets
- MQTTBROKER and MQTTCLIENT I/O Servers: new I/O servers add support for the MQTT protocol, client and broker
- MyHome I/O Server: added support for HMAC authentication (for MyHome Server 1 and other recent OpenWebNet gateways)
- NetworX I/O Server: added possibility to specify zone names
- Paradox I/O Server: new "log0" data point
- Philips Hue I/O Server: added support for Hue White devices
- Protege I/O Server: new I/O Server for the ICT ProtegeGX security panel
- Sonos I/O Server:
- added support for SONOS firmware version 9
- added datapoint "<player>.queue = <n>"
- player state is now restored after a track is played via "<player>.play = <uri>" or via public announcement
- SSH I/O Server:
- the SSH I/O Server is now "free". Using it doesn't decrease the number of available I/O servers
- new exec.<timeout> data point. Sets the command execution timeout in seconds; defaults to 30
- new connection = close command: closes the SSH connection
- new user = <user name> command; overrides the user configuration parameter
- new password = <user password> command; overrides the password configuration parameter
- new stdout=line option
- Strato I/O Server:
- added support for Strato Pi CAN and Strato Pi CM Duo
- new cpu.temperature data point
- System I/O Server: new data points:
- cpu.model
- cpu.revision
- database.backup.time
- database.backup.elapsed
- database.backup.consolidation.time
- database.backup.consolidation.elapsed
- database.backup.consolidation.status
- database.defrag.time
- database.defrag.elapsed
- database.update.elapsed
- hsyco.version
- java.version
- os.version
- Tecnoalarm I/O Server: added data point "log0"
- Telegram I/O Server: camera images and generic image files can now be sent via Telegram messages
- WOLF8ACCESS I/O Server: new I/O Server for the Wolf Safety "8 ACCESS" access control system
- WXONLINE I/O Server:
- data source changed from Yahoo to Open Weather Map
- increased number of forcasted days from 2 to 5
- location can be set to latitude and longitude, as well as with the location id
- YAMAHAEC I/O Server: new I/O Server for the Yamaha Extended Control communication protocol
- location can be set to latitude and longitude, as well as with the location id
- new embedded Natural Language Processor to support speech and free format text commands
- Cameras: cameras with static image sources are now supported. If Camera.<id>.Type is set to "static", a single HTTP request is sent to acquire the image when a CAMERAREC action is executed. The live camerapanel display will not trigger HTTP requests to the source, but show the last recorded image. Events are grouped per day. For static cameras only, a variable name (starting with $) can be set in the configuration instead of the URL in order to allow dynamic URLs
- Data loggers: new HourConsolidationFactor option for data loggers. Splits hourly consolidated data in multiple sub-intervals (e.g. HourConsolidationFactor = 4 leaves data grouped at minutes 0, 15, 30, 45 after hour consolidation)
- Program timers: if the program timer id starts with $, then the server will also automatically set a variable, with a name equal to the program timer's id, to the remaining number of seconds. Note that the variable is not guaranteed to be updated at every second, as some updates may be skipped due to timing constraints.
- Communication ports, serial gateways configuration: it is now possible to define a custom read timeout to override the 2 seconds default. Set using CommPort.<id>.Params = <timeoutmillis> in hsyco.ini
- Access control: new trustedUsers option: comma separated list of user IDs that are always considered trusted, even when connected from outside of the trusted network. Trusted users connecting to HSYCO are subject to the time-out defined in KeysTrustedValidityHours
- Location Services: improved compatibility with Ubiquiti UniFi access points
- New Database options for scheduled data structure optimization: DatabaseCompactDay, DatabaseCompactHour, DatabaseCompactMinute, DatabaseCompactEnable
- New Database option for backup consolidation (integrity verification and compression), with automatic recovery: DatabaseBackupConsolidation
- The Datalogger import API (csvread and cvsreadover) can now also receive a CSV string directly instead of a file path
- when TimeAutoUpdate is enabled, NTP synchronization is performed every hour (it was once a day, at 00:30 local time, in previous versions)
- on Linux systems with the Intel U1900 CPU, HSYCO will check the system clock source at startup, and set it to "acpi_pm" if different
- High Availability:
- improved client handover between primary and secondary servers
- new hsyco.ini synchronization feature: hsyco.slavediff.ini file contains changes to hsyco.ini to be applied to the slave version of hsyco.ini. It can contain new properties, existing properties with different values, or existing properties with no value, to remove properties from the master's hsyco.ini file. The hsyco.slavediff.ini should be updated from the master only, even if it is only used by the slave
- new haDatabaseSlaveSync hsyco.ini property: haDatabaseSlaveSync = true (defaults to false) restores the slave database, restarting HSYCO, when a new database backup is synced from the master. DatabaseBackupCosolidation must be true to enable database synchronization
EVENTS
- new LOGIN <userid> transient event
- new LOGOUT <userid> transient event
- new LOCATIONBEACON event keyword. Supports "LOCATIONBEACON userid = zone" and "LOCATIONBEACON zoneid" event conditions
- new NLP action keyword
- MAIL action: you can now optionally specify the number of frames back from the defined number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]”
- new format modifiers for $SUNRISE$ and $SUNSSET$ predefined variables, $SUNRISE:HMS$ and $SUNSSET:HMS$
- AUDIO action: new audio destination format, web@<channel>. <channel> can be a project name or an arbitrary name assigned to an audio channel set using the "audiochannel" project attribute
Java API
- new loginEvent(String address, String session, String userid) callback
- new logoutEvent(String address, String session, String userid, boolean lock) callback
- new LocationBeaconEvent(String session, String address, String userid, String zone, String distance) callback
- new nlp(String text) command
- new uiLink(String source, String target) command
- sendMail() command: you can now optionally specify the number of frames back from the defined number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]”
- ioGet(String id): ioGet("*") returns the ids of all data points in a comma-separated list
- varGet(String name): varGet("*") returns the names of all variables in a comma-separated list. Variable names are upper case
- Modbus: all commands now also accept <ip>:<port number> to connect to Modbus TCP servers with a non-standard port number
- audioPlay() command: new audio destination format, web@<channel>. <channel> can be a project name or an arbitrary name assigned to an audio channel set using the "audiochannel" project attribute
JavaScript API
- new loginEvent(address, session, userid) callback
- new logoutEvent(address, session, userid, lock) callback
- new LocationBeaconEvent(session, address, userid, zone, distance) callback function
- new nlp(text) command
- new uiLink(source, target) command
- sendMail() command: you can now optionally specify the number of frames back from the defind number of seconds since last recording. The new format is: “cam:cameraname[:seconds_back[:frames_back]]”
- ioGet(id): ioGet("*") returns the ids of all data points in a comma-separated list
- varGet(name): varGet("*") returns the names of all variables in a comma-separated list. Variable names are upper case
- Modbus: all commands now also accept <ip>:<port number> to connect to Modbus TCP servers with a non-standard port number
- audioPlayFile() and audioPlayText() commands: new audio destination format, web@<channel>. <channel> can be a project name or an arbitrary name assigned to an audio channel set using the "audiochannel" project attribute
GUI Updates
- new "html" object
- new "shape" object
- UI objects redirect variables support
- new page and popup "focus" attribute. Specifying an id of an object contained in the page, it will gain focus immediately if visible, and every time the page is opened
- button, 3button, buttonicon, buttonimage now have an id and uiset attributes: pos, visible, label, blink, opacity, rotation, confirm
- new "confirm” attribute for user and button ui objects. If “true” user has to press a second time to send the command
- fullscreen support for datalogger and camerapanel objects:
- new "fullwindow" url query option
- fullwindow=true|false project's UI attribute: set to true to expand inside the browser's window instead of actually going fullscreen
- pinch to zoom on camerapanel
- datalogger object:
- multi-year view in browser mode
- click the values legends to hide/unhide the corresponding graph
- set download="true" enable local download of datalogger browser data in CSV format
- new "csvseparator" attribute
- scale project attribute and URL option keyword: new "auto" and "fit" options. When scale=auto the user interface is automatically expanded to fill the available browser area. When scale=fit, the user interface is expanded as with auto, but also reduced if the available browser area is smaller than the original project's size. The scale attribute can be set as a static project's directive, a URL keyword, or dynamically with UISET
- new "audiochannel" project attribute
- gohome=N project attribute and URL option keyword: after N seconds of inactivity, go to the menu page, or the page set with the page=<page name> URL option
- PIN and PUK can now be pasted from the clipboard
- camerapanel object:
- added support for for pinch to zoom on camerapanel object when in fullscreen mode in the iOS and Android apps
- single frame email replaced with local download
- redesigned download popup and app download support
- reduced height of playback timeline clickable area
- input object: new cssstyle attribute
- link, imagelink objects:
- the link attribute can be dynamically set with UISET
- link objects now can receive focus
- scheduler object: new groups attribute allows changing the list of schedule groups names via UISET
- video object: new "controls" attribute
- other minor graphical changes to the standard skins
- in previous versions, the automatic web UI reload was triggered by changes in any file under the www directory or on HSYCO startup. Starting from this version, HSYCO startup will not trigger the reload if no www files are changed. Reload will also occur if www files under the plugins directory are changed
Manager
- new LoRaWAN configuration utility
- new SSH tunnel configuration utility
- added support for iBeacon configuration in Location Services Settings
- Log Viewer filter now accepts "strings delimited by quotes", single quotes, "escaped\"quotes\""
- Project Editor:
- new object alignment tools
- project’s scale parameter now specified through a select field
- new "go to page" button on link objects, and other usability improvements
- new QR Code tool
- Modbus Utility:
- new skip on error interval option: skip reading for the specified amount of time after an error
- new error tolerance option: number of consecutive errors accepted before the error data point is triggered
- improved user interface
- other usability improvements, including resizable attributes input fields, and copy to clipboard for Log Viewer and Status Browser
Bug Fixes
- improved compatibility with Debian 9 (Stretch) systems:
- high availability active IP hand-over
- LAN IP address configuration change: old address remained active until reboot
- system clock synchronization and network time update support
- improved serial port reliability on Linux (x86) systems
- fixed a bug that could cause the corruption of cameras recording indexes
- improved handling of cameras connections errors
- when the Java runtime version is >= 1.7 symbolic links under the HSYCO root are now handled as normal, valid paths
- High Availability:
- sync of zero-length files generated an exception message
- hsyco.jar could fail to synchronize on slave if listed in the AutoKillFiles configuration parameter on the slave
- Contatto I/O Server: fixes to the MODDALI ballast 1 status data point
- Domino I/O Server: "modulefault" data point of individual modules not working with DFH gateways
- Cradlepoint I/O Server: fixed error parsing data points returning long values
- HSYCO Remote I/O Server:
- 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
- IONO I/O Server: port configuration option was ignored
- Modbus I/O Server: fixed a bug causing conversion errors when reading 4 consecutive registers with "longx" or "ulongx" data types
- Paradox I/O Server: minor fixes
- SMTPSERVER I/O Server: fixed a bug that caused messages without a "Content-type" header in the body to be ignored
- Tecnoalarm I/O Server: pass phrases with upper case characters were not supported
- Tecnofire I/O Server:
- log and lastlog UISet ID fixed
- extended communication wait time after read errors
- Telegram I/O Server: a connection error during the I/O server startup sequence could cause it to wait indefinitely and never connect
- API:
- fixed null return value in the following JavaScript command functions: ioGet, readComm, slimCommand, uiGet, uiSessionGet, urlGet, urlPost
- fixed bug in LocationEvent(mac, ip, zoneId) JavaScript callback function
- fixed return value in UserCommand Javascript callback function (index.js)
- GUI:
- menu or pages gestures and scope declarations could propagate to all pages following the declaration in index.hsm
- chart object: valuerange set using a "." separator caused a client-side JavaScript error
- all link objects: fixed relative URL opening in new tab
- linkmini, linkmicro objects: fixed dynamic label attributes
- link object to external URLs not working correctly on iOS and Android app
- panel object: setting height via UISET did not work
- rgb object: pressing off could fail to send the off command in some circumstances
- scheduler object: group names incorrectly set to lower case on HSYCO restart or scheduler.ini reload
- minor fixes to camera objects
- Manager:
- line object didn’t move correctly pressing the arrow keys
- project's page copy & paste not working
- text editor did not recognize event files in plugins directories